of 30 /30
Microcontrolador 8051 - 1/30 Parte II – O microcontrolador Intel 8051 1 Comentários sobre microcontroladores Um microcontrolador é um componente que tem, num único chip, além de uma CPU, elementos tais como memórias ROM e RAM, temporizadores, contadores, canais de comunicação e conversores analógico-digitais. Esta característica diferencia os sistemas baseados em microcontroladores daqueles baseados em microprocessadores, onde normalmente se utilizam vários componentes para implementar essas funções. Com isso, os microcontroladores permitem a implementação de sistemas mais compactos e baratos do que aqueles baseados em microprocessadores. Em contrapartida, as CPUs dos microcontroladores são, em geral, menos poderosas do que os microprocessadores. Seu conjunto de instruções costuma se limitar às instruções mais simples encontradas nestes, sua freqüência de clock é mais baixa e o espaço de memória endereçável costuma ser bem menor. Vê-se daí que o campo de aplicação dos microcontroladores é diferente daquele dos microprocessadores, e que um sistema que possa ser controlado por um microcontrolador tende a ter menor complexidade e menor custo do que um sistema que exija a capacidade de processamento de um microprocessador. Exemplos de sistemas onde os microcontroladores encontram aplicação incluem controle de semáforos, balanças eletrônicas, microterminais, telefones públicos, controle de veiculação de comerciais de TV, controle de carregadores de baterias, inversores, controles de acesso, taxímetros, sistemas de aquisição de dados de manufatura e eletrodomésticos em geral. A programação dos microcontroladores é, em geral, mais simples do que a dos microprocessadores, ao menos no que diz respeito às exigências de conhecimento dos componentes periféricos. Isto acontece porque os periféricos on-chip dos microcontroladores são acessados de uma forma padronizada e integrada na própria linguagem de programação, dispensando o conhecimento de detalhes externos. Não se deve pensar, porém, que isto simplifique a tarefa do programador em todos os níveis: é necessário que ele conheça bem o hardware conectado ao microcontrolador para poder produzir programas que funcionem corretamente. Cabe citar ainda uma vantagem particular dos microcontroladores que possuem memória ROM, que é a possibilidade de armazenar programas internamente, dificultando sensivelmente a cópia ilícita do código. 1.1 A família 8051 Diversos fabricantes produzem microcontroladores da família 8051 (Intel, AMD, Atmel, Dallas, OKI, Matra, Philips, Siemens, SMC, SSI). A Intel iniciou a produção do 8051 em 1981. Em 1982 foram produzidos 2 milhões de unidades, em 1985 foram 18 milhões e em 1993, 126 milhões. A tendência atual é uma participação crescente dos microprocessadores de 8 bits e uma diminuição da fatia de mercado dos microcontroladores de 4 bits. Além do 8051 propriamente dito, existem variantes como o 8031 (sem memória ROM interna e com apenas 128 bytes de memória RAM), o 8751 (4 kB de memória EPROM) e o 8052 (8 kB de memória ROM, um terceiro timer e 256 bytes de memória RAM). A menos dessas diferenças, os modelos

apostila 8051

Embed Size (px)

Text of apostila 8051

  • Microcontrolador 8051 - 1/30

    Parte II O microcontrolador Intel 8051

    1 Comentrios sobre microcontroladoresUm microcontrolador um componente que tem, num nico chip, alm de uma CPU, elementos taiscomo memrias ROM e RAM, temporizadores, contadores, canais de comunicao e conversoresanalgico-digitais. Esta caracterstica diferencia os sistemas baseados em microcontroladores daquelesbaseados em microprocessadores, onde normalmente se utilizam vrios componentes paraimplementar essas funes. Com isso, os microcontroladores permitem a implementao de sistemasmais compactos e baratos do que aqueles baseados em microprocessadores.Em contrapartida, as CPUs dos microcontroladores so, em geral, menos poderosas do que osmicroprocessadores. Seu conjunto de instrues costuma se limitar s instrues mais simplesencontradas nestes, sua freqncia de clock mais baixa e o espao de memria enderevel costumaser bem menor. V-se da que o campo de aplicao dos microcontroladores diferente daquele dosmicroprocessadores, e que um sistema que possa ser controlado por um microcontrolador tende a termenor complexidade e menor custo do que um sistema que exija a capacidade de processamento deum microprocessador.Exemplos de sistemas onde os microcontroladores encontram aplicao incluem controle desemforos, balanas eletrnicas, microterminais, telefones pblicos, controle de veiculao decomerciais de TV, controle de carregadores de baterias, inversores, controles de acesso, taxmetros,sistemas de aquisio de dados de manufatura e eletrodomsticos em geral.A programao dos microcontroladores , em geral, mais simples do que a dos microprocessadores, aomenos no que diz respeito s exigncias de conhecimento dos componentes perifricos. Isto aconteceporque os perifricos on-chip dos microcontroladores so acessados de uma forma padronizada eintegrada na prpria linguagem de programao, dispensando o conhecimento de detalhes externos.No se deve pensar, porm, que isto simplifique a tarefa do programador em todos os nveis: necessrio que ele conhea bem o hardware conectado ao microcontrolador para poder produzirprogramas que funcionem corretamente.Cabe citar ainda uma vantagem particular dos microcontroladores que possuem memria ROM, que a possibilidade de armazenar programas internamente, dificultando sensivelmente a cpia ilcita docdigo.

    1.1 A famlia 8051Diversos fabricantes produzem microcontroladores da famlia 8051 (Intel, AMD, Atmel, Dallas, OKI,Matra, Philips, Siemens, SMC, SSI). A Intel iniciou a produo do 8051 em 1981. Em 1982 foramproduzidos 2 milhes de unidades, em 1985 foram 18 milhes e em 1993, 126 milhes. A tendnciaatual uma participao crescente dos microprocessadores de 8 bits e uma diminuio da fatia demercado dos microcontroladores de 4 bits.Alm do 8051 propriamente dito, existem variantes como o 8031 (sem memria ROM interna e comapenas 128 bytes de memria RAM), o 8751 (4 kB de memria EPROM) e o 8052 (8 kB de memriaROM, um terceiro timer e 256 bytes de memria RAM). A menos dessas diferenas, os modelos

  • Microcontrolador 8051 - 2/30

    citados so idnticos, e o texto utilizar o termo 8051 de forma genrica, citando as outras versesapenas onde for necessrio. Informaes complementares podem ser obtidas em [Inte89], [Siem90] e[Silv94].

    1.2 Principais caractersticas Freqncia de clock de 12 MHz, com algumas verses que alcanam os 40 MHz; at 64 kB de memria de dados externa; 128 bytes de RAM interna; at 64 kB de memria de programa, independente da anterior, e configurvel de duas formas

    mutuamente excludentes: 4 kB internos (ROM no 8051 e EPROM no 8751) e mais 60 kB externos; 64 kB externos;

    4 portas bidirecionais de I/O, cada uma com 8 bits individualmente endereveis; duas dessasportas (P0 e P2) e parte de uma terceira (P3) ficam comprometidas no caso de se utilizar qualquertipo de memria externa;

    2 temporizadores /contadores de 16 bits; 1 canal de comunicao serial; 5 fontes de interrupo (dois timers, dois pinos externos e o canal de comunicao serial) com 2

    nveis de prioridade selecionveis por software; oscilador de clock interno.As caractersticas citadas so bsicas e formam o ncleo da famlia 8051, que pode ser acrescido deuma ou mais das caractersticas, conforme a figura 1.2.

    80C51NCLEO

    EEPROMDERIVATIVES

    MEMRIA1k - 32k

    EPROM& OTP

    IC & CANCLOCK

    FUNES

    de at 40 MHz SERIAL BUS

    ESPECIAIS

    I/OESTENDIDAS

    ENCAPSULAMENTOMINIMIZADO

    CONVERSOR ADLOW POWER

    LOW VOLTAGE

    Fig. 1.2 - Caractersticas especiais da famlia 8051

    A ttulo de exemplo, a tabela 1.2 apresenta as caractersticas de alguns componentes da famlia 8051com a indicao de seus fabricantes. O nmero total de variantes muito maior. A Philips, porexemplo, produz mais de 40 tipos diferentes.

    Tipo Pinos Fabr. RAM CODE Notes (LV - low voltage)MCS251 40 Intel 1K 16K 16 Bit 80x51FX! Preliminar80C517A 84 Siemens 256 64Kx ALU;8PWM;CC;2UART;10bA/D80C537A 84 Siemens 256 32K ALU;8PWM;CC;2UART;10bA/D80537 84 Siemens 256 64Kx ALU;8PWM;CC;2UART;8bA/D80517 84 Siemens 256 8K ALU;8PWM;CC;2UART;8bA/D80C535A 68 Siemens 256 64Kx 515+10bA/D;1K XRAM;BRG;OWD80C515A 68 Siemens 256 32K 515+10bA/D;1K XRAM;BRG;OWD80535 68 Siemens 256 64Kx Timer2CaptComp 6ports 8/10bA/D80515 68 Siemens 256 8K Timer2 CaptComp 4 ports 8b A/D80C535 68 Siemens 256 64Kx Timer2 CaptComp 5 ports 8b A/D80C51GB 68 Intel 256 64Kx 8051FA+PCA; 8b A/D; SPI87C51GB 68 Intel 256 8K 8051FA+PCA; 8b A/D; SPI80C592 68 Philips 256 64Kx 552-I2C+CAN+XRAM87C592 68 Philips 256 16K 552-I2C+CAN+XRAM87C598 80 Philips 256 32K 552-I2C+CAN+XRAM80C552 68 Philips 256 64Kx 10b A/D; I2C; CaptComp; PWM

  • Microcontrolador 8051 - 3/30

    87C552 68 Philips 256 8K 10b A/D; I2C; CaptComp; PWM80C562 68 Philips 256 64Kx 8b A/D; I2C; CaptComp; PWM

    Tab. 1.2 - Alguns integrantes da famlia MCS51

    1.3 Anlise externaO aspecto externo do 8051 o da figura 1.4. Os pinos com nomes da forma P0.0, P0.1, etc.correspondem s quatro portas de E/S (P0 a P3). Note a dupla utilidade das portas P0 e P2, que ficamcomprometidas com o uso de memria externa, assim como os pinos P3.6 e P3.7. O sinal ALE(Address Latch Enable) permite fazer a demultiplexao de dados e endereos na porta P0, da maneiraque foi estudada para o microprocessador 8085.

    Atravs do sinal PSEN (program storage enable), o controlador informa o mundo externo se aoperao em andamento uma leitura de instruo (acesso memria de programa) ou um acesso memria de dados. Este sinal permite que o processador tenha duas regies distintas de memriaexterna, uma para armazenar cdigo e outra para dados. Ambas ocupam os endereos de 0 a FFFFH(64 kB), num total de 128 kB.

    1 2 3 4 5 6 7 8 9

    1011121314151617181920

    4039383736353433323130292827262524232221

    8 0 5 1

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

    RST / VPD RxD/data P3.0 TxD/data P3.1

    INT0 P3.2 INT1 P3.3

    T0 P3.4 T1 P3.5

    WR P3.6 RD P3.7

    XTAL2 XTAL1

    VSS

    P0.0 AD0P0.1 AD1P0.2 AD2P0.3 AD3P0.4 AD4P0.5 AD5P0.6 AD6P0.7 AD7EAALE

    P2.7 A15P2.6 A14P2.5 A13P2.4 A12P2.3 A11P2.2 A10P2.1 A9 P2.0 A8

    PSEN

    VCC

    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 ROMinterna 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.

    1.4 Modelo de programao simplificadoDesenhar um modelo de programao completo para um microcontrolador mais difcil do que paraum microprocessador, porque os microcontroladores tm, em geral, um nmero bem maior deregistradores, que servem para acessar os componentes perifricos on-chip. O modelo da figura 1.6contempla apenas os registradores de carter geral.

  • Microcontrolador 8051 - 4/30

    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 registradoresR0 a R7. DH e DL tambm so de uso geral, mas podem ser utilizados como um registrador de 16bits, 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 oendereo da prxima instruo executvel e SP aponta para o topo da pilha.

    15 0 7 0

    PC SP15 8 7 0 A

    DH DL DPTR B7 0 7 0 7 0 7 0

    R0 R1 R2 R3R4 R5 R6 R7

    7 6 5 4 3 2 1 0

    CY AC F0 RS1 RS0 OV F1 P 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 deusurio (F0 e F1), que o programador pode utilizar como desejar. Os flags esto todos reunidos noregistrador 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 osregistradores R0 a R7.Os registradores de controle dos perifricos on-chip, que no aparecem no modelo acima, serodetalhados nas sees subseqentes.

    1.5 Organizao da memria de programaA memria de programa do 8051 pode ocupar at 64 kB. Aqui h duas opes: se a memria ROMinterna do controlador for utilizada, ento esta ser mapeada nos primeiros 4 kB deste espao deendereamento (endereos 0000H a 0FFFH), e os demais 60 kB (1000H a FFFFH) sero externos.Caso no se deseje utilizar a ROM interna, ento toda a memria ser externa.A escolha, conforme mencionado na seo 1.6, feita por hardware, de acordo com o nvel de tensoaplicado ao pino EA. Nvel lgico zero seleciona memria de programa externa para todos osendereos; com nvel 1, as instrues so lidas da memria interna se seu endereo for menor do que1000H (primeiros 4 kB).

    1.6 Organizao da memria de dados1.6.1 Memria de dados internaA memria interna dividida em trs blocos fisicamente distintos, conforme ilustra a figura 1.8. Hdois blocos de RAM, de 128 bytes cada, mapeados nos endereos 00H-7FH e 80H-FFH, e mais cercade 20 registradores de funes especiais, espalhados em endereos da faixa 80H-FFH. A distinoentre os dois blocos cujos endereos coincidem feita pelos modos de endereamento, tambmindicados na figura.

  • Microcontrolador 8051 - 5/30

    Bloco superiorde 128 bytes

    FFH Registradores defunesespeciais

    FFH

    MOV comendereamento

    indireto

    80H MOV comendereamento

    direto

    80H

    Bloco inferior de128 bytes

    7FH

    MOV comendereamento

    direto ouindireto

    00H

    Fig. 1.8 - Organizao da memria de dados interna do 8051

    1.6.2 Memria de dados externaA memria de dados externa pode ocupar at 64 kB. Portanto, h coincidncias de endereos comtoda a faixa de memria de programa e com os endereos 00H a FFH da memria de dados interna.Estes conflitos so resolvidos por dois mecanismos distintos:1. conforme mencionado na seo 1.6, a distino entre memria de programa e memria de dados feita

    pelo sinal PSEN, que o hardware utiliza para habilitar o banco de memria correspondente. Estesinal ativado na leitura de instrues da memria na utilizao da instruo MOVC, transferedados entre registradores e a memria de programa;

    2. para distinguir entre memria de dados interna e memria de dados externa, o microcontrolador ofereceduas instrues distintas: MOV, para acessar a memria interna, e MOVX (move external), para amemria externa. interessante notar que esta ltima instruo exige sempre endereamentoindireto. Por exemplo, a instruoMOV 20H,Aarmazena 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 procedimentoseria:MOV R0,#20H ;coloca o endereo em R0MOVX @R0,A ;copia A para a posio em R0

    1.6.3 Mais detalhes sobre a RAM internaOs primeiros 48 bytes da RAM interna (00H a 2FH) apresentam ainda algumas particularidades,conforme mostra a figura 1.10. Os endereos 00H a 1FH compreendem quatro bancos de oitoregistradores cada. Em cada banco, os registradores so denominados R0, R1, ... R7 (os nomes sorepetidos). Estes podem ser endereados por seus nomes nas instrues (como em MOV A,R0), ouento diretamente atravs dos seus endereos (MOV A,00H). No primeiro caso, o processador precisadecidir ainda a qual banco a instruo se refere, por causa da repetio dos nomes. Esta seleo de banco feita configurando os bits RS1 e RS0 do registrador PSW de acordo com a tabela 1.4.

  • Microcontrolador 8051 - 6/30

    7F 7E 7D 7C 7B 7A 79 78 2FH... ...

    0F 0E 0D 0C 0B 0A 09 08 21H07 06 05 04 03 02 01 00 20H

    R0 - R7 1FHBanco 3 18HR0 - R7 17HBanco 2 10HR0 - R7 0FHBanco 1 08HR0 - R7 07HBanco 0 00H

    Fig. 1.10 - Organizao da parte baixa da RAM interna

    RS1 RS0 Banco0 0 00 1 11 0 21 1 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 bitspodem 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 significativodo byte 20H e terminando no bit mais significativo do byte 2FH.

    1.6.4 Os registradores de funes especiaisOs registradores de funes especiais incluem posies de acesso s portas de E/S, registradores deinterrupo, registradores da porta serial, temporizadores e registradores aritmticos. Aqueles situadosem endereos mltiplos de 8 tambm podem ser endereados bit a bit Os registradores so descritosresumidamente a seguir; os interessados em obter maiores detalhes so convidados a consultar uma dasreferncias bibliogrficas. P0 (80H), P1(90H), P2 (A0H) e P3(B0H) correspondem a posies de RAM contendo os dados das

    portas de E/S; os bits individuais so endereados como P0.0, P0.1, etc.; TH1 (8DH), TL1 (8BH), TH0 (8CH) e TL0 (8AH) contm os valores das contagens dos

    temporizadores/contadores 1 e 0, respectivamente; TCON (88H) e TMOD (89H) so os registradores de controle e modo de operao dos

    temporizadores/contadores; PCON (87H) permite adaptar o chip a uma situao na qual no h processamento, mas onde se

    quer manter os contedos das memrias internas (falha de alimentao, por exemplo); SCON (98H) e SBUF (99H) permitem, respectivamente, programar a porta de comunicao serial e

    armazenar o dado recebido ou a ser transmitido; IE (A8H) e IP (B8H) so registradores associados gesto de interrupo (habilitao e prioridade); SP (81H), PSW (D0H), A (E0H), B (F0H), DPH (83H) e DPL (82H) foram apresentados na seo

    1.8.

  • Microcontrolador 8051 - 7/30

    1.7 Modos de endereamentoO conjunto de instrues oferece diversos modos de endereamento, projetados de modo a agilizar oacesso RAM interna e tambm para facilitar as operaes de manipulao de bits e bytes.

    1.7.1 Endereamento imediatoO valor do operando faz parte do corpo da instruo e segue o opcode na memria de programa. Ooperando deve ser precedido do smbolo #, a fim de evitar a confuso com o modo direto. Exemplo:MOV B,#255 - faz o registrador B igual a FFH.

    1.7.2 Endereamento diretoNeste modo, a instruo especifica o endereo do operando, que deve ser um nmero de 8 bits.Conforme a seo 1.12, somente dados dos primeiros 128 bytes da memria RAM interna e dosregistradores de funes especiais so endereados deste modo. Exemplo: MOV A,25H - traz para oacumulador o contedo do byte 25H da RAM interna.

    1.7.3 Endereamento de bits individuaisAs instrues que manipulam bits individuais especificam este bit de forma direta, quer sob a forma deum nmero (os endereos dos bits individualmente endereveis da figura 1.10), quer sob a forma deuma abreviatura, como no caso das portas de E/S ou de outros bits dos registradores de funesespeciais. Exemplos: SETB 0FH - seta o bit mais significativo do byte 21H da memria interna; CLRP1.0 - zera o bit menos significativo da porta 1.

    1.7.4 Endereamento indiretoA instruo especifica um registrador, cujo contedo o endereo do operando. Este modo pode serutilizado para enderear tanto a memria interna quanto a memria externa. Se o endereo dooperando for de 8 bits, os registradores que podem ser especificados no corpo da instrues so R0,R1 ou SP. Caso o endereo seja de 16 bits, o registrador a ser utilizado tem que ser DPTR. Exemplos:MOV @R1,#15H - coloca o valor 15H no byte endereado por R1; MOV @DPTR,A - copia o valordo acumulador para o byte endereado por DPTR.

    1.7.5 Endereamento indexadoEste modo serve apenas para enderear a memria de programa (instruo MOVC). Nesse tipo deacesso, o endereo do operando dado pela soma do contedo de um registrador de base, que podeser DPTR ou PC, com o contedo do acumulador. Dessa forma, DPTR ou PC apontam para a basede uma tabela enquanto o acumulador seleciona um elemento dentro da tabela. Exemplos:MOVC A,@A+DPTR - o acumulador indica o offset de um byte dentro da tabela que inicia emDPTR e que deve ser copiado para o acumulador; MOVC B,@A+PC - o registrador B recebe umacpia do valor do byte que est A posies frente do PC.

    1.7.6 Endereamento dos registradores R0 a R7Os opcodes das instrues de acesso aos registradores R0 a R7 utilizam trs dos seus oito bits paraespecificar o registrador endereado. Desta forma, este modo consegue instrues mais curtas do queo modo direto, por dispensar byte com o endereo. O banco de registradores referenciado aqueleque est selecionado pelos bits RS1 e RS0 no instante em que a instruo executada. Exemplo: MOVA,R3 - copia R3 para A.

  • Microcontrolador 8051 - 8/30

    1.7.7 Endereamento implcito de registradoresAlgumas instrues trabalham sempre com um certo registradores, e portanto nenhum byte necessrio para enderear o operando. Exemplo: a instruo DA A atua sempre sobre o acumulador, epor isso no se pode especificar um registrador diferente de A.

    1.8 Funcionamento da pilha importante notar que SP um registrador de 8 bits, e que por isso o tamanho da pilha do 8051 bem menor do que o das pilhas normalmente usadas com outros microprocessadores. Alm disso, SPenderea somente a RAM interna.O funcionamento da pilha tambm diferente, pois aqui o armazenamento se faz no sentido dosendereos crescentes e os bytes so empilhados um a um, de acordo com as seguintes regras: instruo PUSH: SP incrementado e o byte escrito na posio apontada por SP; instruo POP: o byte da posio apontada por SP copiado para o destino e em seguida SP

    decrementado; chamadas de sub-rotinas e interrupes: os dois bytes que formam o endereo de retorno so

    empilhados, com o byte menos significativo no endereo mais baixo; retorno de sub-rotinas e interrupes: os dois bytes que formam o endereo de retorno so

    copiados para o PC.Desta forma, o registrador SP aponta sempre para o topo da pilha.O valor de SP aps um reset 07H, de modo que a pilha comea, por default, no byte de memriainterna 08H, onde inicia tambm o banco de registradores 1. Portanto, se o programa precisartrabalhar com mais de um banco de registradores, deve escolher outro local para a pilha.

    1.9 As interrupesO 8051 tem cinco fontes de interrupo: duas entradas externas (INT0 e INT1), doistemporizadores/contadores (Timer 0 e Timer 1) e o canal de comunicao serial. Conforme descritona 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 controlamas 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 umainterrupo esteja habilitada, tanto o bit correspondente quanto EA precisam estar setados.

    Interrupo EndereoInterrupo externa 0 0003H

    Timer 0 000BHInterrupo externa 1 0013H

    Timer 1 001BHCanal serial 0023H

    Tab. 1.6 - Endereos de desvio das interrupes

    7 6 5 4 3 2 1 0

    EA ... ... ES ET1 EX1 ET0 EX0

    Fig. 1.12 - O registrador IE

  • Microcontrolador 8051 - 9/30

    A cada interrupo est associado um de dois nveis de prioridade (alto ou baixo), de acordo com oregistrador IP (Interrupt Priority), que aparece na figura 1.14. Estes nveis so tais que um tratador deinterrupo 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 dereconhecimento das interrupes externas INT0 e INT1. Os bits IT0 e IT1 (bits 0 e 2) determinam omodo de reconhecimento das interrupes, se por nvel ou por transio. Quando um destes bits estem 0, a interrupo correspondente tem garantia de ser detectada se o pino permanecer em 0 por pelomenos 12 perodos de clock; quando em 1, a interrupo correspondente acontece quando ocorre umatransio de 1 para 0. Os bits IE0 e IE1 (bits 1 e 3) so flags que sinalizam internamente os pedidos deinterrupo. So colocados automaticamente em 1 quando h uma transio de 1 para 0 no pinocorrespondente e em 0 quando essa interrupo atendida.

    1.10 Os temporizadores / contadoresO 8051 dotado de dois temporizadores/contadores internos programveis, deste ponto em diantechamados simplesmente de timers. So controlados por software e tambm por sinais externosaplicados ao microcontrolador. Os timers so geralmente utilizados para a gerao de eventos apsdecorrido um determinado intervalo de tempo (timeouts), na gerao de pedidos de interrupoperidicos, ou ainda na contagem e na medio da largura de pulsos externos. Os registradoresassociados programao dos timers, TCON e TMOD, aparecem nas figuras 1.16 e 1.18.

    7 6 5 4 3 2 1 0

    TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

    Fig. 1.16 - O registradorTCON

    7 6 5 4 3 2 1 0

    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 vezque 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 correspondenteestiver 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 sinterrupes e foram discutidos na seo 1.18.O registrador TMOD (figura 1.16b) define o modo de funcionamento dos timers, discutido logoadiante.

    1.10.1 Habilitao da contagemDiz-se que um timer est habilitado quando esto satisfeitas todas as condies para que sua contagemprogrida com o passar do tempo. A habilitao dos timers depende dos valores atribudos aos bitsC/T.x e GATE.x, bem como dos sinais externos aplicados aos pinos T.x e INT.x (entenda-se, desteponto em diante, x como um nome genrico para 0 ou 1).

  • Microcontrolador 8051 - 10/30

    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 confundircom o pino INT.x, utilizado na habilitao).

    1.10.2 AplicaesA possibilidade de se habilitar um timer externamente atravs do pino INT.x permite medir a largurade pulsos externos. Para tanto, conecta-se o sinal cuja largura se deseja medir ao pino INT.x, com otimer correspondente configurado como temporizador (C/T.x = 0) e com o bit GATE.x = 1. Destaforma, a contagem avanar enquanto o sinal externo estiver em nvel alto, obtendo-se uma contagemproporcional durao do pulso. A largura do pulso pode ento ser calculada a partir do perodo dosinal de clock. possvel tambm contar pulsos externos. Para tanto, conecta-se o sinal a medir ao pino T.x, com ocontador configurado como contador (C/T.x = 1) e com o bit GATE.x = 0. Desta forma, a contagemavanar a cada pulso do sinal externo.Os dois mecanismos acima podem ainda ser combinados para contar pulsos de um sinal externosomente durante um intervalo de tempo determinado por outro sinal externo. Para tanto, configura-seo timer como contador (bit C/T.x = 1) com o bit GATE.x = 1. Desta forma, a contagem avanar deacordo com os pulsos recebidos no pino T.x, mas somente enquanto o nvel no pino INT.x estiver em1.

    1.10.3 Modos de operaoCada timer pode operar em um de quatro modos de operao diferentes. O modo de operao definido pelos valores dos bits M0.x e M1.x do registrador TMOD.

    Modo 0 (M1.x = 0 e M0.x = 0)Neste modo, os registradores TLx e THx so vistos como um contador de 13 bits, formado por THx epelos 5 bits menos significativos de TLx. Os 3 bits mais significativos de TLx so indeterminados edevem ser ignorados. O registrador THx pode ser visto como um contador de 8 bits, cuja freqnciade contagem igual a 1/32 da freqncia de clock. Este modo existe por razes de compatibilidadecom a famlia MCS48, mais antiga.

    Modo 1 (M1.x = 0 e M0.x = 1)O funcionamento deste modo semelhante ao do modo 0. A nica diferena que o par deregistradores TLxTHx visto como um contador de 16 bits.A figura 1.20 representa o funcionamento dos timers nos modos 0 e 1. Note a representao do bitC/T.x, em forma de uma chave que seleciona a fonte de pulsos de clock para o timer e tambm a sadaoverflow, que gera o pedido de interrupo associado. Essa figura mostra ainda o mecanismo dehabilitao da contagem, descrito no incio desta seo.

  • Microcontrolador 8051 - 11/30

    GATE

    INTx PIN

    TRx

    OSC /12

    C/T=0

    C/T=1

    CONTROL

    TLx(5 bits)

    THx

    (8 bits)TFx

    INTERRUPT(8 bits)

    Tx PIN overflow

    Fig. 1.20 - Funcionamento dos timers nos modos 0 e 1

    Modo 2 (M1.x = 1 e M0.x = 0)Neste modo, o registrador TLx funciona como um contador recarregvel de 8 bits, conforme a figura1.22. O registrador THx contm o valor que recarregado automaticamente em TLx sempre que acontagem deste sofre um overflow (passagem de FFH para 00). O overflow faz tambm com que oflag TFx seja setado e portanto gera um pedido de interrupo, que ser atendido de acordo com asregras de habilitao das interrupes. O valor de THx no sofre qualquer alterao e TLx retoma acontagem a partir do valor carregado.

    GATE

    INTx PIN

    TRx

    OSC /12

    C/T=0

    C/T=1

    CONTROL

    TLx

    THx

    (8 bits)

    TFxINTERRUPT

    (8 bits)

    Tx PINoverflow

    Fig. 1.22 - Funcionamento dos timers no modo 2

    Modo 3 (M1.x = 1 e M0.x = 1)TL0 e TH0 funcionam como dois contadores independentes de 8 bits, conforme a figura 1.24. Noteque TR1 e TF1 so desviados do Timer 1 e utilizados para controlar TH0.O par de registradores TL1TH1 continua funcionando como um contador de 16 bits. Contudo, no sepode desabilitar sua contagem atravs de TR1, e TF1 no reage quando ocorre overflow dacontagem em TL1TH1. Para desabilitar a contagem de TL1TH1 quando TL0TH0 estiver no modo 3,deve-se colocar TL1TH1 tambm no modo 3. Ento, se o Timer 0 estiver no modo 3 e o Timer 1 forcolocado no modo 3, o par TL1TH1 pra de contar e preserva seu valor at que outro modo defuncionamento seja escolhido para o Timer 1.

  • Microcontrolador 8051 - 12/30

    GATE

    INT0 PIN

    TR0

    OSC /12

    C/T=0

    C/T=1

    CONTROL

    TL0TF0

    INTERRUPT(8 bits)

    T0 PINoverflow

    TH0

    (8 bits)TF1

    INTERRUPT

    overflowCONTROLTR1

    INT1 PIN

    GATE

    C/T=0

    C/T=1

    CONTROL

    TL1

    T1 PIN

    0 se modo 3 paratimer 1

    TH1

    Fig. 1.24 - Timer 0 no modo 3 e alteraes no timer 1

    1.11 O canal serialA interface serial no 8051 conta com dois registradores de dados, um deles utilizado na transmisso eoutro na recepo. O conjunto de instrues, contudo, referencia ambos pelo nome SBUF. Adistino entre eles feita de acordo com a natureza da operao, escrita ou leitura. Desta forma,escrever em SBUF implica no envio do byte escrito atravs da interface serial; analogamente, a leituradesse registrador retorna o ltimo byte recebido.O controle do canal serial feito pelo registrador SCON, apresentado na figura 1.26, e pelo bit SMODdo registrador PCON, que aparece na figura 1.28. Os bits SM0 e SM1 do registrador SCONselecionam o modo de funcionamento, de acordo com a tabela 1.8.

    7 6 5 4 3 2 1 0

    SM0 SM1 SM2 REN TB8 RB8 TI RI

    Fig. 1.26 - O registrador PCON

    7 6 5 4 3 2 1 0

    SMOD ... ... ... GF1 GF0 PD IDL

    Fig. 1.28 - O registrador PCON

    SM0 SM1 Modo Tipo Bits Taxa de TX0 0 0 Sncrona, HD 8 Fclock/120 1 1 Assncrona, FD 10 Varivel1 0 2 Assncrona, FD Fclock/32 ou /641 1 3 Assncrona, FD Varivel

    Tab. 1.8 - Modos de funcionamento do canal serial

    Modo 0 (SM0 = 0 e SM1 = 0)Este modo implementa a comunicao sncrona de palavras de 8 bits. As palavras so transmitidas erecebidas atravs do pino RxD, o que significa que, neste modo, apenas a comunicao half-duplex(HD, transmisso nos dois sentidos, mas no simultnea) possvel. O sinal de clock necessrio para o

  • Microcontrolador 8051 - 13/30

    sincronismo enviado pelo pino TxD. A taxa de transmisso fixa e igual a 1/12 da freqncia doclock 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).

    Modo 1 (SM0 = 0 e SM1 = 1)A palavra transmitida composta por 10 bits: um start bit (nvel lgico 0), oito bits de dados, e umstop bit (nvel lgico 1). A taxa de transmisso dada pela equao

    Txf

    TH

    SMODclock

    =

    232 12 256 1( )

    , (1.2)

    onde SMOD o bit 7 do registrador PCON (figura 1.28b) e TH1 o registrador mais significativo dacontagem do timer 1.

    Modo 2 (SM0 = 1 e SM1 = 0)Cada palavra de dados composta de 11 bits. O bit adicional enviado o bit TB8 de SCON. Narecepo, este bit que se l em RB8. A taxa de transmisso pode ser escolhida entre 1/64 (SMOD =0) ou 1/32 (SMOD = 1) da freqncia de clock do sistema.

    Modo 3 (SM0 = 1 e SM1 = 1)Igual ao modo 2 exceto pela taxa de transmisso, dada tambm pela equao 1.2.O bit SM2 do registrador SCON tem diferentes interpretaes, dependendo do modo de operaoselecionado: no modo 0, no tem qualquer efeito, devendo permanecer em 0; no modo 1, inibe (SM2 = 1) ou habilita (0) a gerao de um pedido de interrupo da porta serial

    quando da recepo de um stop bit invlido; nos modos 2 e 3, permite habilitar a comunicao entre vrios 8051.REN (Reception ENable) habilita a recepo. Quando est em 1, o primeiro start bit em RxD implicarecepo de um dado em SBUF.TI o bit de requisio de interrupo da transmisso. setado pelo hardware aps a transmisso dooitavo bit de dados quando no modo 0, e no incio da transmisso do stop bit nos outros modos.O bit RI o bit de requisio de interrupo na recepo. setado pelo hardware no momento darecepo do oitavo bit de dados no modo 0, ou durante a recepo de um stop bit nos outros modos.TI e RI devem ser reinicializados pelas rotinas de tratamento das respectivas interrupes de modo ahabilitar novas interrupes.

    1.12 Sistema de desenvolvimento Avocet

    Um sistema de desenvolvimento um sistema que permite fazer a edio, depurao e teste deprogramas para um determinado tipo de processador. A maioria dos sistemas de desenvolvimento paramicroprocessadores e microcontroladores se baseiam no PC. Normalmente so necessrios um editorde programas, um cross-assembler e/ou um compilador e um linker, alm de simuladores ouemuladores.Muitos cross-assemblers permitem a incluso de macros, que so trechos de programas fontes aosquais atribudo um nome. Este nome pode ento ser usado em qualquer parte do programa como sefosse uma instruo.

  • Microcontrolador 8051 - 14/30

    1.12.1 Sistema de desenvolvimento AvocetDentre as diversas ferramentas de software para o desenvolvimento de programas para a famlia 8051,uma das mais conhecidas o conjunto da Avocet, ilustrado na figura 1.30. Praticamente todos osfornecedores de software para este tipo de desenvolvimento apresentam o mesmo elenco deprogramas utilitrios.

    X.C

    AVC

    X.OBJ

    XY.LIB

    AVLIB

    Y.ASM

    AVMAC51

    Y.OBJ

    AVLINK

    HARDWARE

    XYZ.HEX

    GRAVADORDE EPROM

    SIMULADOR

    CARREGADOR

    Programa Fonte em Assembly

    Fig. 1.30 - Conjunto de ferramentas de desenvolvimento

    1.12.2 Roteiro de elaborao de um programaEsta seo apresenta os passos a serem seguidos para a elaborao de um programa paramicrocontroladores da famlia 8051, utilizando as ferramentas da Avocet.

    1.12.2.1 Edio do programa-fonteUtilizando um editor de texto simples, que permita gravar arquivos em formato ASCII, criar oprograma-fonte. O nome do arquivo deve ter no mximo oito letras e extenso .ASM.

    1.12.2.2 MontagemA sintaxe para chamar o assembler , no caso do exemplo acima:AVMAC51

    Nesta etapa, so gerados os arquivos .obj e .prn contendo, respectivamente, oscdigos hexadecimais correspondentes s instrues e a listagem para consulta dos resultados.

    1.12.2.3 LinkagemA sintaxe para chamar o linker , no caso do exemplo acima:AVLINK51 =

    Nesta etapa, so gerados os arquivos .hex e .map contendo,respectivamente, os cdigos hexadecimais em arquivo-texto e o mapa de linkagem. O sistema oferece,atravs da sintaxe =, a oportunidade de criar um programa final (.HEX) comnome diferente do arquivo-fonte, mas esta facilidade raramente til. Normalmente utiliza-se a sintaxeAVLINK51 =.

  • Microcontrolador 8051 - 15/30

    1.12.2.4 SimulaoUm simulador um programa que roda em um determinado computador e simula a operao de umaoutra CPU. O simulador da Avocet chamado atravs do comandoAVSIM51

    1.12.2.5 Gravao em EPROMUma vez depurado e funcionando, o programa est pronto para ser colocado na EPROM do sistemaque utiliza o microcontrolador.

    1.12.2.6 Utilizao do simulador AVSIM51 Chame o programa: AVSIM51; escolha a opo C (8031); tecle L (Load) para carregar um programa; digite P (Program) para escolher um programa; digite o nome do programa a ser carregado, com a extenso .HEX, e finalize com Enter; tecle ESC. Esta tecla desloca o cursor alternadamente entre a linha de comandos (na parte inferior

    da tela) e a parte superior da tela, onde so exibidos os registradores do 8031; aps o primeiro toque da tecla ESC, o cursor estar no campo de registradores, mais

    especificamente sobre o campo PC (Program Counter). Digite o endereo correspondente ao inciodo programa;

    a partir deste ponto, esto disponveis os comandos da tabela 1.10; para sair do programa de simulao, digite ESC, Q (Quit), E (Exit).

  • Microcontrolador 8051 - 16/30

    Controle de execuo e exibio Movimentao do cursor

    F1 RUN Esc Regs. / linha de comando

    F10 Single Step (passo a passo) F7 Cursor - Hex, Bin, ASCII

    F9 UNDO - volta um comando Ctrl Pg Up Scroll lock

    F2 Move Breakpoint UP Ctrl A / B Registradores A / B

    F3 Set breakpoint Ctrl D Data Pointer

    F4 Move Breakpoint DOWN Ctrl CXFO Flags C/AC/FO/OV

    F5 Velocidade de simulao Ctrl I Interrupes

    Alt F5 Alternar apresentao de smbolos /valores hexadecimais

    Ctrl P PC

    F6 Atualizar todas as janelas / somentejanelas com trace ligado

    Ctrl R Banco de Registradores

    Alt F6 Liga / desliga trace das janelas Ctrl S SP

    F8 Liga / desliga skip Ctrl T Timers / counters

    Alt 0-7 R0 - R7

    Alt A, B Janelas de dados

    Alt P,Q Porta 0, porta 2

    Alt SC Serial BUF/COM

    Alt Y Contador de ciclos

    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 Notao

    Decimal 255Hexadecimal $FF ou 0FFH

    Binrio %111 ou 111B

    Tab. 1.12 - Representao de constantes no AVSIM51

    1.13 Exerccios1. 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 oarquivo .hex e simule-o no AVSIM51 para verificar suas previses. So necessrias as diretivasORG e END, que constam dos anexos, juntamente com a tabela de instrues.

    MOV R1,#3MOV R3,#4INC @R1MOV A,@R1MOV DPTR,#MENSMOVC A,@A+DPTRSJMP $

    MENS DB "1234567890ABCDE",0END

  • Microcontrolador 8051 - 17/30

    2. Use o simulador para ver a troca dos bancos de registradores no programa abaixo.ORG 2000H;MOV A,#0

    INICIO: CLR RS0CLR RS1MOV R0,A ;DADOS NO BANCO0 RS1=RS0=00MOV R1,AMOV R2,#00HMOV R3,#00HINC ASETB RS0 ;DADOS NO BANCO1 RS1 RS0 = 01MOV R0,AMOV R1,AMOV R2,#11HMOV R3,#11HINC ACLR RS0 ;DADOS NO BANCO2 RS1 RS0 = 10SETB RS1MOV R0,AMOV R1,AMOV R2,#22HMOV R3,#22HINC ASETB RS0 ;DADOS NO BANCO3 RS1 RS0 = 11MOV R0,AMOV R1,AMOV R2,#33HMOV R3,#33HINC AJMP INICIOEND

    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 osdados so armazenados seqencialmente a partir da posio de memria 20H

    ORG 2000HMOV R0,#20H ;INICIO DO ARMAZENAMENTOMOV R1,#0H ;CONTADOR DOS IMPARESMOV R2,#0H ;CONTADOR DOS PARES

    INICIO:MOV A,P1MOV @R0,A ;GRAVA DADOANL A,#01 ;VER SE PAR OU IMPARJNZ IMPAR

    PAR: INC R2MOV A,@R0MOV P2,AINC R0JMP INICIO

    IMPAR:INC R1MOV A,@R0INC R0MOV P3,A ;MOSTRA DADOJMP INICIOEND

    Este programa utiliza a porta P1 como porta de entrada, dentro do simulador. Isto se faz atravs deum arquivo, que associado a essa porta. Cada vez que o programa acessa a porta, um novocaracter do arquivo lido. O valor lido o valor hexadecimal do caracter, incluindo espaos embranco e caracteres de fim de linha (0DH, 0AH). Opcionalmente, pode-se fazer com que a leiturado arquivo recomece do incio sempre que o programa chegar ao fim do arquivo, o que garanteuma fonte ininterrupta de dados para simulao.Para o programa acima, crie com um editor de texto um arquivo chamado P1.DAT, contendo alinha:

  • Microcontrolador 8051 - 18/30

    0123456789e um ENTER no final.Monte o programa e carregue-o no AVSIM51. Para associar o arquivo de entrada porta P1, siga ospassos 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 nessahora. 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 paresou 3 impares. ( Use a instruo CJNE Rn,#dado,endereco ).

    2 O kit de desenvolvimento WF

    2.1 ApresentaoO sistema mnimo 8031 v. 2.0 tem uma CPU 8031. Pode comunicar-se com um PC atravs do canalserial, atravs do qual possvel transferir programas desenvolvidos no PC para o kit. Este conta aindacom outros componentes, listados na tabela 2.2 juntamente com os endereos que ocupam.

    Componente Endereos

    EPROM 2732 (8 kB) 0000H - 1FFFH

    RAM 6264 (8 kB) 2000H - 3FFFH

    LCD 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, conformemostra a figura 2.2.

    REA 1 REA 20 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7

    Fig. 2.2 - O display de cristal lquido do kit WF

  • Microcontrolador 8051 - 19/30

    2.2 RestriesAs portas P0 e P2, bem como os pinos P3.6 e P3.7, so usados para acessar a memria externa. Os bitsP3.0 e P3.1 e o bit 7 do registrador PCON so utilizados na transmisso de dados pelo canal serial eportanto s podem ser utilizados por programas que, depois de carregados no kit, no faam mais usoda comunicao com o PC. Alm disso, o timer 1 utilizado para determinar a taxa de transmisso docanal serial e portanto tambm s pode ser usado em outras aplicaes se no houver necessidade decomunicao 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 alteradasinvoluntariamente. Se isto acontecer, a comunicao com o PC pode apresentar problemas.

    2.3 Sub-rotinas de servioNa EPROM existem diversas sub-rotinas que do suporte execuo de tarefas tais como a entrada esada de dados via terminal do PC e a apresentao de mensagens no LCD. Estas sub-rotinas estolistadas na tabela 2.4. A chamada dessas subrotinas feita mediante a instruo LCALL .

    Nome Endereo Descrio tempo

    APAGA 0089H Apaga displayAPAGAT 0196H Apaga terminal de vdeoLEBYTE 00D0H L numero digitado no teclado (byte fica em a )NUMTER 0164H Imprime numero no terminal, (valor de a)NUMLCD 013EH Imprime numero no display (valor de a)CARLCD 0071H Imprime caracter no display (valor de a)AREA1 00A4H Posiciona cursor do display na rea 1, (coluna em A)AREA2 00ADH Posiciona cursor do display na rea 2, (coluna em A)MENLCD 00B6H Imprime mensagem no display (inicio=DPTR, 0 =fim)APACUR 009BH Apaga cursor do LCDACECUR 01BDH Acende cursor do LCDHOMCUR 0092H Home cursor do LCDOUTLCD 0059H Comando para LCDCARTER 01AAH Imprime caracter no terminal de vdeo (dado de A)MENTER 0118H Imprime mensagem n terminal de vdeo, inicio=DPTRLENUM 00DDH L numero digitado no terminal,(numero em A)LEMENS 00F3H L mensagem digitada no terminal, (DPTR=endereo)TECPRES 01C6H Faz CY = 1 se alguma tecla foi pressionadaCODTECL 01DAH L o cdigo da tecla pressionada, (valor em A)

    Tab. 2.4 - Sub-rotinas de servio do kit WF

    2.4 Alguns endereos importantesAlm dos endereos das sub-rotinas apresentadas acima, so importantes os endereos listados natabela 2.6.

  • Microcontrolador 8051 - 20/30

    Descrio Endereo

    Incio da RAM 2000H

    Redirecionamento da interrupo externa 0 (P3.2) 2003H

    Redirecionamento da interrupo do timer 0 200BH

    Redirecionamento da interrupo externa 1 (P3.3) 2013H

    Redirecionamento da interrupo do timer 1 201BH

    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 noarquivo ENDERECO.ASM. Convm incluir este arquivo no incio de todos os programasdesenvolvidos 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 arquivoENDERECO.ASM, reproduzidas abaixo. No KIT isto est gravado na EPROM.

    ORG 0003H ;INT 0LJMP RAM+0003H ;INT 0 redirecionadaORG 000BH ;T0LJMP RAM+000BH ;T0 redirecionadaORG 0013H ;INT 1LJMP RAM+0013H ;INT 1 redirecionadaORG 001BH ;T1LJMP RAM+001BH ;T1 redirecionadaORG RAM

    Note que estas linhas no tm efeito sobre programas transferidos para o kit, pois este tem EPROMnos endereos modificados. A utilidade deste redirecionamento est em permitir a execuo deprogramas no simulador. Por isso, programas que utilizem tratadores de interrupo devem seguir aestrutura dada abaixo:

    ORG RAMSJMP INICIOORG 2003H... ;tratador da interrupo externa 0ORG 200BH... ;tratador da interrupo do timer 0

    INICIO: ... ;instrues do programaEND

    Um outro problema que aparece no desenvolvimento de programas para o kit WF que o simuladorAVSIM51 no possui as sub-rotinas de servio e portanto no pode simul-las. Ento, se um programaescrito para chamar sub-rotinas da tabela 2.4 for executado no simulador, preciso tomar cuidado paraque o programa no se perca quando saltar para uma dessas sub-rotinas. A soluo adotada aquiconsiste em incluir, no incio do programa, o arquivo RET.ASM, que coloca instrues RET em todosos endereos listados na tabela 2.4. Desta forma, as chamadas das sub-rotinas so ignoradas durante asimulao e no atrapalham. Mais uma vez, este arquivo s tem efeito no simulador, pois o kit temEPROM nesses endereos.

    2.5 Desenvolvimento de programasPara fazer o desenvolvimento de programas para o 8031 so necessrios: um editor, EDIT; um montador, AVMAC51;

  • Microcontrolador 8051 - 21/30

    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 %[email protected] %1=%1hexbin %1.hex %1.bin I

    Supondo ser o nome dado a este arquivo av.bat, pode-se digitarav 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. Quandoestiver sendo utilizado o conector padro RS-232C, a porta escolhida deve ser a primeira disponvel.

    n Porta selecionada

    1 03F0H (COM 1)

    2 02F0H (COM 2)

    3 03E0H (COM 3)

    4 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 atransferncia do programa. Em seguida, o LINK8031 pede que o usurio pressione uma tecla do PCpara iniciar a execuo do programa no kit. Uma vez alcanado este estado, o PC passa a funcionarcomo 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 Exerccios2.10.2 Utilizao da interrupo do timer 0O programa abaixo utiliza o timer 0 para controlar a escrita das palavras BOM e DIA no LCD,que alternam a cada segundo.%INCLUDEENDERECO.ASM ;endereos das rotinas na EPROMTIMER0H EQU 10H ;valores para o timer 0TIMER0L EQU 01H

    ORG RAMLJMP INICIO

    ;INTERRUPCAO DO TIMER 0ORG 200BHINC R0CJNE R0,#15,RECARGA ;15 Int perfazem 1 segundoMOV R0,#00MOV A,#0 ;cursor na coluna 0LCALL AREA1 ;da rea 1 do LCDCJNE R1,#0,DIA ;seleciona a mensagem

    BOM: MOV DPTR,#MSGBOM

  • Microcontrolador 8051 - 22/30

    LCALL MENLCDMOV R1,#1 ;alterna a mensagemSJMP RECARGA

    DIA: MOV DPTR,#MSGDIALCALL MENLCDMOV R1,#0 ;alterna a mensagem

    RECARGA:MOV TH0,#TIMER0HMOV TL0,#TIMER0LRETI

    INICIO: LCALL APAGA;R0 CONTA OVERFLOWS DO TIMER 0

    MOV R0,#0 ;15 ESTOUROS = 1 segundoMOV R1,#0 ;R1 seleciona a msg a ser apresentadaMOV TMOD,#1 ;timer 0 no modo de contagem 1MOV TH0,#TIMER0H ;valor inicial do timer 0MOV TL0,#TIMER0LSETB ET0 ;habilita interrupo do timer 0SETB EA ;habilita todas as interrupesSETB TR0 ;liga timer 0SJMP $

    MSGBOM DB "!!!!!BOM",0MSGDIA DB "DIA!!!!!",0

    END

    ; 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.

    2.6.2 Leitura de nmeros do tecladoO programa abaixo l nmeros at 256 do teclado do PC. Os nmeros mpares aparecem na rea 1 doLCD e os pares na rea 2. O programa termina quando tiverem sido digitados 4 nmeros do mesmotipo (pares ou mpares).%INCLUDE ENDERECO.ASM ;ENDERECOS DAS ROTINAS NA EPROMCR EQU 0DHLF EQU 0AH

    ORG RAM ; ENDERECO DA RAMLJMP INICIO ;INICIO DO PROGRAMAORG 2003H ;INTERRUPCAO INT0RETI ;SEM INTERRUPOORG 200BH ;INTERRUPCAO DO TIMER 0RETI ;NO USADO

    INICIO: MOV DPTR,#MENS1CALL MENTERLCALL APAGA ;LIMPAR DISPLAYMOV R1,#4 ;CONTADOR DE NMEROS IMPARESMOV R4,#4 ;CONTADOR DE NMEROS PARES

    LACO: LCALL LEBYTE ;ENTRADA DO TECLADOCALL APAGA ;PUSH ACC ;SALVAR VALOR LIDOANL A,#1 ;VER SE PAR OU IMPARCJNE A,#1,PAR ; DESVIA SE PAR

    IMPAR: MOV A,#0 ;DEFINIR AREA1CALL AREA1POP ACC ;RECUPERA VALOR LIDOCALL NUMLCD ;MOSTRAR VALOR IMPARDJNZ R1,LACO ;CONTADORMOV DPTR,#MENIMP ;ATINGIU N IMPARES

  • Microcontrolador 8051 - 23/30

    SJMP FIMPAR: MOV A,#0 ;POSICIONAR AREA2

    CALL AREA2POP ACC ;RECUPERAR VALORCALL NUMLCD ;IMPRIMIR PARES NA AREA2DJNZ R4,LACOMOV DPTR,#MENPAR ;ATINGIU N PARES

    FIM: CALL APAGACALL MENLCD ;MOSTRA MENSAGEM DE FINAL ATINGIDOCALL MENTERSJMP $ ;PERMANECE PRESO NESTE LACO

    MENS1 DB ' ENTRE COM UM NUMERO < 255 ',CR,LFDB ' O PROGRAMA IRA DETECTAR SE SAO PARES OU IMPARES ',CR,LFDB ' O PROGRAMA TERMINA COM A ENTRADA DE 4 DO MESMO TIPO',CR,LF,0

    MENPAR DB '4 PARES ',0MENIMP DB '4IMPARES',0

    END

    2.6.3 Outras tarefas utilizando o kit WF1. Fazer um programa para apagar as duas reas do display e escrever a letra A na terceira coluna da

    rea 1 e o numero 2 na 4 coluna da rea 2.2. Fazer um contador hexadecimal que coloque este valor na porta P1.3. Alterar o contador acima para fazer uma contagem decimal e mostrar os valores de forma legvel no

    display de cristal lquido e no terminal de vdeo (incluir um delay) para permitir a leitura.4. Fazer um programa que escreva os nmeros de 1 a 5 nos endereos a partir de 50H e 2200H5. Copiar os dados da regio de memria 2100 at 210F para 2300H e seguintes.6. Mostrar o contedo de 16 posies de memria, a partir de uma posio de memria solicitada ao

    operador pelo teclado, no terminal de vdeo. Defina uma tecla para avanar para a linha seguinte eoutra para retroceder.

    7. Fazer um programa que gere uma onda quadrada na porta P1.7.8. Gerar uma forma de onda quadrada, em P1, com a maior freqncia possvel.9. Fazer um programa que gere uma onda retangular na porta P1.7.10. Fazer um programa para ler a porta P1 e mostrar o resultado em hexadecimal, binrio e decima no

    terminal de vdeo.11. Contar o numero de vezes que a sada P1.7 foi colocada em nvel baixo. Mostrar este valor em

    decimal na rea 1 e no vdeo e em hexadecimal na rea 2 e no vdeo.12. Incrementar o contedo da posio de memria 20H quando a porta P1.7 estiver em zero. Se o bit

    P1.6 este valor deve ser decrementado. mostrar o contedo desta posio de memria no vdeo eno display.

    13. Fazer um programa que gere uma onda quadrada na sada P1.7 usando o temporizador T0.14. Gerar uma forma de onda retangular na sada P1.6 do 8031. A onda retangular deve ter um nvel

    alto durante 25 microssegundos e um nvel baixo durante 40 microssegundos.15. Gerar uma onda quadrada na sada P1.7 usando o temporizador T0. O programa principal deve ler

    o teclado do PC e mostrar o valor hexadecimal da tecla no terminal e no LCD.16. Usar o timer para gerar uma onda quadrada P1.7 com freqncia varivel e proporcional aos 4 bits

    menos significativos de P1.17. Escrever uma palavra qualquer na rea 1 do LCD, aps 1 segundo apagar e escrever na rea 2 e

    assim sucessivamente.

  • Microcontrolador 8051 - 24/30

    18. Fazer um programa que possa medir a freqncia de um sinal colocado na sada P1.7. Quais so oslimites 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)

    Microcontroladores 8051 / 80535[Inte89] INTEL CORPORATION. 8-bit Embedded Controller Handbook. Santa Clara, 1989.[Siem90] Microcomputer Components SAB 80C515 / 80C535. Siemens A.G. (1990)[Silv94] da Silva Jr., Vidal Pereira: Aplicaes Prticas do Microcontrolador 8051. Editora rica

    Ltda., Tatuap - SP - Brasil (1994). ISBN 085-7194-194-7[Nico00] Nicolosi Denys: Microcontrolador 8051 detalhado. Editora rica Ltda., Tatuap - SP -

    Brasil (2000). ISBN 085-7194-721-x

  • Microcontrolador 8051 - 25/30

    Anexo - Conjunto de instrues do 8051

    3.1 Abreviaturas utilizadas na tabela de instruesAbreviatura Interpretao

    Rn registrador R0 a R7 do banco selecionado por RS1 e [email protected] endereamento indireto do byte endereado por Ri; i 1#dado8 endereamento imediato; dado8 uma constante de 8 bits#dado16 endereamento imediato; dado16 uma constante de 16 bitsDireto endereamento direto; direto um endereo da RAM internaBit endereamento direto de um bit da memria RAM interna ou SFREnd16 endereo de 16 bits (LJMP e LCALL)End11 endereo de 11 bits (SJMP e SCALL)End. rel. endereamento relativo (SJMP e todos os JMPs condicionais)

    3.2 Principais diretivasDiretiva Significado Funo Exemplo

    ORG Origin Definir ende. montagem ORG 2000HEQU Equate Criar sinnimos CR EQU 0DH;

    LF EQU 0AHDB Define byte Criar variveis CONTAGEM DB 00HDB ,.. Define byte Criar vetores TABELA DB 15H, 22H, 35HDB Define byte Criar strings ASCII MSG DB Mensagem 1%INCLUDE Include Incluir arquivos-fonte %INCLUDE RET.ASMEND End Indica final de programa END

    3.3 As instruesAs 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 decada 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.

    4.6.2 Instrues aritmticasMnem. Operando Descrio B C CY AC OVADD A,Rn Soma registrador ao acumulador 1 1 * * *ADD A,direto Soma byte ao acumulador 2 1 * * *ADD A,@Ri Soma byte no endereo Ri a A 1 1 * * *ADD A,#dado8 Soma dados imediatos a A 2 1 * * *ADDC A,Rn Soma o registrador e o carry a A 1 1 * * *ADDC A,direto Soma byte e o carry a A 2 1 * * *ADDC A,@Ri Soma byte no endereo Ri e carry a A 1 1 * * *ADDC A,#dado8 Soma dados imediatos e o carry a A 2 1 * * *SUBB A,Rn Subtrai Rn e borrow de A: A = A-CY-Rn 1 1 * * *

  • Microcontrolador 8051 - 26/30

    SUBB A,direto Subtrai byte e borrow do acumulador 2 1 * * *SUBB A,@Ri Subtrai byte no end. Ri e borrow de A 1 1 * * *SUBB A,#dado8 Subtrai dados imediatos e borrow de A 2 1 * * *INC A Incrementa acumulador 1 1 - - -INC Rn Incrementa registrador 1 1 - - -INC Direto Incrementa byte 2 1 - - -INC @Ri Incrementa byte no endereo Ri 1 1 - - -DEC A Decrementa acumulador 1 1 - - -DEC Rn Decrementa registrador 1 1 - - -DEC Direto Decrementa byte 2 1 - - -DEC @Ri Decrementa byte no endereo Ri 1 1 - - -INC DPTR Incrementa datapointer 1 2 - - -MUL AB Multiplica A e B, resultado em BA 1 4 0 - *DIV AB Divide A/B, quociente em A e resto em B 1 4 0 * 0DA A Ajuste do acumulador aps adio BCD 1 1 * * -

    3.3.2 Instrues lgicasMnem. Operando Descrio B C CY AC OVANL A,Rn AND entre registrador e acumulador 1 1 - - -ANL A,direto AND entre byte e acumulador 2 1 - - -ANL A,@Ri AND entre o contedo do endereo Ri e A 1 1 - - -ANL A,#dado8 AND entre dado imediato e o acumulador 2 1 - - -ANL direto,A AND entre acumulador e byte 2 1 - - -ANL dir,#dado8 AND entre dado imediato e byte 3 2 - - -ORL A,Rn OR entre registrador e acumulador 1 1 - - -ORL A,direto OR entre byte e acumulador 2 1 - - -ORL A,@Ri OR entre o contedo do endereo Ri e A 1 1 - - -ORL A,#dado8 OR entre dado imediato e o acumulador 2 1 - - -ORL direto,A OR entre acumulador e byte 2 1 - - -ORL dir,#dado OR entre byte e dado imediato 3 2 - - -XRL A,Rn XOR entre o acumulador e Registrador 1 1 - - -XRL A,direto XOR entre acumulador e byte 2 1 - - -XRL A,@Ri XOR entre A e o contedo do endereo Ri 1 1 - - -XRL A,#dado8 XOR p/ dado imediato e o acumulador 2 1 - - -XRL direto,A XOR entre acumulador e byte 2 1 - - -XRL dir,#dado XOR entre byte e dado imediato 3 2 - - -CLR A Zera o acumulador 1 1 - - -CPL A Complementa o acumulador 1 1 - - -RL A Rotaciona o acumulador para a esquerda 1 1 - - -RLC A Rotaciona A para a esquerda pelo carry 1 1 * - -RR A Rotaciona A direita 1 1 - - -RRC A Rotaciona A direita pelo carry 1 1 * - -SWAP A Permuta os bits (3-0) e (7-4) de A 1 1 - - -

    3.3.3 Instrues de manipulao de bitsMnem. Operando Descrio B C CY AC OVCLR C Reseta CY 1 1 0 - -CLR bit Reseta o bit endereado 2 1 - - -SETB C Seta o CY 1 1 1 - -SETB bit Seta o bit endereado 2 1 - - -CPL C Complementa CY 1 1 * - -CPL bit Complementa o bit endereado 2 1 - - -ANL C,bit AND entre o bit endereado e CY 2 2 * - -ANL C,/bit AND entre CY e complemento do bit 2 2 * - -ORL C,bit OR entre CY e o bit endereado 2 2 * - -ORL C,/bit OR entre CY e complemento do bit 2 2 * - -MOV C,bit Copia bit endereado para CY 2 1 * - -MOV bit,C Copia CY para bit endereado 2 2 - - -

    3.3.4 Instrues de movimentao de dadosMnem. Operando Descrio B C CY AC OVMOV A,Rn Move registrador para acumulador 1 1 - - -

  • Microcontrolador 8051 - 27/30

    MOV A,direto Move byte para acumulador 2 1 - - -MOV A,@Ri Move contedo do endereo Ri para A 1 1 - - -MOV A,#dado8 Move dados imediatos para acumulador 2 1 - - -MOV Rn,A Move acumulador para registrador 1 1 - - -MOV Rn,direto Move byte para registrador 2 2 - - -MOV Rn,#dado8 Move dados imediatos para registrador 2 1 - - -MOV direto,A Move acumulador para byte 2 1 - - -MOV direto,Rn Move registrador para byte 2 2 - - -MOV direto,direto Move da byte1 para a byte2 3 2 - - -MOV direto,@Ri Move contedo do endereo Ri p/ byte 2 2 - - -MOV dieto,#dado8 Move dados imediatos para byte 3 2 - - -MOV @Ri,A Move A para o endereo em Ri 1 1 - - -MOV @Ri,direto Move byte para o endereo em Ri 2 2 - - -MOV @Ri,#dado8 Move dado imediato p/ endereo em Ri 2 1 - - -MOV DPTR,#dad16 Carrega DPTR com constante de 16 bits 3 2 - - -MOVC A,@A+DPTR Move byte endereado por DPTR+A para A 1 2 - - -MOVC A,@A+PC Move byte endereado por PC+A para A 1 2 - - -MOVX A,@Ri Move RAM externa (end. de 8 bits) p/ A 1 2 - - -MOVX A,@DPTR Move RAM externa (end. de 16 bits) p/ A 1 2 - - -MOVX @Ri,A Move A p/ RAM externa (end. de 8 bits) 1 2 - - -MOVX @DPTR,A Move A p/ RAM externa (end. de 16 bits) 1 2 - - -PUSH Direto Move byte para a pilha (stack) 2 2 - - -POP Direto Retira byte da pilha (stack) 2 2 - - -XCH A,Rn Permuta A com Rn 1 1 - - -XCH A,direto Permuta A com byte 2 1 - - -XCH A,@Ri Permuta A com o contedo do endereo Ri 1 1 - - -XCHD A,@Ri Permuta nibble inferior de A c/ byte 1 1 - - -

    3.3.5 Instrues de controle de fluxoMnem. Operando Descrio B C CY AC OVACALL end11(2k) Chamada de sub-rotina 2 2 - - -LCALL end16 (64k) Chamada de sub-rotina 3 2 - - -RET Retorno de sub-rotina 1 2 - - -RETI Retorno de interrupo 1 2 - - -AJMP end11 (2k) Desvio incondicional 2 2 - - -LJMP end16 (64k) Desvio incondicional 3 2 - - -SJMP end. rel. Desvio incondicional 2 2 - - -JMP @A+DPTR Desvio indireto relativo a DPTR 1 2 - - -JZ end. rel. Desvio se A = 0 2 2 - - -JNZ end rel. Desvio se A 0 2 2 - - -JC end rel. Desvio se CY = 1 2 2 - - -JNC end rel. Desvio se CY =0 2 2 - - -JB bit,end. rel. Desvio se bit = 1 3 2 - - -JNB bit,end. rel. Desvio se bit = 0 3 2 - - -JBC bit,end. rel. Desvio se bit =1; zera bit 3 2 - - -CJNE A,direto,end. rel. Desvio se A byte 3 2 * - -CJNE A,#dado8,end. rel. Desvio se A dado imediato 3 2 * - -CJNE Rn,#dado8,end. rel. Desvio se Rn dado imediato 3 2 * - -CJNE @Ri,#dado8,end. rel. Desvio se byte endereado dado 3 2 * - -DJNZ Rn,end.rel Decrementa Rn; desvio se Rn 0 2 2 - - -DJNZ direto,end. rel. Decrementa byte e desvia se 0 3 2 - - -NOP Instruo sem efeito 1 1 - - -

  • Microcontrolador 8051 - 28/30

    O MICROCONTROLADOR INTEL 8051 ................................................ 11.1 COMENTRIOS SOBRE MICROCONTROLADORES ................................... 11.2 A FAMLIA 8051 .......................................................................................... 1

    1.2.1 Principais caractersticas..................................................................... 21.3 ANLISE EXTERNA..................................................................................... 31.4 MODELO DE PROGRAMAO SIMPLIFICADO ......................................... 31.5 ORGANIZAO DA MEMRIA DE PROGRAMA........................................ 41.6 ORGANIZAO DA MEMRIA DE DADOS ............................................... 4

    1.6.1 Memria de dados interna ................................................................. 41.6.2 Memria de dados externa................................................................. 51.6.3 Mais detalhes sobre a RAM interna ............................................... 51.6.4 Os registradores de funes especiais............................................. 6

    1.7 MODOS DE ENDEREAMENTO................................................................. 71.7.1 Endereamento imediato................................................................... 71.7.2 Endereamento direto........................................................................ 71.7.3 Endereamento de bits individuais .................................................. 71.7.4 Endereamento indireto .................................................................... 71.7.5 Endereamento indexado .................................................................. 71.7.6 Endereamento dos registradores R0 a R7 ..................................... 71.7.7 Endereamento implcito de registradores...................................... 8

    1.8 FUNCIONAMENTO DA PILHA .................................................................... 81.9 AS INTERRUPES...................................................................................... 81.10 OS TEMPORIZADORES / CONTADORES ................................................ 9

    1.10.1 Habilitao da contagem.................................................................. 91.10.2 Aplicaes ........................................................................................101.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..........................................142.2 ROTEIRO DE TRABALHO .........................................................................14

    2.2.1 Edio do programa-fonte ..............................................................142.2.2 Montagem ..........................................................................................142.2.3 Linkagem............................................................................................142.2.4 Simulao ...........................................................................................152.2.5 Gravao em EPROM.....................................................................15

    2.3 UTILIZAO DO SIMULADOR AVSIM51...............................................152.4 EXERCCIOS ..............................................................................................16

  • Microcontrolador 8051 - 29/30

    3 O KIT DE DESENVOLVIMENTO WF................................................ 183.1 APRESENTAO .......................................................................................18

    3.1.1 Restries ...........................................................................................193.2 SUB-ROTINAS DE SERVIO ......................................................................193.3 ALGUNS ENDEREOS IMPORTANTES.....................................................193.4 DESENVOLVIMENTO DE PROGRAMAS...................................................203.5 EXERCCIOS ..............................................................................................21

    3.5.1 Utilizao da interrupo do timer 0..............................................213.5.2 Leitura de nmeros do teclado .......................................................223.5.3 Outras tarefas utilizando o kit WF .................................................23

    ANEXO 4 - CONJUNTO DE INSTRUES DO 8051................................ 254.1 ABREVIATURAS UTILIZADAS NA TABELA DE INSTRUES .................254.2 PRINCIPAIS DIRETIVAS.............................................................................254.3 AS INSTRUES ........................................................................................25

    4.3.1 Instrues aritmticas.......................................................................254.3.2 Instrues lgicas..............................................................................264.3.3 Instrues de manipulao de bits .................................................264.3.4 Instrues de movimentao de dados..........................................264.3.5 Instrues de controle de fluxo ......................................................27

    REFERNCIAS BIBLIOGRFICAS.......................................................... 24Lista de figuras

    FIG. 1.1 - CARACTERSTICAS ESPECIAIS DA FAMLIA 8051 ......................... 2FIG. 1.2 - ASPECTO EXTERNO DO 8051 ........................................................ 3FIG. 1.3 - MODELO DE PROGRAMAO SIMPLIFICADO PARA O 8051....... 4FIG. 1.4 - ORGANIZAO DA MEMRIA DE DADOS INTERNA DO 8051... 5FIG. 1.5 - ORGANIZAO DA PARTE BAIXA DA RAM INTERNA ............... 6FIG. 1.6 - O REGISTRADOR IE........................................................................ 8FIG. 1.7 - O REGISTRADOR IP ........................................................................ 9FIG. 1.8 - O REGISTRADORTCON ................................................................ 9FIG. 1.9 - O REGISTRADOR TMOD............................................................... 9FIG. 1.10 - FUNCIONAMENTO DOS TIMERS NOS MODOS 0 E 1 ................11FIG. 1.11 - FUNCIONAMENTO DOS TIMERS NO MODO 2 ..........................11FIG. 1.12 - TIMER 0 NO MODO 3 E ALTERAES NO TIMER 1 .................12FIG. 1.13 - O REGISTRADOR SCON............................................................12FIG. 1.14 - O REGISTRADOR SCON............................................................12FIG. 2.1 - CONJUNTO DE FERRAMENTAS DE DESENVOLVIMENTO.........14FIG. 3.1 - O DISPLAY DE CRISTAL LQUIDO DO KIT WF...........................18

    Lista de tabelasTAB. 1.1 - ALGUNS INTEGRANTES DA FAMLIA MCS51 ............................. 3TAB. 1.2 - SELEO DOS BANCOS DE REGISTRADORES DO 8051 .............. 6

  • Microcontrolador 8051 - 30/30

    TAB. 1.3 - ENDEREOS DE DESVIO DAS INTERRUPES............................ 8TAB. 1.4 - MODOS DE FUNCIONAMENTO DO CANAL SERIAL...................12TAB. 2.1 - COMANDOS DO SIMULADOR AVSIM51....................................16TAB. 2.2 - REPRESENTAO DE CONSTANTES NO AVSIM51 .................16TAB. 3.1 - COMPONENTES PERIFRICOS DO KIT WF................................18TAB. 3.2 - SUB-ROTINAS DE SERVIO DO KIT WF.....................................19TAB. 3.3 - ENDEREOS DA RAM E DESVIOS DAS INTERRUPES..........20TAB. 3.4 - SELEO DA PORTA SERIAL PARA COMUNICAO COM O PC21