9
UTFPR – Campus Curitiba - Departamento Acadêmico de Eletrônica Curso Técnico em Eletrônica – Microcontroladores 1 - Prof. Cion – nov/2010 Diagrama em Blocos do 8051 Pinos da Porta P3 – Funções Especiais 12/03/2022 Pino Nome Função P3.0 RxD Entrada da recepção serial P3.1 TxD Saída da transmissão serial P3.2 INT0’ Entrada da interrupção 0 P3.3 INT1’ Entrada da interrupção 1 P3.4 T0 Entrada do contador 0 P3.5 T1 Entrada do contador 1 P3.6 WR’ Sinal de operação de escrita na RAM P3.7 RD’ Sinal de operação de leitura na RAM 1

Interrupt Counter Timer 8051

Embed Size (px)

DESCRIPTION

Programação e utilização dos temporizadores/contadores do microcontrolador 8051

Citation preview

Nmero

UTFPR Campus Curitiba - Departamento Acadmico de Eletrnica

Curso Tcnico em Eletrnica Microcontroladores 1 - Prof. Cion nov/2010Diagrama em Blocos do 8051

Pinos da Porta P3 Funes EspeciaisPinoNomeFuno

P3.0RxDEntrada da recepo serial

P3.1TxDSada da transmisso serial

P3.2INT0Entrada da interrupo 0

P3.3INT1Entrada da interrupo 1

P3.4T0Entrada do contador 0

P3.5T1Entrada do contador 1

P3.6WRSinal de operao de escrita na RAM

P3.7RDSinal de operao de leitura na RAM

Interrupes

FonteTipoPinoVetor da ISRPrioridade

RESETNo Mascarvel1RST0000H(

INT0MascarvelP3.20003H

C/T 0MascarvelInterna C/T 0000BH

INT1MascarvelP3.30013H

C/T 1MascarvelInterna C/T 1001BH

SerialMascarvelInterna Serial0023H

1No Mascarvel Interrupo que no pode ser desabilitada por softwareRegistradores Associados Interrupo

IE Habilitao da Interrupo (Interrupt Enable)

Endereo A8H (bit enderevel)

End. do bitAFHAEHADHACHABHAAHA9HA8H

Nm. Do bitIE.7IE.6IE.5IE.4IE.3IE.2IE.1IE.0

Nome do bitEA--ESET1EX1ET0EX0

FinalidadeHabilitao de todas as interrupesHabilita int. pela serialHabilita int. pelo

C/T 1Habilita inter. pelo pino INT1 (P3.2)Habilita inter. pelo

C/T 0Habilita int. pelo pino INT0 (P3.2)

Como efetuar o set/clear de um bit ou do byte no reg. IESETB IE.7

ou

SETB EA

ou

SETB 0AFH

ou

MOV IE,#80H

IP Prioridade da Interrupo (Interrupt Priority)

Endereo B8H (bit enderevel)

BFHBEHBDHBCHBBHBAHB9HB8H

IP.7IP.6IP.5IP.4IP.3IP.2IP.1IP.0

---PSPT1PX1PT0PXO

Prioriza int. pelo canal serialPrioriza int. do T/C1Prioriza int. do pino INT1 (P3.3)Prioriza int. pelo T/C0Prioriza int. pelo pino INT0 (P3.2)

TCON Controle do Temporizador (Timer Control)

Endereo 88H (bit enderevel)

8FH8EH8DH8CH8BH8AH89H88H

TCON.7TCON.6TCON.5TCON.4TCON.3TCON.2TCON.1TCON.0

TF1TR1TF0TR0IE1IT1IE0ITO

Flag de overflow do C/T 1Disparo do C/T 1Flag de overflow do C/T 0Disparo do C/T 0Flag que indica ocorrncia de borda de descida no pino INT1Controle do tipo de int. no pino INT1

(P3.3)

Flag que indica ocorrncia de borda de descida no pino INT0Controle do tipo de int. no pino INT0

(P3.2)

HWSWHWSWHWSWHWSW

Se

TF1 == 0, sem overflow0 ( Stop1 ( StartSe

TF0 == 0, sem overflow0 ( Stop1 ( Start0 ( por nvel 0

1 ( por borda de descida0 ( por nvel 0

1 ( por borda de descida

Se

TF1 == 1, ocorreu overflowSETB TCON.6

ou

SETB TR1

ou

SETB 8EHSe

TF0 == 1, ocorreu overflowSETB TCON.4

ou

SETB TR0ou

SETB 8CH

Modelo de estrutura de programa para a interrupo externa no pino INT 0.

RtuloInstruoComentrio

ORG 0000H; reset

JMP Inicio; salta endereo do vetor interrupo da INT 0

ORG 0003h; vetor interrupo da INT 0

LMP ISR0; desvia para a Rotina de Servio de Interrupo

; Inicializao dos registradores de controle

Inicio:MOV IE,#10000001B; inicializa registrador IE com EA = 1 e EX0 = 1

MOV TCON,#1; dispara INT 0 com borda de descida IT0 = 1

; Programa principal

Loop:

instruo 1

instruo 2

instruo n

JMP Loop; incio do programa principal

; ...

; ...

; programa em loop, aguardar interrupo

; Rotina de servio da interrupo (ISR Interrupt Service Routine)

ISR0:

instruo 1

instruo 2

instruo nRETI; incio da ISR

; ...

; ...

; retorna da interrupo

Exemplo de Aplicao:

Este programa comuta o estado de dois LEDs (LED0 ligado ao pino P1.0 e LED1 ligado ao pino P1.1) quando um pedido de interrupo e provocado no pino INT0.

RtuloInstruo

Comentrio

ORG 0000H; reset

JMP Inicio; salta endereo do vetor interrupo da INT 0

ORG 0003H; endereo do vetor interrupo da INT 0

JMP ISR0; desvia para a Rotina de Servio de Interrupo

Inicio:MOV IE,#10000001B; inicializa registrador de habilitao da interrupo

MOV TCON,#1; dispara INT 0 com borda de descida

CLR P1.0; ativa LED0

SETB P1.1; apaga LED1

Loop:JMP Loop; programa entra em loop e aguarda interrupo

ISR0:SETB P1.0; apaga LED0

CLR P1.1; ativa LED1

RETI; retorna da interrupo

REGISTRADORES LIGADOS AOS CONTADORES/TEMPORIZADORES

TMOD Modos do Temporizador (Timer Mode)

Endereo 89H (byte enderevel)

Controle do C/T 1Controle do C/T 0

bit 7 bit 6bit 5bit 4bit.3bit 2bit 1bit 0

T1GT1C/TT1M1T1M0T0GT0C/TT0M1T0M0

Gate do C/T 1Seleo do contador ou temporizador do C/T1Definio

do modo de operao do C/T 1Definio

do modo de operao do C/T 1Gate do C/T 0Seleo do contador ou temporizador do C/T 0Definio do modo de operao do C/T 0Definio do modo de operao do C/T 0

0 ( Timer1 ( Counter0 ( Timer1 ( Counter

Modo 000Modo 000

Modo 101Modo 101

Modo 210Modo 210

Modo 311Modo 311

REGISTRADORES DE PR-CARGA

1. Contador/Temporizador 0 (C/T 0)TL0 Byte Menos Significativo - Endereo: 8AH

D7D6D5D4D3D2D1D0

TH0 Byte Mais Significativo - Endereo: 8CH

D7D6D5D4D3D2D1D0

2. Contador/Temporizador 1 (C/T 1)

TL1 Byte Menos Significativo - Endereo: 8BH D7D6D5D4D3D2D1D0

TH1 Byte Mais Significativo - Endereo: 8DHD7D6D5D4D3D2D1D0

Todos os quarto registradores so somente bytes endereveisModelo Simplificado dos Modos de Operao 1 e 2 dos Contadores/Temporizadores

Roteiro para utilizao dos Contadores/Temporizadores

1. Definir a fonte dos pulsos para a operao do(s) C/T(s), como:

(a) Temporizador (fonte interna): pulsos para entrada do(s) contador(es) o clock/12 (bit C/Ti = 0, do registrador TMOD).

(b) Contador (fonte externa): pulsos aplicados aos pinos T0 (P3.4) ou T1 (P3.5). como:

(b.1) Contagem de eventos bit G0 = 0 ou bit G1 = 0, para C/T 0 e C/T 1, respectivamente.

(b.2) Largura de pulso bit G0 = 1 ou bit G1 = 1, para C/T 0 ou C/T 1, respectivamente. A entrada INT0ou INT1 determina o intervalo de tempo de contagem dos pulsos.

2. Definir o modo de operao do(s) C/T(s), como:

(a) Modo 0 Contador /Temporizador divisor de fclock/32.

(b) Modo 1 Contador/Temporizador de 16 bits.

(c) Modo 2 Contador/Temporizador de 8 bits com recarregamento automtico.

(d) Modo 3 Dois contadores/temporizadores de 8 bits no T/C 0 (T/C 1 inoperante) neste modo

3. Definir a forma de deteco do final da operao de contagem/temporizao, como:

(a) polling consultar por software o estado do flag TF0 ou TF1 do registrador TCON, para C/T 0 ou C/T1, respectivamente.

(b) Interrupo habilitar a interrupo por meio do C/T 0 ou C/T1 (bits ET0 e ET1 do registrador IE, respectivamente).Exemplos:

1. Este programa opera com um gerador de pulsos no pino P1.0, com 200 s de durao. Utiliza o C/T 0 no modo 2 (contador de 8 bits com recarga automtica).

RtuloInstruoComentrio

ORG 0000H; reset

Inicio:MOV TMOD,#00000010B; define modo 2 no T/C 0

MOV TL0,#56H; valor para gerar 200 contagens (256-56=200)

MOV TH0,#56H; valor de recarga de TL0

SETB TR0; dispara contagem

Loop: JNB TF0,Loop; testa overflow da contagem em T/C 0 no bit TF0

CLT TR0; parade da contagem

CPL P1.0; complementa bit p1.0

CLR TF0; limpa flag de overflow da contagem

SETB TR0; habilita contagem

JMP Loop; retorna ao loop

2. O programa a seguir opera como temporizador de 65 ms no C/T 1, com emprego de interrupo. Ao final da temporizao, o LED 1 comuta seu estado. RtuloInstruoComentrio

ORG 0000H; reset

JMP Inicio

; salta para o inicio do programa principal

ORG 001BH; vetor interrupo do timer 1 (001BH)

JMP IsrCT1; entrada da ISR do C/T 1

Inicio:MOV TMOD,#00010000B; define o modo 1 para o C/T 1

MOV TH1,#02H

; valor de carga do C/T 1 = 536 (0218H = 536)

MOV TL1,#18H; temporizao de 65.536 536 = 65.000 s (65 ms)

MOV IE,#10001000B; EA=1 (habilita int.), ET1=1 (habilita int. do C/T 1)

SETB TR1; dispara timer

Loop: JMP Loop; programa em loop infinito, aguarda interrupo

IsrCT1: CLR TR1

; parada do temporizador

CPL P1.0

; comuta estado do pino P1.0 (muda estado do LED 1)

MOV TH1,#02H; recarrega C/T 1 com 536 (= 0218H)

MOV TL1,#18H

SETB TR1

; dispara temporizador

RETI; retorna da ISR

3. Programa que pisca alternadamente o LED0 e o LED1 por 1 segundo de intervalo cada.

; Pisca alternadamente 2 LEDs ligados nos pinos P1.0 e P1.1.

; O LED ativado com nvel lgico "0".

; Utiliza C/T 1 para contar 50.000 ciclos e gera interrupo no fim da contagem.

; Define R0 como contador de interrupo.

; R0 carregado com 20, assim R0(20) * 50 ms = 1 s.

RtuloInstruoComentrio

ORG 0000H; reset

JMP Inicio; salta vetor interrupo do C/T 1

ORG 001BH; endereo do vetor interrupo do C/T 1

JMP IsrCT1

; entrada da ISR do C/T 1

Inicio:MOV TMOD,#00010000b; define o modo 1 para o C/T 1

MOV TH1,#HIGH(15536); carrega a parte alta em TH1 para 50.000

MOV TL1,#LOW(15536) ; carrega a parte baixa em TL1

MOV R0,#20

; contador do nmero de interrupes

SETB P1.0; desativa LED0

CLR P1.1; ativa LED1

MOV IE,#10001000B

; habilita interrupo do timer 1

SETB TR1; dispara timer

Loop: JMP Loop; programa em loop, sada por interrupo

; Rotina de Servio de Interrupo

IsrCT1: CLR TR1

; parada de C/T 1

DEC R0

; decrementa contador de interrupes

CJNE R0,#0FFH,Segue; se contador ffh, no recarrega

MOV R0,#20

; se sim, recarrega contador

CPL P1.0

; complementa pino P1.0

CPL P1.1; idem para P1.1

Segue: MOV TH1,#HIGH(15536); recarrega a parte alta em TH1

MOV TL1,#LOW(15536); recarrega a parte baixa em TL1

SETB TR1; dispara C/T1

RETI

; retorna da interrupo

PAGE 230/09/2013