copyright, 1998, 1999 © sérgio cavalcante registradores do 8051 sérgio cavalcante grupo de...

23
Copyright, 1998, 1999 © Sérgio Cavalcante Registradores do Registradores do 8051 8051 Sérgio Cavalcante Sérgio Cavalcante Grupo de Engenharia da Computação Grupo de Engenharia da Computação Departamento de Informática - Departamento de Informática - UFPE UFPE GRECO DEPARTAMENTO DE INFORMÁTICA UFPE

Upload: internet

Post on 19-Apr-2015

102 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Copyright, 1998, 1999 © Sérgio Cavalcante Registradores do 8051 Sérgio Cavalcante Grupo de Engenharia da Computação Departamento de Informática - UFPE

Copyright, 1998, 1999 © Sérgio Cavalcante

Registradores do Registradores do 80518051

Sérgio CavalcanteSérgio Cavalcante

Grupo de Engenharia da Grupo de Engenharia da ComputaçãoComputação

Departamento de Informática - Departamento de Informática - UFPEUFPE

Sérgio CavalcanteSérgio Cavalcante

Grupo de Engenharia da Grupo de Engenharia da ComputaçãoComputação

Departamento de Informática - Departamento de Informática - UFPEUFPE

GRECO

DEPARTAMENTODE INFORMÁTICA

UFPE

Page 2: Copyright, 1998, 1999 © Sérgio Cavalcante Registradores do 8051 Sérgio Cavalcante Grupo de Engenharia da Computação Departamento de Informática - UFPE

Família 8051Família 8051Port

1Port

3

Port

2Port

0

Seri

al

Timer1

CPU RAM EPROM

Timer0Oscil.

Latc

hLa

tch

Latc

hLa

tch

DPTRPC

MBRInterrupt

Data Bus

Address Bus

Page 3: Copyright, 1998, 1999 © Sérgio Cavalcante Registradores do 8051 Sérgio Cavalcante Grupo de Engenharia da Computação Departamento de Informática - UFPE

Timers/contadoresTimers/contadores

• Timer0 e Timer1Timer0 e Timer1

• Duas funções: timer e contadorDuas funções: timer e contador

• Frequência máxima como timerFrequência máxima como timer– Frequência do Clock / 12Frequência do Clock / 12

• Frequência máxima como contadorFrequência máxima como contador– Frequência do Clock / 24Frequência do Clock / 24

Page 4: Copyright, 1998, 1999 © Sérgio Cavalcante Registradores do 8051 Sérgio Cavalcante Grupo de Engenharia da Computação Departamento de Informática - UFPE

Timer/contadorTimer/contador

TH0TH0 TL0TL0

CarryCarryCarry

Interrupt Entrada

ContadoresContadores

Data BusData Bus

RDRD WR RDRD WRWR

Page 5: Copyright, 1998, 1999 © Sérgio Cavalcante Registradores do 8051 Sérgio Cavalcante Grupo de Engenharia da Computação Departamento de Informática - UFPE

Timers/contadoresTimers/contadores

• Vários modos de operação:Vários modos de operação:– Modo 0:Modo 0:

• Timer/contador de 13 bitsTimer/contador de 13 bits

• Pode ter interrupção ao chegar em zero.Pode ter interrupção ao chegar em zero.

• Frequência Timer = Frequência do Frequência Timer = Frequência do Clock Clock

(12 * (8192 - (12 * (8192 - ValorInicial))ValorInicial))

Page 6: Copyright, 1998, 1999 © Sérgio Cavalcante Registradores do 8051 Sérgio Cavalcante Grupo de Engenharia da Computação Departamento de Informática - UFPE

Timer 0 no Modo 0Timer 0 no Modo 0

Osc.1/12

TL05 bits5 bits

TH08 bits

TF0T0

TR0

INT0

GATE

interrupçãoC / T

Page 7: Copyright, 1998, 1999 © Sérgio Cavalcante Registradores do 8051 Sérgio Cavalcante Grupo de Engenharia da Computação Departamento de Informática - UFPE

Timers/contadoresTimers/contadores

• Modo 1:Modo 1: – Timer/contador de 16 bitsTimer/contador de 16 bits

– Pode ter interrupção ao chegar em Pode ter interrupção ao chegar em zero.zero.

– Frequência Timer = Frequência do Frequência Timer = Frequência do Clock Clock

(12 * (65536 - (12 * (65536 - ValorInicial))ValorInicial))

Page 8: Copyright, 1998, 1999 © Sérgio Cavalcante Registradores do 8051 Sérgio Cavalcante Grupo de Engenharia da Computação Departamento de Informática - UFPE

Timer 0 no Modo 1Timer 0 no Modo 1

Osc.1/12

TL08 bits8 bits

TH08 bits

TF0T0

TR0

INT0

GATE

interrupçãoC / T

Page 9: Copyright, 1998, 1999 © Sérgio Cavalcante Registradores do 8051 Sérgio Cavalcante Grupo de Engenharia da Computação Departamento de Informática - UFPE

Timers/contadoresTimers/contadores

• Modo 2:Modo 2: – Timer/contador de 8 bitsTimer/contador de 8 bits

– Reload (recarga) automáticoReload (recarga) automático

– Frequência Timer = Frequência do Frequência Timer = Frequência do Clock Clock

(12 * (256 - Valor (12 * (256 - Valor THTHii ))))

Page 10: Copyright, 1998, 1999 © Sérgio Cavalcante Registradores do 8051 Sérgio Cavalcante Grupo de Engenharia da Computação Departamento de Informática - UFPE

Timer 0 no Modo 2Timer 0 no Modo 2

Osc.1/12

TL08 bits

TH08 bits

TF0T0

TR0

INT0

GATE

interrupçãoC / T

recarga

Page 11: Copyright, 1998, 1999 © Sérgio Cavalcante Registradores do 8051 Sérgio Cavalcante Grupo de Engenharia da Computação Departamento de Informática - UFPE

Timers/contadoresTimers/contadores

• Modo 3:Modo 3:

– TL0 funciona como um timer/contador de 8 TL0 funciona como um timer/contador de 8 bits controlado por TR0.bits controlado por TR0.

– TH0 funciona como timer de 8 bits TH0 funciona como timer de 8 bits controlado por TR1 e usa TF1 para overflowcontrolado por TR1 e usa TF1 para overflow

– Timer 1 fica habilitado todo o tempo, mas Timer 1 fica habilitado todo o tempo, mas não pode gerar interrupção. Se Timer 1 não pode gerar interrupção. Se Timer 1 também for posto no Modo 3, ele pára.também for posto no Modo 3, ele pára.

Page 12: Copyright, 1998, 1999 © Sérgio Cavalcante Registradores do 8051 Sérgio Cavalcante Grupo de Engenharia da Computação Departamento de Informática - UFPE

Timer/contadorTimer/contador

TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TCON

TFi - flag de overflow do Timer i. Se o 8051 forconfigurado para gerar interrupção quando

esteflag vai para 1 (um), seu valor volta para 0

(zero)automaticamente após execução da rotina

deinterrupção.

TRi - bit de controle do Timer iTRi = 0 Timer i desligado = 1 Timer i ligado

OBS: os bits de TCON podem ser acessadosdiretamente

Page 13: Copyright, 1998, 1999 © Sérgio Cavalcante Registradores do 8051 Sérgio Cavalcante Grupo de Engenharia da Computação Departamento de Informática - UFPE

Timer/contadorTimer/contador

gate C/T M1 M0 gate C/T M1 M0 TMOD

gate = 0 Timer i é habilitado se TRi = 1= 1 Timer i é habilitado se INTi = 1 e TRi

= 1

C/T = 0 Timer i funciona como contador= 1 Timer i funciona como timer

M1,M0 = 00 Timer ifunciona no Modo 0 = 01 Timer ifunciona no Modo 1 = 10 Timer ifunciona no Modo 2 = 11 Timer 0funciona no Modo 3

Timer 1 pára.

OBS: os bits de TMOD NÃONÃO podem ser acessadosdiretamente

Page 14: Copyright, 1998, 1999 © Sérgio Cavalcante Registradores do 8051 Sérgio Cavalcante Grupo de Engenharia da Computação Departamento de Informática - UFPE

Timer 0 no Modo 1Timer 0 no Modo 1

#define FrClk 12000000#define FrClk 12000000

#define FreqTimer0_emHz 100#define FreqTimer0_emHz 100

#define VALOR_TH0 ((65536 - (FrClk / (12 * FreqTimer0_emHz - 17 ))) >>8)#define VALOR_TH0 ((65536 - (FrClk / (12 * FreqTimer0_emHz - 17 ))) >>8)

#define VALOR_TL0 ((65536 - (FrClk / (12 * FreqTimer0_emHz - 17 ))) & 0xFF)#define VALOR_TL0 ((65536 - (FrClk / (12 * FreqTimer0_emHz - 17 ))) & 0xFF)

O 17 TA ERRADO!!!O 17 TA ERRADO!!!

mmain()ain(){{……EA=1; //Habilita o tratamento de interrupçõesEA=1; //Habilita o tratamento de interrupções……}}

Page 15: Copyright, 1998, 1999 © Sérgio Cavalcante Registradores do 8051 Sérgio Cavalcante Grupo de Engenharia da Computação Departamento de Informática - UFPE

Timer 0 no Modo 1Timer 0 no Modo 1

void timer0_inicializa() { TR0 = 0; // Desliga Timer0 TMOD = (TMOD & 0xF0) | 0x01; // Timer 0 programado como timer de 16 bits TH0 = VALOR_TH0; // Programa contagem do Timer0 TL0 = VALOR_TL0; ET0 = 1; // Habilita interrupcao do timer 0 TR0 = 1; // Habilita contagem do timer 0 }

void timer0_int (void) interrupt 1 using 2 { TR0 = 0; // Desliga Timer0 TH0 += VALOR_TH0; // Programa contagem do Timer0 TL0 += VALOR_TL0; TR0 = 1; // Habilita contagem do timer 0 ... }

Page 16: Copyright, 1998, 1999 © Sérgio Cavalcante Registradores do 8051 Sérgio Cavalcante Grupo de Engenharia da Computação Departamento de Informática - UFPE

Interface SerialInterface Serial

• Vários modos de operaçãoVários modos de operação– Modo 0Modo 0

• Transmissão síncrona, 8 bitsTransmissão síncrona, 8 bits• Baudrate = Frequência do Clock / 12Baudrate = Frequência do Clock / 12

– Modo 1Modo 1• Transmissão assíncrona, 10 bits sendo 1 start bit, Transmissão assíncrona, 10 bits sendo 1 start bit,

8 bits de dados e 1 stop bit8 bits de dados e 1 stop bit• Na recepção, o stop bit é armazenado em RB8Na recepção, o stop bit é armazenado em RB8i i ((ii

indica qual a interface serial usada, caso haja indica qual a interface serial usada, caso haja mais de uma).mais de uma).

• Baudrate variávelBaudrate variável

Page 17: Copyright, 1998, 1999 © Sérgio Cavalcante Registradores do 8051 Sérgio Cavalcante Grupo de Engenharia da Computação Departamento de Informática - UFPE

Interface SerialInterface Serial

• Vários modos de operaçãoVários modos de operação– Modo 2Modo 2

• Transmissão assíncrona, 11 bits sendo 1 start Transmissão assíncrona, 11 bits sendo 1 start bit, 8 bits de dados, 1 bit especial (valor definido bit, 8 bits de dados, 1 bit especial (valor definido por TB8por TB8ii) e 1 stop bit.) e 1 stop bit.

• Na recepção, o bit especial é armazenado em Na recepção, o bit especial é armazenado em RB8RB8ii

• Baudrate = 1/32 ou 1/64 Freq.ClockBaudrate = 1/32 ou 1/64 Freq.Clock

– Modo 3Modo 3• Transmissão igual ao Modo 2Transmissão igual ao Modo 2• Baudrate variávelBaudrate variável

Page 18: Copyright, 1998, 1999 © Sérgio Cavalcante Registradores do 8051 Sérgio Cavalcante Grupo de Engenharia da Computação Departamento de Informática - UFPE

Interface SerialInterface Serial• TransmissãoTransmissão

– É realizada assim que um byte é armazenado em SBUFÉ realizada assim que um byte é armazenado em SBUF– Ao transmitir faz com que o bit TIAo transmitir faz com que o bit TIii seja 1 seja 1

• RecepçãoRecepção– Ao receber faz com que o bit RIAo receber faz com que o bit RIii seja 1. seja 1.– Modo 0 (comunicação síncrona):Modo 0 (comunicação síncrona):

• É realizada quando RIÉ realizada quando RIii =0 e REN =0 e RENii =1 =1

– Modo 1, 2 e 3 (comunicação assíncrona):Modo 1, 2 e 3 (comunicação assíncrona):• É realizada quando RENÉ realizada quando RENii =1 e ocorre a chegada de um start =1 e ocorre a chegada de um start

bit.bit.

Page 19: Copyright, 1998, 1999 © Sérgio Cavalcante Registradores do 8051 Sérgio Cavalcante Grupo de Engenharia da Computação Departamento de Informática - UFPE

Interface SerialInterface Serial• InterrupçãoInterrupção

– Pode ou não ser habilitada.Pode ou não ser habilitada.– Quando habiitada, é gerada se TIQuando habiitada, é gerada se TIii = 1 ou RI = 1 ou RIii

= 1.= 1.– O mesmo vetor de interrupção é usado tanto O mesmo vetor de interrupção é usado tanto

para transmissão quanto para recepção. O para transmissão quanto para recepção. O valor de TIvalor de TIii e RI e RIii deve ser testado para deve ser testado para verificar se houve transmissão e/ou verificar se houve transmissão e/ou recepção, respectivamente.recepção, respectivamente.

Page 20: Copyright, 1998, 1999 © Sérgio Cavalcante Registradores do 8051 Sérgio Cavalcante Grupo de Engenharia da Computação Departamento de Informática - UFPE

Interface SerialInterface Serial

SM0 SM1 SM2i RENi TB8i RB8i Tii RIi SiCONSM0,SM1: Se 00Modo 0; 01Modo 1; 10Modo 2; 11Modo 3

SM2i Se Modo = 0, SM2i deve ser 0. Se Modo = 1, define se o stop bit deve ser igual a 1 para que RIi = 1 Se Modo = 2 ou 3, define se o bit especial deve ser igual a 1 para

que RIi = 1. (Comun. em rede)

RENi Habilita a recepção.

TB8i Nos modos 0 e 1, guarda cópia do bit 8 de transmissão Nos modos 2 e 3, guarda o valor do bit especial.

RB8i No modo 0 não é usado. No modo 1, se SM2i = 0, guarda o stop bit recebido. Nos modos 2 e 3, guarda o valor do bit especial recebido.

TIi Flag de fim de transmissão. TIi = 1 quando o último bit começa a ser transmitido.

RIi Flag de fim de recepção. RIi = 1 quando o último bit é recebido.

Page 21: Copyright, 1998, 1999 © Sérgio Cavalcante Registradores do 8051 Sérgio Cavalcante Grupo de Engenharia da Computação Departamento de Informática - UFPE

Interface SerialInterface Serial• Comunicação em Rede ou MultiprocessadorComunicação em Rede ou Multiprocessador

– Quando modo = 2 ou 3, e se SM2Quando modo = 2 ou 3, e se SM2ii = 1, a interrupção de recepção só é gerada = 1, a interrupção de recepção só é gerada se o bit especial = 1.se o bit especial = 1.

– Esta característica pode ser usada em redes mestre-escravo da seguinte forma:Esta característica pode ser usada em redes mestre-escravo da seguinte forma:

1) Se o mestre deseja se comunicar com um dos escravos,1) Se o mestre deseja se comunicar com um dos escravos, primeiro ele envia o endereço do escravo. primeiro ele envia o endereço do escravo.

2) Endereços diferem de dados porque endereços tem o bit2) Endereços diferem de dados porque endereços tem o bit especial = 1 e os dados tem este bit = 0. especial = 1 e os dados tem este bit = 0. 3) Se SM23) Se SM2ii = 1, nenhum escravo será interrompido por = 1, nenhum escravo será interrompido por bytes de dados. Mas todos serão interrompidos por bytes bytes de dados. Mas todos serão interrompidos por bytes de endereços. de endereços.

4) Ao receber seu endereço, o escravo faz com que 4) Ao receber seu endereço, o escravo faz com que SM2 SM2i i = 0 de modo a permitir a recepção de bytes de= 0 de modo a permitir a recepção de bytes de dados. dados.

Page 22: Copyright, 1998, 1999 © Sérgio Cavalcante Registradores do 8051 Sérgio Cavalcante Grupo de Engenharia da Computação Departamento de Informática - UFPE

Interface SerialInterface Serial• Taxas de Comunicação (Baud Rates)

– A interface serial requer um clock 16 vezes maior que a taxa de comunicação desejada.

• Baudrate Modo 0 = Freq. Clock / 12

• Baudrate Modo 2– SMOD é o bit 7 do registrador PCON

– baudrate = (2SMOD/64) x Freq. Clock, ouFreq. Clock / 64 se SMOD = 0Freq. Clock / 32 se SMOD = 1

Page 23: Copyright, 1998, 1999 © Sérgio Cavalcante Registradores do 8051 Sérgio Cavalcante Grupo de Engenharia da Computação Departamento de Informática - UFPE

Interface SerialInterface Serial• Baudrate Modos 1 e 3

– Pode ser fornecido pelo pelo Timer1 (padrão) ou pelo gerador de baudrate (apenas no 80517).

– Para usar o timer 1 faça BD = 0. Baudrate = (2SMOD / 32) x Freq.Timer1

• Se Modo Timer1 = 2 (auto-reload) Baudrate = 2SMOD x Freq.Clock

12 x 32 x (256 - TH1)

– Para usar o gerador de baudrate faça BD = 1 (BD é o bit 7 do registrador ADCON). Bom para taxas de 4800 e 9600 bit/s) Baudrate = (Freq. Clock x 2SMOD) / 2496