Escolar Documentos
Profissional Documentos
Cultura Documentos
citados so idnticos, e o texto utilizar o termo 8051 de forma genrica, citando as outras verses apenas onde for necessrio. Informaes complementares podem ser obtidas em [Inte89], [Siem90] e [Silv94].
80C51 NCLEO
CLOCK de at 40 MHz
Fig. 1.2 - Caractersticas especiais da famlia 8051 A ttulo de exemplo, a tabela 1.2 apresenta as caractersticas de alguns componentes da famlia 8051 com a indicao de seus fabricantes. O nmero total de variantes muito maior. A Philips, por exemplo, produz mais de 40 tipos diferentes.
Tipo MCS251 80C517A 80C537A 80537 80517 80C535A 80C515A 80535 80515 80C535 80C51GB 87C51GB 80C592 87C592 87C598 80C552 Pinos 40 84 84 84 84 68 68 68 68 68 68 68 68 68 80 68 Fabr. Intel Siemens Siemens Siemens Siemens Siemens Siemens Siemens Siemens Siemens Intel Intel Philips Philips Philips Philips RAM 1K 256 256 256 256 256 256 256 256 256 256 256 256 256 256 256 CODE 16K 64Kx 32K 64Kx 8K 64Kx 32K 64Kx 8K 64Kx 64Kx 8K 64Kx 16K 32K 64Kx Notes (LV - low voltage) 16 Bit 80x51FX! Preliminar ALU;8PWM;CC;2UART;10bA/D ALU;8PWM;CC;2UART;10bA/D ALU;8PWM;CC;2UART;8bA/D ALU;8PWM;CC;2UART;8bA/D 515+10bA/D;1K XRAM;BRG;OWD 515+10bA/D;1K XRAM;BRG;OWD Timer2CaptComp 6ports 8/10bA/D Timer2 CaptComp 4 ports 8b A/D Timer2 CaptComp 5 ports 8b A/D 8051FA+PCA; 8b A/D; SPI 8051FA+PCA; 8b A/D; SPI 552-I2C+CAN+XRAM 552-I2C+CAN+XRAM 552-I2C+CAN+XRAM 10b A/D; I2C; CaptComp; PWM
87C552 80C562
68 68
Philips Philips
256 256
8K 64Kx
8 0 5 1
P0.4 AD4 P0.5 AD5 P0.6 AD6 P0.7 AD7 EA ALE PSEN P2.7 A15 P2.6 A14 P2.5 A13 P2.4 A12 P2.3 A11 P2.2 A10 P2.1 A9 P2.0 A8
Fig. 1.4 - Aspecto externo do 8051 O pino EA um sinal de entrada, atravs do qual o usurio escolhe se ser utilizada a memria ROM interna ou se todo o programa ser armazenado externamente. Os pinos da porta P3 tambm so utilizados para realizar certas funes especiais: P3.0 - RxD/data - recepo serial assncrona ou E/S de dados sncronos; P3.1 - TxD/clock - transmisso porta serial assncrona ou sada de clock p/ dados sncronos; P3.2 - INT0 - entrada da interrupo 0 ou bit de controle para o temporizador/contador 0; P3.3 - INT1 - entrada da interrupo 1 ou bit de controle para temporizador/contador ; P3.4 - T0 - entrada de clock externo para o temporizador/contador 0; P3.5 - T1 - entrada de clock externo para o temporizador/contador 1; P3.6 - WR - sinal de escrita na memria de dados externa; P3.7 - RD - sinal de leitura na memria de dados externa. A alimentao (5V) feita pelo pino 40 e o GND o pino 20; o cristal para o oscilador interno conectado aos pinos 18 e 19. Finalmente, o pino 9, RST/VPD, a entrada de reset.
O registrador A o acumulador que, como no 8085, responsvel pelas principais operaes, sobretudo as lgicas e aritmticas. B um registrador de carter geral, assim como os oito registradores R0 a R7. DH e DL tambm so de uso geral, mas podem ser utilizados como um registrador de 16 bits, que se denomina DPTR. Este registrador o nico que pode conter valores de 16 bits e por isso freqentemente utilizado no endereamento da memria externa, que sempre indireto. PC contm o endereo da prxima instruo executvel e SP aponta para o topo da pilha.
15 0 7 0
PC
15 8 7 0
SP
A
DH
7 0 7
DL
0 7
DPTR
0 7
B
0
R0 R4
7 6 5
R1 R5
4 3 2
R2 R6
1 0
R3 R7
CY
AC
F0
RS1
RS0
OV
F1
PSW
Fig. 1.6 - Modelo de programao simplificado para o 8051 O 8051 conta com quatro flags de sistema (carry, auxiliary carry, overflow e parity) e dois flags de usurio (F0 e F1), que o programador pode utilizar como desejar. Os flags esto todos reunidos no registrador PSW (program status word), que contm ainda os bits de seleo de banco de registradores, RS0 e RS1. Estes ltimos so descritos na seo 1.12.6, que tambm apresenta mais detalhes sobre os registradores R0 a R7. Os registradores de controle dos perifricos on-chip, que no aparecem no modelo acima, sero detalhados nas sees subseqentes.
Bloco superior de 128 bytes MOV com endereamento indireto Bloco inferior de 128 bytes MOV com endereamento direto ou indireto
FFH
80H
FFH
80H
7FH 00H
armazena na posio 20H da memria RAM interna o contedo do acumulador. Por outro lado, para armazenar o mesmo contedo na posio 20H da memria de dados externa, o procedimento seria:
MOV R0,#20H MOVX @R0,A ; coloca o endereo em R0 ; copia A para a posio em R0
7F 0F 07
7E 0E 06
7D 0D 05
7C ...
7B
7A 0A 02
79 09 01
78 08 00
2FH ... 21H 20H 1FH 18H 17H 10H 0FH 08H 07H 00H
Fig. 1.10 - Organizao da parte baixa da RAM interna RS1 0 0 1 1 RS0 0 1 0 1 Banco 0 1 2 3
Tab. 1.4 - Seleo dos bancos de registradores do 8051 Acima dos bancos de registradores h uma regio de 16 bytes (endereos 20H a 2FH) cujos bits podem ser endereados individualmente, atravs das instrues SETB (set bit), CLR (clear) e CPL (complement). Os endereos desses 128 bits vo de 00 a 7FH, comeando do bit menos significativo do byte 20H e terminando no bit mais significativo do byte 2FH.
1.9 As interrupes
O 8051 tem cinco fontes de interrupo: duas entradas externas (INT0 e INT1), dois temporizadores/contadores (Timer 0 e Timer 1) e o canal de comunicao serial. Conforme descrito na seo 1.6, as entradas das interrupes externas e o canal serial ocupam pinos da porta P3. Os endereos de desvio das interrupes so fixos e dados pela tabela 1.6. O 8051 permite habilitar ou desabilitar cada interrupo individualmente atravs dos bits EX0, ET0, EX1, ET1 e ES do registrador IE (Interrupt Enable), que aparece na figura 1.12. Esses bits controlam as interrupes externa 0, do timer 0, externa 1, do timer 1 e do canal serial, respectivamente. O bit EA (Enable All) permite habilitar (1) ou desabilitar (0) todas as interrupes de uma s vez. Para que uma interrupo esteja habilitada, tanto o bit correspondente quanto EA precisam estar setados. Interrupo Interrupo externa 0 Timer 0 Interrupo externa 1 Timer 1 Canal serial Endereo 0003H 000BH 0013H 001BH 0023H
EA
...
...
ES
ET1
EX1
ET0
EX0
A cada interrupo est associado um de dois nveis de prioridade (alto ou baixo), de acordo com o registrador IP (Interrupt Priority), que aparece na figura 1.14. Estes nveis so tais que um tratador de interrupo s pode ser interrompido por um pedido de interrupo de nvel superior. Os bits PX0, PT0, PX1, PT1 e PS permitem setar a prioridade das interrupes associadas aos elementos INT0, Timer 0, INT1, Timer 1 e canal serial, respectivamente.
7 6 5 4 3 2 1 0
...
...
...
PS
PT1
PX1
PT0
PX0
Fig. 1.14 - O registrador IP Alm disso, os bits de 0 a 3 do registrador TCON (figura 1.16) permitem programar o modo de reconhecimento das interrupes externas INT0 e INT1. Os bits IT0 e IT1 (bits 0 e 2) determinam o modo de reconhecimento das interrupes, se por nvel ou por transio. Quando um destes bits est em 0, a interrupo correspondente tem garantia de ser detectada se o pino permanecer em 0 por pelo menos 12 perodos de clock; quando em 1, a interrupo correspondente acontece quando ocorre uma transio de 1 para 0. Os bits IE0 e IE1 (bits 1 e 3) so flags que sinalizam internamente os pedidos de interrupo. So colocados automaticamente em 1 quando h uma transio de 1 para 0 no pino correspondente e em 0 quando essa interrupo atendida.
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
Gate1
C/T1
M1.1
M0.1
Gate0
C/T0
M1.0
M0.0
Fig. 1.18 - O registrador TMOD Os bits TF0 e TF1 (5 e 7) de TCON so flags associados aos Timers 0 e 1, respectivamente. Cada vez que ocorre um overflow (passagem de FFH para 0) na contagem de um timer, o bit correspondente setado, o que gera um pedido de interrupo (que ser atendido se a interrupo correspondente estiver habilitada). TR0 e TR1 (bits 4 e 6) permitem habilitar ou desabilitar (parar) a contagem, respectivamente para Timer 0 e Timer 1. Os bits de 0 a 3 deste registrador dizem respeito s interrupes e foram discutidos na seo 1.18. O registrador TMOD (figura 1.16b) define o modo de funcionamento dos timers, discutido logo adiante.
As condies de habilitao de um timer so as seguintes: o bit TR.x deve estar em 1; se o bit GATE.x estiver em 0, o timer estar habilitado; caso contrrio (bit GATE.x = 1), a habilitao pode ser controlada pelo usurio atravs do pino externo INT.x, da seguinte forma: INT.x = 0: contador desabilitado; INT.x = 1: contador habilitado. Satisfeitas estas condies, a contagem avanar de acordo com a configurao do timer: temporizador (bit C/T.x = 0): a contagem incrementada a cada 12 ciclos do oscilador interno, o que significa que o contador avana a cada ciclo de instruo do microcontrolador; contador (bit C/T.x = 1): neste modo, a contagem no avana de acordo com o oscilador interno, mas sim a cada transio descendente de um sinal externo, colocado no pino T.x (no confundir com o pino INT.x, utilizado na habilitao).
1.10.2 Aplicaes
A possibilidade de se habilitar um timer externamente atravs do pino INT.x permite medir a largura de pulsos externos. Para tanto, conecta-se o sinal cuja largura se deseja medir ao pino INT.x, com o timer correspondente configurado como temporizador (C/T.x = 0) e com o bit GATE.x = 1. Desta forma, a contagem avanar enquanto o sinal externo estiver em nvel alto, obtendo-se uma contagem proporcional durao do pulso. A largura do pulso pode ento ser calculada a partir do perodo do sinal de clock. possvel tambm contar pulsos externos. Para tanto, conecta-se o sinal a medir ao pino T.x, com o contador configurado como contador (C/T.x = 1) e com o bit GATE.x = 0. Desta forma, a contagem avanar a cada pulso do sinal externo. Os dois mecanismos acima podem ainda ser combinados para contar pulsos de um sinal externo somente durante um intervalo de tempo determinado por outro sinal externo. Para tanto, configura-se o timer como contador (bit C/T.x = 1) com o bit GATE.x = 1. Desta forma, a contagem avanar de acordo com os pulsos recebidos no pino T.x, mas somente enquanto o nvel no pino INT.x estiver em 1.
OSC
/12 C/T=0 Tx PIN C/T=1 TRx CONTROL TLx (5 bits) (8 bits) THx (8 bits) TFx INTERRUPT overflow
GATE
INTx PIN
GATE
INT1 PIN
GATE
CONTROL
TH1
TL1 T1 PIN C/T=0 TR1 CONTROL TH0 OSC /12 C/T=0 T0 PIN C/T=1 TR0 GATE CONTROL TL0 (8 bits) overflow TF0 INTERRUPT (8 bits) overflow TF1 INTERRUPT
INT0 PIN
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
SMOD
...
...
...
GF1
GF0
PD
IDL
Fig. 1.28 - O registrador PCON SM0 0 0 1 1 SM1 0 1 0 1 Modo 0 1 2 3 Tipo Sncrona, HD Assncrona, FD Assncrona, FD Assncrona, FD Bits 8 10 Taxa de TX Fclock/12 Varivel Fclock/32 ou /64 Varivel
sincronismo enviado pelo pino TxD. A taxa de transmisso fixa e igual a 1/12 da freqncia do clock do sistema. Nos demais modos, os dados so enviados atravs do pino TxD e recebidos atravs do pino RxD. Assim, esses modos permitem comunicao full-duplex (FD, transmisso simultnea nos dois sentidos).
onde SMOD o bit 7 do registrador PCON (figura 1.28b) e TH1 o registrador mais significativo da contagem do timer 1.
X.C AVC
Y.ASM AVMAC51
XY.LIB
1.12.2.2 Montagem
A sintaxe para chamar o assembler , no caso do exemplo acima:
AVMAC51 <nome>
Nesta etapa, so gerados os arquivos <nome>.obj e <nome>.prn contendo, respectivamente, os cdigos hexadecimais correspondentes s instrues e a listagem para consulta dos resultados.
1.12.2.3 Linkagem
A sintaxe para chamar o linker , no caso do exemplo acima:
AVLINK51 <nome>=<novo nome>
Nesta etapa, so gerados os arquivos <novo nome>.hex e <novo nome>.map contendo, respectivamente, os cdigos hexadecimais em arquivo-texto e o mapa de linkagem. O sistema oferece, atravs da sintaxe <nome>=<novo nome>, a oportunidade de criar um programa final (.HEX) com nome diferente do arquivo-fonte, mas esta facilidade raramente til. Normalmente utiliza-se a sintaxe
AVLINK51 <nome>=<nome>. Microcontrolador 8051 - 14/30
1.12.2.4 Simulao
Um simulador um programa que roda em um determinado computador e simula a operao de uma outra CPU. O simulador da Avocet chamado atravs do comando
AVSIM51
Controle de execuo e exibio F1 F10 F9 F2 F3 F4 F5 Alt F5 F6 Alt F6 F8 RUN Single Step (passo a passo) UNDO - volta um comando Move Breakpoint UP Set breakpoint Move Breakpoint DOWN Velocidade de simulao Alternar apresentao de smbolos / valores hexadecimais Atualizar todas as janelas / somente janelas com trace ligado Liga / desliga trace das janelas Liga / desliga skip Esc F7
Movimentao do cursor Regs. / linha de comando Cursor - Hex, Bin, ASCII Scroll lock Registradores A / B Data Pointer Interrupes PC Banco de Registradores SP Timers / counters R0 - R7 Janelas de dados Porta 0, porta 2 Serial BUF/COM Contador de ciclos
Ctrl Pg Up Ctrl A / B Ctrl D Ctrl I Ctrl P Ctrl R Ctrl S Ctrl T Alt 0-7 Alt A, B Alt P,Q Alt SC Alt Y
Tab. 1.10 - Comandos do simulador AVSIM51 A representao de constantes na tela do simulador se d segundo a conveno da tabela 1.12. Sistema de numerao Decimal Hexadecimal Binrio Notao 255 $FF ou 0FFH %111 ou 111B
1.13 Exerccios
1. Estude as instrues que aparecem no programa abaixo e procure determinar o valor do acumulador ao final da execuo. Em seguida, crie um arquivo-fonte com o programa, gere o arquivo .hex e simule-o no AVSIM51 para verificar suas previses. So necessrias as diretivas ORG e END, que constam dos anexos, juntamente com a tabela de instrues.
MOV R1,#3 MOV R3,#4 INC @R1 MOV A,@R1 MOV DPTR,#MENS MOVC A,@A+DPTR SJMP $ DB "1234567890ABCDE",0 END Microcontrolador 8051 - 16/30
MENS
2. Use o simulador para ver a troca dos bancos de registradores no programa abaixo. ORG 2000H;
MOV A,#0 INICIO: CLR RS1 MOV R0,A MOV R1,A MOV R2,#00H MOV R3,#00H INC A SETB RS0 MOV R0,A MOV R1,A MOV R2,#11H MOV R3,#11H INC A CLR RS0 SETB RS1 MOV R0,A MOV R1,A MOV R2,#22H MOV R3,#22H INC A SETB RS0 MOV R0,A MOV R1,A MOV R2,#33H MOV R3,#33H INC A JMP INICIO END CLR RS0 ; DADOS NO BANCO0 RS1=RS0=00
; DADOS NO BANCO1
RS1 RS0 = 01
; DADOS NO BANCO2
RS1 RS0 = 10
; DADOS NO BANCO3
RS1
RS0 = 11
3. O programa abaixo l a porta P1. Se o valor lido for par, incrementa R2; em caso contrrio, incrementa R1. Os dados pares so colocados na porta P2 e os dados mpares na porta P3; todos os dados so armazenados seqencialmente a partir da posio de memria 20H
ORG 2000H MOV R0,#20H MOV R1,#0H MOV R2,#0H INICIO:MOV A,P1 MOV @R0,A ANL A,#01 JNZ IMPAR PAR: INC R2 MOV A,@R0 MOV P2,A INC R0 JMP INICIO IMPAR:INC R1 MOV A,@R0 INC R0 MOV P3,A JMP INICIO END ; INICIO DO ARMAZENAMENTO ; CONTADOR DOS IMPARES ; CONTADOR DOS PARES ; GRAVA DADO ; VER SE PAR OU IMPAR
; MOSTRA DADO
Este programa utiliza a porta P1 como porta de entrada, dentro do simulador. Isto se faz atravs de um arquivo, que associado a essa porta. Cada vez que o programa acessa a porta, um novo caracter do arquivo lido. O valor lido o valor hexadecimal do caracter, incluindo espaos em branco e caracteres de fim de linha (0DH, 0AH). Opcionalmente, pode-se fazer com que a leitura do arquivo recomece do incio sempre que o programa chegar ao fim do arquivo, o que garante uma fonte ininterrupta de dados para simulao. Para o programa acima, crie com um editor de texto um arquivo chamado P1.DAT, contendo a linha:
Microcontrolador 8051 - 17/30
0123456789 e um ENTER no final. Monte o programa e carregue-o no AVSIM51. Para associar o arquivo de entrada porta P1, siga os passos abaixo: use o comando IO, opo Open; digite o nome do arquivo de entrada, P1.DAT; perguntado se a leitura deve recomear do incio, responda Yes; perguntado se deseja criar um arquivo de sada, responda somente com Enter (no cria arquivo de sada); perguntado sobre o modo de IO TRIGGER, selecione Opcode access; perguntado sobre o modo de transferncia de IO, digite P1,IN. Em seguida, comece a simulao. Observe que, cada vez que o programa faz um acesso de leitura porta P1, um novo caracter do arquivo P1.DAT lido, como se estivesse presente na porta nessa hora. Os dados escritos nas portas P2 e P3 podem ser observados no simulador. Opcionalmente, v. pode criar um arquivo de sada e examinar os dados colocados l depois que encerrar a simulao. Altere o programa para que ele fique em um loop ( JMP $) quando tiver encontrado 3 dados pares ou 3 impares. ( Use a instruo CJNE Rn,#dado,endereco ).
2 O kit de desenvolvimento WF
2.1 Apresentao
O sistema mnimo 8031 v. 2.0 tem uma CPU 8031. Pode comunicar-se com um PC atravs do canal serial, atravs do qual possvel transferir programas desenvolvidos no PC para o kit. Este conta ainda com outros componentes, listados na tabela 2.2 juntamente com os endereos que ocupam. Componente EPROM 2732 (8 kB) RAM 6264 (8 kB) LCD Endereos 0000H - 1FFFH 2000H - 3FFFH 4000H - 4002H Tab. 2.2 - Componentes perifricos do kit WF O display de cristal lquido (LCD) possui uma linha, dividida em duas reas de oito colunas, conforme mostra a figura 2.2. REA 1
0 1 2 3 4 5 6 7 0 1 2
REA 2
3 4 5 6 7
2.2 Restries
As portas P0 e P2, bem como os pinos P3.6 e P3.7, so usados para acessar a memria externa. Os bits P3.0 e P3.1 e o bit 7 do registrador PCON so utilizados na transmisso de dados pelo canal serial e portanto s podem ser utilizados por programas que, depois de carregados no kit, no faam mais uso da comunicao com o PC. Alm disso, o timer 1 utilizado para determinar a taxa de transmisso do canal serial e portanto tambm s pode ser usado em outras aplicaes se no houver necessidade de comunicao atravs do canal serial. preciso tomar muito cuidado com instrues que manipulem os registradores SCON, PCON, TMOD e TCON para evitar que as configuraes do timer 1 e do canal serial no sejam alteradas involuntariamente. Se isto acontecer, a comunicao com o PC pode apresentar problemas.
APAGA APAGAT LEBYTE NUMTER NUMLCD CARLCD AREA1 AREA2 MENLCD APACUR ACECUR HOMCUR OUTLCD CARTER MENTER LENUM LEMENS TECPRES
CODTECL
0089H 0196H 00D0H 0164H 013EH 0071H 00A4H 00ADH 00B6H 009BH 01BDH 0092H 0059H 01AAH 0118H 00DDH 00F3H 01C6H 01DAH
Apaga display Apaga terminal de vdeo L numero digitado no teclado (byte fica em a ) Imprime numero no terminal, (valor de a) Imprime numero no display (valor de a) Imprime caracter no display (valor de a) Posiciona cursor do display na rea 1, (coluna em A) Posiciona cursor do display na rea 2, (coluna em A) Imprime mensagem no display (inicio=DPTR, 0 =fim) Apaga cursor do LCD Acende cursor do LCD Home cursor do LCD Comando para LCD Imprime caracter no terminal de vdeo (dado de A) Imprime mensagem n terminal de vdeo, inicio=DPTR L numero digitado no terminal,(numero em A) L mensagem digitada no terminal, (DPTR=endereo) Faz CY = 1 se alguma tecla foi pressionada L o cdigo da tecla pressionada, (valor em A) Tab. 2.4 - Sub-rotinas de servio do kit WF
Descrio Incio da RAM Redirecionamento da interrupo externa 0 (P3.2) Redirecionamento da interrupo do timer 0 Redirecionamento da interrupo externa 1 (P3.3) Redirecionamento da interrupo do timer 1
Tab. 2.6 - Endereos da RAM e desvios das interrupes Tanto os endereos da tabela 2.4 quanto os da tabela 2.6 encontram-se definidos como sinnimos no arquivo ENDERECO.ASM. Convm incluir este arquivo no incio de todos os programas desenvolvidos para o kit WF com a seguinte diretiva
%INCLUDE ENDERECO.ASM
colocada no incio do arquivo-fonte. O redirecionamento das interrupes, no simulador, conseguido atravs das linhas finais do arquivo ENDERECO.ASM, reproduzidas abaixo. No KIT isto est gravado na EPROM.
ORG 0003H LJMP RAM+0003H ORG 000BH LJMP RAM+000BH ORG 0013H LJMP RAM+0013H ORG 001BH LJMP RAM+001BH ORG RAM ; INT 0 ; INT 0 redirecionada ; T0 ; T0 redirecionada ; INT 1 ; INT 1 redirecionada ; T1 ; T1 redirecionada
Note que estas linhas no tm efeito sobre programas transferidos para o kit, pois este tem EPROM nos endereos modificados. A utilidade deste redirecionamento est em permitir a execuo de programas no simulador. Por isso, programas que utilizem tratadores de interrupo devem seguir a estrutura dada abaixo:
ORG RAM SJMP INICIO ORG 2003H ... ORG 200BH ... INICIO: ... END
Um outro problema que aparece no desenvolvimento de programas para o kit WF que o simulador AVSIM51 no possui as sub-rotinas de servio e portanto no pode simul-las. Ento, se um programa escrito para chamar sub-rotinas da tabela 2.4 for executado no simulador, preciso tomar cuidado para que o programa no se perca quando saltar para uma dessas sub-rotinas. A soluo adotada aqui consiste em incluir, no incio do programa, o arquivo RET.ASM, que coloca instrues RET em todos os endereos listados na tabela 2.4. Desta forma, as chamadas das sub-rotinas so ignoradas durante a simulao e no atrapalham. Mais uma vez, este arquivo s tem efeito no simulador, pois o kit tem EPROM nesses endereos.
um linkador, AVLINK51; um conversor de arquivo HEX (texto) para BIN (binrio), HEXBIN; um programa para transferir o arquivo do PC para o kit, LINK8031. Para agilizar a compilao, pode-se criar um arquivo batch com o contedo listado abaixo.
avmac51 %1 @pause avlink51 %1=%1 hexbin %1.hex %1.bin I
Supondo ser o nome dado a este arquivo av.bat, pode-se digitar av <nome do arquivo fonte> para criar o programa. Para efetuar a transferncia do programa para o kit, conecte-o ao PC pela interface serial e digite: LINK8031 EXEMPLO n, onde n identifica a porta serial utilizada pelo PC na comunicao, de acordo com a tabela 2.8. Quando estiver sendo utilizado o conector padro RS-232C, a porta escolhida deve ser a primeira disponvel. n 1 2 3 4 Porta selecionada 03F0H (COM 1) 02F0H (COM 2) 03E0H (COM 3) 02E0H (COM 4)
Tab. 2.8 - Seleo da porta serial para comunicao com o PC O LINK8031 pedir ento ao usurio que pressione o boto de RESET do kit, para que se faa a transferncia do programa. Em seguida, o LINK8031 pede que o usurio pressione uma tecla do PC para iniciar a execuo do programa no kit. Uma vez alcanado este estado, o PC passa a funcionar como terminal de entrada e sada para o programa carregado no kit. Para sair do modo terminal, pressionam-se as 2 teclas SHIFT simultaneamente.
2.6 Exerccios
2.10.2 Utilizao da interrupo do timer 0
O programa abaixo utiliza o timer 0 para controlar a escrita das palavras BOM e DIA no LCD, que alternam a cada segundo.
%INCLUDE ENDERECO.ASM TIMER0H EQU 10H TIMER0L EQU 01H ORG RAM LJMP INICIO ;INTERRUPCAO DO TIMER 0 ORG 200BH INC R0 CJNE R0,#15,RECARGA MOV R0,#00 MOV A,#0 LCALL AREA1 CJNE R1,#0,DIA BOM: MOV DPTR,#MSGBOM ; endereos das rotinas na EPROM ; valores para o timer 0
; 15 Int perfazem 1 segundo ; cursor na coluna 0 ; da rea 1 do LCD ; seleciona a mensagem Microcontrolador 8051 - 21/30
LCALL MENLCD MOV R1,#1 SJMP RECARGA DIA: MOV DPTR,#MSGDIA LCALL MENLCD MOV R1,#0 RECARGA: MOV TH0,#TIMER0H MOV TL0,#TIMER0L RETI INICIO: LCALL APAGA MOV R0,#0 MOV R1,#0 MOV TMOD,#1 MOV TH0,#TIMER0H MOV TL0,#TIMER0L SETB ET0 SETB EA SETB TR0 SJMP $ MSGBOM MSGDIA ; ; ; ; ; ; ; ; ; ; ; DB "!!!!!BOM",0 DB "DIA!!!!!",0 END
; alterna a mensagem
; alterna a mensagem
; R0 CONTA OVERFLOWS DO TIMER 0 ; 15 ESTOUROS = 1 segundo ; R1 seleciona a msg a ser apresentada ; timer 0 no modo de contagem 1 ; valor inicial do timer 0 ; habilita interrupo do timer 0 ; habilita todas as interrupes ; liga timer 0
Comentrios sobre a obteno dos valores de TH0 e TL0 A freqncia do cristal = 11.059MHZ==> Perodo = 90,424 ns. O timer incrementado a cada ciclo de instruo (12 perodos de clock). Queremos uma pausa de 1 segundo. Logo, preciso contar 921584 ciclos (1s / (12 * 90,424 * 10exp-9)). Como o limite de contagem do TIMER e' 65536, seriam necessrias 14,062 contagens de 65536. Como o nmero de contagens deve ser inteiro, usamos 15 contagens. Cada contagem deve ser ento de 921584 / 15 = 61439. Para tanto, o timer 0 deve partir de 65536 - 61439 = 4097 = 1001H. Logo, inicializamos TH0=10H e TL0=01H.
PAR:
FIM:
SJMP FIM MOV A,#0 ; POSICIONAR AREA2 CALL AREA2 POP ACC ; RECUPERAR VALOR CALL NUMLCD ; IMPRIMIR PARES NA AREA2 DJNZ R4,LACO MOV DPTR,#MENPAR ; ATINGIU N PARES CALL APAGA CALL MENLCD ; MOSTRA MENSAGEM DE FINAL ATINGIDO CALL MENTER SJMP $ ; PERMANECE PRESO NESTE LACO DB ' ENTRE COM UM NUMERO < 255 ',CR,LF DB ' O PROGRAMA IRA DETECTAR SE SAO PARES OU IMPARES ',CR,LF DB ' O PROGRAMA TERMINA COM A ENTRADA DE 4 DO MESMO TIPO',CR,LF,0 DB '4 PARES ',0 DB '4IMPARES',0 END
18.Fazer um programa que possa medir a freqncia de um sinal colocado na sada P1.7. Quais so os limites e erros nestas medies. 19.Medir o intervalo em que a onda retangular gerada no exerccio 7 permanece em nvel alto. 20.Idem, em nvel baixo.
Referncias bibliogrficas
Conceitos bsicos de Sistemas Digitais
[Mors88] Morse, Stephen P.: Microprocessadores 8086/8088 Arquitetura, projeto, sistemas e programao. Editora Campus, Rio de Janeiro (1988) INTEL CORPORATION. 8-bit Embedded Controller Handbook. Santa Clara, 1989. Microcomputer Components SAB 80C515 / 80C535. Siemens A.G. (1990) da Silva Jr., Vidal Pereira: Aplicaes Prticas do Microcontrolador 8051. Editora rica Ltda., Tatuap - SP - Brasil (1994). ISBN 085-7194-194-7 Nicolosi Denys: Microcontrolador 8051 detalhado. Editora rica Ltda., Tatuap - SP Brasil (2000). ISBN 085-7194-721-x
3.3 As instrues
As tabelas a seguir apresentam o conjunto de instrues do microcontrolador 8051. As colunas B e C indicam, respectivamente, o nmero de bytes e o nmero de ciclos de clock de cada instruo. As colunas CY, AC e OV de cada tabela indica como cada instruo afeta, respectivamente, os flags de carry, auxiliary carry e overflow, de acordo com a seguinte notao: 0: o flag resetado nesta operao; 1: o flag setado nesta operao *: o flag afetado e seu valor pode ser 0 ou 1, dependendo do resultado da operao; -: o flag no afetado.
SUBB SUBB SUBB INC INC INC INC DEC DEC DEC DEC INC MUL DIV DA
Subtrai byte e borrow do acumulador Subtrai byte no end. Ri e borrow de A Subtrai dados imediatos e borrow de A Incrementa acumulador Incrementa registrador Incrementa byte Incrementa byte no endereo Ri Decrementa acumulador Decrementa registrador Decrementa byte Decrementa byte no endereo Ri Incrementa datapointer Multiplica A e B, resultado em BA Divide A/B, quociente em A e resto em B Ajuste do acumulador aps adio BCD
2 1 2 1 1 2 1 1 1 2 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 2 4 4 1
* * * 0 0 *
* * * * *
* * * * 0 -
MOV
A,Rn
MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOVC MOVC MOVX MOVX MOVX MOVX PUSH POP XCH XCH XCH XCHD
A,direto A,@Ri A,#dado8 Rn,A Rn,direto Rn,#dado8 direto,A direto,Rn direto,direto direto,@Ri dieto,#dado8 @Ri,A @Ri,direto @Ri,#dado8 DPTR,#dad16 A,@A+DPTR A,@A+PC A,@Ri A,@DPTR @Ri,A @DPTR,A Direto Direto A,Rn A,direto A,@Ri A,@Ri
Move byte para acumulador Move contedo do endereo Ri para A Move dados imediatos para acumulador Move acumulador para registrador Move byte para registrador Move dados imediatos para registrador Move acumulador para byte Move registrador para byte Move da byte1 para a byte2 Move contedo do endereo Ri p/ byte Move dados imediatos para byte Move A para o endereo em Ri Move byte para o endereo em Ri Move dado imediato p/ endereo em Ri Carrega DPTR com constante de 16 bits Move byte endereado por DPTR+A para A Move byte endereado por PC+A para A Move RAM externa (end. de 8 bits) p/ A Move RAM externa (end. de 16 bits) p/ A Move A p/ RAM externa (end. de 8 bits) Move A p/ RAM externa (end. de 16 bits) Move byte para a pilha (stack) Retira byte da pilha (stack) Permuta A com Rn Permuta A com byte Permuta A com o contedo do endereo Ri Permuta nibble inferior de A c/ byte
2 1 2 1 2 2 2 2 3 2 3 1 2 2 3 1 1 1 1 1 1 2 2 1 2 1 1
1 1 1 1 2 1 1 2 2 2 2 1 2 1 2 2 2 2 2 2 2 2 2 1 1 1 1
end11 (2k) end16 (64k) end. rel. @A+DPTR end. rel. end rel. end rel. end rel. bit,end. rel. bit,end. rel. bit,end. rel. A,direto,end. rel. A,#dado8,end. rel. Rn,#dado8,end. rel. @Ri,#dado8,end. rel. Rn,end.rel direto,end. rel.
O MICROCONTROLADOR INTEL 8051 ................................................ 1 1.1 COMENTRIOS SOBRE MICROCONTROLADORES ................................... 1 1.2 A FAMLIA 8051 .......................................................................................... 1 1.2.1 Principais caractersticas..................................................................... 2 1.3 ANLISE EXTERNA ..................................................................................... 3 1.4 MODELO DE PROGRAMAO SIMPLIFICADO ......................................... 3 1.5 ORGANIZAO DA MEMRIA DE PROGRAMA ........................................ 4 1.6 ORGANIZAO DA MEMRIA DE DADOS ............................................... 4 1.6.1 Memria de dados interna ................................................................. 4 1.6.2 Memria de dados externa................................................................. 5 1.6.3 Mais detalhes sobre a RAM interna ............................................... 5 1.6.4 Os registradores de funes especiais............................................. 6 1.7 MODOS DE ENDEREAMENTO................................................................. 7 1.7.1 Endereamento imediato................................................................... 7 1.7.2 Endereamento direto........................................................................ 7 1.7.3 Endereamento de bits individuais .................................................. 7 1.7.4 Endereamento indireto .................................................................... 7 1.7.5 Endereamento indexado .................................................................. 7 1.7.6 Endereamento dos registradores R0 a R7 ..................................... 7 1.7.7 Endereamento implcito de registradores...................................... 8 1.8 FUNCIONAMENTO DA PILHA .................................................................... 8 1.9 AS INTERRUPES ...................................................................................... 8 1.10 OS TEMPORIZADORES / CONTADORES ................................................ 9 1.10.1 Habilitao da contagem.................................................................. 9 1.10.2 Aplicaes ........................................................................................10 1.10.3 Modos de operao ........................................................................10 1.11 O CANAL SERIAL ....................................................................................12 PARTE II - LABORATRIO................. ERRO! INDICADOR NO DEFINIDO. 2 DESENVOLVIMENTO DE PROGRAMAS PARA O 8051ERRO! INDICADOR NO DEFINIDO. 2.1 SISTEMA DE DESENVOLVIMENTO AVOCET ..........................................14 2.2 ROTEIRO DE TRABALHO .........................................................................14 2.2.1 Edio do programa-fonte ..............................................................14 2.2.2 Montagem ..........................................................................................14 2.2.3 Linkagem............................................................................................14 2.2.4 Simulao ...........................................................................................15 2.2.5 Gravao em EPROM.....................................................................15 2.3 UTILIZAO DO SIMULADOR AVSIM51...............................................15 2.4 EXERCCIOS ..............................................................................................16
Microcontrolador 8051 - 28/30
3 O KIT DE DESENVOLVIMENTO WF................................................ 18 3.1 APRESENTAO ....................................................................................... 18 3.1.1 Restries ........................................................................................... 19 3.2 SUB-ROTINAS DE SERVIO ...................................................................... 19 3.3 ALGUNS ENDEREOS IMPORTANTES..................................................... 19 3.4 DESENVOLVIMENTO DE PROGRAMAS................................................... 20 3.5 EXERCCIOS .............................................................................................. 21 3.5.1 Utilizao da interrupo do timer 0.............................................. 21 3.5.2 Leitura de nmeros do teclado ....................................................... 22 3.5.3 Outras tarefas utilizando o kit WF ................................................. 23 ANEXO 4 - CONJUNTO DE INSTRUES DO 8051................................ 25 4.1 ABREVIATURAS UTILIZADAS NA TABELA DE INSTRUES ................. 25 4.2 PRINCIPAIS DIRETIVAS ............................................................................. 25 4.3 AS INSTRUES ........................................................................................ 25 4.3.1 Instrues aritmticas....................................................................... 25 4.3.2 Instrues lgicas.............................................................................. 26 4.3.3 Instrues de manipulao de bits ................................................. 26 4.3.4 Instrues de movimentao de dados.......................................... 26 4.3.5 Instrues de controle de fluxo ...................................................... 27 REFERNCIAS BIBLIOGRFICAS.......................................................... 24 Lista de figuras FIG. 1.1 - CARACTERSTICAS ESPECIAIS DA FAMLIA 8051 ......................... 2 FIG. 1.2 - ASPECTO EXTERNO DO 8051 ........................................................ 3 FIG. 1.3 - MODELO DE PROGRAMAO SIMPLIFICADO PARA O 8051....... 4 FIG. 1.4 - ORGANIZAO DA MEMRIA DE DADOS INTERNA DO 8051... 5 FIG. 1.5 - ORGANIZAO DA PARTE BAIXA DA RAM INTERNA ............... 6 FIG. 1.6 - O REGISTRADOR IE........................................................................ 8 FIG. 1.7 - O REGISTRADOR IP ........................................................................ 9 FIG. 1.8 - O REGISTRADORTCON ................................................................ 9 FIG. 1.9 - O REGISTRADOR TMOD............................................................... 9 FIG. 1.10 - FUNCIONAMENTO DOS TIMERS NOS MODOS 0 E 1 ................ 11 FIG. 1.11 - FUNCIONAMENTO DOS TIMERS NO MODO 2 .......................... 11 FIG. 1.12 - TIMER 0 NO MODO 3 E ALTERAES NO TIMER 1 ................. 12 FIG. 1.13 - O REGISTRADOR SCON............................................................ 12 FIG. 1.14 - O REGISTRADOR SCON............................................................ 12 FIG. 2.1 - CONJUNTO DE FERRAMENTAS DE DESENVOLVIMENTO ......... 14 FIG. 3.1 - O DISPLAY DE CRISTAL LQUIDO DO KIT WF........................... 18 Lista de tabelas TAB. 1.1 - ALGUNS INTEGRANTES DA FAMLIA MCS51 ............................. 3 TAB. 1.2 - SELEO DOS BANCOS DE REGISTRADORES DO 8051 .............. 6
Microcontrolador 8051 - 29/30
TAB. 1.3 - ENDEREOS DE DESVIO DAS INTERRUPES ............................ 8 TAB. 1.4 - MODOS DE FUNCIONAMENTO DO CANAL SERIAL ...................12 TAB. 2.1 - COMANDOS DO SIMULADOR AVSIM51....................................16 TAB. 2.2 - REPRESENTAO DE CONSTANTES NO AVSIM51 .................16 TAB. 3.1 - COMPONENTES PERIFRICOS DO KIT WF................................18 TAB. 3.2 - SUB-ROTINAS DE SERVIO DO KIT WF .....................................19 TAB. 3.3 - ENDEREOS DA RAM E DESVIOS DAS INTERRUPES ..........20 TAB. 3.4 - SELEO DA PORTA SERIAL PARA COMUNICAO COM O PC21