Baixe o app para aproveitar ainda mais
Prévia do material em texto
Mi ro ontroladores 8051 Prof. Eduardo G. Bertonha (M.S .) 26 de junho de 2007 Departamento A adêmi o de Eletr�ni a - DAELN Universidade Te nológi a Federal do Paraná - UTFPR Correspondên ia Prof. Eduardo Giometti Bertonha (MS ) Departamento de Eletr�ni a Universidade Te nológi a Federal do Paraná - UTFPR Av. Sete de Setembro, 3.165 - Curitiba - PR - Cep: 80230-901 Página Web: pessoal. efetpr.br/ebertogna email: ebertonha�utfpr.edu.br 2 Sumário 1 Introdução 6 1.1 Con eitos Importantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.1.1 Des rição dos Cir uitos de um Sistema Mínimo . . . . . . . . . . . 6 1.1.2 Mi ro ontroladores . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2 Sistemas Mi ro ontrolados . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2 A Família 8051 de Mi ro ontroladores 9 2.1 Cara terísti as Gerais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.2 Arquitetura Interna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.3 Pinagem do 8051 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.3.1 Des rição dos Pinos . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.4 A esso à Memória Externa . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.5 Organização da Memória do 8051 . . . . . . . . . . . . . . . . . . . . . . . 14 2.5.1 Memória de Programa do 8051 . . . . . . . . . . . . . . . . . . . . 14 2.5.2 Memória de Dados do 8051 . . . . . . . . . . . . . . . . . . . . . . 15 Memória de Dados Externa . . . . . . . . . . . . . . . . . . . . . . 15 Memória de Dados Interna . . . . . . . . . . . . . . . . . . . . . . . 16 Registros de Uso Geral e Pilha . . . . . . . . . . . . . . . . . . . . . 16 Registros de Funções Espe iais . . . . . . . . . . . . . . . . . . . . 17 Registros de Status do 8051 - PSW . . . . . . . . . . . . . . . . . . 18 2.6 Portas de Entrada e Saída do 8051 . . . . . . . . . . . . . . . . . . . . . . 19 2.7 Interrupções no 8051 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.7.1 Registro de Habilitação de Interrupções - IE . . . . . . . . . . . . . 21 2.7.2 Registro de Controle de Prioridade de Interrupção - IP . . . . . . . 22 2.7.3 Ativação das Interrupções Externas por Borda ou Nível - Bits IT0 e IT1 do Registro TCON . . . . . . . . . . . . . . . . . . . . . . . . 23 2.8 Temporizadores/Contadores 0 e 1 . . . . . . . . . . . . . . . . . . . . . . . 23 2.8.1 Registros de Carga do Valor Ini ial de Contagem (TH0/TL0 e TH1/TL1) . . . . . . . . . . . . . . . . . . . . . . . . 24 2.8.2 Registro de Controle dos T/C's - TCON . . . . . . . . . . . . . . . 24 2.8.3 Registro de Controle de Modo dos T/C's -TMOD . . . . . . . . . . 25 T/C no Modo 0 - Contagem em 8 bits om Pres aler de 32x . . . . 25 3 Sumário T/C no Modo 1 - Contagem em 16 bits . . . . . . . . . . . . . . . . 25 T/C no Modo 2 - Contagem em 8 bits om Re arga Automáti a . . 26 T/C no Modo 3 - Contagem em 8 bits em TH0 e Temporizador de 8 bits em TL0 . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.9 Canal Serial do 8051 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.9.1 Registro de Controle do Canal Serial - SCON . . . . . . . . . . . . 26 Modo 0 do Canal Serial - Registrador de Deslo amento . . . . . . . 27 Modo 1 do Canal Serial - UART de 8 bits e Taxa Variável . . . . . 27 Modo 2 do Canal Serial - UART de 9 bits e Taxa Fixa . . . . . . . 28 Modo 3 do Canal Serial - UART de 9 bits e Taxa Variável . . . . . 28 2.9.2 Tabela de Referên ia p/ Programar o Baud Rate . . . . . . . . . . 28 2.10 Modos de Baixo Consumo . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.10.1 Registro de Controle de Potên ia - PCON . . . . . . . . . . . . . . 29 2.10.2 Modo Idle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.10.3 Modo Power-Down . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3 Programação em Assembly do 8051 31 3.1 Conjunto de Instruções do 8051 . . . . . . . . . . . . . . . . . . . . . . . . 31 3.1.1 Modos de Endereçamento . . . . . . . . . . . . . . . . . . . . . . . 31 Endereçamento Direto . . . . . . . . . . . . . . . . . . . . . . . . . 32 Endereçamento Indireto . . . . . . . . . . . . . . . . . . . . . . . . 32 Endereçamento via Registrador . . . . . . . . . . . . . . . . . . . . 32 Constante Imediata . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Endereçamento Indexado . . . . . . . . . . . . . . . . . . . . . . . . 32 3.2 Estudo das Instruções do 8051 . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.2.1 Transferên ia de Dados . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.2.2 Instruções Aritméti as . . . . . . . . . . . . . . . . . . . . . . . . . 34 3.2.3 Instruções Lógi as . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 3.2.4 Booleanas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.2.5 Desvio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4 Exemplos de Apli ação 38 4.1 Geração de Onda Quadrada . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.2 Controle de Temperatura de um Forno . . . . . . . . . . . . . . . . . . . . 39 4.3 Geração de 2 Ondas Quadradas Simultâneas . . . . . . . . . . . . . . . . . 41 4.4 Interfa e om Conversor A/D R2R . . . . . . . . . . . . . . . . . . . . . . 42 4.5 Interfa e om ADC0804 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.6 Interfa e om LCD Inteligente . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.6.1 Interfa e 8051/LCD em 8 bits . . . . . . . . . . . . . . . . . . . . . 46 4.6.2 Interfa e 8051/LCD em 4 bits . . . . . . . . . . . . . . . . . . . . . 48 4 Sumário 4.6.3 Interfa e 8051/LCD / Registrador de Deslo amento . . . . . . . . 52 4.6.4 Interfa e 8051/LCD Mapeado em Memória . . . . . . . . . . . . . . 55 4.7 Interfa e 8051 om Te lado Matri ial . . . . . . . . . . . . . . . . . . . . . 58 4.8 Interfa e om Motor de Passo Unipolar . . . . . . . . . . . . . . . . . . . . 65 4.9 Expansão das Interrupções Externas . . . . . . . . . . . . . . . . . . . . . 67 4.10 Envio de Dados via Canal Serial . . . . . . . . . . . . . . . . . . . . . . . . 69 4.11 Rotina de Geração de Beep . . . . . . . . . . . . . . . . . . . . . . . . . . 69 4.12 Dimmer Mi ro ontrolado om AT89C2051 . . . . . . . . . . . . . . . . . . 71 4.13 Programas Propostos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Programa Proposto 5: . . . . . . . . . . . . . . . . . . . . . . . . . 74 Programa Proposto 6: . . . . . . . . . . . . . . . . . . . . . . . . . 74 5 IDE KEIL uVision2 75 5.1 A Interfa e Grá� a do uVision2 . . . . . . . . . . . . . . . . . . . . . . . . 75 5.2 Criação de um Projeto no uVision2 . . . . . . . . . . . . . . . . . . . . . . 76 5 1 Introdução 1.1 Con eitos Importantes O diagrama em blo os da �gura 1.1, abaixo ilustra um sistema mínimo mi ropro essado, om seus blo os onstituintes, os quais serão des ritos na sequên ia. Figura 1.1: Sistema Mi ropro essado Mínimo 1.1.1 Des rição dos Cir uitos de um Sistema Mínimo • Mi ropro essador: Responsável pelo ontrole de todas as operações do sistema, e exe ução de instruções do programa gravado na memória de programa. Estas instruções podem estar rela ionadas om operações lógi as, aritméti as, de a esso as portas de entrada e saída do sistema, e a esso a memória de dados ou programa. Também hamada de CPU (Central Pro essing Unit). • Memória de Programa: é nesta memória do tipo não volátil (ou seja do tipo ROM, EPROM, ou FLASH) que o programa a ser exe utado pelo mi ropro essador � a ar- mazenado. Esteprograma, gravado em memória não volátil, é hamado de �rmware. • Memória de Dados: é nesta memória do tipo volátil (RAM) que os dados a serem pro essados � am temporariamente armazenados. Estes dados podem ser proveni- 6 1 Introdução entes das portas de entrada, por exemplo um te lado, ou então podem ser gerados através de operações lógi as ou aritméti as om outros dados. • Cir uito de Clo k: Responsável pelo forne imento de um sinal de lo k ou relógio para que o Mi ropro essador possa operar. • Cir uito de Power-On/Reset: Responsável pelo forne imento de um sinal de RESET para que a CPU possa ini ializar seus registros internos, e omeçar a exe utar as instruções do �rmware. • Cir uito de Seleção: Responsável pelo forne imento dos sinais de seleção, e habili- tação para as memórias de dados (RAM), para as memórias de programa (ROM) e para as portas de entrada e saída. Sempre de onformidade om as instruções que estão sendo exe utadas pela CPU. • Bus de Dados: Representam as linhas de dados que interligam a CPU as portas de entrada e saída, e as memórias. Este onjunto de linhas são bidire ionais, e a CPU as utiliza para leitura ou es rita em dispositivos de E/S ou memórias. • Bus de Endereços: Representam as linhas de endereços que interligam a CPU as memórias e ao ir uito de seleção. Este onjunto de linhas são unidire ionais, e é a CPU que forne e endereços em resposta as instruções do �rmware. • Bus de Controle: Representam as linhas de ontrole que interligam a CPU as memó- rias, periféri os, e ao ir uito de seleção, e a CPU sempre forne e sinais de ontrole, em resposta as instruções do �rmware. 1.1.2 Mi ro ontroladores Em um sistema mínimo, omo mostrado na �gura 1.1, muitos ir uitos são ne essários, o que o torna de difí il implementação, om muitas inter onexões entre os vários blo os (representados pelos buses), pla as de ir uito impresso grandes e om muitas trilhas, o que resulta em ustos elevados. Quando se deseja implementar um sistema de omputação omplexo não há maneira de evitar estas di� uldades, e o usto benefí io é razoável. Porém, quando se deseja implementar um sistema simples, om a �nalidade de apenas ontrolar uma máquina, por exemplo: uma máquina de lavar roupa, um sistema mínimo omo o mostrado a ima se mostra máximo, gerando pla as de ir uito impresso grandes e om muitos omponentes, in ompatível om a apli ação destinada. Para solu ionar este problema existe uma outra lasse de dispositivos que substitui o sistema mínimo anterior, hamam-se �Mi ro ontroladores�. Os mi ro ontroladores são sistemas mi ropro essados en apusulados na forma de um úni o ir uito integrado. Eles são produzidos de forma a ofere er uma variedade muito grande de dispositivos, o que ara teriza uma família de dispositivos, alguns deles sendo 7 1 Introdução de fato um sistema mínimo, om o mínimo ne essário em termos de memória, e portas de E/S, e periféri os, outros porém, in orporam periféri os so�sti ados, e já não podem ser hamados de sistemas mínimos. Existem várias famílias de mi ro ontroladores omer iais, entre eles os mais importantes são: • Família 8051 - Originalmente produzido pela INTEL, om inúmeros fabri antes, omo Texas, Philips, Dallas, Atmel, et . • Família 68HC - Produzido pela Motorola • Família PIC - Produzido pela Mi ro hip • Família AVR - Produzido pela Atmel 1.2 Sistemas Mi ro ontrolados Os sistemas mi ro ontrolados tem omo prin ipal vantagem a fa ilidade que ofere e para a implementação de sistemas das mais variadas apli ações, omo sistemas de ontrole de dispositivos e máquinas, sistemas de automação de pro essos, sistemas de aquisição e pro essamento de dados, só para itar algumas possíveis apli ações. Esta fa ilidade se baseia, omo já dissemos, no fato de muitos ir uitos ne essários para o fun ionamento de um sistema mi ropro essado já estar integrado dentro do mi ro on- trolador, simpli� ando em muito a onstrução do sistema �nal, e liberando tempo para o projeto do �rmware, que normalmente é a tarefa mais pesada, e demorada. Vamos estudar aqui os mi ro ontroladores da família 8051, por ser o mais popular, e por ofere er mais re ursos em termos de desenvolvimento de protótipos, omo ambientes de desenvolvimento integrado (IDE), kits de desenvolvimento baratos, grande disponibilidade de dispositivos no mer ado na ional, e obviamente o usto atrativo. Além disto, existe uma grande profusão de informações a respeito desta família na internet, e muitos títulos de livros publi ados. 8 2 A Família 8051 de Mi ro ontroladores 2.1 Cara terísti as Gerais A família 8051 é onstituída de uma série grande de dispositivos, de vários fabri antes im- portantes, apresentando estes ara terísti as diversas, om um grande número de opções de es olha, e todos ompatíveis em termos de software. Os elementos da família 8051 podem trazer (dependendo do dispositivo em questão) integrados em um úni o hip os seguintes ir uitos: • CPU de 8 bits; • Memória SRAM interna de 128 ou 256 bytes; • Memória OTPROM/EPROM/Flash interna de 4K a 16K bytes; • Memória EEPROM; • Cir uito de Clo k; • 2 Interrupções externas; • 32 Pinos de E/S, ou seja: 4 Portas de 8 bits de entrada e saída (P0, P1, P2, P3); • 2 ou 3 Temporizadores / Contadores (T/C0, T/C1, T/C2); • 1 Interfa e serial; • Cir uito Wat hdog; • Conversor A/D de 8 bits; • et , et ... Além disto a maioria deles pode endereçar até 64KB de RAM externa e até 64KB de ROM/EPROM externa. Podem operar a freqüên ias de lo k de até 33MHz, e operar em modo de baixo onsumo (Power Down), além de serem base para muitos outros disposi- tivos om re ursos espe iais omo interfa es CAN, SPI, USB, e Ethernet. Na tabela 2.1 a seguir estão sumarizados alguns dispositivos populares da família 8051, dentre eles dispositivos de 40 e 20 pinos, om e sem memória de programa interna: 9 2 A Família 8051 de Mi ro ontroladores Modelo Cara terísti as Prin ipais 8031 128B de RAM, 2 Timer/Counter, 1 Serial, 32 Pinos de E/S 8032 256B de RAM, 2 Timer/Counter, 1 Serial, 32 Pinos de E/S 8051 128B de RAM, 2 Timer/Counter, 1 Serial, 4 Kbytes de ROM, 32 Pinos de E/S 8052 256B de RAM, 3 Timer/Counter, 1 Serial, 8 Kbytes de ROM, 32 Pinos de E/S 87C51 128B de RAM, 2 Timer/Counter, 1 Serial, 4 Kbytes de EPROM, 32 Pinos de E/S 87C52 256B de RAM, 3 Timer/Counter, 1 Serial, 8 Kbytes de EPROM, 32 Pinos de E/S 89C51 128B de RAM, 2 Timer/Counter, 1 Serial, 4 Kbytes de Flash, 32 Pinos de E/S 89C52 256B de RAM, 3 Timer/Counter, 1 Serial, 8 Kbytes de Flash, 32 Pinos de E/S AT89S51 128B de RAM, 2 Timer/Counter, 1 Serial, 4KB de Flash ISP, 32 Pinos de E/S, Wat hdog, operação estáti a de 0 a 33MHz AT89S52 256B de RAM, 3 Timer/Counter, 1 Serial, 8KB de Flash ISP, 32 Pinos de E/S, Wat hdog, operação estáti a de 0 a 33MHz AT89S53 256B de RAM, 3Timer/Counter, 1Serial, 12KB Flash ISP, 32 Pinos de E/S, Wat hdog, SPI, operação estáti a de 0 a 24MHz AT89S8252 256B de RAM, 3 Timer/Counter, 1 Serial, 8KB de Flash ISP, 2KB de EEPROM, 32 Pinos de E/S, Wat hdog, SPI, opera de 0-24MHz AT89C1051 128B de RAM, 2 Timer/Counter, 1 Serial, 1 Kbytes de Flash, 15 Pinos de E/S AT89C2051 128B de RAM, 2 Timer/Counter, 1 Serial, 2 Kbytes de Flash, 15 Pinos de E/S AT89C4051 128B de RAM, 2 Timer/Counter, 1 Serial, 4 Kbytes de Flash, 15 Pinos de E/S Tabela 2.1: Família 8051 de Mi ro ontroladores 2.2 Arquitetura Interna O diagrama em blo os da �gura 2.1 abaixo apresenta a arquitetura interna da famí- lia 8051. Neste diagrama, que mostra uma arquitetura bastantesimples, se observa os ir uitos prin ipais omo a ULA, as memórias de dados (SRAM) e de programa (ROM/EPROM/Flash), as 4 portas de 8 bits, os 2 temporizadores/ ontadores, e o a- nal serial. Não apare em neste diagrama o os ilador interno, ir uito de Reset, e blo os adi ionais presentes em alguns modelos mais so�sti ados, omo memória EEPROM, SPI, Wat hdog, Conversores A/D, PWM, et . 10 2 A Família 8051 de Mi ro ontroladores Figura 2.1: Arquitetura Interna 8051 2.3 Pinagem do 8051 A pinagem dos elemento da família 8051 de 40 e 20 pinos pode ser vista na �gura 2.2, a seguir. Figura 2.2: Pinagem do 8051 11 2 A Família 8051 de Mi ro ontroladores 2.3.1 Des rição dos Pinos • V - Tensão de Alimentação • GND - Referên ia de Terra • PO.0...P0.7 - Porta de 8 bits bidire ional de entrada e saída, em dreno aberto. Quanto 1's são es ritos nestes pinos estes estarão em tri-state e poderão ser usados omo entradas em alta impedân ia. Além disto a porta 0 tem a função alternativa de multiplexar dados om o byte inferior de endereços durante o a esso à memória externa de dados ou programa. • P1.0...P1.7 - Porta de 8 bits bidire ional de entrada e saída, apresentando resistores de pull-up internos. Quanto 1's são es ritos nestes pinos estes poderão ser usados omo entrada, e quando levados a zero pelo dispositivo externo o pino forne erá orrente através dos resistores de pull-up. • P2.0...P2.7 - Porta de 8 bits bidire ional de entrada e saída, apresentando resistores de pull-up internos. Quanto 1's são es ritos nestes pinos estes poderão ser usados omo entrada, e quando levados a zero pelo dispositivo externo o pino forne erá orrente através dos resistores de pull-up. Além disto a porta 2 tem a função alternativa de forne er o byte superior de endereços durante o a esso à memória externa de dados ou programa. • P3.0...P3.7 - Porta de 8 bits bidire ional de entrada e saída, apresentando resistores de pull-up internos. Quanto 1's são es ritos nestes pinos estes poderão ser usados omo entrada, e quando levados a zero pelo dispositivo externo o pino forne erá orrente através dos resistores de pull-up. Estes pinos ofere em funções alternativas, onforme a seguir: RXD P3.0 Entrada de dados seriais na re epção serial TXD P3.1 Saída de dados seriais na transmissão serial INTO P3.2 Entrada de interrupção externa 0 INT1 P3.3 Entrada de interrupção externa 1 TO P3.4 Entrada de lo k do temporizador/ ontador 0 T1 P3.5 Entrada de lo k do temporizador/ ontador 1 WR P3.6 Saída do sinal de es rita em memória externa RD P3.7 Saída do sinal de leitura em memória externa • RESET - Entrada de Reset ativo em alto, devendo permane er em pelo menos 2 i los de máquina (24 i los de lo k). Para um Reset de Ini ialização (Power-On Reset) este pino poderá ter apenas um apa itor externo de 10uF ligado a V já que possui um resistor interno ligado a GND. • XTAL1 - Entrada do ampli� ador inversor do os ilador interno. • XTAL2 - Saída do ampli� ador inversor do os ilador interno. • ALE - Saída de habilitação do registro de demultiplexação externo usado para demulti- plexar dados e endereços na porta P0. 12 2 A Família 8051 de Mi ro ontroladores • PSEN - Saída de habilitação da memória de programa externa. • EA - Saída de seleção de a esso à memória externa ou interna. 2.4 A esso à Memória Externa Comomensionado antes, o 8051 é apaz de endereçar até 64 KB de memória RAM externa, além de até mais 64 KB de memória ROM externa. Quando o sistema mi ro ontrolado �zer uso de alguma memória externa as portas P0 e P2 estarão exer endo a segunda função asso iada a elas, qual seja o interfa eamento om estas memórias RAM e ROM externas, onforme a �gura 2.3 abaixo. Figura 2.3: Memória Externa Neste aso a porta P0 será usada omo barramento de dados / endereços multiplexados, e seus pinos serão designados agora omo AD0-AD7, transferindo dados e forne endo, de forma multiplexada om estes, o byte inferior de endereço. A porta P2, por sua vez, forne erá o byte superior de endereços A8-A15, simultâneamente ao forne imento do byte inferior pela porta P0. Os sinais de ontrole de leitura e es rita RD\ e WR\, são forne idos por dois pinos da porta P3, e o sinal que permite ao hardware sele ionar a memória ROM de programa em lugar da RAM é o sinal de ontrole hamado PSEN\ (Program Status Enable). Outro sinal do 8051 envolvido no a esso à memória externa é o sinal ALE (Address Lat h Enable) que é responsável pelo travamento do byte A0-A7 de endereço no lat h olo ado entre a porta P0 e as linhas de endereços da memória, pro esso este que o orre quando da demultilpexação de dados e endereços através da porta P0. 13 2 A Família 8051 de Mi ro ontroladores 2.5 Organização da Memória do 8051 Os elementos da família 8051 ommemória de programa interna, que são a grande maioria, tem apa idades variadas de memória do tipo OTPROM, EPROM, ou Flash, que vão desde 4KB até 32KB em alguns elementos, mas na maioria dos dispositivos esta será de 4KB do tipo Flash. Em termos de memória de dados, tipi amente, os elementos da família 8051 ontém 128B ou 256B de SRAM. Quanto à memória externa, podem endereçar até 64KB de memória de programa, e 64KB de memória de dados, omo expli ado no item 2.4. 2.5.1 Memória de Programa do 8051 Em relação à memória de programa, o primeiro aso a se onsiderar é aquele no qual o mi ro ontrolador da família 8051 ofere e o re urso de ROM/EPROM/Flash interna, om a apa idade de 4KB. Considerando a ondição a ima, esta memória será a essada aso o pino EA\ (External A ess) esteja em nível lógi o alto, ou seja desativado. Caso se deseje, além destes 4KB de memória de programa interna, pode-se estender o espaço de endereçamento para até 64KB, os 60KB adi ionais serão a essados da memória de programa externa. A exe ução do programa pelo mi ro ontrolador ini iará na posição zero da ROM interna. Figura 2.4: Memória de Programa Interna do 8051 O segundo aso, é aquele em que o mi ro ontrolador não possui memória de programa interna, e esta é ex lusivamente externa. Neste aso deve-se olo ar o pino EA\=0, ou seja ativado, indi ando que o a esso à memória de programa será sempre externo. Mesmo que o mi ro ontrolador possua memória de programa interna esta não será a essada, e 14 2 A Família 8051 de Mi ro ontroladores sua presença será ignorada, sendo a exe ução do programa ini iada na posição zero da ROM externa. Figura 2.5: Memória de Programa Externa do 8051 2.5.2 Memória de Dados do 8051 A memória de dados do 8051 se onstitui de memória SRAM interna, om apa idade de 128 ou 256 bytes, e SRAM externa de até 64KB, esta quando existente. Memória de Dados Externa Na �gura a seguir está ilustrado a memória de dados externa, eviden iando-se o a esso de até 64KB através dos pinos de RD e WR, P3.6 e P3.7. Figura 2.6: Memória de Dados Externa do 8051 15 2 A Família 8051 de Mi ro ontroladores Os a essos à SRAM interna e externa são efetuadas através de instruções diferentes, sendo este o diferen ial entre os dois tipos de a essos. Por exemplo a instrução MOV é usada para leitura/es rita da SRAM interna, enquanto a instrução MOVX é a ontrapar- tida relativa a memória SRAM externa, maiores detalhes destas instruções serão vistas no apítulo 3, no item 3.2.1. Memória de Dados Interna Os a essos à SRAM interna do 8051 podem ter diferentes ara terísti as dependendo da região desta que está sendo a essada. Na região da SRAM interna ompreendida entre os endereços 0 e 127, está a área dos Registros deUso Geral e Pilha, enquanto a área de 128 a 255 é onde estão lo alizados os Registros de Funções Espe iais, ver �gura 2.7 a seguir. Figura 2.7: Memória de Dados Interna do 8051 Registros de Uso Geral e Pilha A área da SRAM interna denominada de Registros de Uso Geral e Pilha, uja função é de alo ar as variáveis do programa, e a pilha, está dividida em seis segmentos diferentes, identi� ados na �gura 2.8. Como pode ser notado desta �gura, as regiões ompreendem os quatro ban os de registros: ban o 0 a ban o 3, região bit e byte endereçável, e região somente byte endereçável. Cada uma destas regiões ofere em re ursos diferentes onforme dis utido adiante. Cada um dos 4 ban o de registro possui 8 registros denominados de R0 a R7, sendo que a seleção do ban o é feita através dos bits RS0 e RS1 do registro PSW (Program Status Word), onforme a tabela mostrada na �gura 2.8. O uso destes registros (R0...R7) nas instruções provê uma instrução om um byte a menos já que um dos operandos já está espe i� ado na instrução. Como exemplo a instrução: MOV R0, A; move para o registro R0 o onteúdo do a umulador. 16 2 A Família 8051 de Mi ro ontroladores Além disto em algumas instruções o registro poderá onter o endereço do dado, daí resultando em um tipo de a esso indireto via registrador. Como exemplo a instrução: MOV �R0, A; move para o endereço apontado por R0 o onteúdo de A A outra faixa de endereços de 20H a 7FH (32 a 127) se ara teriza por a esso via espe i� ação do endereço, ou seja sem o uso dos registros R0...R7, sendo que o endereço na SRAM é diretamente olo ado na instrução. Cabe ainda ressaltar que a região entre os endereços 20H e 2FH tem omo ara terísti a espe ial a possibilidade de se endereçar um bit qualquer dentro deste espaço. Figura 2.8: Registros de Uso Geral e Pilha Registros de Funções Espe iais Os a essos à RAM interna do 8051 na faixa de 128 a 255, a essam os registros de funções espe iais, que estão asso iados aos diversos registros asso iados aos vários re ursos do 8051 tais omo: portas de entrada e saída, ontadores/temporizadores, interfa e serial, ontrole de interrupção, et ., ver tabela 2.2. O onhe imento da estrutura de ada um destes registro é de suma importân ia, visto que permite programar os vários periféri os omo anal serial, temporizadores/ ontadores, ontrolar ara terísti as da CPU omo modos de baixo onsumo, interrupções, e a essar as 17 2 A Família 8051 de Mi ro ontroladores portas de entrada e saída. Assim após apresentar a lista de registros de funções espe iais, eles serão dis utidos, um a um, nos itens que se seguem. Endereço Registro de Função Espe ial F0H Registro B E0H A umulador - A D0H Program Status Word - PSW B8H Interrupt Priority - IP B0H Porta 3 de E/S - P3 A8H Interrupt Enable - IE A0H Porta 2 de E/S - P2 90H Porta 1 de E/S - P1 99H Serial Bu�er - BUF 98H Serial Control - SCON 8DH Timer High 1 - H1 8CH Timer High 0 - H0 8BH Timer Low 1 - TL1 8AH Timer Low 0 - TL0 89H Timer Mode - TMOD 88H Timer Control - TCON 87H Power Control - PCON 83H Data Pointer High - DPH 82H Data Pointer Low - DPL 81H Sta k Pointer - SP 80H (128) Porta 0 de E/S - P0 Tabela 2.2: Registros de Funções Espe iais Registros de Status do 8051 - PSW Este registro de 8 bits indi a o Status do pro essador, ou seja, indi a a o orrên ia de ondições espe í� as asso iadas ao pro essamento. O formato do registro é o apresentado a seguir: CY AC F0 RS1 RS0 OV � P • bit Cy: Setado indi a a o orrên ia de um Carry (vai-um); • bit A : Setado indi a a o orrên ia de um Carry Auxiliar em operação BCD; • bit F0: Bit disponível para uso geral; • bit RS1: Juntamente om RS0 permite odi� ar o ban o de registros no qual os registros R0 a R7 estarão alo ados; 18 2 A Família 8051 de Mi ro ontroladores • bit RS0: Juntamente om RS1 permite odi� ar o ban o de registros no qual os registros R0 a R7 estarão alo ados; • bit OV: Setado indi a a o orrên ia de um over�ow em operações om números sinalizados • bit P: Indi a a paridade do a umulador 2.6 Portas de Entrada e Saída do 8051 O esquema geral interno simpli� ado dos bits de E/S das Portas do 8051 é apresentado a seguir: Figura 2.9: Esquema Simpli� ado de um Bit da Porta 1 Observa-se desta �gura que os pinos das portas são onstituidos basi amente de um lat h (�ip-�op tipo D), dois bu�ers tri-state, e um driver de saída. Para se levar um pino de saída de uma porta a nível lógi o 1 ou 0, as instruções exe utam uma es rita no lat h, que ontrola o fet do driver de saída através do sinal de saída Q omplementada, obviamente que quando o fet de saída está em ON o pino apresentará nível lógi o 0 na saída, e em OFF, nível lógi o 1. Constata-se da �gura que a leitura de um bit de uma porta de E/S apresenta um de- talhe adi ional: existem dois sinais de leitura. Um destes sinais omanda a leitura do estado do pino, através do bu�er inferior na �gura, o outro omanda a leitura do lat h, através do bu�er superior da �gura. Con lui-se então, que existem instruções que não lêem o pino, mas ao invés disto lêem a saída do lat h, e um uidado adi ional deve ser tomado quando se usar tais instruções. Como regra as instruções que exe utam a sequên- ia Lê-Modi� a-Es reve, são aquelas que lêem o lat h ao invés do pino, exemplos de tais isntruções são: 19 2 A Família 8051 de Mi ro ontroladores ANL ; E lógi o, ex: ANL P1,A SETB Pn.i ; Seta Pn.i, ex: SETB P2.3 ORL ; OU lógi o, ex: ORL P1,A CLR Pn.i ; Reseta Pn.i, ex: CLR P3.0 XRL ; OU Ex l., ex: XRL P1,A MOV Pn.i,C ; Move �ag C p/ Pn.i, JBC ; E lógi o, ex: ANL P1,A ; ex: MOV P2.0,C CPL ; Complemento, ex: CPL P1.0 DJNZ ; De r. e Desvia se 6=0, INC ; In remento, ex: INC P1 ; ex: DJNZ P3,Label DEC ; De remento, ex: DEC P2 O onjunto ompleto das instruções do 8051 será visto no apítulo 3, portanto o leitor não deve se preo upar em entender plenamente as instruções a ima apresentadas. A razão de existir instruções que lêem o pino da porta, enquanto outras lêem o lat h, é para que não haja uma falsa interpretação da tensão presente no pino. Como exemplo, se um pino de uma porta estiver one tado à base de um transistor, ao se es rever 1 neste pino, o transistor é saturado, porém, se efetuada uma leitura posterior neste pino o mesmo apresentará a tensão de base do transistor saturado, o que será interpretado omo nível lógi o 0. Todas as 4 portas de 8 bits do 8051, P0, P1, P2, e P3, podem ter seus pinos individu- almente usados omo entrada ou saída, one tados, por exemplo, à dispositivos simples omo haves e leds, omo também podem ser usadas omo barramentos de 8 bits, e inter- fa ear dispositivos periféri os omo displays inteligentes, onversores A/D, e D/A. Deve-se lembrar, porém, que as portas P0 e P2 � am destinadas a geração de endereços A0...A7 em P0, e A8...A15 em P2, quando a essando memória externa, e a porta P3 apresenta seus pinos dotados de funções alternativas, então ertos pinos poderão estar indisponíveis em alguma apli ação parti ular. Uma parti ularidade que a porta P0 apresenta é sua saída on�gurada omo dreno aberto, ao ontrário demais portas que apresentam o pull-up interno. Esta ara terísti a faz om que a porta tenha seus pinos �utuando quando em aberto. Como onsequên ia deste fato, a porta P0 poderá drenar até 8 argas TTL, ao ontrário das demais portas que suportam uma arga máxima de 4 gates TTL. Quando se deseja que os pinos das portas P1, P2, ou P3, atuem omo entradas, o estado do lat h interno deveráestar em 1, o que deixa o driver de saída em OFF, então o estado do pino � ará em a1 pelo pull-up interno, podendo ser levado a 0 por uma fonte externa. Como visto antes ada uma das portas está mapeada na região dos Registros de Funções Espe iais da memória SRAM interna, om endereços espe í� os que podem ser referidos nas instruções (ver tabela 2.2), porém é mais onveniênte se referir ao nome da porta nestas instruções, o que assegura uma maior legibilidade ao ódigo fonte. Por exemplo a instrução: MOV A, P1 ; Lê a porta P1 e guarda o valor lido no a umulador. Cabe também lembrar, que os bits das portas tem endereços espe í� os, uma vez que estão em uma região de memória bit endereçável. Portanto, quando se deseja a essar um 20 2 A Família 8051 de Mi ro ontroladores bit de uma porta, pode-se referir ao endereço deste bit, ou usar a notação Porta.Bit, omo no exemplo abaixo onde o �ag de arry (C) re ebe o estado do bit 0 da porta 1 (P1.0): MOV C, P1.0 ; Flag C re ebe estado de P1.0 2.7 Interrupções no 8051 São 5 fontes distintas de interrupções no 8051, sendo duas externas, geradas a partir dos pinos INT0 e INT1 da porta 3, e três internas, geradas pelos temporizadores/ ontadores e interfa e serial. Os vetores de interrupção, ou seja o endereço de desvio para estas 5 fontes são �xos, sendo apresentados na tabela 2.3. Fonte Cara terísti as Prin ipais Endereço de desvio INT0 Interrupção externa gerada pelo pino P3.2 da porta P3, ativo baixo. 0003H INT1 Interrupção externa gerada pelo pino P3.3 da porta P3, ativo baixo. 0013H T/C0 Interrupção do Temporizador/Contador0 gerada quando o ontador 000BH atinge o máximo valor de ontagem, e o bit TF0 é setado. T/C1 Interrupção do Temporizador/Contador1 gerada quando o ontador 001BH atinge o máximo valor de ontagem e o bit TF1 é setado. Serial Canal Serial. A interrupção o orre quando o bu�er do anal serial 0023H está vazio na transmissão, ou heio na re epção. Tabela 2.3: Fontes de Interrupção do 8051 A es ala de prioridades de atendimento da interrupção existente entre as várias fontes é a seguinte: INT0 > T/C0 > INT1 > T/C1 > Serial 2.7.1 Registro de Habilitação de Interrupções - IE É através deste registro de 8 bits que se pode sele ionar a habilitar/desabilitar as inter- rupções individualmente. O formato do registro é o apresentado a seguir: EA � � ES ET1 EX1 ET0 EX0 • bit EA: Setado permite habilitar as fontes de interrupção que forem individualmente sele ionadas através dos bits ES, ET1, EX1, ET0, e EX0. Resetado desabilita toda e qualquer interrupção de ser gerada; • bit ES: Setado permite sele ionar a interrupção da interfa e serial para ser usada quando EA for setado; 21 2 A Família 8051 de Mi ro ontroladores • bit ET1: Setado permite sele ionar a interrupção do temporizador/ ontador1 para ser usada quando EA for setado; • bit EX1: Setado permite sele ionar a interrupção externa 1 para ser usada quando EA for setado; • bit ET0: Setado permite sele ionar a interrupção do temporizador/ ontador0 para ser usada quando EA for setado; • bit EX0: Setado permite sele ionar a interrupção externa 0 para ser usada quando EA for setado. Como exemplo, se fosse ne essário habilitar as duas interrupções externas, o registro IE deveria ter os bits EX0, EX1, e EA setados, assim a instrução a seguir poderia ser usado para tal: MOV IE, #10000101B Ou ainda, as três linhas de programa podem ser usadas, desde que os demais bits do registro IE estejam resetados: SETB EX0 SETB EX1 SETB EA 2.7.2 Registro de Controle de Prioridade de Interrupção - IP É através deste registro de 8 bits que se pode modi� ar as prioridades de atendimento das interrupções. O formato do registro é o apresentado a seguir: � � � PS PT1 PX1 PT0 PX0 • bit PS: Setado permite que a interrupção do anal serial tenha a mais alta priori- dade de atendimento. Resetado mantém a ordem de prioridade de atendimento da interrupção do anal serial inalterada; • bit PT1: Setado permite sele ionar a interrupção do temporizador/ ontador1 para ser a de mais alta prioridade. Resetado mantém a ordem de prioridade de atendi- mento da interrupção do temporizador/ ontador 1 inalterada; • bit PX1: Setado permite sele ionar a interrupção externa 1 para ser a de mais alta prioridade. Resetado mantém a ordem de prioridade de atendimento da interrupção externa 1 inalterada; 22 2 A Família 8051 de Mi ro ontroladores • bit PT0: Setado permite sele ionar a interrupção do temporizador/ ontador0 para a de mais alta prioridade. Resetado mantém a ordem de prioridade de atendimento da interrupção do temporizador/ ontador0 inalterada; • bit PX0: Setado permite sele ionar a interrupção externa 0 para ser a de mais alta prioridade. Resetado mantém a ordem de prioridade de atendimento da interrupção externa 0 inalterada. 2.7.3 Ativação das Interrupções Externas por Borda ou Nível - Bits IT0 e IT1 do Registro TCON As interrupções externas INT0 e INT1 podem ser ativadas tanto por nível quanto por borda de des ida, e esta seleção pode ser feita através de 4 dos 8 bits do registro TCON. O formato deste registro é o apresentado a seguir: � � � � IE1 IT1 IE0 IT0 • bit IE1: Setado por hardware quando o pino INT1 vai de alto para baixo. Resetado quando a interrupção é atendida; • bit IT1: Setado permite sele ionar a ativação da interrupção externa 1 por borda de des ida do sinal presente no pino INT1. Resetado sele iona a ativação de INT1 por nível; • bit IE0: Setado por hardware quando o pino INT0 vai de alto para baixo. Resetado quando a interrupção é atendida; • bit IT0: Setado permite sele ionar a ativação da interrupção externa 0 por borda de des ida do sinal presente no pino INT0. Resetado sele iona a ativação de INT0 por nível. 2.8 Temporizadores/Contadores 0 e 1 A seguir ilustra-se a arquitetura dos ontadores/temporizadores (T/C's) do 8051, eviden- iando seus registros internos. 23 2 A Família 8051 de Mi ro ontroladores Figura 2.10: Temporizadores Contadores 0 e 1 Observa-se que no diagrama em blo os da arquitetura dos T/C's, alguns registros tais omo: TL0/1, TH0/1, TCON e TMOD são referidos em pontos haves do diagrama. Os dois T/C's do 8051 (3 no 8052) fun ionam independentemente, omo ontador ou temporizador, podendo ser programados para operar em 4 modos diferentes, onforme des rito mais adiante. O entendimento da função de ada um dos registros a ima men ionados é fundamental para que se possa ompreender o fun ionamento geral dos T/C. A seguir estes vários registros são detalhados: 2.8.1 Registros de Carga do Valor Ini ial de Contagem (TH0/TL0 e TH1/TL1) Estes dois registros de 8 bits, TH0 e TL0, ou TH1 e TL1, são usados para a arga dos valores ini iais de ontagem dos T/C's, sendo sempre de forma res ente até o valor máximo, que pode ser de 8 ou 16 bits, onforme THn e TLn sejam usados separados omo ontadores de 8 bits ou aos pares omo um registro de 16 bits. Após este valor máximo de ontagem ter sido atingido o sinalizador TF0 ou TF1 é setado indi ando esta o orrên ia, e aso a interrupção asso iada ao T/C em questão esteja habilitada, uma interrupção é gerada. 2.8.2 Registro de Controle dos T/C's - TCON Este registro de 8 bits, mostrado abaixo, é usado para ontrolar a operação dos T/C's, e para isto somente os 4 bits mais signi� ativos são usados para esta função, ver �gura abaixo, e des rição dos bits a seguir desta. 24 2 A Família 8051 de Mi ro ontroladores TF1 TR1 TF0 TR0 � � � � • bit TF1 ou TF0: Setado por hardware sempre que o T/C em questão atingiu o valor máximo de ontagem e o orreu um timerover�ow. Resetado por software sempre que se deseja reini ializar o T/C; • bit TR1 ou TR0: Setado por software sempre que se deseja ini iar a ontagem pelo T/C. Resetado por software permite parar a ontagem. 2.8.3 Registro de Controle de Modo dos T/C's -TMOD Este registro de 8 bits, mostrado abaixo, é usado para sele ionar os modos de operação do temporizador/ ontador onforme des rito a seguir: G1 T/C1 M11 M01 G0 T/C0 M10 M00 • bit G0 ou G1: Usado para sele ionar o tipo de ontrole de disparo do T/C, ou seja, se este é ontrolado apenas através do bit TRn (Gn - Resetado), ou através do bit TRn e do pino INT1 (Gn - Setado); • bit T/C0 ou T/C1: Usado para sele ionar a operação do T/C omo temporizador (T/Cn - Resetado) ou ontador (T/Cn - Setado); • bits M0-0/M1-0 ou M0-1/M1-1: Estes dois bits tem omo função sele ionar um dentre quatro modos de operação dos T/C's, a saber: M1 M0 Modo - Cara terísti as 0 0 0 - T/C de 8 bits om pres aler de até 32x 0 1 1 - T/C de 16 bits 1 0 2 - T/C de 8 bits om re arga automáti a 1 1 3 - Contador de 8 bits + Temporizador de 8 bits T/C no Modo 0 - Contagem em 8 bits om Pres aler de 32x Neste modo o T/C0 ou T/C1 fun iona em 8 bits, sendo que esta ontagem o orre no registro TL0 ou TL1, tendo portanto, um máximo valor de ontagem de 255. O registro TH0 ou TH1, neste modo forne e uma pré divisão (pres aler) do lo k do ontador de até 32 vezes, utilizando para isto 5 bits deste registro. T/C no Modo 1 - Contagem em 16 bits Neste modo o T/C0 ou T/C1 fun iona em 16 bits, ou seja os dois registros TH0 e TL0, ou TH1 e TL1 são vistos omo um úni o registro de 16 bits, sendo a ontagem implementada neste par de registros, e o valor máximo de ontagem de 65.535 ou FFFFH. 25 2 A Família 8051 de Mi ro ontroladores T/C no Modo 2 - Contagem em 8 bits om Re arga Automáti a Neste modo o T/C0 ou T/C1 fun iona em 8 bits, sendo TL0 ou TL1 o registro onde o orre a ontagem, e TH0 ou TH1 o registro onde o valor ini ial de ontagem, ou neste aso o valor de re arga está espe i� ado. Sempre que o valor máximo de ontagem o orre (255 ou FFH) o valor de re arga é automati amente arregado quando TF0 ou TF1 é resetado. T/C no Modo 3 - Contagem em 8 bits em TH0 e Temporizador de 8 bits em TL0 Neste modo o T/C0, e somente este, pode fun ionar omo temporizador ou ontador de 8 bits, usando o registro TH0, e ativando aso seja ne essário a interrupção do T/C1. O outro registro do T/C0, o TL0 poderá fun ionar omo um temporizador adi ional de 8 bits usando a interrupção do T/C0. 2.9 Canal Serial do 8051 A interfa e serial do 8051 pode ser usada de 4 modos diferentes, om operações do tipo sín rona, assín rona, om taxas de transmissão �xa, ou variável. Os registros asso iados a programação do anal serial são os seguintes: SBUF - Bu�er do Canal Serial, e SCON - Controle do Canal Serial. Estes registros são des ritos mais a diante. Uma transmissão serial sempre se ini ia quando um byte é es rito no registro SBUF, assim este byte é serializado e enviado pelo pino TXD da porta P3. A re epção para ser habilitada deverá ter o bit REN - Re epção Habilitada, do registro de ontrole SCON, setado e os bits quando re ebidos pelo pino RXD da porta P3 serão paralelizados e enviados para o registro SBUF para ser lido. 2.9.1 Registro de Controle do Canal Serial - SCON Este registro de 8 bits, mostrado abaixo, é usado para sele ionar os modos de operação do temporizador/ ontador onforme des rito a seguir: SM0 SM1 SM2 REN TB8 RB8 TI RI • bits TI e RI: Requisição de transmissão/re epção setado por hardware sempre que uma transmissão/re epção for ini iada, e resetado por software; • bits TB8 e RB8: São usados para inserção de bits de ontrole pelo usuário, tais omo paridade , �ags, et ; • bit REN: Habilitação da re epção através do anal serial; 26 2 A Família 8051 de Mi ro ontroladores • bits SM0 / SM1: Estes dois bits tem omo função sele ionar um dentre quatro modos de operação do Canal Serial. Ver tabela a seguir. • bit SM2: Habilita Comuni ação Mutipro essador, nos modos 2 e 3. RI não será ativado se o 9 ◦ bit é zero. SM1 SM0 Modo do Canal Serial - Cara terísti as 0 0 0 - Registrador de Deslo amento - Taxa Fixa = F lk/12 1 0 1 - UART de 8 bits e Taxa Variável 0 1 2 - UART de 9 bits e Taxa Fixa = F lk/32 ou F lk/64 1 1 3 - UART de 9 bits e Taxa Variável Modo 0 do Canal Serial - Registrador de Deslo amento Neste modo o anal serial é olo ado no modo Registrador de Deslo amento (Shift Regis- ter) no qual os dados entram e saem serialmente através do pino RXD, e no pino TXD o lo k é enviado. Neste aso, os termos RXD e TXD não tem mais o signi� ado original, uma vez que o pino RXD transmite e re ebe dados seriais, e o pino TXD nada tem a ver om transmissão de dados. A transmissão é ini iada sempre que se es reve no registro SBUF. E a re epção quando o bit REN do registro SCON é setado, e o �ag de re epção RI é resetado. Figura 2.11: Canal Serial no Modo 0 Modo 1 do Canal Serial - UART de 8 bits e Taxa Variável Neste modo o anal serial é olo ado no modo Re eptor/Transmissor Universal Assín rono (UART), onde o dado om 8 bits seriais são pre edidos por um start bit em nível baixo, e seguido por um stop bit em nível alto. O stop bit é opiado no bit RB8 do SCON na re epção que tem iní io quando o start bit é re ebido no pino RXD sendo sensível a borda de des ida. A taxa de transmissão é programada através da taxa de over�ow do Timer 1. Figura 2.12: Canal Serial no Modo 1 27 2 A Família 8051 de Mi ro ontroladores Modo 2 do Canal Serial - UART de 9 bits e Taxa Fixa Neste modo o anal serial é olo ado no modo UART de 9 bits seriais, que omo no modo anterior são pre edidos por um start bit em nível baixo, e seguido por um stop bit em nível alto. Quando da re epção o bit RB8 do SCON é reservado para re eber o nono bit da palavra de dado, ao invés de re eber o stop bit omo no modo 1. Na transmissão o bit TB8 re ebe o nono bit que pode ser um bit de paridade, por exemplo. Figura 2.13: Canal Serial no Modo 2 Modo 3 do Canal Serial - UART de 9 bits e Taxa Variável Neste modo o anal serial é olo ado no modo UART de 9 bits seriais exatamente omo no modo anterior, ex eto que a taxa de transmissão é programada pelo timer 1, omo no modo 1. 2.9.2 Tabela de Referên ia p/ Programar o Baud Rate A tabela a seguir poderá ser usada na programação do Canal Serial para a geração de taxas de transmissão (Baud Rate) típi as omo aquelas nela apresentadas. Para tanto o Timer/Counter 1 deve ser usado omo temporizador no modo 2, ou seja modo autoreload, e os valores de ontagem ini iais em TH1 são aqueles mostrados na última oluna da tabela. Taxa Cristal Bit Taxa Erro T/C1 Modo 2 (bps) (MHz) SMOD Real (%) Valor TH1 9600 12 1 8923 7 F9H (-7) 2400 12 0 2404 0,16 F3H (-13) 1200 12 0 1202 0,16 E6H (-26) 19200 11.0592 1 19200 0 FDH (-3) 9600 11.0592 0 9600 0 FDH (-3) 2400 11.0592 0 2400 0 F4H (-12) 1200 11.0592 0 1200 0 E8H (-24) Tabela 2.4: Tabela de Referên ia para Baud Rate 28 2 A Família 8051 de Mi ro ontroladores O exemplo de apli ação 4.10 ilustra a programação do anal serial em 9600bps onde as letras de 'a' até 'z' são enviadas onse utivamente e de forma ontínua para um mi ro- omputador PC. 2.10 Modos de Baixo Consumo Quando um sistema mi ro ontrolado tem omo requisito bási o o baixo onsumo de ener- gia, por exemplo, no aso de equipamentos portáteis e alimentados por baterias, pode-se ontar om os dispositivos da família 8051 om te nologia CMOS,que ofere em dois mo- dos de operação de baixo onsumo: o modo Idle e o modo Power-Down, programados pelos bits de ontrole IDL e PD, do registro de ontrole de potên ia PCON, mostrado a seguir. 2.10.1 Registro de Controle de Potên ia - PCON Este registro de 8 bits, mostrado abaixo, é usado para sele ionar os modos de operação de baixo onsumo do mi ro ontrolador, e abriga ainda o bits de ontrole de modo do anal serial SMOD, já dis utido no item 2.9, além de dois bits de sinalização de uso geral GF0 e GF1, onforme des rito a seguir: SMOD - - - GF1 GF0 PD IDL • bit GF0 ou GF1: Usado para sinalização de uso geral; • bit SMOD: Usado pelo anal serial, ver item 2.9; • bits PD e IDL: Estes dois bits tem omo função sele ionar o modo de operação em baixo onsumo: Power-Down e Idle, des ritos a seguir. 2.10.2 Modo Idle Neste modo de operação, que pode ser ativado setando-se o bit de ontrole IDL, lo alizado no registro de função espe ial de Controle de Potên ia - PCON, o dispositivo bloqueia o forne imento do sinal de lo k para os ir uitos da UCP, porém os ir uitos de Interrupção, Temporizadores/Contadores, e Porta Serial ontinuam a re eber este sinal. Quando o mi ro ontrolador entra no modo Idle, após a instrução que seta o bit IDL, o status da UCP é mantido omo estava antes da exe ução desta instrução, e os registros de status PSW, o ontador de programa PC, apontador de pilha SP, além do a umulador A, e demais registros se manterão inalterados. Além disto o estado dos pinos das portas de E/S permane em no estado que estavam antes de entrar em modo Idle. Para que o mi ro ontrolador possa sair do modo Idle, existem dois me anismos: através de uma interrupção préviamente habilitada, ou através de um reset, que onsequentemente reseta o bit IDL. 29 2 A Família 8051 de Mi ro ontroladores No primeiro aso, onde uma interrupção é gerada, o bit IDL é automati amente resetado quando do atendimento da interrupção, e após a rotina ter sido exe utada, retornando através de uma instrução RETI, o programa segue o �uxo exe utando a instrução que vem logo após aquela que olo ou o mi ro ontrolador no modo Idle. No segundo aso, em que o mi ro ontrolador é resetado, o sinal de RESET deve ser mantido por pelo menos 24 i los de lo k, e assim a exe ução pela UCP, da mesma forma que no aso anterior, segue o �uxo exe utando a instrução que vem logo após aquela que olo ou o mi ro ontrolador no modo Idle. Como serão gastos de 2 a 3 i los de máquina para o mi ro ontrolador sair do modo Idle, o que orresponde ao tempo de exe ução do algoritmo de reset interno, este tempo deve ser o upado por 3 instruções NOP para evitar que possa surgir resultados erráti os nos pinos das portas. 2.10.3 Modo Power-Down Neste outro modo de baixo onsumo, ativado quando se leva o bit de ontrole PD, também lo alizado no registro PCON 30 3 Programação em Assembly do 8051 3.1 Conjunto de Instruções do 8051 A título de estudo, as instruções do 8051 podem ser lassi� adas em 5 tipos diferentes, onforme abaixo: • Transferên ia de Dados • Aritméti as • Lógi as • Booleanas • Desvio Os tipos de instruções listados a ima serão estudados em detalhes no item 3.2, porém antes de estudá-los é ne essário des rever os modos de endereçamento de dados existentes na família 8051. 3.1.1 Modos de Endereçamento O modo omo dados são a essados nas instruções do 8051, é o que se hama de modo de endereçamento, e são os seguintes: • Endereçamento Direto • Endereçamento Indireto • Endereçamento Via Registrador • Endereçamento por Constante Imediata • Endereçamento Indexado 31 3 Programação em Assembly do 8051 Endereçamento Direto Neste tipo de endereçamento o dado é a essado na posição de memória diretamente es- pe i� ada na instrução, omo no exemplo a seguir: EX: MOV A,25H ;move para A o onteúdo da posição de memória 25H Endereçamento Indireto Neste tipo de endereçamento o dado é a essado na posição de memória apontada por um dos registros R0 ou R1 espe i� ado na instrução, omo no exemplo a seguir: EX: MOV A,�R1 ;move p/ A onteúdo posição de mem. apontada por R1 Endereçamento via Registrador Neste tipo de endereçamento o dado é a essado na através de um registro espe i� ado na instrução, omo no exemplo a seguir: EX: MOV R1,A ;move para R1 o onteúdo do registro A Constante Imediata Neste tipo de endereçamento o dado é imediatamente espe i� ada na instrução, omo no exemplo a seguir: EX: MOV A,#25H ;move para A o onteúdo da posição de memória 25H Endereçamento Indexado Neste tipo de endereçamento o dado é a essado na posição de memória espe i� ada omo a soma de um endereço de 16 bits ontido no registro PC ou DPTR, omo o valor ontido em A. Neste endereço assim onstituído o registro A pode ser variado para fazer indexa- ções. Pode-se apli ar tal modo de endereçamento no a esso à memória de ódigo, para por exemplo a essar posições de uma tabela de dados. EX.1: MOVC A,�A+DPTR ;move p/ A onteúdo pos. mem. (DPTR+A) EX.2: MOVC A, �A+PC ; move p/ A onteúdo pos. mem. (PC+A) 3.2 Estudo das Instruções do 8051 Nos itens que se segue, os vários tipos de instruções serão apresentados na forma de tabelas, e estas onterão todas as instruções existentes. 32 3 Programação em Assembly do 8051 3.2.1 Transferên ia de Dados São basi amente as instruções de move, ujos mnem�ni os existentes são: mov, movx, e mov , além das instruções de operação om a pilha: push e pop, e de tro a ex hange, ujos mnem�ni os existentes são: x h e x hd. O formato geral da instrução move é o seguinte: mov <destino>,<origem> As instruções de transferên ia de dados estão listadas na tabela 3.1 a seguir. Instrução Des rição Exemplo B* Clk MOV A,Rn Move Registro p/ A umulador MOV A,R2 1 12 MOV A,direto Move byte direto p/ A umulador MOV A,7FH 2 12 MOV A,�Ri Move RAM indireto p/ A umulador MOV A,�R4 1 12 MOV A, #dado Move dado imediato p/ A umulador MOV A, #20 2 12 MOV Rn,A Move A umulador p/ Registro MOV R7,A 1 12 MOV Rn, direto Move byte direto p/ Registro MOV R3, 7FH 2 24 MOV Rn,#dado Move dado imediato p/ Registro MOV R6,#200 2 12 MOV direto,A Move A umulador p/ byte direto MOV 30H,A 2 12 MOV direto,Rn Move registro p/ byte direto MOV 30H,R2 2 24 MOV direto,direto Move byte direto p/ byte direto MOV 30H,31H 3 24 MOV direto, �Ri Move RAM indireto p/ byte direto MOV 7FH, �R0 2 24 MOV direto,#dado Move dado imediato p/ byte direto MOV 40H,#100 2 24 MOV �Ri, A Move A umulador p/ RAM indireto MOV �R0, A 1 12 MOV �Ri, direto Move byte direto p/ RAM indireto MOV �R5, 20H 2 24 MOV �Ri, #dado Move dado imediato p/ RAM indireto MOV �R0, #0FH 2 12 MOV DPTR,#dado16 Move 2 bytes p/ data pointer MOV DPTR, #2000H 3 24 MOVX A,�Ri Move XRAM (end. 8 bits) p/ A MOVX A,�R1 1 24 MOVX A,�DPTR Move XRAM (end. 16 bits) p/ A MOVX A,�DPTR 1 24 MOVX A,�Ri,A Move A p/ XRAM (end. 8 bits) MOVX A,�R2,A 1 24 MOVX �DPTR, A Move A p/ XRAM (end. 16 bits) MOVX �DPTR, A 1 24 MOVC A,�A+DPTR Move Código relativo a DPTR p/ A MOVC A,�A+DPTR 1 24 MOVC A,�A+PC Move Código relativo a PC p/ A MOVC A,�A+PC 1 24 PUSH direto Move byte direto para a pilha PUSH R0 2 24 POP direto Re upera byte direto da pilha POP DPH 2 24 XCH A,direto Tro a byte direto om A XCH A, 48H 2 12 XCH A,�Ri Tro a RAM indireto om A XCH A, �R0 1 12 XCHD A, �Ri Tro a nibble inferior da RAM / A XCHD A, �R0 1 12 * Bytes da Instrução Tabela 3.1: Instruções de Transferên ia de Dados 33 3 Programação em Assembly do 8051 3.2.2 Instruções Aritméti as São as instruções de soma, subtração, inremento, de remento, multipli ação, divisão, em todas as variantes dos modos de endereçamento, além da instrução de ajuste de imal para operações aritméti as em BCD. As instruções aritméti as estão listadas na tabela 3.2, a seguir. Instrução Des rição Exemplo B* Clk ADD A, Rn Soma registro ao A umulador ADD A, R1 1 12 ADD A, direto Soma byte direto ao A umulador ADD A, 50H 2 12 ADD A, �Ri Soma RAM indireto ao A umulador ADD A, �R2 1 12 ADD A,#dado Soma dado imediato ao A umulador ADD A,#15 2 12 ADDC A, Rn Soma registro ao A umulador / arry ADDC A, R3 1 12 ADDC A, direto Soma byte direto ao A umulador / arry ADDC A, 50H 2 12 ADDC A, �Ri Soma RAM indireto ao A umulador / arry ADDC A, �R4 1 12 ADDC A,#dado Soma dado imediato ao A umulador / arry ADDC A,#15 2 12 SUBB A, Rn Subtrai registro ao A umulador / borrow SUBB A, R7 1 12 SUBB A, direto Subtrai byte direto ao A umulador / borrow SUBB A, 50H 2 12 SUBB A, �Ri Subtrai RAM indireto ao A umulador / borrow SUBB A, �R2 1 12 SUBB A,#dado Subtrai dado imediato ao A umulador / borrow SUBB A,#10 2 12 INC A In rementa a umulador INC A 1 12 INC Rn In rementa registro INC R3 1 12 INC direto In rementa byte direto INC 50H 2 12 INC �Ri In rementa RAM indireto INC �R1 1 12 DEC A De rementa a umulador DEC A 1 12 DEC Rn De rementa registro DEC R4 1 12 DEC direto De rementa byte direto DEC 50H 2 12 DEC �Ri De rementa RAM indireto DEC �R2 1 12 INC DPTR In rementa data pointer INC DPTR 1 24 MUL AB Multipli a A e B MUL AB 1 48 DIV AB Divide A por B DIV AB 1 48 DA A Ajuste de imal do a umulador DA A 1 12 * Bytes da Instrução Tabela 3.2: Instruções Aritméti as 3.2.3 Instruções Lógi as São as instruções de: E (ANL), OU (OR), e OU Ex lusivo (XOR), om todas as varian- tes ofere idas pelos modos de endereçamento, além de CLR, resetar todos bits, e CPL, omplemento. As instruções lógi as estão listadas na tabela 3.3, a seguir. 34 3 Programação em Assembly do 8051 Instrução Des rição Exemplo B* Clk ANL A, Rn AND de A om registro ANL A, R0 1 12 ANL A, direto AND de A om byte direto ANL A, 7FH 2 12 ANL A, �Ri AND de A om RAM indireto ANL A, �R0 1 12 ANL A, #dado AND de A om dado imediato ANL A, #7FH 2 12 ANL direto, A AND de byte direto om a umulador ANL 7FH, A 2 12 ANL direto, #dado AND de byte direto om dado imediato ANL 40H, #7FH 3 24 ORL A, Rn OR de A om o registro ORL A, R0 1 12 ORL A, direto OR de A om byte direto ORL A, 7FH 2 12 ORL A, �Ri OR de A om RAM indireto ORL A, �R0 1 12 ORL A, #dado OR de A om dado imediato OR A, #7FH 2 12 ORL direto, A OR de byte direto om a umulador ORL 7FH, A 2 12 ORL direto, #dado OR de byte direto om dado imediato ORL 40H, #7FH 3 24 XRL A,Rn XOR de A om o registro XRL A,R0 1 12 XRL A,direto XOR de A om byte direto XRL A,7FH 2 12 XRL A,�Ri XOR de A om RAM indireto XRL A,�R0 1 12 XRL A, #dado XOR de A om dado imediato XRL A, #7FH 2 12 XRL direto, A XOR de byte direto om a umulador XRL 7FH, A 2 12 XRL direto, #dado XOR de byte direto om dado imediato XRL 40H, #7FH 3 24 CLR A Limpa A umulador CLR A 1 12 CPL A Complementa A umulador CPL A 1 12 RL A Rota iona A à esquerda s/ arry RRA 1 12 RLC A Rota iona A à esquerda / arry RRC A 1 12 RR A Rota iona A à direita s/ arry RL A 1 12 RRC A Rota iona A à direita / arry RL C 1 12 SWAP A Tro a nibbles inferior e superior SWAP A 1 12 * Bytes da Instrução Tabela 3.3: Instruções Lógi as 3.2.4 Booleanas São as instruções que operam sobre bits, lembrando que a RAM interna possui 128 bits endereçáveis, e que no espaço da RAM interna destinada aos registros de funções espe iais existem mais 128 bits endereçáveis, a essados portanto através de instruções booleanas. As instruções booleanas estão listadas na tabela 3.4, a seguir. 35 3 Programação em Assembly do 8051 Instrução Des rição Exemplo B* Clk CLR C Limpa �ag C CLR C 1 12 CLR bit Limpa bit direto CLR P1.7 2 12 SETB C Seta �ag C SETB C 1 12 SETB bit Seta bit direto SETB P1.7 2 12 CPL C Complementa �ag C CPL C 1 12 CPL bit Complementa bit direto CPL P1.7 2 12 ANL C, bit AND de bit direto om o �ag C ANL C, P1.5 2 24 ANL C, /bit AND do omplem. de bit direto om o �ag C ANL C, P1.5 2 24 ORL C, bit AND de bit direto om o �ag C ORL C, P1.5 2 24 ORL C, /bit AND do omplem. de bit direto om o �ag C ORL C, P1.5 2 24 MOV C, bit Move bit direto para o �ag de arry MOV C, P1.0 2 12 MOV bit,C Move o �ag de arry o bit direto MOV P1.0,C 2 24 JC relativo Desvia se �ag de arry setado JC LOOP 2 24 JNC relativo Desvia se �ag de arry não setado JNC DESVIO 2 24 JB bit, relativo Desvia se bit direto setado JB LOOP 2 24 JNB bit, relativo Desvia se bit direto não setado JNB DESVIO 2 24 JBC bit, relativo Desvia se bit direto setado e reseta bit JBC TF0, L1 3 24 * Bytes da Instrução Tabela 3.4: Instruções booleanas 3.2.5 Desvio As instruções de desvios são aquelas usadas para o ontrole de �uxo do programa e ompreendem os seguintes tipos de desvios: • Desvios in ondi ionais • Desvios ondi ionais • Chamada de rotinas • Retorno de rotina • Retorno de rotina de interrupção As isntruções de desvio estão listadas na tabela 3.5, a seguir. 36 3 Programação em Assembly do 8051 Instrução Des rição Exemplo B* Clk ACALL endereço11bits Desvio absoluto para subrotina ACALL DISP 2 24 LCALL endereço16bits Desvio longo para subrotina LCALL TECLAS 3 24 RET Retorno de subrotina RET 1 24 RETI Retorno de rotina de interrupção RETI 1 24 AJMP endereço11bits Desvio absoluto AJMP LOOP 2 24 LJMP endereço16bits Desvio longo LJMP SAIDA 3 24 SJMP relativo Desvio urto (relativo) SJMP LOOP1 2 24 JMP �A+DPTR Desvia indireto relativo a DPTR JMP �A+DPTR 1 24 JZ relativo Desvia se A é igual a zero JZ SAI 2 24 JNZ relativo Desvia se A é diferente de zero JNZ REPETE 2 24 CJNE A,direto,relativo Compara byte direto / A e desvia CJNE A,30H,L3 3 24 se 6=byte direto CJNE A,#dado,relativo Compara dado / A e desvia CJNE A,#10,REP 3 24 se 6= dado CJNE Rn,#dado,relativo Compara reg. / indireto e desvia CJNE R2,#20,L0 3 24 se 6= dado CJNE �Rn,#dado,relativo Compara dado / indireto e desvia CJNE �R1,#100,S2 3 24 se 6= dado DJNZ Rn, relativo De rementa registro e desvia se 6= 0 DJNZ Rn, REPETE 2 24 DJNZ direto, relativo De rementa byte direto e desvia DJNZ 5FH, S1 3 24 se 6= 0 NOP Sem operação NOP 1 12 * Bytes da Instrução Tabela 3.5: Instruções de desvio 37 4 Exemplos de Apli ação A seguir serão apresentados exemplos de apli ações, om soluções de hardware e software, desde programas muito simples ilustrando o uso das Portas de E/S, Interrupções Externas, e Temporizadores/Contadores, até exemplos um pou o mais omplexos, envolvendo inter- fa es entre o 8051 e periféri os tais omo: displays de ristal líquido inteligentes (LCD), te lados matri iais, onversores A/D e D/A, e ir uitos de a ionamento de motores de passo. Muitos dos exemplos aqui apresentados serão úteis em projetos de sistemas mi ro on- trolados baseados no 8051, onde tais programas podem ser onvertidos em rotinas e usados para ontrole de periféri os. 4.1 Geração de Onda Quadrada Neste exemplo, bastante simples, será gerada uma onda quadrada de 10KHz no pino P1.0. Para tanto, será utilizado o T/C0 fun ionando omo temporizador no modo 2, ou seja: ontagem em 8 bits om re arga automáti a. Sendo o ristal os ilador do ir uito de lo k do sistema de 12MHz, a ontagem o orrerá om um lo k de 1us, uma vez que internamente o T/C divide o lo k do sistema por 12. A ontagem em 8 bits do T/C0 pode gerar tempos de até 256us,superior portanto ao ne essário para a geração da onda quadrada de 10KHz que tem um período de 50us, ver �gura 4.1, a seguir. Figura 4.1: Onda de 10KHz no pino P1.0 Para se gerar a onda quadrada a ada 50us será gerada uma interrupção pelo T/C0 e o pino P1.0 será omplementado na rotina de interrupção usando-se a instrução CPL, indo de 0 a 1 ou de 1 a 0. A seguir o ódigo do programa: 38 4 Exemplos de Apli ação ORG 0 ; INICIO DO CÓDIGO LJMP INICIO ; DESVIA P/ O INICIO DO PROGRAMA PRINCIPAL ORG 0BH ; ENDEREÇO DE INICIO DA ROT. INT. DO T/C0 ; ********INICIO DA ROTINA DE INTERRUPÇ�O DO T/C0*************************** CPL P1.0 ; GERAÇ�O DA ONDA QUADRADA RETI ; RETORNO DE INTERRUPÇ�O ORG 30H ; ENDEREÇO DE INICIO DO PROGRAMA PRINCIPAL ;********INICIO DO PROGRAMA PRINCIPAL***************************************** INICIO: MOV TMOD,#02H ; T/C0 NO MODO 8 BITS C/ RECARGA AUTOMÁTICA MOV TH0, #-50 ; VALOR INICIAL DE CONTAGEM É 205 OU -50 SETB TR0 ; DISPARA A CONTAGEM DO T/C0 MOV IE,#82H ; HABILITAS A INTERRUPÇ�O DO T/C0 LOOP: SJMP LOOP ; ESPERA AS INTERRUPÇÕES OCORREREM END ; FIM DO CÓDIGO 4.2 Controle de Temperatura de um Forno Neste exemplo um forno elétri o será ontrolado por histerese, entre 100?C e 120?C, utilizando para isto dois sensores de temperatura one tados aos pinos de interrupção externa INT0 e INT1. Quando INT0 re eber o sinal de ativação do sensor de 120?C, o forno deve ser desligado, uma vez que a temperatura atingiu o valor máximo. Da mesma forma quando a interrupção INT1 for ativada pelo sensor de 100C, o forno deverá ser ligado por estar na temperatura limite inferior, ver �gura 4.2, a seguir. Figura 4.2: Controle da temperatura de um forno entre 100 e 120 graus O ódigo do programa resultante é muito simples, omo pode ser onstatado na lista- gem a seguir: 39 4 Exemplos de Apli ação ORG 0 ; INICIO DO CÓDIGO LJMP INICIO ; DESVIA P/ O INICIO DO PROGRAMA PRINCIPAL ORG 03H ; ENDEREÇO DE INICIO DA ROT. INT. EXTERNA 0 ;******** INICIO DA ROT. DA INT. EXTERNA 0************************************** CLR P1.7 ; DESLIGA O FORNO RETI ; RETORNO DE INTERRUPÇ�O ORG 13H ; ENDEREÇO DE INICIO DA ROT. INT. EXTERNA 1 ;******** INICIO DA ROT. DA INT. EXTERNA 1************************************** SETB P1.7 ; LIGA O FORNO RETI ; RETORNA DA INTERRUPÇ�O ORG 30H ; ENDEREÇO DE INICIO DO PROGRAMA PRINCIPAL ;******** INICIO DO PROGRAMA PRINCIPAL*************************************** INICIO: MOV IE, #85H ; HABILITAS AS INTERRUPÇÕES EXTERNAS SETB IT0 ; ATIVAÇ�O DA INT0 NA BORDA DE DESCIDA SETB IT1 ; ATIVAÇ�O DA INT1 NA BORDA DE DESCIDA SETB P1.7 ; LIGA O FORNO JB INT0, LOOP ; VERIFICA SE O SENSOR DE 120 o C ESTÁ ATIVO CLR P1.7 ; DESLIGA O FORNO CASO INT0=0 ;******** LOOP INFINITO DE ESPERA DAS INTERRUPÇÕES************************ LOOP: SJMP LOOP ; ESPERA AS INTERRUPÇÕES OCORREREM END ; FIM DO CÓDIGO Pode-se, omo alternativa, elaborar um ódigo para o ontrole do forno em questão sem o uso do re urso de interrupções. Para isto, os bits sinalizadores de ativação dos pinos de interrupção, IE0 e IE1, lo alizados no registro TCON (ver item 2.7.3), poderão ser monitorados, e aso alguns destes pinos INT0/INT1 for de 1 para 0, o sinalizador é setado, e é exe utada a ação de ligar/desligar o forno, onforme já expli ado. Embora o ódigo gerado usando este enfoque seja mais simple que o anterior que utili- zava interrupções, este não apresenta a mesma �exibilidade que o primeiro, uma vez que não permite que outras tarefas possam ser realizadas em paralelo ao monitoramento dos pinos de interrupção. Veri� a-se que no aso do uso de interrupções, onde o programa � a em loop in�nito esperando a o orrên ia das interrupções, sem fazer absolutamente nada de útil, é plenamente possível embutir algum ódigo no lugar deste loop in�nito, e então outras tarefas em paralelo poderão ser exe utadas. O ódigo que implementa a alternativa de ontrole do forno, sem o uso de interrupções está apresentado na página seguinte. 40 4 Exemplos de Apli ação ORG 0000 ; INICIO DO CÓDIGO SETB P1.7 ; LIGA O FORNO JB INT0, LOOP ; VERIFICA SE O SENSOR DE 120 o C ESTÁ ATIVO CLR P1.7 ; DESLIGA O FORNO ; ********* MONITORAMENTO DA ATIVAÇ�O DE INT0 E INT1 *********************** LOOP: JB IE0, LIGA ; VERIFICA SE O SENSOR DE 120 o C ESTÁ ATIVO JB IE1, DESLIGA ; VERIFICA SE O SENSOR DE 100 o C ESTÁ ATIVO SJMP LOOP ; VOLTA A VERIFICAR IE0 E IE1 ; ********* ATIVAÇ�O DE INT0: LIGAR O FORNO ************************************ LIGA: SETB P1.7 ; LIGA O FORNO CLR IE0 ; RESETA IE0 SJMP LOOP ; VOLTA A VERIFICAR IE0 E IE1 ; ********* ATIVAÇ�O DE INT1: DESLIGAR O FORNO ******************************** DESLIGA: CLR P1.7 ; DESLIGA O FORNO CLR IE1 ; RESETA IE1 SJMP LOOP ; VOLTA A VERIFICAR IE0 E IE1 END ; FIM DO CÓDIGO 4.3 Geração de 2 Ondas Quadradas Simultâneas Neste exemplo serão geradas 2 ondas quadradas simultâneas nos pinos P1.7 e P1.6 de 10KHz e 1KHz, respe tivamente, onforme mostrado na �gura 4.3, a seguir. Figura 4.3: Geração de duas ondas quadradas simultâneas Como a onda de 10KHz possui um período de 100us, pela mesma razão apresentada antes será usado o T/C0 no modo 2, isto onsiderando-se um lo k de 12MHz para o mi ro ontrolador. A apa idade de gerar tempo dos T/C's no modo 2 é de no máximo 256us, ou 0,256mS, e pelo fato da onda de 1KHz possuir um período de 1ms, o que ex ede esta apa idade o T/C1 deverá operar no modo 1, om ontagem em 16 bits, o que possibilita um tempo onsideravelmente maior, ou seja de 65.536uS, ou 65,536ms. Mais uma vez as interrupções serão habilitadas e então geradas para atuar nos pinos P1.6 e P1.7 onde o estado destes serão omplementados para a geração das ondas quadradas. 41 4 Exemplos de Apli ação A seguir o ódigo do programa: ORG 0000 ; INICIO DO CÓDIGO LJMP INICIO ; DESVIA P/ O INICIO DO PROGRAMA PRINCIPAL ORG 000BH ; ENDEREÇO DE INICIO DA ROT. INT. DO T/C0 LJMP T0INT ; DESVIO P/ CORPO DA ROT. INT. DO T/C0 ORG 001BH ; ENDEREÇO DE INICIO DA ROT. INT. DO T/C1 LJMP T1INT ; DESVIO P/ CORPO DA ROT. INT. DO T/C1 ;******** INICIO DO PROGRAMA PRINCIPAL******************************************** ORG 0030H ; ENDEREÇO DE INICIO DO PROGRAMA PRINCIPAL INICIO: MOV TMOD, #12H ; T/C0: 8BITS AUTORELOAD, E T/C1: 16BITS MOV TH0, #-50 ; VALOR INICIAL DE CONTAGEM DO MOV TL0, #-50 ; T/C0 P/ TEMPO DE 50us MOV TH1,#HIGH(-500) ; VALOR INICIAL DE CONTAGEM DO MOV TL1,#LOW(-500) ; T/C1 P/ TEMPO DE 500us SETB TR0 ; INICIA A CONTAGEM DO T/C0 SETB TR1 ; INICIA A CONTAGEM DO T/C1 MOV IE, #8AH ; HABILITA AS INTERRUPÇÕES DOS T/C'S LOOP: SJMP LOOP ; ESPERA AS INTERRUPÇÕES OCORREREM ;******** INICIO DA ROTINA DE INTERRUPÇ�O DO T/C0****************************** T0INT: CPL P1.7 ; GERAÇ�O DA ONDA QUADRADA RETI ; RETORNA DA INTERRUPÇ�O ; ********INICIO DA ROTINA DE INTERRUPÇ�O DO T/C1****************************** T1INT: CPL P1.6 ; GERAÇ�O DA ONDA QUADRADA CLR TR1 ; PARA A CONTAGEM DO T/C1 MOV TH1,#HIGH(-500) ; VALOR INICIAL DE CONTAGEM DO MOV TL1,#LOW(-500) ; T/C1 P/ TEMPO DE 500us SETB TR1 ; INICIA CONTAGEM DO T/C1 RETI ; RETORNA DA INTERRUPÇ�O END ; FIM DO CÓDIGO 4.4 Interfa e om Conversor A/D R2R Um modo simples e barato de onverter valores de uma variável analógi a para palavras digitais é utilizar um onversor A/D do tipo R2R. A �gura 4.4, ilustra omo se imple- mentar uma interfa e entre um 8051 e um onversor A/D R2R. Para se efetuar a onversão da tensão de entrada analógi a para uma palavra digital, neste exemplo se utilizou uma rede R2R om resolução de 7 bits, o que resulta em um degrau de Vm/127, onde Vm é a máxima tensão de entrada.Para determinadas apli a- ções esta resolução pode ser pobre, porém para a maioria das apli ações em ontrole de 42 4 Exemplos de Apli ação pro essos tal resolução é mais que su� iênte. De qualquer forma, aso seja ne essário uma resolução maior, pode-se utilizar um onversor A/D omer ial de 8, 10, ou 12bits. No item 4.5, um destes onversores A/D omer ial, o ADC0804, é mostrado sendo interfa eado om um 8051. Figura 4.4: Interfa e 8051 om Conversor A/D tipo R2R A seguir o ódigo em assembly da rotina do onversor A/D R2R é apresentado. ;******** INICIO DA ROTINA DO CONVERSOR A/D R2R**************************** ADCR2R: MOV P1, #FFH ; INICIALIZA P1.7 COMO ENTRADA MOV R0, #7FH ; VALOR MÁXIMO DA REDE R2R REDER2R: MOV P1, R0 ; ENVIA VALOR DE CONTAGEM P/ A REDE NOP ; ESPERA ALGUM TEMPO P/ ESTABILIZAÇ�O JBC P1.7,SAIR2R ; VERIFICA SAÍDA DO COMPARADOR LM311 DJNZ R0, REDER2R ; ESPERA ALGUM TEMPO P/ ESTABILIZAÇ�O SAIR2R: RETI ; RETORNO DE ROTINA 4.5 Interfa e om ADC0804 Aqui um onversor A/D do tipo ADC0804 de 8 bits será one tado na porta P1 do 8051, e o omando de ini io de onversão (pino WR do ADC0804) será forne ido a ada 1 segundo, pelo pino P3.0 do 8051. Este sinal em P3.0 (STARTADC) sempre que for de alto para baixo ini ia uma nova onversão. Após o �nal da onversão, o onversor envia um sinal pelo seu pino INTR que está one tado ao pino INT0 do 8051. A rotina da interrupção externa INT0 por sua vez pro ede a leitura do ADC0804 enviando o valor lido para um bu�er ir ular na memória externa (XRAM). 43 4 Exemplos de Apli ação A �gura 4.4, a seguir ilustra a onexão entre os pinos de dados e ontrole do ADC0804 om o 8051. Figura 4.5: Interfa e 8051/ADC0804 A seguir é apresentada a listagem do programa expli ado a ima, sem a rotina do bu�er ir ular implementada. Tal rotina deve ser es rita de a ordo om as restrições de memória do sistema implementado. STARTADC EQU P3.0 ; PINO DE WRITE DO ADC0804 ORG 0000 ; ENDEREÇO DE RESET LJMP INICIO ; DESVIA P/ INICIO PROGR. PRINCIPAL ;***********INICIO DA ROT. INT. EXT.0********************************************** MOV A,P1 ; PROCEDE A LEITURA DO ADC ACALL BUFF_CIRC ; GRAVA NO BUFFER CIRC. DA XRAM RETI ; RETORNO DE INTERRUPÇ�O ;***********INICIO DA ROT. INT. DO T/C0******************************************** ORG 000BH ; END. INICIO DA ROT. INT. DO T/C0 CLR TR0 ; PARA A CONTAGEM DO T/C0 MOV TH0,#HIGH(-50000) ; VALOR INICIAL DE CONTAGEM MOV TL0,#LOW(-50000) ; TEMPO DE 50ms EM 12MHz SETB TR0 ; REINICIA A CONTAGEM DJNZ R0,SAIDA ; APÓS 20X DE 50ms TEM-SE 1,0s MOV R0,#20 ; RECARGA DO CONTADOR R0 C/ 20 CLR STARTADC ; STARTADC SETB STARTADC ; PREPARA SINAL INÍCIO DE CONV. SAIDA: RETI ; RETORNO DE ROTINA 44 4 Exemplos de Apli ação ;***********INICIO DO PROG. PRINCIPAL***************************************** INICIO: SETB STARTADC ; PREPARA O SINAL DE INÍCIO DE CONVERS�O MOV P1,#0FFH ; CONFIGURA P1 COMO ENTRADA MOV TMOD,#01H ; T/C0 NO MODO 16BITS P/ GERAR 50ms SETB IT0 ; INT0 ATIVA NA BORDA DE DESCIDA MOV IE, #10000011B ; INTERRUPÇÕES INT0 E T/C0 HABILITADAS MOV R0,#20 ; R0 C/ 20 PERMITE CONTAR 20 X 50ms = 1,0 SEG. SETB TF0 ; PROVOCA A INTERRUPÇ�O DO T/C0 LOOP: SJMP LOOP ; DESVIA P/ NOVA CONVERS�O END ; FIM DO CÓDIGO 4.6 Interfa e om LCD Inteligente O usos de um display de ristal líquido (LCD) inteligente em um sistema mi ro ontrolado é uma das formas mais efetivas de prover uma interfa e homem-máquina de baixo usto e fá il implementação, sendo portanto utilizado em um grande número de apli ações. Os LCD's inteligentes mais populares são os do padrão Hita h, om 1 ou 2 linhas de 16 ara teres ada. Estes omponentes ontém um ir uito ontrolador (HD44780) que ge- ren ia a es rita das mensagens no display, sendo apenas ne essário que o mi ro ontrolador programe o dispositivo e envie os ara teres da mensagem no padrão ASCII. A onexão do LCD om o mi ro ontrolador pode ser feita através de 4 ou 8 linhas de dados (D4...D7 ou D0...D7), além de 3 sinais de ontrole: o sinal de habilitação (EN), o de seleção de es rita ou leitura (RW), e o sinal de seleção de registro de ontrole ou de dado (RS). A pinagem de um LCD padrão Hita hi é o seguinte: Pino Sigla Função 1 GND Terra 2 V Alimentação de +5V 3 Pot Terminal entral do trimpot 4 RS Register Sele t - Seleção de Registro 5 RW Read/Write - Sinal de Leitura e Es rita 6 EN Enable - Sinal de Habilitação 7 D0 Sinal de dados D0 (LSB) 8 D1 Sinal de dados D1 9 D2 Sinal de dados D2 10 D3 Sinal de dados D3 11 D4 Sinal de dados D4 12 D5 Sinal de dados D5 13 D6 Sinal de dados D6 14 D7 Sinal de dados D7 (MSB) Tabela 4.1: Pinagem do LCD padrão Os modos de fun ionamento do LCD devem ser programados através de palavras de 45 4 Exemplos de Apli ação ontrole próprias, que permitem on�gurar várias ara terísti as deste, tais omo: • Seleção do modo de entrada de dados em 4 ou 8 bits; • In remento automáti o da posição do ursor após es rita; • Ligar o LCD/Cursor • Desligar o LCD/Cursor • Pis ar ursor. Para se pro eder a programação do LCD os sinais RS e RW devem sele ionar a es rita no registro de ontrole, e o sinal de habilitação deve ser ativado. Então palavras de ontrole adequadas devem ser es ritas neste registro, para se programar o modo omo o LCD irá fun ionar. Dentre estes modos de operação estão os modos de interfa e em 4 ou 8 bits de dados, ujas palavras de ontrole são 28H e 38H, respe tivamente. Para maiores detalhes de operação dos LCD's padrão Hita h, onsultar do umentação própria do fabri ante. 4.6.1 Interfa e 8051/LCD em 8 bits A seguir será apresentado um programa para es rita da mensagem �Hello World� no LCD, ontrolado em 8 bits. O esquema de onexão entre o LCD e o 8051 em 8bits é mostrado na �gura 4.5. Figura 4.6: Interfa e 8051/LCD em 8 bits O ódigo que implementa a es rita da mensgem � Hello World� é apresentado a seguir. 46 4 Exemplos de Apli ação ;*********DEFINIÇÕES P/ O LCD ***************************************************** EN EQU P3.4 ; ENABLE ATIVO NA BORDA DE DESCIDA RS EQU P3.2 ; SELEÇ�O REGISTRO: DADO-1, COMANDO-0 RW EQU P3.3 ; READ/WRITE: LEITURA-1, ESCRITA-0 DADO EQU P1 ; LCD CONECTADO NA PORTA P1 CONFIG EQU 38H ; 20H(FUNÇ�O)+10H(8BITS)+08H(2LINHAS) LCD_ON EQU 0EH ; 0CH(LCD ON)+02H(Cursor ON) ENTRY EQU 06H ; 06H(DESLOCA A DIREITA A CADA ESCRITA) CLR_LCD EQU 01H ; LIMPA LCD ;********INICIO DO PROGRAMA PRINCIPAL****************************************** LCALL INICLCD ; INICIALIZA O LCD LCALL TEXTO ; ENVIA MENSAGEM PARA O LCD LOOP SJMP LOOP ; LOOP INFINITO ;*********INICIALIZAÇ�O DO LCD *************************************************** INICLCD: MOV A, #CONFIG ; PREPARA PALAVRA DE CONTROLE DO LCD LCALL WR_CMD ; ENVIA CONTROLE P/ O LCD MOV A, #LCD_ON ; PREPARA PALAVRA DE CONTROLE DO LCD LCALL WR_CMD ; CHAMA ROT. ENVIO DE CONTROLE P/ LCD MOV A, #ENTRY ; PREPARA PALAVRA DE CONTROLE DO LCD LCALL WR_CMD ; CHAMA ROT. ENVIO DE CONTROLE P/ LCD MOV A, #CLR_LCD ; PREPARA PALAVRA DE CONTROLE DO LCD LCALL WR_CMD ; CHAMA ROT. ENVIO DE CONTROLE P/ LCD RET ; RETORNO DE ROTINA ;*********ESCREVE CONTROLE NO LCD********************************************* WR_CMD: SETB EN ; PREPARA SINAL DE ENABLE DO LCD CLR RS ; SELECIONA REGISTRO DE CONTR. DO LCD MOV DADO, A ; ENVIA PALAVRA DE CONTROLE P/ O LCD CLR EN ; ATIVA SINAL DE ENABLE DO LCD LCALL WAIT5MS ; ESPERA 5MILISEGUNDOS RET ; RETORNO DE ROTINA ;*********ESCREVA CARACTER NO LCD********************************************* WR_TEXT: SETB EN ; PREPARA SINAL DE ENABLE SETB RS
Compartilhar