Você está na página 1de 233
Microcontrolador DETALHADO * Revisdo da Logica Bindria, Aritmética e Digital * Principios de Microprocessadores * * Funcionamento Detalhado do 8051 ° * Explicagao Detalhada das Instruces * * Exercicios Resolvidos * Inclui Apéndice com Exercicios Resolvidos de Algoritmos Fa 6? EDICAO indice Analitico Parte 1 - Fundamentos Basicos ...... Capitulo 1 - Introdugao Capitulo 2 - Representagao de Informagao .. 2.1 = Sistemas NuméricoS.........1. 2.2 - Conversao entre Bases, 2.3 - Byles e Kilobytes... 2.4 - Complementos de 1 e de 2 2.5 - Nameros Sinalizados. 2.51 - Nimeros Sinalizdos por Sign-Magritude (et de Sina. 2.5.2 Numeros Sinalizados por Complemento de 2... 2.6 - Numeros Reais.. 2.7 - Nameros com Pontos Flutuantes 2.8 - Cédigo Binario Decimal (Codigo BCD). 2.9- ASCII Capitulo 3 - Aritmética Binaria 3.1 - Adicio. 3.2 - Sublragdo Simples 3.3 - Adigao e Subtragao Utilizando Complemento do 2 3.4 Multiplicagao. i 35 - Divisdo Capitulo 4 - Portas Logicas e Algebra Booleans ...... 4.1 - Chaves (Switches) come Dares i 3 4.2 - Portas Basicas.. 4.3- Extensdo para Trés ou mais Entradas. 4.4 Portas EXOR ¢ EXNOR... a 4.5 - Transformagdes DeMOrgan rr 4,6 - Versaiiidade das Portas NAND ¢ NOR... 47 - Identidades Booleanas. 4.8 Manipulagao Algebrica. 4.9- Tempos (Timings). 4.10 - Tipos de Sada. Capitulo 5 - Logica Combinacional 5.1 - Half Adder (Meio Somador). 5.2 -Full Adder (Somador Completo). 5.3 - Somadar de 4 bits 5.4 SomadorfSubtrator 4-bits 55 - Decodificadores.. Capitulo 6 - Logica Seqiiencial 6.1 - Flip Flops... 6.2- Registradores.. Capitulo 7 - Dispositivos de Memoria Semicondutores . 5 71 RAM son 7.2 - ROM... Parte II- 0 Microcontrolador 8051 Capitulo 1 - O que é um Microprocessador? ........ 1.1 - Explicagao Intuitiva: Fazendo um Bolo... 1.2 - O que 6 um Microprocessador - Explicag&o Técnice 1.3-ACPU Internamente. - 08051 Basico... 1.5 Qual a Diferenga entre Mcroprocessador (Mp) e Miorcontolador (Mc)? 1.6 O Grupo de InstrugSes do Microcontrolador. 1.7 - © Mundo Exterior - VO e Periféricos 1.8 - Microcontrolador versus Hardware com Légioa Fixa 1.9 - Exercicios de FixagSo... Capitulo 2-0 que é a Familia 8051? .70 2.0 Introdugao.. 70 2.1 - Arquitetura Interna dos 8051/8052/80550. ai 2.2- Como € 0 Chip Externamente........ 2.2.1 - Esquema Elétrico. 2.2.2 - Desenho da Pastiha (Chip) 2.3 - Descrigao Formal da Pinagem do Mc 8051 2.4 - Organizagio das Memotias nnn 2.4.1 - RAM Interna (General Purpose RAM)... 2.4.2 Apresentando com Detalhes os Regsradores do Me. 2.4.2.1 - ACC ou A (Acumulador) 2.4.2.2 - Ports PO, P1, P2 e P3. 2.4.2.3 B- Registrador B (FOh).. 2.4.2.4- PSW (Program Status Word) 2.4.2.5 - IE IP (Interrupt Enable e Interrupt Pritt) - (Bytes A8h e > Beh)... 2.4.2.6 - “‘DPTR’, DPH e DPL (Data Pointer High e Data Pointer Low) - (Bytes 0h e 2h). 90 2.4.2.7 - SP (Stack Pointer) - (81h). 2.42.8- PCON - (Power Control Register) - (67h... 2.4.29 - Os Registradores da RAM Intema de Uso Geral 2.5 Exercicios de Fixagao... Capitulo 3 - 0 Clock, Ciclos de Maquina e Reset 341-0 Clock, 3.2 Ciclos de Maquina 33-0 Reset { Valores dos Regitradores logo aps 0 RESET. 3.4- Exercicios de Fixagao .. Capitulo 4 Os Ports... 4.0 Intvoduga0 ... 4.1 -Caracteristcas intemas dos Ports 4.1.1 -0 Port PO....... 4.1.2-0 Port Pt, P2e PS. 4.2 - Caractetisticas Gerais e de Tempo dos Ports... 4.2.1 - Instrugdes que Alteram diretamente o Contetido dos Ports. 4.2.2 - Condigbes de Tempo Envolvendo os Ports 4.3- Exerclcios de Fixaga Capitulo 5 - 0 Conjunto de Instrugées..... 5.0-- Introduga 5.1 - Modos de Enderegamento das iste z 5.1.1 - Endaregamento por Registrador. 5.1.2 - Enderegamento Direto | 5.1.3 - Enderegamento Indireto 5.1.4- Enderegamento Imediato.... 5.1.5 - Enderegamento Relativo. - Enderegamento Absoluto. - Enderegamento Longp..... - Enderegamento Indexado.. 6.2 Tipos de Instrugao.. 5.2.1 - Instrugdes Aritméticas 5.2.2 - Instrugbas l6gicas ... 5.2.3- Instrugdes de Transferéncia de Dados . 5.2.4 Instrugdes Booleanas 5.255 - Instrugdes de Desvio (exclu'das as booleanas de desvio) . 5.3- Instrugdes que afetam Registradores (PSW) 5.4- Exercicios de Fixagao i Capitulo 6 - Interrupgao 6.0- Introdugao .. 6:1 - Proprodados da Iterupga 6.2 - Interrupgdes na Familia 8051 6.3 - Como Programar as Interrupg6es Exercicio Solugéio 6.4 - Estrutura Basica dl um Pavan com Interrupgbes... 855 - AInterrupgo e suas Condigies de Tempo... 8.6 - Exercicios de Fixagio..... Capitulo 7 - Timer 7.0 - Introdugéo 7.4 = Modos de Trabalho do Timer. 7.4.4 = Modo 0 (18 bits)... 7.4.2 - Modo 1 (16 bits). 7.4.8 - Modo 2 (8 bits com recarga automatic) 7.4.4 Modo 8 (8 bits misto) .... 7.1.5 -O Bloco de ‘Liga-Desiiga’... 7.2- Programando os modos dos Timet/Counters 7.2.a- Timer Mode Register - TMOD...... 7.2 - Timer Control Register - TCON... 7.3- Como Programar os Timer/Counters Exercicio Solugao . 7.4- Necessitando de Tempos muito Curtos ou muito Longos. 7.5 - Exeroicios de Fixaga Capitulo 8 - Serial 8.0 -Introdugao 8.1 - Modos de Comunicagao 8.2- 0 Sistema de Transmisséo e Recepcao. 8.3- A palavra de Controle SCON 8.4- Os Modos de Operagéo 8.4.1 - Modo 0 - Sincrono .. 8.4.2 - Modo 1 - Assincrono de 8 Bits... 8.4.3 - Modo 2 - Assincrono de 9 Bits. 814.4 Modo 3 Assincrono de 9 bis com Baud Rate Programavel 8.5 - Comunicagdo entre Varios Processadores.... 8.6 - Como Programar a Serial. 86a- Como Habitar a Sef £46. Como Alvar com os Bits de Interrupgdo SERIAL... 8.6.¢- O Bitde Paridade nos Modos 2¢ 3... 8.6.d - Como Gerar os Baud-rates Desejados. 8.6.0 - Quem o Registrador PCON... 8.6! Como Gerar Baud-ates como Timer/Counte_1. 8.6.9 - Como fazer a SERIAL interromper 0 microcontrolador na recepgao de dadbs... 87 - Exercicio de Fixaga Capitulo 9 - Expansao dos Ports e de Capacidade de Meméria .. 9.0 Introdugao... 4.1 - Como se Const um Sistema ern I Mapeado 9.2- Aumentando a Capacidade do PORT P1 por meio do Periférico Serial. 9.3 - Aumentando a Capacidade de Memoria. Capitulo 10 Software: Compilagao, Simulagao, Emulagao e Gravacao .. 40.4 -Linquagem de Maquina e linguagem Assembly... 40.2 Linguagens de Alto Nivel... 10.8 Procetimentos Bésics para a Crago do Sofware 40.4 - Simulago e Emulagéo.... 10.4.1 - Simuladores 10.4.2 - Emuladores: i 40.4.3 - Emulagao Parcial por melo de Kits de Gusto Acossivel 10.5 - Gravagao de EPROM... Cédigo Fonte... Cédigo eM HEX anon Cédigo em Bindrio Resultante na Eprom... Capitulo 11 - Desafios ...... Anexo A - Fabricantes de Software de Apoio - 8051 ... “ a Informagdes sobre Ferramentas para Desenvolvimento com 0 5; Mirocontolado. sosessssernssevnneee COT Anexo B - Tabela de Instrugées e Periféricos Internos - 8051 Notagées dos Registradores..... Logica de Interrup¢éo.... Registradores Especiais de Progamagéo IE (Interrupt Enable Register) - ABh .. IP (Interrupt Priority Register) - BBh TCON (Timer Control Register) - 88h, ‘TMOD (Timer Mode Register) - 89h.. Distribuigao da RAM Interna do 8051 ‘SCON (Serial Communication Register) - 96h a Apéndice C - Exercicios Resolvidos - Algoritmos indice Remissivo . Referéncias Bibliograficas..... Fundamentos Basicos Introducdéo Para 0 inicio de nossos estudos sobre microcontrolador, necessitamos de um conhecimento basico do sistema numérico binatio e técnicas digitais. Estes so itens primordiais para nosso estudo, pois todos os sistemas mictoprocessados s&o baseados nestas técnicas. Leitores que possuem um bom conhecimento de algebra booleana e ldgica digital podem pular esta parte. 4 Microcontrolador 8051 Detalhado Representacdo de Informacéo Computadores arquivam, manipulam e transformam informagées. Neste universo, informagdes sao freqlientemente chamadas de dados (data). Dados s&o normalmente representados por ntimeros ¢ texto. Antes de arquivarmos, manipularmos e transformarmos os dados ou informagGes, necessitamos de um sistema que os represente. Quando criangas, aprendemos 0 sistema numérico decimal para representarmos os numeros @ 0 alfabeto para reproduzirmos um texto. Estes sistemas ainda nao podem ser usados diretamente pelos computadores que entendem apenas o sistema binario, comumente fepresentado pelos simbolos “0” e 1”, mas existem outras possibilidades, como mostrado na tabela 1. Um digito binatio simples é chamado de bit. Em um computador, o bit ¢ armazenado 2m um dispositivo eletrénico chamado de flip-flop. A caracteristica bésica de um fiplop 6 sua capacidade de ‘lembrar’. Uma vez que um bit é armazenado em um flip-lop, ele podera ser buscado quando necessério. Normaimente, 0 6 armazenado como baixa tensdo (0 Volts) e 1 como alta tensao (5 Volts). Na segdes seguintes, iremos explorar as propriedades dos sistemas numéricos decimal € binario, e também falaremos dos sistemas octal e hexadecimal, muito usados nos sistemas computadorizados. Um simbolo 0 Outro Simbolo 1 0 Verdadeiro Falso Ato Baixo 5 Volts OVolts Ligado Desligado Sim Nao Maga Laranja Tabela 1 - O sistema binario, Representagao de Informagao 2.1 - Sistemas Numéricos Como 0 sistema bindrio utiliza apenas dois simbolos, ele é chamado de base 2. 0 sistema numérico mais usado pelos humanos 6 o decimal - base 10 - utiizando digitos de 0 a 9, Quantidades maiores que 9 so representadas com o aumento do ntimero de digitos. Por exemplo, o numero 268 contém trés digitos. © “8" que tem o peso 8 x 1 = 8.0 “6” que tem 0 peso 6 x 10 = 60 € 0 “2” com peso 2 x 100 = 200, formando um total de 268. A ilustragao abaixo mostra isto: 2 x 100 = 200 6x 10 = 60 Bx 1548 26810) Quando hd a possibilidade de alguma confusao, a base de um numero é indicada no canto inferior do numero: 26810. Geralmente, os pesos dos digitos sdo representados na forma mr, em que m é a base {no caso 10) e n é a posigdo do digito. O digito da extrema direta esta na posigao “0”, o proximo digito esta na posicao “1”, e assim sucessivamente. Isto é mostrado abaixo: 2x10 6x10 ax 2689 : Entendido pelos | Entendido pelos Simbios Humanos Computadores 0.4 Com dfcuidade __| Sim Octal 8 [0,1,2,3,4,5,67 Com dicuidade | Nao Decimal 10 0, 1,2, 3, 4, 5, 6, 7, 8,9 Sim Nao Heradecinal | 16 | 0 432%" 5:6,7,8,.9,A.B,1 com dficuldade | Nao Tabela 2 - Sistemas binario, octal, hexadecimal e decimal. O digito que se encontra na extrema direita do ntimero formado é chamado de digito menos significativo (least significant digit). ‘Assim como conhecemos o sistema decimal, 6 de suma importéncia que conhecamos os sistemas bindrio, octal e hexadecimal, Octal, ou base 8, utiliza os simbolos de 0 a 7. Hexadecimal, ou base 16, utiliza dezesseis simbolos que consistem nos algarismos de 0 a 9 € nas letras de A a F. Os simbolos de Aa F representam as quantidades de dez a quinze com A para 10, B para 11, C para 12, D para 13, E para 14 e F para 15. As duas Ultimas colunas da tabela 2 mostram que o sistema decimal é 0 preferido dos humanos € 0 binario 6 0 Unico entendido pelos computadores. Entao, por que necessitamos conhecer os sistemas octal e hexadecimal? Apesar de ndo serem entendidas pelos computadores, muitas interfaces utilizam esses sistemas para efetuar a comunicagao; é claro que, antes de serem processados, esses sistemas so convertidos no sistema binatio. Octal e hexadecimal séo usados pelos humanos Porque é muito mais facil trabalhar com eles do que com o binario. A seguir, verificamos como ¢ realizada a conversao entre os sistemas. 2.2 - Conversdo entre Bases Dentro das quatro bases apresentadas, & possivel a realizagdo de doze conversdes diferentes, como mostra a figura 1: Figura 1 - Doze converses entre as quatro bases. Num rapido exemplo, o niimero 13, na base 10, é mostrado abaixo em cada uma das quatro bases: 13,9= 1101, = 15, = Dyy A conversao de um ntimero binério, octal ou hexadecimal em decimal é feita como mostrado abaixo, Multiplica-se cada digito pelo seu peso, somando os resultados, Para um numero bins RNR, er a 10) Para um numero octal: Para um niimero hexadecimal, 10A9, temos: 1 x 16° = 4096 Oxte= 0 Ax 16! = 160 9 x 16 =* 9 F265 Para converter um numero decimal em binario, 0 seguinte procedimento é usado: divide-se continuamente 0 németo decimal por dois, até que o resultado chegue a zero. Em cada divisdo teremos um resto, que sera sempre Zero ou um. O numero formado pela combinagao dos restos sera o binario equivalente ao niimero original. O primeiro resto serd 0 bit menos significativo (LSB- least significant bit), a direita, e 0 ultimo resto sera o bit mais significative (MSB - most significant bit), @ esquerda. Abaixo tem-se a conversdo do numero decimal 84 em binario, SBS sy one aos ons 28 of 1 ———— Bayo = 1010100, ‘A conversao de decimal em octal ou de decimal em hexadecimal é similar ao exemplo acima. Converter um decimal em octal é dividir continuamente um numero por 8 combinar os restos. O ntimero decimal 93 é convertido em octal, como é mostrado abaixo: ones ale oe | 93,9 = 135, Utiizando a mesma técnica, decimal 909 6 convertido em hexadecimal da seguinte maneira: (@ é 9308 dividido por 16 6 oe 581 e tem resto 13,,0U Dj, 93095 = 245Dy5 = 245D, | A base 16 pode ser explicita pelo nimero 16 ou pela letra minuscule h. Octal 0 1 2 010 3 ott 4 100 5 101 6 110 t 14 Tabela 3 - Conversao octal em binatio. Conversées entre bases 2, 8 ¢ 16 sao extremamente faceis, sendo esta a maior razio Para que essas bases sejam mais utiizadas. Um simples digito octal corresponde a trés digitos binarios, como mostrado na tabela 3, Para converter um numero octal em bindrio, basta converter cada digito octal no correspondente 3-bits binarios. Por exemplo, 1075, 6 convertido em bindrio: Oca: 1 0 7 5 | Binario: 001 000 111 101 A idéia 6 a mesma para conversao hexadecimal em binario, exceto que cada digito hexadecimal corresponde a 4 bits bindrios, como ilustra a tabela 4. Para converter um numero hexadecimal em bindrio, basta substituir cada digito hexadecimal pelos 4-bits bindrios correspondentes. Por exemplo, 0 hexadecimal ASFIC é convertido em bindrio: are Binario: 1010 0011 1111 0001 1100 = 3 = 3 a Digito Bina 0000 001 0010 oot 0100 0101 0110 ott 4000 4001 1010 1011 1100 1101 1110 F 1114 mlololal>lole|sjolalale|re|—= Tabela 4 - Conversao hexadecimal em bindrio. ‘A conversao de binario em octal ou de bindrio em hexadecimal 6 a operagao reversa dos dois exemplos anteriores. Apenas troca-se 0 sentido das setas. A conversao oposta & ilustrada abaixo, Comegando pelo LSB, formando grupos de trés bits para octal ¢ grupos de quatro bits para o hexadecimal: Binério: 100000 1111101 TN Grupos de quatro comegando com OLSB Hexadecima: 6 0 F 5 Binario: 10 110 111 ral Grupos de trés comegando com : oLsB Octal: 6 7 10 ‘Microcontrolador 8051 Detalhado As Unicas converses que sobraram para analisar foram a octal em hexadecimal e hexadecimal em octal. conversao em bindrio como processo intermedidrio: A maneira mais facil de realizar estas conversdes 6 utilizando a Octal => = Binario ==> = Hexadecimal Hexadecimal = —Binario — Octal Todas as conversdes entre as quatro bases foram apresentadas. Apresentaremos agora um resumo na tabela 5. Convers Bindrio em octal ica Bits agrupados em trés, comegando pelo LSB Bindrio em decimal Multipicar cada bit pelo seu peso @ somé-los ao final. Binario em hexadecimal Bits agrupados em quatro, comegando pelo LSB. Octal em binatio Substitui-se cada digito octal pelo 3-bit binario, Octal em decimal Mutipicar cada digito octal pelo seu peso e somé-las no final Octal em hexadecimal Converter octal em bindrio e binario em hexadecimal. Decimal em binario Continuamente divide-se por dois e retiram-se os restos; 0 primeiro resto 6 0 LSB (digito menos signiticativo). Decimal em octal Continuamente divide-se por oito e retiram-se os restos; o primeiro resto 6 0 digito menos signticativo, Decimal em hexadecimal Continuamente divide-se por dezesseis retiram-se os restos; o primeira resto é 0 digito menos signifcativo. Hexadecimal em bindrio Substtu-se cada digito hexadecimal pelo 4-bitbinétio. Hexadecimal em octal Converter hexadecimal em bindrio e depois em octal. Hexadecimal em decimal Multiplicar cada digito hexadecimal pelo seu peso e somé-los ao final. Exemplo 1; Qual Tabela 5 - Resumo das técnicas de conversao. € 0 maior numero decimal possivel que eu posso representar com (a) Bits, (b) 12 bits, (c) 16 bits, (d)n bits? Solugdo: (a) 255, (b) 40985, (c) 65595, (d) 2° - 1, Discussao: O maior ntimero binario de 8 bits 611111111, A solugao para o exemplo 1 pode ser encontrada utilizando procedimento de conversao, mas existe um método mais rapido @ facil. Se adicionarmos resposta 6 2° - 1 = 255. 1 ao nUimero 11111111, teremos 100000000 ou 28, Assim sendo, a Exemplo 2: Qual 6 @ quantidade minima de bits utilizada para representar 0 niimero decimal 539? Discussao: 2° = 512, entao 9 bits ndo é o suficiente. 210 = 1024, entao o minimo de 10 bits é 0 suficiente para representar o numero 539, A resposta a esta questao é também ‘encontrada calculando logz539 e arredondando para cima. Log:539 = 9,074, que arredondando para cima resulta 10 bits. 2.3 - Bytes e Kilobytes Os computadores e microprocessadores mais antigos trabalham com dados de 8 bits. O termo byte veio para descrever convenientemente este tipo de dado. Outra convengao é que os bits em um byte sAo numerados de 0 a 7, sendo 0 menos significative - posicionado a direita - 0 bit 0, e 0 posicionado a esquerda o bit 7. Como mostrado abaixo: Namero debit: 76543210 Byte: 10010001 Um valor de 2 bytes ou 16 bits € freqiientemente chamado de word (palavra), e um valor de 4 bytes ou 32 bits ¢ chamado de long-word. Um nibble é um valor de 4 bits ou metade de um byte. © simbolo K, para Kil, refere-se a 2"° ou 1024, Um kilobyte representa 1024 bytes. e um computador trabalha com dados de 8 bits @ usa um enderego de 16 bits para arquivar ou recuperar dados da meméria, seu endereco ‘contém um espago de 2'° = 65.536 bytes. Como 2° é mesmo que 2°x 2", o computador tem um espago de enderego de 64 Kbytes. Exemplo 3: Quantos bits ha em 3 Kbytes? Solugdo: 3 x 2x 8 = 24.576 £ comum utilizar o termo M ou Mega no lugar de 2® ou 1.048.576. Um megabyte significa 1.048.576 bytes. Um computador que usa 24 bits de enderegamento de dados tem 2 x 2 = 16 megabytes de espago de enderegamento. 2.4- Complementos de 1 e de 2 Os complementos de 1 e de 2 de nimeros bindrios so usados para simplificar a subtragao e representar numeros negativos. Formar 0 complemento de 1 de um numero bindrio é complementar cada bit. Complementar significa trocar 0 por 1e1pord. Namerobinario: 1011100 Complemento de 1:0100011 Formar 0 complemento de 2 de um numero bindrio 6 obter seu complemento de 1 ¢ somar 1. Numero binario: 1011100 Complement de1:0100011 Somar 1: + 4 Complemento de 2: 010010 0 Uma propriedade interessante é que, efetuando o complemento de 2 duas vezes em um numero, 0 resultado é o proprio numero. Namerobinario: 1011100 Complemento de 1: 010001 i Somar 1 Complemento de 2:0 10010 5 Complemento de 1: 101101 ! Somar 1; Complemento de 2: 101710 3 A idéia dos complementos de 1 de 2 tem a seguinte interpretacdo: para um radical m, 0 complemento de (mm-1) 6 encontrado pela subtrago de cada digito de (m-1). © complemento de m 6 encontrado pegando o complement de (m-1) e enlo somando 1. Na base 10, por exemplo, 0 complemento de 9 6 encontrado pela subtrago de cada digito de 9. O complemento de 10 é 0 complemento de 9 mais 1. complemento de 9 de 5210 6 4710, e 0 complemento de 10 4810. 2.5 - Numeros Sinalizados Até agora, discutimos apenas os ntimeros nao sinalizados ou positivos. Na pratica, devemos representar também os nuimeros sinalizados ou negativos. Uma vez que introduzimos os nuimeros sinalizados, 6 importante prestar aten¢&o aos tipos dos ntimeros, Por exemplo, um computador de 8 bits arquiva nimeros do tipo 8 bits. Ent&o, o nimero 519 é representado desta forma: 000001012 Os cinco zeros & esquerda do niimero so redundantes para nossa concepeao, mas so importantissimos ao trabalharmos com computadores. 2.5.1 - Numeros Sinalizados por Sign-Magnitude (Bit de Sinal) Um simples método de representacao de numeros negativos 6 chamado de sign- magnitude. Usando 0 sign-magnitude, o bit da esquerda de um ntimero binatio representa o bit sinal. Se o bit sinal for 1, 0 nimero 6 negativo. Se o bit sinal for 0, o numero é positivo. Usando uma representagao sign-magnitude e 8 bits dos valores +510 € -51o, temos: 45: ooooo10 aS Bit sinal positivo [Magnitude (6) 3: 10000101 / Bit sinal negativo] [Magnitude (5) Como pademos ver, 6 de suma importancia saber de quantos bits 0 numero é formado. Por exemplo, nao podemos perguntar simplesmente: Como 6 representado o numero -5 utiizando bit sinal? E necessario fomecer também 0 tipo de dado com o qual estamos trabalhando. Exemplo 4: Como é representado o nlimero -5 em computadores que operam em 12 bits? Solugdo: 100000000101 Discussao: O bit sinal é 1 ¢ os outros 11 bits representam a magnitude 5, Exemplo 5: Que faixa de ntimero podemos ter com 8 bits, utilizando o bit sinal? Solugdo: - 127 a + 127 Discussao: Utilizando a representagao de n bits com sign-magnitude, a faixa de nimeros 6 de - (21-1) a +(2"'-1). 2.5.2- Numeros Sinalizados por Complemento de 2 O esquema mais comum de representar nimeros sinalizados 6 por complemento de 2. Novamente nds devemos prestar atengao ao tipo dos numeros. Utilizando 8 bits & representagao em complemento de 2, os valores +5 e -5 sdo representados assim: +5; 90000101 414111011 ‘Complemento de 2.de #5 Podemos ver novamente que o MSB 6 0 para numeros positives ¢ 1 para numeros negativos. 0 esquema visto anteriormente para conversao de nimeros binarios em decimais nao trabalha com numeros negativos representados na forma de complemento de 2. Como ja vimos, efetuando o complemento de 2 duas vezes, ‘obtemos o ntimero original; nds precisamos. apenas pegar 0 complemento de 2 de um numero negativo para encontrar o equivalente positivo. Por exemplo, considerando o numero de 16 bits abaixo: 414141111111101011 i Se estamos utilizando o método de complemento de 2 e perguntamos que numero 6 este, a resposta nao 6 tao dbvia, Sabemos que 6 um numero negativo, mas para sabermos qual sua magnitude, precisamos apenas efetuar seu complemento de 2 para encontrar seu positivo equivalente. Com isto teremos 0 seguinte resultado: 0000000000010101 que é facilmente convertido em 241, ‘entao o numero original é -2110. A seguir, temos um sumario da faixa de ntimeros de 8 bits sinalizados (complemento de 2): ___Merocontrolador 6051 Detalhad Bindrio Decimal 10000000 128 10000001 127 10000010 126 1111110 2 11111111. A 00000000 0 00000001 1 01111110 +126 onnttttt 27 Em geral, a faixa para n bits de numeros sinalizados e por complemento de 2 é de -(2"") a+(2"-1), A fepresentagéo em complemento de 2 dos numeros negativos, a primeira vista, parece meio estranha, mas observando melhor, torna-se muito elegante. Por exemplo, se somarmos 1 & representagao binaria de -127, usando a técnica padréo da adigéo, nés teremos -126. Isto nao ocorre no caso da tepresentagao sign-magnitude. Outra vantagem do complemento de 2 6 que simplifica muito as operagdes de soma e subtragdo em ntimeros sinalizados. Exemplo 6: Qual a faixa de nimeros sinalizados em complemento de 2 de 12 bits? Solugdo: -2048 a +2047 Discussao: n= 12, -2"' = -2048, +2"1-1=2"- 1 = 42047, 2.6 - NUmeros Reais A representacao de ntimeros reais em bindrio é uma extensdo natural da técnica para inteiros. O peso do bit a direita da virgula é 24, 0 peso do proximo bit 6 22, e assim sucessivamente. Por exemplo, a converso do nlimero real binario 10010,101101 em decimal 6 mostrada abaixo: 16,000000 0,000000 0.000000 2.000000 0,000000 0,500000 0,000000 0,125000 0,062500 0,000000 = 0.015625 78,703125 GIES tai. Soe ill 1001010110 ‘Aconversao inversa é interessante. A parte inteira convertida como antes. A fragao é convertida multiplicando continuamente por 2 € extraindo a porcao inteira do resultado (0 digito imediatamente a esquerda da virgula). O processo é repetido até que o resultado da multipicagao seja zero, ou até que se atinja a preciso desejada. A conversao de 0,39207 em inario com seis casas decimais de preciso é mostrada abaixo: ae 0.30207 x 2 = 0,78414 0.78414 x 2 = 1,56828 1 0,56828 x 2 = 1,13656 1 0,39207,5 = 0,011001, 0,19656 x 2 = 0,27312 0,27312 x 2 = 0,64624 0 0,54624 x 2 = 1,09248 1 etc. Note que a conversdo pode continuar indefinidamente. 2.7-Numeros com Pontos Flutuantes A tepresentagao em ponto flutuante ¢ muito usada para desorever némeros reals. A notagdo ponto flutuante consiste em expressar Um nimero utilizando um expoente, uma base & afragdo (também chamada de mantissa). e Faeoumanssy—~* *8 Base. A fragao tem um ponto decimal (virgula) implicito & esquerda. Em bindrio, é colocado ‘um bit de sinal para desorevé-lo como positive ou negativo. O ntimero decimal 2,40625 é mostrado abaixo em 12 bits no formato ponto flutuante, com um bit de sinal, mantissa de 8 bits ~ eum expoente de 3 bits. Titsinal] [Mantissa de Sits] [Bis de expoent [ofo 00110 ifort t [Foro decal mpteto] = +0,01001101 x2" =+0,01001101 x2? = +0010,01101 2 +0,25 + 0,125 + 0,08125 2,40625 lador 8051 Detalhado Como é visto acima, o expoente é 0112 = 3:0. Assim a mantissa é multiplicada por 23, que 6 0 mesmo que deslocar a virgula trés casas para a direita, Ha numerosos formatos de ponto flutuante em uso. O mais comum corresponde a fragdo normalizada (0 bit a esquerda deve ser sempre 1) que utiliza a notagao excess-n para o expoente. A tabela 6 mostra como exemplo o formato excess-4 em 3 bits: Binario Decimal Decimal -4 000 0 4 001 1 3 010 2 2 on 3 1 100 4 0 101 5 il 110 6 2 111 7 3 Tabela 6 - Notacao Excess ~ 4. Note que a coluna da direita nos da uma faixa de expoente de -4 a +3, ou seja, esta notacéo nos fornece a oportunidade de trabalhar com expoentes negativos. Abaixo mostraremos o valor decimal 0,171875 expresso em 12 bits em ponto flutuante, um bit sinal, uma fragao de 8 bits normalizada e um expoente em excess-4 em 3 bits. Fraga normalizada de 6 bis Expoente em excess-4 Deve ser 4 em 3bits oi oti 0000010 N Expoente igual = +0,10110000 x 22 =+0,001011 = + 0,125 + 0,03125 + 0,015625 = +0,171875 © formato excess dependerd de seu tipo. A idéia é fomecer expoentes positives € negativos. Por exemplo, um formato de 8 bits de expoente poderia utilizar 0 excess-128, e isto daria uma faixa do expoente de -128;9 a +12710, Representagao de Informagao 28 - Cédigo Bindrio Decimal (Codigo BCD) HA informagdes numéricas que nao representam quantidades, ou seja, néo so usadas em operagées aritméticas. Um bom exemplo é um numero de telefone, Um método comum de Tepresentar esses ntimeros para armazenar em uma meméria do computador é chamado de cédigo bindrio decimal ou cédigo BCD (binary-coded decimal). Um cédigo BCD separa ‘cada digito em um cédigo de 4 bits. Veja tabela 7. 0000 0001 0010 0011 0100 0101 0110 ont 1000 1001 ttre Tabela7 - Codigos BCD. Nota-se que os nimeros 10102 até 11112, n&o sdo usados. Por exemplo, 0 ntimero de telefone 824 7590, em BCD, € mostrado assim: Decimal: 8 2 4 7 9 0 BCD: 1000 0010 0100 0111 0101 1001 0000 0 cédigo BCD também ¢ usado para representar quantidades, mas também é necessaria uma aritmética BCD. Circuitos especiais ou instrugdes so usados para adigao € - subtragéo BCD. 2.9- ASCII Os textos sao mais comumente representados por um sistema padrao, o ASCII (American Standard Coded for Information Interchange) que 6 um codigo de 7 bits, Tepresentando 2” = 128 simbolos ou operagdes de controle. Veja tabela 8. Microcontrolador 8051 Detaihado bits 4321 bits 765 000 001 010 011 100 101 110 111 ooo _[NuL_| ble | SPACE] 0 P ; P 0004 | SOH_[_DCt 1 1 A @ a q 0010 STX DC2 ul 2 B R b r oot | erm [| oc3 | # 3 é § c s oro | cot | pcs | 4 D T d t oor[ eno | Nak [| % 5 E U e u ono | Ack | sw | & 6 F v f v ont | Bel | ETB : 7 G W 9 Ww 1000 f Bs |_ CAN ( 8 H X h x 1001 HT | EM ) 9 I Y i y woo [iF | sus | i Z j z wor_| wt [esc | + i K i k { 1100 FF FS . < a, \ I i 1101 cR | GS : E M 1 m } t110_| so _|_AS > N * n Z 4111 L SI US i 2 oO _ 9 DEL Tabela 8 - Cédigo ASCII. Posigdo do bit no Cédigo ASCII: ‘Se re tT oToToToTolTy Exemplo da tabela 8: A= 10000012 = 4115 = 6510 Dos 128 cédigos ASCII, 95 s&o gréficos e 33 so de controle. Os cédigos graficos comegam em 2045 (Space) e vo até 7E\s (~). Os mais comuns, é claro, sao os simbolos do alfabeto e os digitos. Uma variedade de sinais de pontuagao é também representada. Os cédigos de controle comegam em 00i¢ € vao até 1F i. O Ultimo cédigo, 7Fis, também é um cédigo de controle. Os bits do cédigo ASCII séo numerados de 1, a direita, até 7, a esquerda. Este é um estilo diferente da numeragao de bits usual (0 LSB normalmente 6 o bit 0) e isto pode causar certa confusdo. O exemplo da representac&o ASCII 6 dado abaixo: Namero do bit: 7654321 Letraz Cédigo ASCII: 1111010 O cédigo ASCII tem propriedades muito interessantes. Note que os digitos de 0.a 9 sao dados pelos cédigos de 30;5 a 39%¢. Se os trés bits mais significativos forem desprezados, teremos 0 cédigo BCD. As letras maitisculas e minusculas diferem apenas no bit 6. Veja exemplo abaixo: 7654321 «pn 1000001 +3 1 ‘Apenas bit 6 é diferente © exemplo acima mostra que se quisemos transformar uma letra mindscula em maiiiscula, basta “Zerarmos” 0 bit 6. Para fazermos a transformagao no sentido oposto, basta *getamos" 0 bit 6. A maior parte das teclas de um computador implementa uma fungéo de control. Por exemplo, control-s é freqiientemente utilizado para suspender a transmiss4o de saida para um dispositive (pause), enquanto control-q finaliza a transmissao. A funcdo de controle é freqdentemente implementada, inibindo os bits 6 e 7 no cédigo ASCII. Da tabela ASCIl, sé 7Bis, entao control-s gera © cédigo 1316, como mostrado abaixo: bit 7654321 1110011 Satis 7 seni scontrovs”: 0.010011 Bits 6 e 7 sao inibidos| Na tabela 8, este codigo 6 chamado de DC3, para Device Code 3, Este 6 um codigo de controle de dispositive especial e é usado para indicar transmissio “off” (XOFF). O cédigo de controle de transmissao “ON’ € chamado de DC1 ou XON. Os cédigos XON e XOFF também s40 usados para o controle de fluxo de informagao junto as linhas de comunicagao que utilizam modems, Os codigos de controle do ‘ASCII tam grande utilizago nos meios de comunicagao. Exemplo 7: Converter a placa de um autorndvel AFC 4589 nos cddigos ASCII binario hexadecimal. Solugao: Hexadecimal a 1000001 46 01000110 c 43 ‘01000011 Space 20 (00100000 4 34 (00110100 8 35 0110101 8 38 (00111000 9 39 00111001 Exemplo 8: Que codigo de controle ¢ gerado pela fungao control-m em um computador tipico? Solugao: OD4s, (CR = Carriage Return = Retorno) Discussdo: Control é um modo de gerar um retomno ou “enter” na maioria dos teclados. m= 1101101 >>>> ‘zerando” os bits 7 e 6, teremos: Control-m = 0001101 = ODis Microcontrolador 8051 Detalhado_ Aritmética Bindria Neste item, vamos apresentar técnicas de adi¢ao, subtragao, multiplicagao e divisao. 3.1 - Adigao A adigdo bindria é similar & decimal. Em decimal, existe 0 ‘vai um’ (carry) quando a soma ultrapassa 9, Em bindrio, hé o carry quando a soma ultrapassa 1. Em binétio, se dois bits so somados, hé apenas quatro possibilidades: [Carry| + a a1 1 +7 é igual adevail Ss Uma soma de nuimeros com n bits é feita normalmente, Em caso de estouro, o cany se “propaga”: 1 191 + 1 olo= S22 po Pode-se verificar 0 exemplo acima, convertendo em decimal. O primeiro fator 6 101 12= 1110, 0 Segundo fator 6 01102 = 610, € a A soma de 11 mais 6 6 17:0 = 100012. 3.2 - Subtragao Simples Uma subtragao envolve um minuendo, um subtraendo e a diferenga: Minuendo: A Subtraendo: = B. Diferenga:C Aritmética Binéria Numeros bindrios so subtrafdos com a mesma técnica usada para os decimais. Zero subtraido de um é claro que necessita de um “empresta um” (borrow). Veja 0 exemplo abaixo: 1001 -0100 o1o1 Em decimal, 9 - 4 = 5. Na pratica, os computadores utilzam um esquema muito mais elegante para realizar um subtragao, utilizando adigao em complemento de 2. 3.3 - Adicao e Subtracao Utilizando Complemento de 2 Utilizando a representagao em complemento de 2, os nuimeros positivos e negativos sao somados ou subtraidos sem introdugéo de uma nova técnica. Por exemplo, considere a soma -3 com 7; teremos 4, Se -3 6 representado em forma de complemento de 2, entao nés somarfamos da maneira usual. A seguir, temos alguns exemplos com ntimeros de 8 bits: Complemento de 1 do valor 3 4 Z}oo000011 11411104 11111100 ooooo111-eh Hise 4 do000100-{4 111110 1——_ 7B Complemento de 1 do valor 5 00000101 5Vy4111010 00010101-{a1 [H+ 1 4#11111011~PMais-5 Tatttott TOOT 000 FE © método tradicional de subtragdo nao é necessdrio se os ntimeros negativos sao tepresentados usando complemento de 2, A subtracao é realizada utilizando um método simples e eficaz que nés chamamos de subtracao por adigéo. Para realizar a operagao A - B, nds apenas somamos 0 complemento de dois do valor B. Isto mostra a seguinte relagac A-B=A+(B) A operagao decimal 21 -5 = 16 é mostrada na iustrago acima, O primeiro passo é converter ‘osubtraendo (+5) em seu complemento de 2 (-5). Ele entéo serd somado ao minuendo (21). Este método é valido para qualquer raiz ou base, Se A € B sao de base 10, entao: A-B=A-+ ‘complemento de 10 do valor B” 3$.4- Multiplicagao Multiplicago bindria é muito similar & decimal. A multiplicagao envolve o multtiplicando, omultiplicador e o produto. ‘A ‘Multiplicando xB :Muliplicador :Produto 1 8051 Detalhado Produtos parciais so formados pela técnica de deslocamento e adigao: 1010011 = 83, x0111011 = 594 1010011 1010011 0000000 1010011 1010011 1010011 oooo000 1001100100007 = 489% 3.5 - Divisao Diviséo envolve um dividendo, divisor e quociente. A|B—[Divisor C~{Quocientel Dividendo| Para realizar a diviséo bindria, é necessario acompanhar os seguintes passos: 1. Inicialize 0 quociente em zero. 2. Subtraia o divisor do dividendo para ter o resto parcial (RP). ‘Se RP > ou = 0, incremente 0 quociente e continue. Se RP <0, pare, 3. O resto torna-se dividendo. Va para 0 passo 2. Por exemplo, a operagéo 100/50 = 26 mostrada abaixo: Dividendo: 100,, Quociente gecommemenio “J 01100100 00000000 fe 2do dvisor,- 50 [+ 1 1001110 =0, ents FOL 1 0 ___{RP>0u=0, ent, incremenia [ RPtomase | 00110010 peepee novo cvidendo] 41 1004110 RP > ou=0, enléo, incremental DoO000000— | 00000010 RPtomase 1 —00000000 novo dvidendol +1 1001110 THoOT110 Resposta: 0000.00 1 0 (queéoquociente) Portas Logicas e Algebra Booleana Neste subitem, deslocaremos nosso foco pata circuitos computadorizados. A maioria dos componentes que sao circuitos logicos (também chamados de circuitos digitais) opera com dados bindrios, em que 0 é representado como tensio baixa e 1 é representado como tensao alta. 4.1 - Chaves (switches) como Operadores Légicos A idéia de circuitos légicos 6 introduzida por um circuito simples controlado por chaves (switches) e um diodo emissor de luz (led). circuito da figura 2 tem quatro componentes: uma bateria de 5 volts, uma chave (sw), um |led e um resistor. Quando houver corrente fluindo no circuito, o led acendera. Caso contrario, o led ficaré apagado. Quando a Sw A esta na posi¢ao fechada, o led acende. Quando a Sw A esté na posigéo aberta, o led esta apagado. O valor do resistor controla 0 brilho do led. Quanto menor aresisténcia, maior sera a corrente, aumentando o brilho do led. Sw Led sai Q Ev Resistor 20 ohims Figura 2 - Uma chave controlando um led. A idéia de circuito légico ¢ ilustrada, adicionando mais uma chave ao circuito, como mostrado na figura 3: on, Le te oe abe ease TT aes aot r Figura 3 - Duas chaves implementando uma fungao OR. Se Sw A “OU” Sw B estiverem fechadas, o led acendera. Esta 6 uma fungdo légica OR. ‘As posigdes possiveis das chaves e a condig&o do led esto descritas na tabela 9. SwA SwB LED aberto aberto apagado aberto fechado | aceso fechado | aberto ‘aceso fechado | fechado | aceso Tabela 9 - Operagao do Circuito OR. Se as chaves estiverem arranjadas como no circuito da figura 4, a fungéio Iégica AND serd implementada. Agora, para o led acender, 6 necessdrio que a Sw A “E” a Sw B estejam fechadas. Se uma delas estiver aberta, o led estard apagado. sna, sue, Resistor 220 obs Figura 4- Duas chaves implementando a fungéo AND. As possibilidades para o led e as chaves A e B estao na tabela 10. [swa | swB LED aberto aberto apagado aberto fechado | apagado fechado | aberto apagado fechado | fechado | aceso Tabela 10 - Operagao do circuito AND. Portas Logicas e Algebra Booleana O sistema matematico usado pelos cientistas de computador para descrever a operagao. de circuitos ldgicos ¢ chamado de Algebra Booleana, Nés apenas precisamos introduzir um pequeno nivel de abstracao para interpreté-la. Vamos chamar o led de Z, e quando ele estiver aceso, teremos 1; quando estiver apagado, teremos 0. Para as chaves, diremos que quando estiverem fechadas, teremos 1, e quando abertas, teremos 0. As relagdes existentes entre A, B eZ podem ser descritas por uma Tabela-Verdade. Tomando como exemplo o circuito AND mostrado e a tabela 10, teremos a seguinte tabela-verdade: 0 1 0 1 ‘A fungao OR é representada em algebra booleana com o simbolo Vea fungao AND com 0 simbolo /\. Ent&o: Z=AVB é aexpresséio matematica da fungao OR mostrada na tabela 9, € Z=AAB €a expresso matematica da fun¢éio AND mostrada na tabela 10. 4,2 - Portas Basicas Com esta introdugao, nés ilustramos os circuitos que implementam 0 quadro basico de operagées ldgicas. Esses circuitos, comumente chamados de Portas Légicas, séo mostrados natabela 11. ‘A coluna nomeada de operapao nos dé o nome usual de cada fungao. Além das fungdes OR (OU) e AND (E), ja vistas anteriormente, temos as fungdes NAND, NOR, EXOR (XOR, OU-eXclusivo), EXNOR (XNOR) e INVERSORA (NOT). A coluna Simbolo mostra 0 simbolo grafico de cada porta logica. Gabaritos sao encontrados em software de desenho para maior facilidade ao desenhé-los. A coluna TTL dé-nos 0 exemplo de um cédigo de componente de um Circuito Integrado (Cl) para cada - fungao légica. TTL, do inglés Transistor-Transistor Logic’, é um circuito utilizado para implementagao de circuitos lgicos. Cada cédigo comega com o numero 74 para indicar que 0 Cl é membro da familia TTL. A designacao LS, do inglés Low Power Schottky, tefere-se a uma subfamilia dentro da familia TTL. Geralmente as subfamilias sao diferenciadas pelo consumo e velocidade de operacao. Os digitos finais sao referentes a fungao do dispositivo. Acoluna equagdo nos da a formula algébrica que descreve a fungao de cada porta. Note 0 uso de uma barra acima da varidvel (ou expressao) para indicar uma inversao légica, ou negagéio. Cada equagao tem duas formas comuns, Quando nao ha confusao com operagdes aritméticas, as equagdes superiores podem ser utilizadas. A légica OR pode ser expressa como: Z=A+B ou como: Z=AVB sendo a ultima a forma mais tradicional para a algebra booleana. De fato, 6 comum chamar a fung&o OR de légica somatorio e a fungo AND de légica multiplicadora. Também é comum a omisso do simbolo para a légica AND (A.. B = AB). Operagao imbolo TT Equagao Inversora A a 74LS04 ouNOT b Zz ip Z=A+B [> OR z 74LS32 1 8 Z=AvB 1 ‘ Zz ay Z=A.8 ToT AND De 741808 ee 2 s]o ; alt zBiz A ooft NOR De 7ALS02 9 fo 1110 ABE Ay TOfi NAND [pe 74LS00 H i j a iila RB A Z=A(4)B 7 ofo EXOR abD-: 74LS86 Pane Da} ‘to ABZ Ay Z=AWB Toft EXNOR 2 7aLs66 i 9 1/0 a Z=A\-18 1 dfo Tabela 11 - Portas légicas basicas. A coluna da direita, nomeada de tabela-verdade, expressa, em termos booleanos, todas as combinagses possiveis de varidveis de entrada (A e B) e a condigao resultante de saida (2). Como exemplo, 0 74LS00 € um circuito légico TTL Schottky low-power (baixa poténcia) que implementa a fungao logica NAND. Ele contém quatro portas NAND de duas entradas em i um Cl de 14 pinos, como mostrado na figura 5. Note que doze dos pinos sao referente as Portas Logicas e Algebra Booleana ‘entradas ¢ saidas de cada porta, enquanto os dois restantes correspondem @ conexéo de jalmentacao. Opino 14 € +5 volts (Vcc) € 0 pino 7 é 0 terra (ground ou gnd). j 7aiso0 1 [— 14 (vec) +8 rp 8 I + 3 Oy 2 i ih jt I 5 Uy 10 i 5 9 ew)? | Uy 3 Figura $ - Configuragio de pinos do 74LS00. .3 - Extensao para Trés ou mais Entradas ‘As portas AND, NAND, OR e NOR sao mostradas na tabela 11 com apenas duas tradas, mas estas func¢des podem ser estendidas para um nimero n de entradas. Por exemplo, a 74L830 6 uma porta NAND TTL com cito entradas (veja figura 6). S © — Figura 6 - Porta NAND de oito entradas 74LS30. eonmooar Com oito entradas a tabela-verdade desse dispositivo tem 28 = 256 linhas (nds nao amos mostra-la aqui). A saida é 1 para cada combinagao, exceto quando todas as entradas iguais a 1. Algebricamente tem-se: Z=A.B.C.D.E.F.G.H Na teoria, qualquer ntimero de entradas é possivel para as fun¢des AND, NAND, OR e NOR, Na pratica, devemos escolher os dispositivos disponiveis em uma familia particular de ‘citcuitos integrados, Um exemplo disto esta na tabela 12. __Microcontrolador 8051 Detalhado Dispositivo | Tipo de Porta tineto co Nimero de Pinos Tipo de Saida 7400 nand 2 entradas 4 14 totem-pole 7401 nand 2 entradas 4 14 ‘open collector 7402 nor 2 entradas 4 14 totem pole 7404 inversor 6 14 totem pole 7405 inversor 6 14 ‘open collector 7407__| buffer 6 14 ‘open collector 7408 and 2 entradas: 4 14 totem pole 7410 nand 3 entradas 3 14 totem pole 7420 nand 4 entradas 2 14 totem pole 7430 nand 8 entradas 1 14 totem pole 7432 or 2 entradas 4 14 totem pole 74LS240 inversor 8 20 three-state 74LS244 buffer 8 20 three-state 4.4 - Portas EXOR e EXNOR As portas NOR exclusivo e OR exclusivo tém algumas propriedades unicas. A fungao EXOR pode ser expressa usando operagdes OR, AND e NOT como abaixo: Tabela 12 - Portas TTL comuns. A®B=(A.B)+(A.B) A operagéo EXOR pode ser implementada com portas OR, AND e NOT, como mostrado na figura 7: Figura 7 - Implementacdo EXOR com portas padrées. >-z A idéia de mais de duas entradas para as fungdes EXOR e EXNOR requer especial consideragao. E comum pensar na fungao EXOR desta maneira: A saida 6 alta se uma ou outra entrada for alta, mas nao ambas, ou A saida 6 alta se as entradas forem diferentes. Isto é evidente, observando a tabela-verdade (veja tabela 11). Obviamente estas frases nao servem, se utilizamos mais de duas entradas. Entretanto, a fungéo EXOR pode ser descrta da seguinte maneira: A aida é alta se a quantidade de bits altos de entradas for impar. Da tabela 11, a saida EXOR é baixa quando nenhuma ou as duas entradas forem altas, ea saida é alta quando uma entrada for alta. Zero € dois séo nimeros pares, um é nimero impar. Dai temos 0 principio de funcionamento da fungéo EXOR quando temos mais de trés entradas. Abaixo vemos a implementagao do circuito EXOR de trés entradas utilizando portas _ de duas entradas, como mostra a figura 8. DS 1 ID- Figura 8 - Implementaeo da fungi EXOR de trés entradas. Temos a tabela-verdade desta funcao mostrada na tabela 13: Entradas Saidas A B c Zz 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 0 1 1 1 0 id 0 0 1 1 1 0 1 1 0 1 1 0 0 0 1 1 1 0 1 Tabela 13 - Tabela-verdade da fungao EXOR de trés entradas. ‘ Comparando Z com as entradas A, B e C, vemos que Z é 1 se uma ou trés entradas forem 1, e 0 se nenhuma ou duas entradas forem 1, confirmando o que foi visto anteriormente. Para trés entradas, entéo temos: Z=A() BWC Analogamente, a fungao NOR exclusivo é citada da seguinte maneira: Asaida 6 alta quando a quantidade de bits 1 na entrada for par. HOOE...... Microcontrolador 8051 Detalhado 4.5 - Transformagdes DeMorgan © teorema de DeMorgan é uma interessante © poderosa propriedade da Algebra booleana, Ele 6 usualmente expresso como uma identidade das fungdes NAND e NOR: NOR: A+B=A.B OR: A+B=A.B Para explicar 0 teorema de DeMorgan, vamos considerar primeiramente as duas seguintes sentengas: Vestir um casaco se estiver chovendo ou estiver frio. ‘Nao vestir um casaco se nao estiver chovendo e nao estiver frio. Estas sentengas chegam a um Unico resultado de maneiras muito diferentes, Analisando-as separadamente, voo8 pode ver que a primeira sentenga 6 como uma fungao OR © a segunda 6 como uma fungao equivalente DeMorgan da operagdo OR. Analogamente, as fungdes AND, NAND e NOR podem ser transformadas para terem uma estrutura diferente, mas a mesma operagao logica. Considere a operacao NAND esquematizada na figura 9. eee 0 soz 0 1 1 1 1 0 alolsalola Figura 9- Descri¢ao verbal de uma porta NAND. Primeiramente, transformaremos a operagao NAND utilizando o teorema de DeMorgan que esta esquematizado na figura 10. 0 0 s=j{>-z 0 1 1 0 1 1 Figura 10 - Descrigao verbal de porta NAND com transformagao DeMorgan. Primeiramente vimos que o simbolo mudou drasticamente para refletir a transformagao. ‘Ao analisarmos o desenho e sua tabela-verdade, observamos que, com uma porta OR com suas entradas negadas, temos uma saida Z idéntica a uma porta NAND. DeMorgan. Observe que se: Z=A.B entéo é o mesmo que dizer: 2=A.B Atabela 14 nos da um resumo das quatro operagdes booleanas e seus equivalentes Compare estas duas equagdes com a figura 9. Elas representam este cirouito. Operagio AND. Forma Padrao Forma DeMorgan Equivalente NOR Tabela 14 - Transformagdes DeMorgan de portas légicas. 4.6 - Versatilidade das Portas NAND e NOR Qualquer fungao ldgica pode ser criada utilizando apenas portas NAND. Essa iedade 6 chamada de versatilidade da porta NAND. A figura 11 ilustra as fungdes NOT, ND, NOR e OR implementadas com portas NAND. =e =D- =D- > [>>— Figura 11 - Versatilidade da porta NAND. Existe a possibilidade de implementar algumas fungdes ldgicas com portas NOR. 4.7 - \dentidades Booleanas pin Circuito que efetua isto é chamado de jidade Légica e Aritmética (ULA). Se uma ULA implementa n instrugdes, 0 cédigo de nsttugao deve ser logzn bits. Por exemplo, um ocessador com 256 instrugdes requer (Cbxsgo de Instugao og:256 = 8 bits para seu cédigo de instrucao. ULA genérica 6 mostrada na figura 30. Figura 30 - ULA genérica. 5.5 - Decodificadores Uma das operacdes légicas mais comuns 6 a selegdio de uma de 2 escolhas dada em um cédigo bindrio de n bits. Um circuito l6gico combinacional que efetua esta fungao é chamado de Decodificador (decoder), isto é, um decodificador de n entradas e 2" saidas. A idéia é que a entrada representa um enderego e uma saida correspondente ativa, ou seleciona aquele enderego, enquanto as outras saidas nao so selecionadas, ou ativadas. Para o caso de n = 1, 0 decodificador tem uma entrada ¢ 2' = 2 saidas. O circuito e Tabela-verdade so ilustrados na figura 31. A 5 rec le +9] oO D2 Figura 31 - Decodificador 1 linha para duas. Para n = 2, 0 decodificador tem 2 entradas e 22=4 saldas (veja figura 32). Al n e| S| ooo lg ea | Figura 32 - Decodificador 2 linhas para 4 linhas (2x4). Um exemplo de decodificador 3 x 8 é 0 74LS138 que é caracterizado por ter saida ativa nivel baixo e trés entradas de habilitagao. Ele é mostrado na figura 33. 7aLs138 o|-|-|-|-]-|-|-]-|-|-]s 1 Figura 33 - Decodificador 3 x 8 74LS138 (simbologia e tabela-verdade). As trés primeiras colunas da tabela-verdade (figura 33) ilustram a fungo de habilitagdo. ‘uma das trés entradas de habilitagéo estiver inativa, 0 dispositivo é desabilitado e todas as aidas estardo inativas (nivel ldgico 1). Se as trés entradas estiverem ativas (oito Ultimas dlunas da tabela-verdade), entao o dispositive opera como especificado. Os trés enderegos entrada - C, B, A - determinam que saida serd ativa. As outras sete saidas estardo inativas. - Decodificagéo por cédigo de operacao (opcode) dentro de uma CPU. Ha numerosas aplicagdes para os decodificadores. Se um computador tiver uma palavra de stru¢do de n bits, entéo um decodificador n x 2" 6 necessdrio para identificar a instrugéo slerminada. Isso é ilustrado na figura 34 para um computador hipotético de 8 bits. Caigo de Instrugéo 8 bits adigho subiragdo_ incrementa Figura 34 - Decodificagao de instrugao, Para cada cédigo de instrugao, uma saida do decodificador fica ativa. As saidas decodificadas conectam se & ULA, causando a instrugao légica selecionada dentro da ULA. Decodificagéo de Enderecos, Usualmente, a decodificagéo de um codigo de instrugéo ocorre dentro de um circuito interno ao microprocessador, ou outra unidade de processamento, Um exemplo em que os Cls decodificadores, como o 74LS138, sao freqientemente utlizados é na interface de memérias para microprocessadores. A figura 35 ilustra uma comum aplicag&o de decodificadores. Nela, a interface 6 mostrada entre duas RAMs em uma tipica CPU de 8 bits. barra de dados 8 bts barra de enderegos 16 bits 7aLs139 Aispositves Figura 35 - Interface entre RAM e uma CPU, A interface utiliza um decodificador 2 x 4, cédigo 74LS139, com habilitagao e saidas s em zero. A CPU, como mostrado, tem uma barra de dados de 8 bits, uma barra de egos de 16 bits e dois sinais de controle (E para habilitag&o (enable) e RW para lerfescrever). Os 2 bits superiores da barra de enderegos da CPU (A15 e A14) sao conectados ‘as entradas de enderegos do decodificador. Os 14 bits inferiores s&o conectados as entradas de enderegos das RAMs (A0-A13). As saidas 0 e 1 do decodificador sao conectadas ao chip (selegdo de chip - CS ) das RAMs. A RAM selecionada por 0, é selecionada quando At5 = 0 e A14 = 0. A RAM selecionada por 1, é selecionada quando A15 = 0 e Al4= 1. As idas 2 ¢ 3 do decodificador estao disponiveis para expansao de meméria. Cada saida do decodificador é ativa quando a CPU acessa um enderego dentro de uma faixa de enderegos. A figura 36 ilustra a composigao dos enderegos da CPU no exemplo. AS ANG A112 Atl_A10 AS_AB AT AS AS Ad A3_A2_A1_AD anon aunies or amemes | “S[E epee Wemee saan Figura 36 - Composigdo de endereco para exemplo de decodificador. Afaixa de enderegos selecionados por cada saida do decodificador é identificada pela Entradas do Decodificador ANS AN4 Enderego Hexadecimal 0000 - 3FFF O1xx 100K 100K XXX | _4000- 7FFF 1Oxx xx 0c xx | 8000 - BFFF xx xox 00% x00 | C000 - FFFF Saida Ativa Enderego Bindrio 0xx 2000 9000 000K. 0 iT 0 1 e|rm|alo Tabela 20 - Faixa de Enderegos para saida do decodificador. Qualquer ciclo de leitura ou ciclo de escrita de meméria para o enderego na faixa 0000s. a OFF acessaré a RAM da esquerda na figura 35 (selecionada pela saida 0 do dor). Similarmente, a RAM da diteita é selecionada apenas quando a CPU acessa endereco na faixa 4000)5 a0 7FFF is. 0 sinal de controle da CPU, E (enable), é um clock sincronizado que se conecta (via porta inversora) a entrada ativa em baixa do decodificador. Esse sinal de controle é ativado pela CPU quando um endereco estavel e valido esta na barra de enderecos, Jo com que evite enderecamentos erréneos quando sao mudados (na transicao). trolador 8051 Detalhado Logica Seqiiencial Um circuito l6gico, cuja operagao 6 determinada por um pulso de clock de sincronismo, 6 chamado de circuito légico seqliencial. A operagdo de um cirouito sealiencial 6 descrita por uma tabela de fungdes (oposto a tabela-verdade). Como realizado com légica combinacional, nosso tratamento da ldgica seqiiencial é simplificado. O objetivo é familiarizar-se com conceitos basicos de légica seqiiencial. 6.1 - Flip Flops Uma célula Idgica capaz de manter um estado apés mudancas na entrada 6 chamado de “lp flop” ou “latch*. Como 0 estado mantido é como se fosse gravado, um flip flop é também uma célula de meméria. HA muitas variedades de flip flops, a mais basica existente o tlip flop RS (veja figura 37). Figura 37 - Flip flop RS (circuito, simbologia e tabela de fungées). O flip flop RS tem duas entradas - S para Set e R para Reset - e duas saidas - Qe seu complemento Q. A frase “O fiip flop é setado" implica que Q = 1. Analogamente, a frase “O flip flop é resetado” implica que Q = 0. Por definigao, Q e Q so complementos um do outro. O estado usual de S e R é inativo, ou 0. Quando S é ativado (1), o flip flop é setado. Quando S fetorna ao estado inativo (0), o flip flop permanece setado. Esta é a caracteristica principal de um flip flop: a capacidade de lembrar, ou manter, seu estado. Quando R é ativado (1), 0 flip flop sera resetado. Ele permanecera em reset apds R retornar para o estado inativo, até que a entrada S seja ativada novamente. A condigao S = R = 1 nao é permitida porque ambas saidas Qe Qserdo setadas. A explicagao acima é extremamente breve, no entanto é suficiente para entender a operacao do flip flop RS. Figura 38 - Flip lop tipo D (simbologia e tabela de fungSes). simbolo ‘seta para cima” representa uma transigao 0-para-1, ou borda positiva, ou borda de subida na entrada de clock, enquanto a “seta para baixo” representa uma transicao de {-para-0, ou borda negativa, ou borda de descida. O triéngulo na entrada de clock implica que ele é ativo na borda de subida (Se uma circunferéncia aparecer na entrada do clock, ‘em clock ativo em borda de descida,). Note que para o estado estdvel 0 ou 1 na de clock, a saida Q nao muda. Para interpretarmos a tabela, consideremos 0 seguinte sxemplo: se D = 0, quando ocorre uma mudanga de 0 para 1 na entrada de clock, teremos 0 am Q, isto 6, o dado em D é transferido para Q na transiao positiva. - Registradores Um dos usos mais comuns do flip flop - particularmente do tipo D - é manter um valor de lado. Se um valor de dado é um byte, entao 8 flip flops tipo D seréo necessérios. Para que 0 jor de dado seja armazenado em uma Unica operagdo simples, apenas um clock & . Isto ¢ ilustrado na figura 39. 03 Figura 39 - Registrador 4 bits. Um exemplo comum de latch é 0 octal 74LS374 com saida three-state (veja figura 40). ar Ds ————+ D a a6 a ao output enable Figura 40 - Latch octal 74LS374 com saidas three-states, Dispositivos de Meméria Semicondutores O flip flop é um elemento basico em dispositivos de meméria semicondutores. A figura H mostra uma célula de memoria feita de um flip flop RS. Row select 2 Data out Row | Rea | oat Data select | Wie an | 2 out Fungo 0 x x x 0 | Aseeciona 1 ° eset 1 1 ‘ete Figura 41 - Célula de meméria de um flip flop RS (esquema e tabela de fungées).. Poucas portas extras sfo adicionadas para selegao, escrita ¢ leitura da célula. Cada das trés fungdes da célula é descrita em seguida: Seleciona: Quando Row Select ¢ mantido em baixo, as saidas das AND séo travadas 0, Isso previne que o latch comece “setado” ou ‘resetado”, Assim, dados nao podem ser 52 8051 Detalhado escritos no latch. No caso, quando temos nivel zero em Row Select, mantém-se a saida (Data Out) em 0. Dados nao podem ser lidos do latch. Escrita: Assumindo que a célula esta selecionada (Row Select = 1): se read/write = 0, um ciclo de escrita sera realizado. O valor no “Data In” (1/0) estaré presente como um nivel alto em S (Data In = 1) ou em R (Data In = 0), e entdo o latch é “setado” ou “resetado”. Isso faz também com que a safda (Data Out) permanega em 0. Leitura: Assumindo que a célula estd selecionada (Row Select = 1), se read/write = 1, um ciclo de leitura sera realizado. O estado invertido de read/write faz com que S = R = 0, assim 0 estado do latch naéo muda. No entanto, habilita a porta AND conectada a Data out, fazendo com que 0 estado de Q passe para a saida. 7.1-RAM Um circuito integrado de memoria, contendo células similares ao que foi visto na figura 41, 6 chamado de Static RAM (SRAM) ou RAM estatica, sendo que RAM significa Random Access Memory (Meméria de Acesso Aleatério). RAMs contém centenas, até milhares de células. O mecanismo para a combinagao de células em um Cl RAM é mostrado na figura 42 para uma RAM estatica de 16 bits. mm I Se »—s oh I oH | Uy ae TH} 1 seer le “ae : ' UW] Alb | | J i 4 I I pe o : Y a a2 a co Figura 42 - RAM estatica. Dispositivos de Meméria Semicondutores Mais uma vez vemos um decodificador em SYOCB fungéio muito importante: selego de colunas das células RAM. E claro, a RAM de 16 bits nao é jlo grande. A estrutura da célula da RAM da ae a 42 estende-se facilmente para RAMs muito 2 % Por exemplo, a SRAM 6264 contém 8 Oe s de RAM (um total de 8 x 2"° x 8 = 65.536 BY ayy or 2 sélulas). O simbolo para este Cl é mostrado na atl ato ve L 24] 1g os 17 Outro tipo comum de RAM é a Dynamic 6 6 (DRAM) ou RAM dinamica. Em uma DRAM, ee i es célula € um capacitor que armazena 1 ou 0 31 yy 3H m carga ou sem carga). Apenas um transistor 4 43 necessétio para fornecer acesso @ célula, assim As Re is sf muito densas comparadas com as His ram ort WAMs que requerem quatro ou cinco 6 a1 es por célula. As DRAMs requerem [bosses euito externo para “refresh” (recarga) dos aA apacitores periodicamente, para prevenit perda Bh ao ados, DRAMS so mais baratas que as fi no entanto, séo mais diffceis de © ——— |! ipular devido a necessidade deste circuito 19) 5, 0, Geralmente SRAMs séo utilizadas para de centenas de Kilobytes ou menos. hee AMs so utilizadas quando se requer zl aly GND 14 Figura 43 - Representacao esquematica da RAM 6264 - 8 Kbytes. ROM _ Um outro importante tipo de dispositive de meméria semicondutor é€ a Read Only ory (ROM), ou meméria apenas de leitura, Sendo opostas as RAMs, as ROMs sao tas apenas uma vez e podem apenas ser lidas. Ha muitas variedades de ROM, anciando-se pela forma como sao escritas ou se podem ser apagadas ou nao, podendo ser reescritas ou nao. Uma ROM mascarada de fabrica é construida com uma mascara permanentemente, que coloca 0 ou 1 em cada célula. Uma Programmable ROM M), ou ROM programavel, 6 programavel pelo usuario por meio de um hardware especial. Existem variagdes que permitem o apagamento de dados, expondo o dispositive a luz ultravioleta (Erasable PROM, EPROM, PROM apagavel), ou por um ciclo especial de apagamento elétrico (Electrically Erasable PROM, EEPROM, E?PROM, PROM “apagavel” eletricamente). EPROMs sao particularmente populares, pois podem ser reutiizadas, sao baratas e faceis de programar. EPROMs (e outras ROMs) sao mais comumente utiizadas para armazenar programas que devem ser acessados freqiientemente em sistemas computadorizados. Estes incluem, por exemplo, sub-rotinas de entrada e saida, ou o carregador de “bootstrap” que carrega a primeira trilha do disco para a RAM. O uso de uma EPROM é essencial porque o programa de bootstrap deve estar presente na memoria quando o sistema é ligado. Obviamente, RAMs nao podem servir para este propésito, pois elas sao volateis e perdem seus conteddos quando desligadas. O termo “firmware” se refere ao software armazenado em uma EPROM (ou ROM). Uma das mais populares ROMs é a EPROM 2764 - 8K x 8. O simbolo é dado na figura 44, Mierocontrolador 8051 Detalhado ssvouts 2 , Woo ata 2B a oy 2 21 a0 os 8 21 ag ps 251 45 oa a vay= a5 o2f® AS EPROM Dt As 264A DO —Ae Q 25 —Yar te 10 Ao eh pom eo 20| = Vop LX-_— Figura 44 - Representagao esquematica - EPROM 2764A ~ 8 Kbytes, Parte Il fe, O Microcontrolador 8051 O que é um Microprocessador? O que é um Microprocessador? -Explicagao Intuitiva: Fazendo um Bolo ‘Suponhamos que vamos confeccionar um bolo, utilizando um livro de receitas que tem arotina de fazer um “Bolo de Chocolate”. Como acessamos a receita do livro? De que se compde uma receita? Indo @ pagina correspondente ao titulo “Bolo de Chocolate’, encontra-se a receita walente a um “software” de construgao do bolo, que esta gravada na pagina “XYZ” do livro Note que, na pagina, eu sé leio; nao escrevo nada l4. E a nossa futura “ROM* d Only Memory, Memdria Apenas de Leitura. Vejamos a nossa pagina XYZ ilustrada na figura 1.1.a. ode receitas: BOLO DE CHOCOLATE Ingredentes: (para 1 kg de bolo) = 1 kg 2 = xicaras de fainha 1 - xieara de agicar Cobertura de Chocolate: (vide Pag. "ABC")* + Acobertura de Chocolate esta escrita em outras paginas, pois varias reoeitas a utiliza, || aquaisd se escreve uma vez (isto & uma sub-rotina do software). Figura 1.1.a- Pagina de uma receita de bolo. Microcontrolador 8051 Detalhado _ Note que na pagina “XYZ’, no item correspondente a “Cobertura de Chocolate”, pede-se para acessar outra pagina do livro, pois essa “cobertura” serve para outra receitas e se organiza para que seja escrita uma s6 vez no livro. Como proceder? Deve-se ir a nova pagina “ABC” do livro e realizar o trabalho desta pagina. Apés 0 término deste, volta-se & pagina "XYZ", original. Isto 6 equivalente a uma chamada de sub-rotina em software, sua execugdo e volta ao local de onde se partiu (retorno de uma sub-rotina). Dai, continua-se a executar 0 resto da confecgao do bolo. Isto também 6 o que um microprocessador ira fazer, s6 que em um mundo mais limitado que o mundo da cozinha. Note ainda, no desenho da pagina “XYZ”, que existe o item 1, ingredientes que Tepresentam as quantidades de elementos necessdrios & confeceao do bolo, no caso, um bolo de 1 Kg. Se vocé quiser fazer 2 Kg de bolo, deve usar uma “folha de rascunho” (que 6 a “RAM” do microprocessador, Random Access Memory, Meméria de Rascunho). E a memoria temporaria, utlizada para céloulos, e depois posso me desfazer do seu conteiido, ou seja, jogar a folha fora. Isto nao é escrito na folha do livro de receitas (ROM) e eu também nao devo anotar nada adicional nesta, pois a receita é geral, e o tamanho especifico do bolo eu calculo No rascunho, depois jogo os célculos fora, pois so temporérios (memdria volatil).. Este é 0 mundo do microprocessador: O cozinheiro € 0 microprocessador. Ollivro de receitas é a ROM com software fixo de confecgao e suas sub-rotinas. O rascunho é para céleulo de proporgdes do bolo, que 6 a RAM. © cozinheiro obedece ao que esta escrito no livro (Isto nem sempre 6 verdade com cozinheiros experientes.) que é a ROM. Uma sub-rotina é um “desvio” a ser feito pelo cozinheiro, no software principal, para executar algumas sub-totinas. No programa principal, encontram-se a instrugao do desvio ea pagina do desvio (pag. “ABC’). O material, 0 cozinheiro, o livro @ as folhas de rascunho so o “hardware” do sistema. O que esta escrito no livro e no rascunho fazem parte do software do sistema. A interpretagao do software e execugéo das instrugdes séo realizadas pelo “Microprocessador-Cozinheiro". Qual é uma diferenga sutil e importante entre 0 microprocessador e o cozinheiro ¢ suas anotacdes? E que 0 microprocessador, por ser uma maqi limitada, nao atende ao rico yocabulario do ser humano cozinheiro que, além de rico, é sofisticado, impreciso e de miltipla inlerpretagdo, que so uma “maquina inteligente” como o homem entende (por exemplo, para 0 homem as seguinte palavras séo equivalentes: fazer = realizar = trabalhar. Para o microprocessador, © vocabulario é reduzido e especifico; néo existem adjetivos, sindnimos, etc.). O microprocessador 6 entende algumas instruges basicas e se vocé quiser que ele faga alguma coisa, vocé, ser humano, tem que estudar e compreender precisamente a sua ‘inguagem e limitar-se a ela para fazer a maquina trabalhar. Este é 0 ASSEMBLER do icroprocessador, é 0 seu conjunto de instrugées. Vide figura 1.1.b para ilustrar um “paralelo tico” entre o microprocessador e suas atividades e 0 cozinheiro e suas atividades. FOLHA DE P] _RASCUNHO Pg XYZ = RECEITA INGREDIENTES UTENsILIOS Livro de Receitas Py ABC= ‘Sub-Rotina (Linguagem complexa} o2—mxz-Noo| HARDWARE t ‘SOFTWARE PERIFERICOS: TECLADO DISPLAY ETC. INPUT OUTPUT mourvumao0nvox0-= HARDWARE SOFTWARE Figura 1.1.b - Comparagao entre a estrutura de confec¢ao de um bolo 0 trabalho de um microprocessador. Microcontrolador 8051 Detalhado 1.2 - O que é um Microprocessador - Explicagao Técnica Um microprocessador é um elemento eletrénico, desenvolvido para executar tarefas especificas, com linguagem de comando especifica. Ele se utiliza de uma Memdria de Programa (Code Memory - ROM) para “ler” as instrugdes que deve executar e se utiliza de uma Meméria de Dados (Data Memory - RAM) para armazenar temporariamente informacées de uso proprio das instrugdes, enquanto essas informagdes devem ser armazenadas. O seu propésito é executar tarefa especifica gravada em sua meméria de cédigo, a “ROM”, e em geral se comunica com o mundo real para sentir informagées do meio ambiente e também para atuar nele. Como, por exemplo, poder “ler’ uma tecla de um teclado, acender uma lampada, “escrever’ em uma impressora, “comunicar-se” com um “PC’, ligar/desligar motores, etc. Programa-se a ROM com codigos compativeis com a linguagem do microprocessador para executar uma tarefa ou grupos de tarefas criadas pelo projetista. O projetista deve entender perfeitamente o conjunto de instrugdes da maquina (assembler) e sua estrutura fisica, e de interfaces, conhecido como hardware. Ele deve ter um propésito bem-definido a desempenhar na maquina, e se possivel, criar um “algoritmo” ou uma receita de procedimentos que deseja para, em seguida, transformé-la em linguagem de maquina (assembler). Seja considerada a arquitetura seguinte: Na figura 1.2, vemos a ilustragao simplificada de um microprocessador com CPU (Central Processing Unit) e seus elementos basicos associados: RAM, ROM, periféricos e fonte de alimentagao. ALIMENTAGAO ELETRICA (DC) Q 3 "BUS" DE ENDEREGOS 1 | A Engerepos Paitercos CTecados, 9 RAM sie reks| 3 oy Bidirecional moe ee == MUNDO INTERIOR DO 1 munoo 10 | MICROPROGESSADOR | EXTERIOR — (uP) | “Do (mp) INTERRUPCOES Figura 1.2 - Arquitetura Basica do Microprocessador. O.que é um Micropro Note que o Mp (microprocessador ou CPU) tem vias (Bus = Barramento) de controle de egos, de comunicagao de dados, de controle auxiliar € de /O (Input/Output). + Vias de controle de enderegos: Servem para o Mp selecionar com qual posi¢ao de memoria ou periféricos deseja se comunicar. + Vias de controle auxiliar: Sao sinais de controle que permitem ao Mp acionar, por exemplo, em um certo tempo, a ROM e nao a RAM, e vice-versa. Note que as vias de dados e de enderegos ‘andam’ em paralelo e temos duas memdérias envolvidas, a RAM ea ROM. Como separar uma memoria da outta, j4 que a comunicagao esta ligada em ambas? Pelas vias de controle auxliar 6 possivel, por exemplo, “igar” a ROM e deixar “desligada” a RAM, e vice-versa, quando se desejar falar com uma delas, + Vias de “VO” (Input/Output ou Entrada/Saida): Séo vias que permitem abrir ‘comunicagao com o ‘mundo exterior’, a fim de trocar informagées com ele. Como “mundo exterior’, entende-se qualquer elemento eletroeletronico que seja sensivel ‘a0 mundo fisico e/ou atue nele; sao numerosas e especializadas como: teclados, displays, videos, impressoras, motores, modems, mouses, alarmes, lampadas, pistoes, etc. (classifique-os como entrada ou saida como exercicio de compreensao). + CPU: é a pastilha do microprocessador, 0 “cérebro” do sistema, e tem competéncia para acionar e se comunicar com todas as vias supracitadas, so que sempre seguindo ou obedecendo as diretivas gravadas na ROM. Ela nao é tao misteriosa quanto parece, como veremos em seguida. Ela continuamente realiza fungdes de busca de uma instrugao na ROM, e execugao instrugao dentro da CPU que tem, intermamente, capacidade de executar fungoes 2s E (AND), OU (OR), NOT, EXOR...) ¢ fungdes aritméticas (Somar, Dvir, Muttipicar.., de transferéncia de dados intemamente e/ou externamente e funcdes de agao de dados com conseqiiente decisao (ou sem decisdo) apds estas comparagées. Ela 96 entende Cédigo Binario, mas o programador pode entender este cédigo em |, Hexadecimal, Decimal e por Nomes Simbdlicos, que representem uma instrugao, por iplo: “add” = “Soma” = Cédigo Hexa 24 ou 00100100 em Binario (no exemplo, add = add #data), para o microprocessador 8051. A CPU sé entende digitos binarios, mas nés a fzamos por “add”, que 6 mais facil de lembrar. Um software no “PC’ ira transformar este fem 00100100, quando gravarmos a ROM. + Oscilador: E 0 elemento que gera o “marcapasso’ da CPU, que permite que o ‘ microprocessador realize as suas tarefas intemas e externas de maneira sincronizada e com velocidade predeterminada. + Reset: E 0 elemento que faz a CPU iniciar suas rotinas internas e realizar também a primeira leitura de instrucao no enderego 0000h. + Interrupgdes: Sao pinos de acesso externo que permitem interromper o microprocessador, que entéo interrompe suas tarefas atuais e atende aquelas planejadas pela interrupgao solicitada. 1.3 - A CPU Internamente cpu REGISTRADORES (PO) Yate ‘Acumulador Hil Program Conner Vie de dados : (Contato: de prograa) (OaTA BUS) (Ry yoo0r= oP CODE | cMSTRUSTON REGISTER THEMORA ¥ eSsttUDONEE MsTAUCDES| VOLATIL) Lao | See ff {INSTRUCTION DECODER) unpioe 4 conte : wyowe | aene ft -__ astueica z Figura 1.3 - llustragao da CPU em um ciclo de busca de instrugao (na ROM). Na figura 1.3, mostra-se uma ilustragao simples da esséncia interna de trabalho da CPU. Notam-se algumas fungées de importancia: Registradores: Sao equivalentes a uma RAM, s6 que interna a CPU. Servem para armazenamento temporario de informagées de utilidade interna ou externa a CPU. Existem registradores com fungao definida: por exemplo, aquele que 6 imagem ou espelho de uma porta de “V/O". O sinal na porta de I/O pode ser lido diretamente no registrador equivalente; por exemplo, a porta “PO" tem um registrador imagem de "PO", cujo contetido € 0 reflexo do que ha na entrada fisica dessa porta. Existem Registradores de Funcao Geral, que podem ser acessados pelas instrugdes do Mp e ainda podem ser conhecidos por nomes (registrador RO, Ai, etc.) ou sem nomes (registrador 20h, 2th, etc.). Contador de Programa (Program Counter ou PC): E 0 indicador de enderego de meméria externa. Ele serve para enderecar a proxima instrugao a ser lida pelo Mp, a fim de que ela ‘saiba” onde estava e para onde deve ir (ler nova instrugao no proximo enderego).. Registrador de Instrugao (Instruction Register ou IR): E 0 local para onde se dirige o cédigo da instrugdo que foi retirada da ROM por meio do enderego dado pelo PC no ciclo de busca (fetch) da instrugéo da memoria. O IR é necessdrio para que, depois da busca, um decodificador possa decodificar, “abrir’ a instrugao e envid-la a unidade de processamento (ALU - Aritmetic Logic Unit), a fim de que, neste local, ela seja “executada”. Unidade de Decodificagao (Decode Unit): E o local em que a instrugdo 6 decodificada, e também sao gerados os controles que, junto com a Unidade de Controle, permitem executar a instrugdo na ALU. O que é um Microprocessador? Unidade Logica e Aritmética (ALU, Arithmetic Logic Unit): Eo local em que sao edizadas as operagdes de: légica, aritmética e decisdo/comparagao. E 0 “cérebro” da ina, Acumulador (Accumulator): E um registrador principal e muito ‘popular’, pois varias Ges se referem a ele para operar. Unidade de Controle (Control Unit): E 0 local em que se processa o controle do fluxo informagdes a fim de realizar a instrugao recebida. Exemplo de funcionamento: Suponha que o MP foi ler uma instrugéo na ROM. Os intes passos serao dados. Vide figura 1.3 para acompanhar. 1, O enderego de PC é posto na via de enderegos (que é 0 enderego desta proxima instrugdo a ser lida). O sinal de controle da ROM é ativado (pois vamos ler a ROM e nao a RAM). . A instrugdo ¢ lida da ROM, no enderego dado pelo PC (no caso, o enderego “n’), @ é lida pela via de dados. Estes trés itens correspondem ao ciclo de busca ou fetch. 4, Ainstrucdo é carregada e armazenada no IR (Registrador de Instruges). OPC é incrementado para ler a proxima instrugao (apontara para “n+1"), 1. Inicia-se outro ciclo, o de execugao interna da instrucao, auxiliado pela Unidade de Controle ¢ pelos registradores, decodificado pela Unidade de Decodificagao e executado pela ALU. (Vide fluxograma desenhado sobre a figura 1.3. para melhor entender esta explicagao). -0 8051 BASICO Na figura 1.4, vé-se uma ilustragao mais proxima da realidade de interligagao de um sessador (microcontrolador no caso). Note que o barramento de enderegos é de 16 bits, em que os 8 bits menos tativos $40 derivados junto com os 8 bits de dados. O que separa o dado do enderego Latch’ que copia a informagao de enderego, quando este é apresentado em PO. Isto az por meio do pino de comando chamado “ALE” (Address Latch Enable). Dizemos que @ enderecos so multiplexados pela via PO (misturados fisicamente no mesmo port Isto 6 feito para economizar 8 pinos fisicos do microprocessador, tomando-o menor fvel (em geral, 40 pinos no total e se tivesse 8 pinos para “dados” e 8 pinos separados enderecos menos significativos’, o chip teria 48 pinos). am READ / WRITE, +voe RESET L A po} (88%) | 7 | aas->| 4 EPROM RAM, anh PSEN & pt] Mundo Exterior = (8 Bits) is) wal § (CPU) ; TNE tT PeRrEacgS (eg 8 FINO =1PINO TOTAL =8PINOS LL (40 Pinos) ‘TOTAL GERAL = 40 PINOS Figura 1.4 - Diagrama de interliga¢o bésica do microcontrolador 8051. Note que os outros 8 bits mais significativos do barramento de enderegos sao dados por P2, e este é direto, nao é multiplexado como o PO. Observe que 16 bits de enderego equivalem a 2'° = 65536 posigdes diferentes de enderegamento de meméria. Observe que 8 bits de dados representam uma palavra como 28 = 256 combinagoes possiveis de dados a serem transmitidas e/ou recebidas. Note que existe o pino de acionamento da ROM (no caso, uma EPROM) chamado “PSEN’. Note que existem pinos de acionamento da RAM, que atribuem a fungao: “Read” ou ‘Write’, isto é, “leitura” ou “escrita” de dados na RAM. Note que “P1” e “P3" (P3 parcial, pois ja usamos parte dele para acionar o Read e Write da RAM) sdo as portas destinadas a interlace com o mundo externo, isto 6, ler um teclado, escrever em um display, etc, “P1” e “P3" sdo também de 8 bits cada. Eles servirdo para realizar os periféricos desejados. O port P3 é parcialmente usado pelo microcontrolador quando se utilizam suas fungdes internas, timer e serial, as quais serao detalhadas futuramente. Releia agora os itens 1.2. a 1.4, visualizando a figura 1.4. Tire a limpo as duvidas. Entenda bem 0 processo ¢ a fungdo dos seus pinos. - Qual é a Diferenga entre Microprocessador (Mp) e rocontrolador (Mc)? Primeiramente, o “hardware interno” do chip do microcontrolador (Mc) é diferente, isto é, ais fungdes que o do microprocessador (Mp). _ Vide a figura 1.5, na qual se destacam o que existe dentro de um chip tipico de um rocontrolador e o que seria considerando apenas um microprocessador. Para melhor entendimento, vale a pena enfatizar que na maioria das aplicagdes lzando microprocessadores necessita-se, além do chip do microprocessador, da ROM, do atch” (vide figura 1.4.) e da RAM, e de outros chips auxiliares, como “Timers” (que contam o npo) e “Serial” (que faz interface com o barramento paralelo do microprocessador e gera linha serial de comunicago). 0 microcontrolador, tipicamente ja tem estes chips dentro mesma pastilha do microprocessador. O microcontrolador corresponde a um jcroprocessador e seus periféricos tipicos, todos juntos num so chip. MGROPROCESSADOR eo} ROMINTERNA TIMER 4 RECEBE ! TRANSMITE | ‘num sé chip, o Mp, timer, serial e “um pedago” de RAM e/ou ROM. chips de Mc que também englobam uma ROM ou EPROM dentro do chip, entéo ndo temos camente nada fora. Esta é uma real utilizagdo dos recursos do Mec, isto é, um chip sé com tudo Microprocessador = Microcontrolador Microcontrolador 8051 Detalhado 1.6 - O Grupo de Instrugdes do Microcontrolador Um microprocessador/microcontrolador tem um grupo de instrugdes que o fabricante criou para ele. Apesar de os fabricantes anunciarem um grupo de instrugées tipico de 100 instrugées, que “assusta” 0 usudrio, quando elas sao agrupadas, funcionalmente, no passam de duas diizias, gragas a Deus!!! Subgrupo do SET (conjunto) de instrugdes: + Aritméticas (+,-, =, x); + Légicas (AND, OR, EXOR, operando com byte); + De transferéncia de dados (Mover Dado = MOV); + Booleanas (AND, OR, EXOR, operando com bit); + De ramificagao (Decisdo e/ou Desvio) ex.: (CJMP = “compare” e ump’). Cada instrugéo tem um “simbolo”, que 6 uma palavra cuja fungao 6 memorizada facilmente. Por exemplo: + dec A =Decrementa o registrador A; + cjne A,#data, rel = Compare and Jump if Not Equal (cjne) = (compare e salte se nao for igual). Observacao: O simbolo # mostra que “data” é um valor (um numero). Esta instrugdo tem trés partes: “cjne A”, “#data’ e “rel”. E uma instrugao que compara 0 contetido de “A” com 0 valor de “itdata’. Se eles forem iguais, nao desvia e continua na proxima instrugdo. Se nao forem iguais, ele desvia (JUMP) para o enderego relativo ‘rel’, Exemplo: Carrega-se com “5", compara-se com “10” e desvia-se para enderego “1000”, se estes contetidos nao forem iguais: mov A,#5 cjne A, #10,1000 clr a 1000: mov B,#20 Compara-se 0 contetido de “A” com 10; se forem iguais, executa a proxima instrugdo que é “clear A’; se forem diferentes, desvia para o endereco 1000 em que executard a instrugao: mov B,#20. Apesar de, no inicio, parecerem “estranhas’, nés vamos nos acostumando com elas alé ‘ticar facil" de “fald-las”. E como aprender outras linguas, que nao a de nossa origem. Outra coisa importante: Nao é necessario memorizar todos os detalhes. Existe o manual do Mp, que da todos os detalhes de cada instrucao (vide anexos no livro), Vocé deve saber apenas sua fungao de cabega, o resto vocé estudaré na hora de utilizar, até que, com o uso continuo, elas se tomem “de cor e salteado”, O que é um Microprocessador? 1,7-0 Mundo Exterior - I/O e Periféricos O microprocessador/microcontrolador tem que ser usado para algum propésito bem- lefinido: Controlar um processo industrial, servir de interface entre uma maquina e o usuario, controlar um terminal bancério, controlar uma impressora, um brinquedo, atuar junto com 1res no sistema de injecao de combustivel de um motor, etc. Pode-se dividir basicamente em: + Periféricos de Armazenamento de Massa: Tipicamente um CD-ROM, um winchester, um banco de memorias RAM, em que se quer arquivar uma imagem ou um banco de dados de clientes, etc. + Interfaces Homem-Maquina: E como o homem pode se comunicar com a maquina: teclados, displays alfanuméricos, mouses, videos, impressoras, saida de som, Ieitora de cédigo de barras, joysticks, light pen, microfones, etc. + Periféricos de Controle: Atuagéo e Sensoreamento: E como o microprocessador consegue “ver” uma varidvel externa e “atuar” em outra: sensores de temperatura, pressdo, umidade, vibragao, etc. Séo acondicionados para, por meio de um Conversor Analdgico-Digital “A/D”, poder se comunicar com o microprocessador, tomando-se entdo suas varidveis de entrada. Dispositivos de Saida, como: relés, pistes, solendides, sirenes, [ampadas, etc. séo alguns dos exemplos nos quais 0 microprocessador pode atuar no meio externo. Muitas vezes, esses dispositivos de saida necessitam de controle por meio de um sinal analdgico, e por isso a saida do microprocessador deve, entao, passar por um Conversor Digital-Analégico “D/A” antes de controlar o dispositive. A seguir, ilustra-se um exemplo hipotético de interligacao do microcontrolador e alguns periféricos. Vide figura 1.6. Oma GTA) cauncesicn " . é uoror g oe 9 (owoen ivan ee. ® a cower k POR rr] ree 6 t x 3 verses | prem R can [Cer an aw) ro isa Figura 1.6 - llustragao hipotética de um microprocessador e seus periféricos. ___Miorocontrolador 8051 Detalhado 1.8 - Microcontrolador versus Hardware com Logica Fixa Os microprocessadores/microcontroladores tém hoje prego baixissimo e esta dificil de comparar com os custos de circuitos montados com C's digitais com ldgica fixa (gates), pois estes gastam mais area de placa de circuito impresso, diminuem a confiabilidade (quanto maior for o ntimero de soldas e chips, maior a probabilidade de ocorrer falhas) e nao sao flexiveis, como é uma maquina alteravel por software. Porém, quando se necessita de alta velocidade de resposta, da ordem de nanossegundo para baixo, os chips do microprocessador esbarram em sua limitagao de “clock”. Na familia 8051, com clock de 12 MHz, a instrugao mais répida consome 1 ys (um microssegundo) para ser executada. Um “GATE” pode executar a mesma fungao em alguns nanossegundos. Portanto, em relacdo a velocidade, os microprocessadores perdem. Em tempos compativeis, da ordem de microssegundos ou mais, 0 microcontrolador é imbativel. Existem chips microcontroladores com ROM interna, por uma fracao de délar (por exemplo US$ 0,70). Como se pode comparar um chip “inteligente e flexivel’ com um “GATE” nestes casos? Nao dd mais para comparar! Por isto, 0 consumo de microcontroladores tem crescimento explosivo e tendéncia irreversivel. 1.9 - Exercicios de Fixagao 1. Toda meméria precisa de informagies de enderegos, de dados e de controle para funcionar adequadamente, Entdo, 0 que difere uma RAM de uma ROM? 2. Qual barramento define a capacidade do microcontrolador: dados ou enderegos? Qual € 0 setor interno ao Mc que realmente define sua capacidade de processamento (8 bits, no caso)? 3. As vias de VO servem para qué? Dé um exemplo pratico: desenhe um diagrama de blocos hipotético de um caixa automatico de banco. Que periféricos externos ele deve ter? 4. A freqiiéncia do oscilador “representa” a velocidade do Mc? Por qué? 5. Qual a fungao do reset? 6. Dé um exemplo de interrupgao "com prioridade" em um escritério: o diretor e 0 Office-boy acessam o chefe que esta escrevendo uma carta. Descreva a rotina provavel que o chefe realizard por passos, até a volta ao seu trabalho rotineiro. 7. Como podemos guardar dados bésicos de uma maquina, por exemplo: seu nome, série, data, e mostra-los na tela cada vez que ligarmos a maquina? 8. A Unidade Légica e Aritmética (ALU) tem que fungao? Quais as operacdes basicas que ela deve realizar, na sua opiniao? 9. © Contador de Programa (PC) tem que fungao? 10. Qual a diferenga basica entre microprocessador (Mp) e microcontrolador (Mc)? 11. Na realidade, um Mc trabalha com bits, Entéo, para que servem os cddigos octal, hexa, ASCII e os mneménicos que representam as instru¢des do Mc? 12. Quais so os periféricos internos ao Mc 8051? Em que parte do programa vocé os utiiizaria se fosse controlar um farol de rua por meio da comunicagaéo de um PC com 0 8051? 13. Qual a vantagem de um Mc com relagao a légica fixa? 14, Altere o programa-exemplo do capitulo 1.6, para que ele realize a comparacao de A com o ndmero "#25h". Se A for igual a “#25h", vai para enderego "1000h", em que se carrega B com #0h; se for diferente, carrega A com "#25h". 15. Dé exemplos praticos, do seu dia-a-dia, da chamada “Interface Homem-Maquina’, (Lembre-se de: PC, reldgio, telefone celular, banco, videogame, CD player, televisdo, aparelho de som, etc). Perceba quais dos seus sentidos cada maquina destas faz interface e que realimentagao ha entre vocé e ela. - 16. O que é um algoritmo? Dé um exemplo. 17. Qual a diferenga entre a nossa linguagem natural e a linguagem de um microprocessador? Qual é a mais “precisa"? Qual é a mais ‘inteligente"? 18. Descreva, por passos, um ciclo de busca de instrugao de um Mc (fetch cycle). folador 8051 Detalhado O Que é a Familia 8051? 2.0 - Introdugao No inicio da década de 80, a INTEL, que ja tinha criado o microcontrolador 8048, langou uma nova familia, herdeira do 8048, intitulada 8051, de “8 Bits” Inicialmente ela langou o “8051” com ROM interna programavel de fabrica, 0 “8751” com EPROM interna programavel pelo usuario e 0 “8031” com necessidade de ter “chips” de EPROM externa. Apds alguns anos, a familia se expandiu para 0 “8052”, que tem um timer a mais que 0 8051 e suas variagdes: com EPROM (8752) ¢ sem ROM/EPROM (8032), e uma verso especial do 8052, chamado 8052 - Basic, que tem dentro de sua ROM um interpretador Basic que permite programa-lo também em linguagem Basic. Esta é a familia chamada MCS-51. Outros fabricantes tém autorizagao de fabrica-lo, como a Siemens, Advanced Microcontroller Device, Fujitsu, Philips @ Oki. Tipicamente 0 8051, como representante basico de familia, contém internamente: + RAM interna de uso geral de 128 bytes e 128 bytes correspondentes aos registradores especiais; + ROM intema de 4 Kbytes; + 4 Ports de 1/0; + 2 Timers de 16 bits; + 1 Interface serial; + Capacidade de 64 Kbytes de enderecamento externo de ROM; + Capacidade de 64 Kbytes de enderegamento externo de RAM; + Processador “Booleano” (opera com bits); + Ciclos tipicos de instrugdo de 1¢ 2 us a 12 MHz; + Instrugao direta de diviséo e multiplicagao; + Entradas de interrupgao externa. O que é.a Famil Hoje, além destes ja citados, existem versées que jé incorporam ao chip um A/D e saida p tipo “PWM” (como o 80C550 - da Philips, que tem A/D de 8 entradas, e o 80C552 que tem de 10 bits e saida “PWM"). Tudo em um s6 chip! Observe 0 ‘C” no cédigo acima, que é de tecnologia CMOS. Existem hoje todas as 1s0es citadas em “CMOS”, de baixo consumo de energia. Por exemplo, 80C31 = 8031 verso CMOS. Vide manual da familia MCS-51, da INTEL jou Handbook IC20, 80C51 - Based 8 Bits Microcontrollers, da Philips (1995). Hoje em dia, j& que com palavras de 16 bits e Clock de 30 MHz, aumentando muito seu poder de trabalho. 24 - Arquitetura Interna dos 8051/8052/80550 Vide a figura 2.1.a para melhor compreens&o do texto: [CONVERSOR AD] DE 8 CANAIS, PELOPORTP! RAM {0328052}! Other 128 Bytes Register RAM 7 [uscontro. a ME fst PBL po P21 PS TCD RXDY “PINOS: ae XN , VERDADE SAO PARTE —apRESSOATA Sut DOPORT P3 ee Figura 2.1.a - Diagrama de blocos funcional do MC8051 e 8052. A figura 2.1.a apresenta a estrutura interna dos microcontroladores das familias 8051, )62 e 80550, contend: ___Microcontrotador 8051 Detalhado As portas PO, P1, P2 ¢ P3, cada uma com oto linhas, so destinadas & comunicagao externa. PO e P2 se destinam a gerenciar as vias de dados e enderegos da comunicagao do microcontrolador com a ROM, RAM ou periféricos tipo “lO mapeado”, que sera visto no futuro. P1 @ P3 se destinam as vias de comunicagao externa, sendo tipicamente usadas para interface ‘com o mundo extemo. Além disto, 0 port P3 tem fungées especiais por onde se comunicam os periféricos internos, como ja foi citado, que existem nos microcontroladores: timers (2 deles no 8051, 3 deles no 8052), serial (1 unidade) e A/D (de 8 canais, somente no 80550, que neste caso usa 0 port P1 como 8 entradas analdgicas, além de ter normalmente os timers € serial do 8051). Veja a figura 2.1. e releia este pardgrafo para melhor entendé-lo. Os asteriscos na figura 2.1.a esto justamente representando que estes pinos nado sao separados dos ports P1 e P3. Por exemplo, TXD* e RXD* sao os pinos P3.0 e P3.1, isto é, os pinos “zero” e “um” do port P3, O mesmo acontece com T2EX’, T2", T1* e TO’. Eles fazem parte dos ports P3 e Pt. Conclusao: ou eu uso 0 port P3 como port livre, € nao uso os periféricos do chip, ou uso os periféricos do chip e comprometo alguns pinos do port P3. Ou uma coisa, ou outra. Nao é possivel ter as duas aplicagdes utilizando 0 mesmo port, € isto nem sempre fica claro para 0 iniciante no estudo de microcontroladores. Repetindo: se eu quiser utilizar 0 port P3 integralmente como via de entradas/saidas normal (as 8 vias), eu nao posso utilizar nenhum dos seus periféricos intemos, inclusive o gerenciamento de RAM externa, pois esse gerenciamento, por exemplo, exige utilizar 2 pinos do port P3 (P3.7 e P36, RD © WR, respectivamente) e assim, de cara, jd temas apenas 6 linhas livres em P3, Se utilizar saida serial, menos 2 linhas livres, se utilizarmos os timers com contagem externa menos 2 linhas livres e se utilizarmos interrupcao extema (INTO e INT1), teremos menos 2 linhas livres!! Restando “ero” linhas livres no port P3 se utilizarmos todos os recursos juntos. Logo, 0 port P3 nao é tao disponivel assim como aparenta. Ele é muito comprometido com quais periféricos intemos do Mc estou utiizando e que, em geral, estou utlizando! Futuramente este assunto tornar-se-& mais claro; agora 6 so um lembrete desta limitago de utilizagao plena do port P3. O port P1 é plenamente utilizavel como port de 8 vias nos chips da familia 8051. Na familia 8052 (vide figura 2.1.a), os pinos P1.0 e P1.1 sao compromissaveis, caso eu queira utilizar o terceiro timer que este chip tem disponivel. 0 mesmo se aplica a familia 80550, (este é igual ao 8051, sé que 0 port P1 é compativel coma ‘ago do A/D interno) que é um 8051 com um A/D de 8 canais dentro do chip de 40 pinos, E facil, nao se assuste, isto 6 como carro com opcionais. E meio bagungado, mas a gente acaba aprendendo! Existe uma tabela-resumo, tabela 2.1, que organiza o que foi citado aqui. Observagao 1: O port P3 so é totalmente livre, como port normal de 8 bits, se nao utilizamos nenhum periférico do chip e também sem utilizar RAM externa. Observagao 2: Porém, 0 port P3 pode ser utilizado como ‘port normal”. E sé nao acionar esses periféricos. Observago 3: O port P1 é totalmente livre, como port normal na familia 8051. Observagao 4: O port Pt é parcialmente livre nas familias 8052 e 80550. Observagao 5: O port P1 pode ser utilizado como port normal, mesmo nas familias 8052 e 80550. O que é a Familia 8051? 40 dos recursos dos Mc citados. os [oe xe [a On Tava ed sop op es ee op ons sake) eB osn ape opamp (eta) now glalhes. Nao se preocupe agora. = Comparac Tabela 2.1 2.2 - Como é 0 Chip Externamente 2.2.1 - Esquema Elétrico Veja a figura 2.2.a: | Veo bine tr xt [z] Pox aor [22] Po7 aor Tt Sa] Pos ADs ] Pos ADS Ly} Lp Bi] Pos ans [34] Pos aos ALA [35] Pos abs EH PO4 ADS t+ Fe] = Te] Po A03 = 5] Poa ans 37] P02 av2 = ee a [Garo ao [ae] po apt [3] Poo ano Ps] Peay ace bar ae mao ez [eles poem [2 Le] prs a Faye we Ce) go54 far cwGr] 8052 Fajen ea [at ¥ Ledriz stro [5] Rstweo [8 3] P12 Peles rex bzlris Fr]pto 12 Fr] p10 Fi] pa ats Ro par CT ro. ps7 GF Pe asm e38 Ge 27] P26 AM we 36 Ce] ese Tt Pea La [26] pas a3 m1 P35 ste ona Dad [25] Pea ate 0 P34 a [2a] Fea at wrn p33 Ci] meee wwro 32 Cz [zi] P22 aay wro P32 [iz] Fey pot my TeocLock a4 CA [zee rxpictock ps1 Cit] TT poo ag ODATE P30 [70] 1] P20 AB rxoioare P30 [io eel Figura 2.2.a - Chip do 8051, 8052 e 80550 (DIP-40 pinos) - parte. ADS ADs ‘AD3 AD? ADI ADO ‘ADCS DCA 3. ADCS 2 ADC2 | Conversor pct | AD apco ‘VREF- VREF+ ANS [ar}p28 ata wr\ P38 [ie loss.: 38 [iB Jops.: conversor de ADF po 5 3 ‘ canals s6 existe a 35 [I] com canais sé existe Ft ant Ato (40 pinos)o = Fz] p24 Ag Lit} conversor ND possul FFF] p29 Ag RXDIDATE P3.0 [40] canals. . 4o 1: Note que o PO apresenta-se como ADO..AD7. A palavra “AD” quer dizer Address/Data. fica que 0 port PO é ‘multplexado” entre as fungdes de enviar enderegos (address) e dados )pela mesma via chamad “PO". 0 2: Observe que, além dos quatro ports, PO, Pt, P2 e P3, 0 chip tem dois pinos de ,, dois para o cristal (oscilador) e mais quatro pinos intiulados PSEN (controle da | ALE (controle de comuniaagéo de PO como via de dados ou enderecas), RST (que é 0 !da mdquina) e EA (que tem fungdo de mapear ROM intema/extema). Figura 2.2.a « Chip do 8051, 8052 e 80550 (DIP-40 pinos) - parte. 2.2.2 - Desenho da Pastilha (Chip) F 052 P07 ADO Post AD1 Po2 aDz 0.3 AD3 P04 ADA POS ADS POS ADS Po7 AD7 EANpp* ‘ALEPROG SEN P27 AIS P28 Ad P25 AIS P2d At2 P23 Att P22 Ato P2t Ag P20 AB Figura 2.2.b - Apresentag io fisica da pastilha da familia 8051/8052/80550. 2.3 - Descrigéo Formal da Pinagem do Mc 8051 Port PO: Port de propésito geral, se eu nao utilizar meméria externa de nenhuma espécie (na verso 8051 e 8751, isto é possivel, pois temos RAM e ROM/EPROM internas no chip). E port de utilizagao como via multiplexada no tempo, entre dados e enderegos (s6 os enderegos menos significativos) quando usamos meméria externa. Na mesma via, num dado tempo, apresentam-se dados e em outro tempo, enderecos. Foi uma maneira de economizar pinos no chip. Se nao multiplexasse dados com enderegos, deveria ter um port de dados e outro port de enderegos, o que acrescentaria 8 pinos ao chip. Existe um outro pino, ALE (Address Latch Enable), que ligado a um chip latch, permite demultiplexar externamente os dados e enderegos no tempo, separando assim as informacées. Isto é transparente ao programador, isto ¢, vocé nao precisa se preocupar com o comando desse pino ALE. Ele ¢ automaticamente gerenciado pelo microprocessador; vocé sé liga 0 latch € 0 pino ALE no latch, e o Mc faz o trabalho. Veja a figura 2.3.a, O que é a Familia 8051? 070805 D403 0201 00 ADDRESS 8 Vias de dados 8 Vias de enderepos {menes signficatvos) sace ADDRESS 8 Vies de enderegos (ais signifcatvos) : Com 8 pinos de PO eu crio 8 pinos de enderegos e 8 pinos de dados. 23a-llustragao de como geralmente se demultiplexam os dados de enderegos no port PO. Port P1; Port de propésito geral como “I/O”. Sao oito vias de comunicagao de propésito Via software, eu posso ler ou escrever nesse port. Lembre-se que com 0 chip 8052, caso ize 0 terceiro timer desse chip, eu comprometo 2 pinos desse port (vide figura 2.1.) 80550, caso eu utilize o A/D interno desse chip, eu vou comprometer um pino de P1 por do AD utilizado. Port P2: Port de propésito geral, se nao utilizar nenhuma meméria RAM/ROM/EPROM Como jé foi citado no item “Port PO”, isto s6 se aplica para as versoes 8051/8052, pois do chip ja temos RAM e ROM internas. Nas outras versdes, eu acabo usando esses para enderegar a ROM/EPROM externa ou RAM externa. Vide figura 2.3.a para melhor ens. Port P3: Port de propésito geral de V/O, isto se eu néo utilizar nenhum periférico interno io, nenhuma interrupeao externa e também se nao utilizar RAM externa. Como ja citado iormente, no item 2.1, esse port é utilizavel como interface entre os periféricos internos do fora do mesmo, além de ter entradas programaveis, como intrepeao e dois pinos nciam uma meméria RAM externa (pinos de Read - RD e Write - WR). Logo, esse port m, em geral, 6 comprometido parcialmente com alguma utilizagéo que se deseja dos cos internos, interrupgdes, etc. Microcontrolador 8051 Detalhado llustra-se a seguir este comprometimento do port P3: XD P30 (oo SERAL 10 P34 _m paz Iorupgo Pal aa TIMERS TIMER 0. o £34 u En CONTROLE WR, wenoaia_ -}-————>—#2 ___;_#i Sey Eins apes esti presertes seu progr pare BO51 | ites ests recursos Observagao: Se vocé néo utiliza alguns destes recursos, 0 pino correspondente ao recurso néo utizado é livre como VO para uso geral. Figura 2.3.b -llustragao da utiizagao do port P3. A seguir, apresenta-se a tabela que resume a ilustragao anterior: Nimero | Fungo | Fungéo Eo : Nome | Wimero | Fungéo, | Funéo | runeio Especial Comentérios da Fungo Especial pao | 10 | Axo | 1/0 | ROX,Reosive Data | Usado como receptor de dados serial rat | tt Tx [| 1/0 | TxD, TransmitData_| Usado como ransmissor de dados serial paz | 12 | To | 1/0 | Extemalinterupta | Usado para algum evento exemo inleompero Me —| pas | 13 | tt | 1/0 | Extemalinterupt | Usado para outro evento exero interomperoMo rae l‘onatd to | io | Timeteounter®: | sad quand se quar que o mr zero se tome un Etemal input | nlador de eventos extemes Timertounter: | ysado quando se quer qua 0 timer! se tone un relists TH | 70) etemal input | contador do oventos extamas wa Exfemal dae: | sado quando se conecta RAM extema no chip. a i) 1 | eorywnte stove | Sializa qu o Mp vai"escrever na RAM ea) | io | , ExemalDate: | Usado quando se conacta a RAM extama ro ep Memory tead stiobe | Sinaliza que o Mp vai"ler" da RAM * Observagéo 1: Os nimeros dos pinos séo referentes & pastilna de 40 pinos (DIP). ** Observagao 2: Estas configuragées devem ser programadas no chip para estarem dispontveis Tabela 2.3 - Resumo das fungdes especiais do port P3. Has PSEN (Program Store Enable): E um dos quatro pinos de controle do chip. Ele aciona ROMEPROM externa (chamada de meméria de cédigo) quando o Mc vai fazer uma busca insttugéo na ROM, para, em seguida, executé-la. Também 6 acionado (sempre icamente) quando se faz uma consulta a alguma tabela fixa, gravada na ROM, por de instrugo especial para isto. Note que existe uma barra acima do nome PSEN, ndicando que ele é ativo em nivel ldgico 0. Ele vai automaticamente para zero toda vez que 0 esta no estado de busca de instrugdo (fetch) para, apds isto, decodifica-la e executa-la. m 1.3 e figura 1.3 para melhor compreensio do ciclo de busca em ROM. llustra-se em seguida a utilizagéo do PSEN: 40 ENDEREGO (ADDRESS) menos sgifcatvo Tg yi) Ar ms xo4ee =07 As ENDERECO (ADDRESS) mais signifcativo 8bits (Chiat erate) | sempre igam-se todos 0s pinos do port P2 na EPROM. Dependerd do ‘tamanho” dessa EPROM. fgaeao completa teriamos 0 enderego: 95 = 64 Kbytes de EPROM enderegavel. Se 2 EPROM for menor, eu utilizo menos pinas P2 ‘0 enderepamento dessa EPROM, por exemplo: Figura 2.3.¢ - llustragao da ligagao da EPROM no Mc. ALE (Address Latch Enable): Ja foi comentado quando se apresentou 0 port PO, vide 3,a, E 0 pino que comanda a demultiplexagao das informagdes de dados e enderegos signicativo) do port PO. Ele é automaticamente gerado pelo Mc. EA (External Access): um pino de comando extemo, que determina se vamios usar a |/EPROM interna do chip ou se vamos ler somente uma ROM/EPROM externa ao chip. 0 EA estiver em nivel Idgico 1, 0 chip ird ler sua ROM/EPROM interna, e apés acabar _, Microcontrolador 805 todo o espago de memoria interna, ir trabalhar automaticamente com a memoria ROM/EPROM extema, se ela existir. Com o pino EA em 0, ele s6 enxerga memérias ROM/EPROM externas. Vide ilustragao na figura 2.3.d. RST (Reset): & o disparador do chip quando se quer iniciar adequadamente sua fungao. Esse pino deve estar no estado 1 por, ao menos, dois ciclos de maquina, que saberemos 0 que é no futuro. Ele organiza os valores internos do chip para iniciar 0 trabalho adequadamente e sempre da mesma maneira. Veremos, mais a frente, detalhes deste item. FFF FFF eee, | — SINALPREN a need 208% pra 4K do ROM inte) cha SMUT 4K 18K ROMA INTERNA ‘SITUAGAQ COM SITUAGAO PINO EA =1 PING EA Figura 2.3.d - llustragao de organizagao de ROM interna/externa em fungao do pino EA. XTAL1 e XTAL2 (Cristal/Oscilador): Esse chip tem um sistema de oscilagao intema que s6 exige do exterior o cristal e dois capacitores para gerar a oscilagao, que se tornaré 0 clock ou padréo de tempo para o microcontrolador trabalhar. Veremos futuramente mais detalhes desta fungao. Vee € Ves (Alimentagao do chip): E por onde se alimenta o chip: +5 Vye em Vee, pino 40 e terra em Ves, pino 20. Vimos todos os pinos existentes nas familias 8051/8052/80550, $6 nao demos muita énfase as entradas/saidas especiais do 8052 e 80550, pois nao é o objetivo deste livro, apesar de estarem razoavelmente descritos neste capitulo. 2.4 - Organizacao das Memorias Esse processador tem um espago sepatado para meméria de programas e para memdéria de dados. Nesses microcontroladores, existe memdria RAM interna, além de poder gerenciar RAM externa. O mesmo acontece com a ROM/EPROM. Vide ilustragao na figura 2.4.a, Note na figura 2.4.a que o Mc tem uma RAM interna que, como veremos em seguida, dividida em registradores especiais e registradores de propésito geral. Eles sao acessivels pela instrugao do tipo MOV, isto 6, qualquer instrugo MOV indica que estamos manipulando dados da RAM intema. Note também que a ROM/EPROM externa é controlavel pelo pino PSEN, como ja foi visto, e temos, no caso, um maximo de 64 Kbytes, como se costuma dizer (6 um atredondamento da capacidade total, que 6 65.535 bytes). A instrugéio que permite manipular O que é a Familia 8051? da ROM/EPROM 6 do tipo MOVC (MOV Code). Note, finalmente, que a RAM externa 6 lavel pelos pinos RD e WR do Mc e também tem capacidade maxima de enderegamento Kbytes. A instrugéo que permite manipular dados da RAM externa é do tipo MOVX (MOV .E por isso que o Mc nao faz confusao com os enderegos de uma memoria. Por exemplo, ele saberia diferenciar entre a posigao 03h da RAM interna, ou 0003h da EPROM/ROM la, 0003h da RAM externa, se nao fosse esta dica que as instrugdes tem: MOV, MOVC e JA que as trés memdrias tem o mesmo endere¢o? Seria impossivel, nao 6? INTERIOR 00 Me EXTERIOR DO Me i i i FEF i "ROM! “FAM j EPROM EXTERNA ! EXTERNA i u i Fer : PSH Iberam esta t livera esta mmeméra para i emir letra eescita i i i i et K Max) ‘ea K Mac) i i MEMORIA DE 000, MEMORIA DE j conigo DADOS + Instupies de acesso & i Instrugbes de acesso & InsirugSes de acesso & AIMINTERNA ; ROMEPROM EXTERNA: RAM EXTERNA wov u wove MovK Figura 2.4. - Estrutura de memérias. -RAM Interna (General Purpose RAM) Eun espaco de 256 bytes na familia 8051 (e 128 bytes a mais no 8052). Ele é dividido le a figura 2.4.c para acompanhar 0 texto seguinte): 1. Posi¢des da RAM “com apelidos” para seus endetecos; 6 dividido em quatro bancos e cada um tem os “apelidos” RO, R1,..., R7. Estas posiges também podem ser acessadas pelo seu enderego absoluto. Por exemplo: RO no banco 0 tem o enderego absoluto do byte 00h da RAM. Esses registradores vao da posi¢éo 00h até 1Fh de endere¢o interno. 2 Posigdes da RAM “sem apelido’, isto 6, acessiveis apenas pelo seu enderego absoluto, porem com uma propriedade adicional: cada bit de uma posi¢éo de meméria também tem seu enderego particular, isto , ela é “bit” enderecavel, além de ser “byte” enderegavel. Vo da posigdo de byte 20h até 2Fh. Por exemplo: os bytes 20h e 21h tém enderegos internos, como ilustrado em seguida: ssyve'21 [or [0c [00 [0c [08 [oa 09 [08 ] “enerecosew veyte'20 Cor | 06 [05 To T 03 [ oz [oT 0 HEXA (h)" Observagao: Note que o byte 20h € o enderego do byte todo (8 bits) e o primeiro bit deste byte tem enderego 00h e o Ultimo bit tem enderego O7h. Assim, nesta area particular da RAM interna, eu posso acessar 0 byte ou um bit especitico deste byte. Deve ficar claro que nao ha confusao, por exemplo, entre os enderecos do bit 00h e o registrador RO do banco 0, que também tem o enderego 00h. Por qué? Porque as instrugdes que acessam byte e bit sao diferentes; logo, néo dé confuso para o programador e nem para o Mc! A vantagem deste tipo de sistema de bits 6 destacada em certas aplicagdes que veremos no futuro, em que se usa Algebra booleana para a resolupao de certos problemas. Da posi¢ao 30h a 7Fh, os registradores s6 sao acessiveis por byte e nao por bit. Vide figura 2.4.c € observe. 3. Registradores de Fungdes Especiais (Special Function Registers): Sao aqueles que t8m apelido, além do seu enderego absoluto, e, além de terem apelido, tm também uma fungéo especifica dentro do Mc. Por exemplo, 0 port P'1 tem o enderego do byte 90h e é 0 espelho do que acontece externamente com o port P1! Assim, ver algo pelo port P1 ¢ olhar esse registrador P1; alterar os valores do port P1 ¢ alterar os valores desse registrador P1. Temos varios registradores e variadas fungdes para eles, e temos que conhecer todos eles, sendo, nao é possivel utilizar bem o conjunto de instrugdes do Mc. E necessaria paciéncia e interesse, pois esta parte 6 fundamental para entender o Mc. Vale ressaltar que esses registradores especiais sao como o “cérebro-meméria” da maquina: saber como a maquina esta (seu estado) em um certo instante ¢ olhar para seus registradores! Allterar seu estado também é usar instrugdes que alteram de alguma forma seus registradores! E 0 mapa da maquina: é como ela se comunica com o meio exterior, como ela se programa internamente e como ela recebe dados externos e internos. E tudo; 6 a alma da maquina. A figura 2.4. ‘seguinte resume o descrito. Posigaa FFH RAM INTERNA Posigao 80H PREVES), Posigao 7FH Pesigao 0 Observagao: As palavas foram mantdas em inglés para que haja compatblidade com os manuais de ébrica Figura 2.4.b - Ram interna. O que 6 a Familia 8051? A primeira vista, os registradores parecem ser muitos, mas, com paciéncia e 0 uso santinuo das instrugdes, vai-se conhecendo cada um deles. Agora, 6 sé uma apresentagao al. Anime-se! (t, —E ; ro {Fr [Fo [rs [rales eal Ft [Fo] 8 co (Er [es [ES Te* Tes [ez [e1[e0 | acc po [7 [08 [0s [os [os [o2 [ot [bo | psw es [1 [- [at [es [ea [5s [88 | 0 [57 [Be [es [64 [a9 [82 [et 1 BO AFT = [= TAC JAB [AA TAS TAB ‘0 | RYTABTASTAS[ASTA2TATTAO| po & 99 | NOT BIFADDRESSABLE | SBUF 98 [SF [ae [90 [ac [98 [9a [e9]88| scon oo {Sr 156 [es [9413 [92 [91] 90 Pt so (TOT eITADDRESSRBLE—| m1 ac Ho $8 [NOTBIT ADDRESSABLE] Tut $n [CONOT BITADDRESSABLE | TLO fs [NOT ADDRESSABLE | THOD #8 [SF [se [60 [8c [6B 8A] 89 [88 | TCON fr [NOT BIT ADDRESSABLE | PCON 3 | HOTBITADORESGABLE —| PH 82 |__NOT BITADDRESSABLE | DPL Le _| SP DEFAULT REGISTER BANK FOR RO-RT RAM SPECIAL FUNCTION REGISTER go: As palavras foram mantidas em inglés para que haja compatiilidade com os manuais de Figura 2.4.¢ - Mapa dos registradores da RAM interna do Me. Apresentagao inicial dos tegistradores de fungdes especiais, vide figura 2.4.c, 4. ACC - Acumulador: E utilizado normalmente em muitas instrugdes da maquina. 2, PO, P1, P2e P3: Registradores dos ports de comunicagao do Mc. 4, B:E um registradorutilzado nas instrugées de mutiplicar e dividir (MUL AB e DIV AB). ae nips poe pelatane? 4, PSW (Program Status Word): Registrador do estado da titima operacao légica e aritmética realizado no acumulador. E um registrador auxiliar de grande importancia, como veremos futuramente. 5. IP e lE (Interrupt Priority e Interrupt Enable): Sao registradores que permitem programar a parte de interrupgdes do microcontrolador. Sera visto com mais detalhes no capitulo de interrupgées. 6. DPH e DPL (Data Pointer High, Data Pointer Low): Os dois juntos formam um registrador de 16 bits chamado DPTR (Data Pointer), que permite criar um enderego de acesso as memérias externas. E muito util por causa desta fungao. 7. SP (Stack Pointer): E um registrador utilizado como pilha de enderegos de retorno de sub-rotinas. E itil para o microprocessador saber para onde voltar apés terminar © tratamento da interrupgdo. Ele 6 acessado pelas instrugdes PUSH e POP e é indiretamente manipulado pelas instrugGes CALL/RETURN que sao utilizadas em ‘sub-rotinas, 8. PCON (Power Control Register): E usado para alterar modos de funcionamento da pastilha com relagéo ao consumo de poténcia. Os registradores que correspondem aos periféricos internos ao Mo (dentro do chip), vide figura 2.4.c, sao: 1. SBUF (Serial Buffer): E um registrador de comunicagéo com o periférico interno Serial, que 6 um chip de comunicacao. Faz interface com o Mc internamente (que fala com ele paralelo, em 8 bits) e também com o mundo exterior, quando se quer transmitir/receber dados por via serial. 2. SCON (Serial Port Control Register): Ele permite programar e controlar todas as atividades do periférico serial juntamente com 0 SBUF. 3, THO, TLO, THt e TL! (Timer High e Timer Low, 0 e 1): Sao registradores de 8 bits ue, em conjunto de dois (high e low), formam para cada timer (Timer 0 e Timer 1) seu registrador de contagem de até 16 bits. 4, TCON (Timer Control Register): E © registrador que permite controlar as atividades dos timers. 5. TMOD (Timer Mode Register): Ele permite programar os modos de atuagao de cada timer que temos. 2.4.2 - Apresentando com Detalhes os Registradores do Mc Agora que todos os registradores foram apresentados, vamos exercitar um pouco com aqueles que correspondem especificamente aos do Mc. Os registradores dos periféricos s6 serdo explicitados nos capitulos espectficos. Apresentamos os Registradores Correspondentes Internos ao Microprocessador 1 - ACC ou A (Acumulador) £ um registrador que se utiliza como operando em varias instrugdes do Mo. E também fica 0 resultado de varias operacoes realizadas, isto 6, muitas vezes o ACC é parte do ido da instrugao e, logo apés a instrugo ser executada, o resultado fica no proprio lador, apagando a informagdo anterior de operando. Exemplos de instrugdes: _ + add A,Rn: Soma o contetido do registrador Rn ao contetido do acumulador: 0 resultado fica no acumulador. + anl A,#dado: Realiza uma operagao AND entre o #dado e o acumulador: o resultado fica no acumulador. + mov A,Rn: Move para A o contetido de Rn. O que tinha em A anteriormente é perdido, pois o contetido de Rn foi carregado em A. imulador ENDERECO DE BIT END e | 6 | = | « | = | 2 | eo | & 0h [ec] [[eoor Tacos [aces [acca [acca | acca [ acct | acco | evr) o: Note que eu tenho o endereco do “byte” ACC igual a E0h e 0 enderego do ‘bit” ACCO cai num enderego chamado de E0h. O programador e 0 Mc nao fazem confusao, porque que manipulam bit sao diferentes das que manipulam byte, por exemplo: a) clr E0h = lr bit (EOh) = clr ACCO. b) dlr =olr byte A (todos os bits do acumulado. Ports PO, P1, P2e P3 "$40 os registradores que espelham a situagao atual dos pinos fisicos dos ports do trolador. PO ENDEREGO DE BIT END a 86 5 4 83 82 8t ao | [ :a0n eo | [ror | ros | pos | po« | os [ poz | pos | poo | cevre) Port de propésito geral, s6 se ndo utiizarmos meméria externa. Port que multiplexa as/dados se utilizo memiérias externas, que é o caso do 8031. ENDEREGO DE BIT END a ee | a Port de propésito geral no 8031/51. No chip 8052, os pinos P1.0 e P1.1 podem ser comprometidos com Timer 2, no 80550, todos esses pinos podem ser comprometidos com os ito canais do A/D. Port P2 ENDEREGO DE BIT END ar [| 6 | ss ai_[_ 40 ADh ® wows: [~r2_] [p27 | p25 | res [ ree [ roa | pee [ pet | p20 | cove) Port de propésito geral apenas se nao utilizarmos nenhuma meméria externa. Port dedicado ao gerenciamento de enderegos quando utilizamos meméria externa. Neste caso, ele fica dedicado exclusivamente a esta tarefa. Port P3 ENDEREGO DE BIT END ey | 6 | 3 | # | os | e | st | & 0h Nomes: [ 3 ps7 | pas | p3s | p34 | p33 | p32 | p31 | p30 } (BYTE) Port de propésito geral se no utilizarmos nenhum periférico interno ao Mc € também RAM externa. Todos os pinos séo compromissaveis com algum periférico ou comunicagao externa (vide itens 2.1 e 2.3 para detalhes). Exemplos de instrugées que abordam os ports mov P1,#00h: Move o valor 00h para o port P1, isto é, “zero” para todo o port PI mov A,P1: Move 0 contetido do reg. P1 para o acumulador, isto é, lé 0 port P1 e guarda no acumulador. seth P3.7: Faz pino 7 do port P3 ficar em nivel ldgico 1. clr P1.0; Faz pino 0 do port P1 ficar em nivel lgico 0. 2.4.2.3 - B - Registrador B (FOh) E um registrador que em algumas poucas instrugdes tem seu nome diretamente teferenciado: mul AB, div AB, que sao operagdes entre os registradores A e B (fora isto, 6 um registrador como outro qualquer). Registrador B ENDEREGO DE BIT eno 7) ]e ls |e | | ro | [ron] woves: [e_] : ~ = <= - =| ene) Observagao: Os bits de B nao tém nomes individuais. O que é a Familia 8051? 1 14.2.4 - PSW (Program Status Word) E um registrador de status da ultima operagao realizada no acumulador. Veja a tabela seguinte: ENDEREGO DE BIT END fo [om | | om | 3 | o [ o | om | [00] Paw | pswe | psws | pswa | pswa | psw2 | pswt| Pswo | (BYTE) [ev [ ac [ Fo P (OVER FLOW BANK SELECT L_______yfreg. uso GERAt] CARRY W.7 (“CY” ou C - “Carry (D7h))” £ um indicador de “vai um” em operagées aritméticas: vai para 1 quando uma soma A“estoura” na sua capacidade (isto 6, 0 sétimo bit ou ACC.7 vai um para uma préxima a que néo existe; seria um nono bit, que é um “estouro” da conta). Vai para “1” se existir um mpréstimo do 72 bit no caso de uma subtragao com o acumulador. Por exemplo: Se ACC=FFh e apés isto aparece a instrugao: add A,#01h: A soma de FFh com 01h fara com que o resultado de A seja 00h e ‘vai 1” mocary, isto 6, “CY” é setado no registrador PSW. Ocarty “CY” também é utilizado como se fosse o “acumulador para um s6 bit’. Existem instrugdes booleanas que usam 0 “C’, isto 6, o carry, como operando, em que se iciona 0 resultado das operagdes. Por exemplo: F ‘ani C, ACC.0: Executa um AND booleano entre o carry € 0 bit ACC.0. O resultado da fo fica em "C” (ele é equivalente ao acumulador para operagao com bytes), isto é, 0 ulado volta para ele mesmo. ___.Mierocontrolador 8051 Detalhado PSW.6 - AC (Auxiliary Carry - D6h) E um indicador de ‘vai um" entre os quatro primeiros bits do acumulador, isto 6, é 0 “vai um" de um “nibble” para outro “nibble” do acumulador. E muito util em aritmética BCD em que os nibbles que cortespondem a 4 bits s40 representados por um numero codificado em bindrio, mas que representa um decimal de 0a 9. PSW.5 (Flag 0 - D5h) E um bit registrador de uso geral, nao tem nenhuma fungéo especial e ndo indica nada (‘sobrou’ dentro do PSW este bit, e no tem fungao espeoifica). PSW.4 e PSW.3 - RS1 e RSO (D4h e D3h) ‘Sao dois bits que fazem mudar 0 banco de registradores a que se referem os nomes RO a R7, utilizados nas instrugdes que trabalham com esses registradores (por ex.: mov A,RO = move para 0 “A” o contetido de “RO”; mas qual RO? Os bits RSO @ RSt é que dizem a qual RO de qual banco esta se referindo). Veja a tabela: RS1_}_RS0_| BANCO "BANCO 0"E 0 QUEA 0 a Banco 0 MAQUINA "APONTA" 0 | Banco t ‘QUANDO SE LIGA A a MAQUINA QU SE FOR( t Lor = UM "RESET", “ Exemplos: Banco 0 => RSO=0 e RS1=0 => 00h a 07h. Banco 1 => RS0=0e AS1=1=> 08h a0Fh. \ Enderegos dos bits inttulados Banco 2=>RSO=1eRS1=0=>10hat7n, ( semprede RO a R7 Banco 3 => RSO=1 e RS1=1 => 18h a 1Fh. Quando se da 0 reset da maquina, ele aponta para o banco 0, isto 6, as instrugdes que se referirem a RO, Rt,...R7 estéo se referindo ao “Rn” do banco 0. Vocé pode utilizar a mudanga de bancos e usar os mesmos apelidos de RO a R7 para o outro banco, ou usar 0 enderego absoluto de cada registrador. Em geral, deixa-se o microcontrolador apontado para 0 banco 0 direto e os outros registradores utilizam os enderegos absolutos deles, s6 para nao ter 0 trabalho de mudar toda hora de banco. Isto depende do gosto do programador. Veja a figura 24.4. Womes | ones docregitradores | Absoluvo | BU500PSW . A7 1F R6 iE id 1D Ra 1c Ast ASO eae RS 1B 1 4 R2 1A Ri 19 RO 18 RT 7 R65 16 RS 5 Ra 14 RSi ASO yee? F3 18 techie) R2 12 Rt ti RO 10 R7 OF R6 OE FS 0D Ra oC RSi SO ot PB 0B 0 4 R2 0A Ri 09 Ro 08 a7 7 F6 06 RS 05 Ra 0 RSi SO ee" 3 03 er) R2 02 Ri of RO 00 ao banco 0. Figura 2.4.d - llustragéo da RAM interna com relagao aos bancos. Quando se “reseta’ a maquina, os bits RS1 e RSO ficam em OOh, isto ¢, estéo se PSW.2 - OV (Overflow Flag - D2h) E um bit que vai para 1 quando, apés uma adig&o ou subtragao, acontece um “estouro” da conta. Resultados maiores que +127 ou menores que -128 “setarao” o bit ‘OV’. Por exemplo: OF +15 iF #27 8E e ‘OV’ +142 Note que 8E é -116, que nao é a resposta desejada +142, por isto OV é setado. PSW.1 (D1h) Bit nao disponivel ao usuario. PSW.0- P (Parity) (DOh) Bit que é “setado” em “1" quando a paridade do contetido do acumulador 6 impar. Por exemplo, seja A, contendo os seguintes dados: NDE "1S" = IMPAR a-[L oor] e] eet oer = pan a= [_on_[ i] eso Observagao: Paridade 6 0 resultado par ou impar do somatério binario do acumulador. E til quando se trabalha com o canal serial, pois ele muitas vezes necessita desta informagao. Outra maneira de saber se P é “1”ou “O", 6 pensar que a soma dos bits “1” do acumulador mais 0 “P“ tem sempre que ser par. 2.4.2.5 - IE e IP (Interrupt Enable e Interrupt Priority) - (Bytes A8h e B8h) Sao registradores que permitem programar o modo, prioridades e liberagao de interrupgdes externas ou internas. Sera visto com detalhes no capitulo “INTERRUPGAO”. 2.4.2.6 - “DPTR”, DPH e DPL (Data Pointer High e Data Pointer Low) - (Bytes 83h e 82h) E um par de registradores compostos como se fossem uma sé palavra de 16 bits. Com 16 bits eu posso enderegar até 64 Kbytes de memoria extema, e é para isto que eles server! Existem instrugdes que utiizam 0 “DPTR" como “ponteiro” de memoria. Por exemplo: movx A,@DPTR: move para A 0 contetido apontado pela posigao de memoria dada pelo enderego do “DPTR”. Na pratica, primeiro carregamos o “DPTR” (isto é, DPH e DPL) com o enderego desejado e depois utilizamos a instrugdo acima. Por exemplo: mov DPTR,#2000h ; carrega o DPTR com o enderego 2000h (em 16 bits) movx A,@DPTR ;move o contetido de posigéo 2000h para o acumulador Apés esta instrucdo, em A estara 0 contetido que estava na posigao de meméria RAM ‘M00h. Note que é a tnica maneira de esse microcontrolador de 8 bits manipular um ‘endereco de 16 bits. 12.7 - SP (Stack Pointer) - (81h) E um registrador de 8 bits que contém 0 enderego de topo de uma “pilha’ realizada com fegistradores, em que se acumulam enderegos de retorno, quando se trabalha com sub- nas e interrupgdes. Vocé pode EMPURRAR (PUSH) dados para a pilha (STACK) ou RAR (POP) dados da pilha (STACK). Ainstrug&o PUSH incrementa o SP “antes” de escrever os dados e a instrugéo POP |é 0 do da pilha e “depois decrementa” o SP. A pilha é formada inicialmente dentro da RAM Hema quando se tem o RESET da maquina, e neste caso'o SP é carregado com valor 07h. 0 é, qualquer dado a ser armazenado na pilha causaré primeiro incremento do SP, isto 6, pata 08h, e depois sera gravado o dado na pilha nesta posicao O8h. Isto é, ela estara do a posigao 08h da RAM que é o registrador RO do Banco 1! Se vocé quiser utilizar banco e 0 outros seguintes, é melhor, logo de inicio, carregar 0 SP com outro valor de a partir do qual ele ira formar a pilha; por exemplo, veja atentamente a ilustragao da Usando, por exemplo, MOV SP#1Fh antes da primeira vtlizagao do SP, ee irapara 20h eformeréa pila dai para cima, Figura 2.4.e - llustragao da atuagao do Stack Pointer SP. = PCON - (Power Control Register) - (87h) Eum byte de “miscelanea”. 92 ann END «“ [6s fsfl«f[«sife fifo | fe] Pcon | [ soo | x x x [ort [oro [ po [ mo (@YTE) SMOD: E bit utilizavel com célculo de tempos no timer, quando se trabalha com o canal serial. Vide capitulo “Serial”, GF1 e GFO: Bits de uso geral (Flags). Sao disponiveis para propdsito geral, sem nenhuma fun¢ao especifica. PD (Power Down): Uma instrugéo que force o valor “1” neste bit sera a ultima instrugaéo a ser executada pelo microprocessador antes de entrar no modo “Power Down”. No modo “Power Down”. a) Ooscilador dentro do chip para. b) Todas as fungdes param. ¢) Todos os valores da RAM interna sao mantidos. d) e) Todos os niveis atuais dos ports sao mantidos. Os pinos ALE e PSEN ficam em nivel 0. f) AJUnica maneira de sair deste modo é pelo RESET. Em modo “Power Down”, Vec que é 5 Vde pode chegar a até 2 Vde sem prejuizo dos estados supracitados! E necessario esperar que o estado de “Power Down” se complete para apés diminuir 0 Vcc, se for este 0 caso. No caso de voltar ao estado normal, o Vcc deve tetornar a 5 V pelo menos dez ciclos de clock antes de acionar 0 RESET. IDL (Idle Mode): Uma instrugio que forga o valor “1” neste bit serd a ultima instrugdo executada antes de a maquina entrar em modo “Idle”, Neste modo: a) O sinal do clock do chip é liberado para a CPU, mas ndo é para as interrupgdes, timers e serial. b) O estado da CPU e 0 contetido da RAM interna sao mantidos. ¢) Os niveis atuais dos ports sao mantidos. d) ALE e PSEN ficam em nivel légico “1”. e) Omodo “Idle” é finalizado por: + Alguma interrupgao jé liberada; + Reset. f) Qualquer das condi¢des do item “e” j4 zeram automaticamente o bit “IDL”. Observacao: Power Down (PD) e Idle (IDL) sé existem nos chips com versao de construgao tipo CMOS (que tem um cddigo “C” dentro do numero do chip, por exemplo, 8031 => 80031). : Os registradores que se referem aos periféricos dentro do Mc serao apresentados seus respectivos capitulos explicativos, isto é, “Timer’, “Interrupgao” e “Serial”. 12.9- Os Registradores da RAM Interna de Uso Geral Temos na figura 2.4.f a ilustragao da RAM interna: REGISTRADORES FF DE FUNCOES ESPECIAIS 80 wr ByTE at ENDEREGAVEL a BIT EIOU BYTE 7 ENDEREGAVEL F BANCO3 RAM DE USO ® GERAL 7 BANCO 2 10 10s 2-2 | fase enh oF BANCO 1 2 Sa w BANCO O io Figura 2.4, - llustragao da RAM interna de uso geral. Vide figura 2.4.¢ para detalhe dos bancos de cada bit. Vide figura 2.4.c para detalhe de cada banco e de sua programagao. Vide item 2.4 para todo detalhamento destas fungées: Registradores com fungdes especiais sao, A, B, PSW, PCON, PO, P1, P2, P3, IP, IE, |, DPL e SP e dos periféricos do Me: timers, TMOD, TCON e TH1, TL1, THO, TLO, e na |, SBUF e SCON. Na verdade, ja vimos praticamente todos os detalhes da parte referente 2 RAM intema geral, portanto aqui vamos s6 resumir alguns deles: 4, PosigGes inicais da RAM, de OOh até 1Fh: Grupos de registradores “com apelido” de RO a R7. a) Cada banco muda o “enderego” destes mesmos “apelidos”. Por exemplo: RO do banco 0 = 00h e RO do banco 1 = 08h, RO do banco 2 = 10h, etc. b) Quem muda os bancos sao os bits RS1 € RSO que estao no registrador PSW. c) Cada um destes registradores pode ser referido na instrugéo pelo seu “apelido’ ou seu enderego “absoluto’, Por exemplo: d) Se estamos no banco 0 => mov A,RO ou mov A,00h dé no mesmo. Se mudo de banco, por exemplo, para banco 1 => mov A,RO ou mov A,08h da no mesmo, e) Os apelidos RO a R7 sao utilizaveis diretamente no conjunto de instrugdes do microprocessador. Vide anexo B: Conjunto (Set) de Instrugdes. f) Esses registradores sao somente Byte Enderegaveis, isto é, nao posso acessar um bit diretamente. Posigées da RAM entre 20h e 2Fh: Grupo de registradores “sem apelido”, isto é, as instrugdes que se referenciam a eles tém que apresentar o enderego absoluto do tegistrador. a) Cada “Bit” tem um enderego e cada byte também. Vide figura 2.4.c para detalhes desses enderecos. b) Observe que 0 enderego do bit pode gerar confusao, para 0 leitor, com o enderego do byte! Por exemplo (veja figura 2.4.c para acompanhar): + Enderego do registrador RO do Banco 0 = 00h; + Endereco do 12 bit do registrador 20h = 00h; + Endereco do 12 bit do registrador 24h = 20h; + Enderego do 12 byte apés 0 banco 3= 20h. Como nao fazer confusao entre o enderego do bit e do byte? As instrugdes que manipulam bit e byte so “diferentes”, vide Capitulo 5: Conjunto de Instrugdes. (O programador precisara de atengao!) ¢) Observe que cada posicao destas pode ser acessada via bit ou via byte, isto é: mov 20h,#00000001b (b = binario) ou set 00h tém 0 mesmo efeito, pois as duas est&o fazendo o bit 00h ir para nivel l6gico “1”. Isto, no inicio, néo é tao simples. Desenhe 0 byte “20h”, seus bits e enderey e entenda as instrugdes acima com relagdo ao desenho feito por vocé. Posigdes da RAM entre 30h e 7Fh: Séo grupos de registradores “sem apelidos” e so enderegaveis por byte, isto é, néo ha os enderecos dos bits de cada destes. 4, Revendo mais uma vez o “problema” do Stack Pointer (SP): Veja a figura 2.4.c e localize o SP. E um “apontador” para uma posigo de meméria da RAM interna, da qual se cria uma pilha de enderegos de retorno de sub-rotinas. a) Quando se liga a maquina e/ou se da um RESET, 0 valor dele aponta para a posigiio 07h, que é 0 "R7” do banco 0 (vide figura 2.4.4); b) Quando se utilizam as instrugdes de pilha (vide item 2.4.2.7), 0 SP é primeiro incrementado e depois sao guardados valores nesta nova posigao, isto é, de 08h para cima; c) Se quisermos usar os bancos 1, etc para certas fungdes que nao as de pilha, devemos realocar 0 SP para valor fora destes bancos, senéo o SP ird “invadindo" estas posigdes se j4 as usamos para outras fungdes. Neste caso, a primeira coisa a fazer é mudar o valor do SP, por exemplo: SP,#1Fh => carrega valores da pilha a partir de 20h (=1Fh+1). Se quisermos usar as de bit enderegavel que comegam em 20h, podemos fazer, por exemplo: mov SP,#2Fh cartega valores da pilha a partir de posigdes que no nos atrapalharao! (no caso, 2Fh + 1 = logo o SP apontara para formar pilha de 30h em diante). Vide também o item 5.2.3, instrugdes PUSH e POP, para entender melhor sobre o SP. -Exercicios de Fixagao 1. Quais so os recursos basicos existentes na familia 8051? Procure sites da Internet (vide Bibliografia) sobre a enorme variedade de opgées disponiveis, principalmente da Philips ¢ Atmel. Liste os opcionais que nao foram descritos neste livro. O que 0 80C552 tem a mais que os outros aqui citados? 2. Desenhe, & mao livre, 0 basico da arquitetura interna do 8051 em um papel, s6 consultando o livro no caso de diividas. Detalhe também a ligagao basica de uma RAM e EPROM externas, no caso do 8031. Existe, no mercado, um Mc da linha do 8051 sd de 16 bits (vide: 80C51XA da Philips ou MCS251 da Intel nos sites desses fabricantes). Quais s&o as diferengas basicas com relagao a familia 8051? 3 4, Descreva o port 3, quando ele é usado para comunicagdo com meméria externa @ com periféricos. Esse port pode ser usado, parcialmente, com os periféricos ¢ ao mesmo tempo, com os pinos restantes como port normal? Qual 0 motivo basico de o port PO ser multiplexado entre fungdes de "Enderego Menos Significativo" e "Dados"? Desenhe, & mao livre, um chip de 40 pinos da familia 8051 (0 8031, por exemplo), sua respectiva pinagem e fungao de cada pino. Para que serve o pino ALE? 5, 1 BS 1 12. 1 14, 15, 16. 17. eS O pino PSEN serve também, tradicionalmente, para acionar outra meméria além da EPROM? Para que se prestam os pinos RD e WR do port P3? Eles enviam informago ou recebem informagéo? Como funcionam? Pesquise sobre 0 80550 na Internet (Philips). Que periféricos ele tem, internamente, a mais que o 8051? Quando se utilizam os canais de A/D, o port Pi é ‘comprometido? Eu posso dividir este port P1 entre algumas entradas de A/D ¢ as testantes, como port /O normal? Por que, para pequenas quantidades de produgao, nao se utiliza o chip 8051? Por que nao se utiliza o chip 8051 para consttuir protétipos? (vide tabela 2.1 e/ou pesquise na Internet). Os pinos do port P3 (P3.2 e P3.3), quando utilizados para interrupgao, tornam-se pinos de entrada ou de safda? Por qué? . Os pinos do port P3 (P3.4 e P3.5), quando utilizados para contagem externa, tornam-se pinos de entrada ou saida? Por qué? . Os pinos do port P3 (P3.0 ¢ P3.1), quando utiizados para comunicagao serial, tornam-se respectivamente, de que fungao? Desenhe, a mao livre, 0 esquema completo de ligagéo de uma EPROM de 32 Kbytes em um 8031. Quantos pinos do port P2 foram utilizados? Por qué? Qual a aplicagao do pino EA? Como ele fica ligado quando se utiliza 0 chip 80317 Na familia 8052, hé uma "ROM interna ao chip" que tem gravado de fabrica um interpretador BASIC. Qual sua opinido sobre a ligagao do pino EA neste caso? Qual 6 o maximo de tenso de alimentago que vocé pode aplicar nessa familia de Mc? (Pesquise em manual ou na Internet: 8051 Absolute Maximum Ratings or DC Electrical Characteristics). © pino EA é chamado nos chips com EPROM intema (8751, 8752 © 87550) de EA\Vpp. O "Vp" representa 0 pino de programagao da EPROM intema nestes casos. Qual 6 0 valor tipico de tensao aplicada em Vpp? Pesquise como se programa uma EPROM intema desses chips (vide, por exemplo, manual Intel - 8051 (MCS51) EPROM Characteristics). Qual é a capacidade maxima de enderecamento de EPROM e RAM externa na familia 8051? E de RAM interna? Desoreva os registradores intitulados banco 0 a banco 3. Explique a problemética dos apelidos RO a R7 com relagao aos bancos 0 a 3. Desenhe, mao livre, esses: bancos, seus enderecos iniciais e finais absolutos e seus apelidos. Esses tegistradores sao de uso geral ou especial? 3. Os registradores de fungées especiais (Special Function Register - SFR) também sao volateis? Isto é, quando desligo 0 Vcc do chip, eles perdem totalmente a memoria? 19. Desenhe, a mao livre, todos os grupos de registradores de uso geral e seus enderegos absolutos, indicando regido de bancos, bit/byte enderecavel e byte enderegdvel. Quantos sao ao todo? E por grupo? 20. Desenhe, a mao livre, todos os registradores de fungdes especiais - SFR, com seus enderecos de byte e seu nome (nao detalhar os enderegos de bit). Explique fesumidamente 0 que quer dizer cada nome em inglés e seu significado em portugués. Desenhe, depois, quatro blocos separados para: SFR so do Mc, SFR so dos timers (2 periféricos), SFR sé da serial (1 periférico) e dentro deles desenhe os seus respectivos SFRs. a. Por que o registrador ACC é tao popular, se ele é, em tese, igual a qualquer outro tegistrador? 22, Como vocé vé a importancia dos SFR para trabalhar com essa "maquina" microcontrolada. E importante? Fornece o estado atual da maquina? Vocé realmente controla a mAquina “olhando" para eles? 23. O que é DPTR? Qual sua fungao? 24. Descreva, detalhadamente, o SFR chamado "PSW" e a funcdo de cada bit. 25. Descreva a funcéio e manipulagao basica do SFR chamado Stack Pointer - SP. 26, Qual é aplicagdo tipica do registrador B? 27. Descreva 0 SFR chamado PCON. 28. Qual a diferenga ¢ a fungdo das instrugdes: mov A,RO mov A,00h mov A,#00h iga0: # quer dizer que 0 numero seguinte é um “dado” e nao um “enderego’. 29. Quantos ports temos na familia 8051 e quais esto livres para uso geral? Qual é a diferenga de disponibilidade de ports entre os chips: 8051, 8751 e 8031? Por qué? Dé 0 enderego absoluto de cada port e seu nome. 30. Liste os SFR dos periféricos e resuma suas fungdes em cada linha que tem o seu nome. 0 Clock, Ciclos de Maquina e Reset 3.1 - 0 Clock Forma internamente ao chip um circuito oscilador (clock), dependendo extemamente apenas da ligagao de cristal e de capacitores. E 0 reldgio interno do microprocessador para execucao seqiencial de qualquer atividade interna ou externa a maquina. Opcées de ligagao: a) Cristal $8 a2 30 pF: Fab es 200F: [Me b) Oscilador Externo (Nao Conectadoy cMOS/TL 3 OSGLADOR Cos Observagao: Os capacitores podem ser variados de +t 10 pF. Em qualquer caso, a freqléncia minima de oscilacdo é 3,5 MHz e o maximo depende da versdo do chip. Figura 3.1 - Circuitos de operacao do “clock” do Mec 8051, O Clock, Ciclos de Maquina e Reset a) Atualmente, existem vers6es de até 12 MHz para 8051/52 e 20 a 60 MHz para novas es (vide manuais da “familia”: Siemens e Philips e Atmel. E importante posicionar o circuito do cristal e dos capacitores 0 mais proximo possivel chip do microprocessador, para evitar problemas de oscilaco instavel. 2-Ciclos de Maquina Como citado no item anterior, 0 relégio é 0 elemento que gera e controla os ciclos de lho da maquina. Cada ciclo de oscilagéo chamaremos de “P", de pulso. A cada dois 0s “P” caracteriza-se um estado “S’, Uma seqiiéncia de seis estados, $1 a S6, sponde a um ciclo de médquina. Todas as atividades internas e extemas do jptocessador sao comandadas por esses pulsos e seus Seis estados. Um ciclo de maquina se constitui de seis estados (S1 a S6) que, por sua vez, spondem a doze pulsos P do “clock”. ‘CICLO DE MAQUINA ESTADOS cock i "Neen ESTADO ‘2PULSOS x 9X" = Estado 86, primeiro ciclo. Figura 3.2 - lustragao de um ciclo de maquina do Mc 8051. Por exemplo, o instante marcado como “X” na figura é 0 “S6P1”. Assim podemos ter linguagem comum de definigéo de instantes de um ciclo de maquina. Cada pulso Pt ide da freqiiéncia do clock. Por exemplo, se 0 tiver cristal de 12 MHz, teremos um ciclo lina = 12 x (Periodo de Clock) = 12 x (1/12 x 105) = 1 us. -0 Reset O “reset” do Mc é um pino fisico do chip, chamado “RST”. Deve-se ter um circuito no pino para que, no ligamento do chip, 0 pino RST fique ao menos dois ciclos de no estado “1” ou “high”, Este deve ser projetado para que se tenha 0 reset automatico jzagao do chip e também para que seja possivel forcar o reset por uma chave. Vide 3.3, qv RESET AUTOMATICO} 10uF Figura. 3.3 -llustragao do circuito de reset automatico e reset forgado. Observagao: Na energizagao do +Vcc de 5 Volts, 0 capacitor C esta descarregado e assim aplicaré um pulso “High” no pino RST. Em seguida, esse pulso vai para “Zero”, com constante de tempo dada pelo “RC’. O reset forgado faz 0 capacitor se descarregar e carregar de novo, aplicando novamente um pulso “High” no RST. No reset, varios registradores sdo forgados a estados definidos, como veremos em seguida. O contador de programa, o “PC” é forgado para 0 inicio da ROM, isto 6, para o enderego 0000h que é a posigao de reset ou inicio do programa. Durante @ realizagéo do reset, os valores sao indeterminados, (apenas neste instante). Apds a realizagao do Reset, teremos os seguintes estados, em que “X" representa valor indefinidos: Valores dos Registradores logo apds o RESET a) Registradores principais al Program Counter PC 0000h a2 Acumulador ACC 00h a3 Registrador B B 00h a4 Stack Pointer SP o7h as Program Status Word PSW 00h ab Data Pointer DPTR 0000h b) Ports PO a P3 bl PO FFh b2 Pt FFh b3 P2 FFh b4 PS FFh ¢) Interrupgao ‘No 8051: cl Interrupt Enable IE OXx00000b c.2 Interrupt Priority IP XXX00000b No 8052: cl Interrupt Enable IE 0x000000b 2 Interrupt Priority IP Xx000000b dt Registradores THeTL 00h 2. Registradores TCON 00h ds Registradores TMOD. 00h et SCON 00h 2 SBUF XXh f) Registradores de “Power Control” fi PCON em chip HMOS OXXXXXXXb_ £2 PCON em chip CMOS OXXX0000b RAM Interna ao Mc gt Ao ligar, o contetido é indefinido (aleatério), g2 No Reset forgado (maquina ja foi ligada antes e ja trabalhou) o contetido nao se altera. xercicios de Fixagao |. Oclock do 8051 pode ser gerado por cristal e por um clock externo. Se vocé quiser sincronizar um circuito digital que ja tem um clock de referéncia, qual das op¢des utilizar? E critico o desenho do layout para circuito oscilador a cristal. Pesquise em algum livto, esquema ou pela Internet o quao proximo fica o circuito cristal-capacitores do chip. 10. 1. . Desenhe, & mao livre, o sistema tipico de reset do 8051. Desenhe, & mao livre, um ciclo de maquina completo. Cada pulso P1 ou P2 do ciclo de maquina corresponde a que freqiiéncia? (referindo-se ao clock da maquina) Se tenho clock de 6 MHz, que periodo terei de ciclo de maquina? De que se constitui um estado? Faca vocé mesmo, & mao livre, um resumo das condigdes de RESET com relagao RAM interna do 8051. No RESET, os ports PO, P1, P2 e P3 ficam em Voc ou Vss? No RESET, o PC (Program Counter) que realiza a "contagem” de cada passo do programa fica em que valor? E razoavel isto? Por qué? Hoje existem chips da Familia 8051 com clock acima de 60 MHz! Pesquise na Internet (Philips, Atmel, AMD, Intel, etc.).. _ Temos quatro grupos de saidas do MC 8051 cujo nome néo traduziremos do inglés fa 0 portugués. Eles se chamam “Ports” e trataremos pelo mesmo nome. Temos entéo os ports PO, P1, P2 e P3, como jd comentado no capitulo 2, que sao mpromissaveis conforme a verso do chip utilizado. No 8051 (ROM Interna) temos todos os fo ports disponiveis; no 8031 (EPROM Externa) sd temos os ports P1 e P3 disponiveis ‘0’, Cada port tem cito linhas que podem ser programadas como entrada ou como da (/O=Inpu/Output), ou para trabalhar com os perifericos internos. -Caracteristicas Internas dos Ports Acapacidade de excitagao dos ports se limita a oito cargas digitais do tipo “LS” para o 10 e quatro cargas digitais “LS” para os Ports 1, 2 e 3 (E equivalente a excitar duas cargas Port 0 e uma carga TTL nos Ports 1, 2€3.). -0 Port PO . wer se 0 port PO é configurado em seguida, exempli- do apenas um pino desse US INTERNO ‘DO FORT PO p> )=6o opty PINO Poe Pina 0 Port PO rc Figura 4.1.a - Configuragao do port PO. OH. © PO é uma estrutura de port bidirecional. Um certo pino “i” do port PO é tomado como ilustragao, O barramento interno do Mc é utilizado para ler/escrever no latch intemo, ou ler 0 pino fisico “PO.” em questo. Quando se utiliza uma instrugdo que “escreve" um valor no Port PO.i, o dado se apresenta na entrada D do flip-flop. Um pulso de “escreve" (0 “CLK” do flip-lop) é imposto no flip-flop, que transfere esse dado as saidas “Q” e *Q" do latch. O sinal de “controle” atua para permitir que esse dado saia fisicamente no pino PO. Este sinal de controle simboliza 0 gerenciamento que esse port tem para apresentar o dado fisicamente a saida, Existem instrugdes que [éem o contetido armazenado no latch “PO.i"; elas acionam 0 sinal “Ié 0 latch” e assim léem a saida “Q” do latch. Existem instrugdes que Iéem 0 estado diretamente do pino. Em geral, as instrugdes que “léem o latch” sao do tipo “Read- Modify-Write’, isto é, lé 0 contetido do latch, modifica conforme a instrugao imposta e escreve de novo no latch. Sao as instrugdes INC, DEC, CPL, JBC, DJNZ, ANL, ORL e XRL. Quando PO é usado como port, 6 como se ele fosse “dreno aberto”, isto ¢, devemos utilizar resistores de ‘Pull-Up” nesses pinos para podermos excitar devidamente o ambiente externo ao Mc. Quando ele é usado apenas para controle de meméria externa, esses resistores no sao necessarios, e neste caso o port PO é visto como um port “Tri-State”. O port PO é multiplexado entre “dados” e “enderegos” quando gerencia meméria extema e, entao, utiliza o pino ALE para captar 0 enderego em um latch externo ao Mc, como no caso do 8031 (vide capitulo 2.3), 4.1.2 -O Port P1, P2e P3 Tem configuragao similar ao port PO, s6 que so “quase bidirecionais’, pois tém resistores internos de “Pull-Up” e, logo, nunca ficarao realmente em “Tri-State”. Vide desenho exemplificando esses ports. “TLBOLATCHT Resistor interno de Pull-up (20 a 40k) BUS INTERNO DO PORT Px. Pao L A T c H PINO Pxi= “Escrove no. Pino" do TATCH" Port Px * SCONTROLE™ BUS INTERNO | JLB 0 FINO” Figura 4.1.b - Configurago dos ports P1, P2e P3. Quando se utiliza a série 8031, os ports PO e P2 sao utilizados para “enderecos e dados 103", logo néo so disponiveis como pinos de I/O. Este controle 6 automético e nao isamos nos preocupar com este gerenciamento. Os ports Pi e P3 podem ser igurados, pino a pino (bit a bit), ou totalmente (byte) como entrada ou saida. Nao se pode sqiecer que 0 port P3 é utlizado como meio de comunicagao externa entre os periféricos s"e “Serial” e ent&o os pinos sé estarao disponiveis para l/O, dependendo de utilizar ou 0s periféricos desse Mc (vide capitulo 2.1, 2.2 e 2.3). Vale a pena aqui ressaltar a importancia e diferenca entre “ler o latch’ e “ler o pino’: que é diferente ler 0 contetido do latch (Saida “Q’) e a saida do pino “Px.i”, pois muitas 0 valor de “Q” é “1”, porém o pino “Px.i" (que também tera o valor “1” escrito) esta indo uma base de um transistor que, portanto, gerard efetivamente um valor de tensdo baixo nesse pino, que se for lido diretamente, ird mascarar seu real valor “1”, pois ler-se- jum ‘0" nesse pino. Vide a ilustragao seguinte: Ver _iveo [4 [Esrumcto ee Saida = “1” (Vp do pino sem carga) = + Vcc = 5 V = nivel ldgico “1” Saida="1" (Vo do pino com carga) < Vee (1,5 V, por exemplo) = nivel ldgico “0” Nos dois casos temos nivel légico “1” escrito no latch, porém, devido @ carga nlada pelo transistor “T”, o pino “parece” estar em nivel ldgico “0”. -Caracteristicas Gerais e de Tempo dos Ports -Instrugdes que Alteram diretamente o Contetido dos Ports E necessario ter cuidado com as instrugdes do tipo “Read-Modify-Write” citadas neste jo, quando sfio manipuladas diretamente com os ports. Por exemplo, a operagao: orl =P 1,#11111110b vai executar a leitura do Port P1 pelo ‘latch’, vai operara sinstrugao “OR” com o dado e devolver o resultado em P1 Se a intencdo 6 sé realizar uma “mascara” para ler 0 bit “P1.0", esta instrugao esta mal aplicada, pois ela, além de realizar a mascara, pés valor “1” em todos os outros bits yiP, allerando seus valores originais! Assim, se queremos s6 uma “mascara”, devemos operar “fora de P1”, isto é: mov API sJ6 Pte carrega em A orl A, 11111110b faz a “mascara” sem alterar P1 Esta e outras instrugdes abaixo listadas correm este “perigo” de utilizagao e precisamos saber exatamente 0 que queremos antes de aplica-las direto aos ports: Instrugao e Forma Fungao Exemplo INC. INC PI DEC DEC P3 CPL CPLPI EC JBC PA1.0,AXX DINZ DJNZP1, XX ANE, ANL POA ORL ORL POA XRL XRL PI, #XX Tabela 4.1 -Instrugdes que afetam diretamente os ports quando aplicadas junto a eles. 4.2.2 - Condigdes de Tempo Envolvendo os Ports Cada pino do port 6 amostrado perto da “descida’ do pulso “ALE” no instante de leitura de instrugo, entre o periodo $5 (vide capitulo 3.2) do ciclo de maquina, E possivel que, sé. 0 pino, neste instante, estiver em transigao, 0 Mc possa ler dado errado, Quando se “escreve" um dado no latch do pino do port, ele ja aparece efetivamente na saida do latch durante 0 periodo S6P2 do ultimo ciclo de maquina necessdrio para finalizagdo da referida instrugo. Assim, so aparecera fisicamente no pino, No instante S1P1 do préximo ciclo de maquina. Observe que sé se pode ler com confiabilidade um dado no pino do port que fique presente por tempo acima de 1 valor de “S” (com clock de 12 MHz teremos > periodo S> 1 us ou, genericamente, periodo maior que 1 ciclo de maquina). 4.3 - Exercicios de Fixagao 4. Qual 6 a diferenga basica, no seu circuito interno, dos ports P1, P2 e P3 com relagao ao PO? 2. Qual a diferenga basica entre "ler o pino* ¢ ler o latch, quando se olha com detalhes 0 circuito de saida dos ports? Que problema pode ocorrer se ler somente. o pino e nunca o latch? 3. — Quais instrugdes, quando aplicadas em cima dos ports, podem causar problemas? Que tipo de problemas elas podem causar? 4, Qual é 0 tempo minimo que um dado deve permanecer no port para ser lie efetivamente? 5. _O que significa "Read-Modify-Write Instructions"? 0 Conjunto de Instrugées Como [é foi citado nos capitulos 1.1 e 1.6, 0 microprocessador “entende” apenas ymas “instruges”, em contraste com nosso rico vocabulario e gramatica. Assim precisamos lender bem e precisamente cada instrugéo de seu “vocabulario” e “gramatica” mespondente, antes de poder ordend-lo a realizar alguma tarefa. Se quisermos realizar as complexas, devemos dividi-las em pequenas fungdes até que possamos cair dentro da lagem que 0 microprocessador “entende”. Nao podemos simplesmente dizer: “1"- Leia e e um dado com outro; ou com mais detalhe: “2’- Leia um dado da posicéo de meméria la, some com outro dado de outra posig¢éo de memoria externa e guarde na primeira igao de memdria externa utilizada, 0 microcontrolador entende ‘leia"? Entende “guarde”? Sera que ele também somaria alquer posigao de meméria com qualquer outra? Nao: ele nao entende este algoritmo! Vocé é que deve se adequar a ele. O que os em “1” e *2” 6 como se fosse um algoritmo (procedimento ldgico). Agora temos que tit este algoritmo para a linguagem do microcontrolador. Este microcontrolador, por plo, tem instrugGes para este caso, como: Explicagao Resumi ‘Soma 0 contetido do acumulador com o registrador Rn ‘Soma o contetido do acumulador com o de um registrador ‘Soma 0 conteldo do acumulador com o de um registrador apontado por Ri QIKA,@Rie MOVX A, @DPTR | Move para o acumulador 0 contetido apontado por Ri ou por DPTR K@DPTRAe MOVX @DPTR,A | Move para o enderego apontado por DPTR, 0 contetido que estdé no acumulador e vice versa. Entao, temos que nos adaptar a esta linguagem (nao adianta reclamar!). Agora, temos que pegar nosso “algoritmo” e passar para esta linguagem (isto 6, 0 “software”, como, por exemplo: b) ¢) d) ) hy Microcontrolador 8 mov DPTR,#(enderego da memériat): Faco 0 ponteiro chamado DPTR ficar carregado com o enderego “memoria”. movx A,@DPTR: Move o dado da “meméria1” para o acumulador (A). mov R0,A: Move dado da “memorial”, que esté em “A”, para “RO”, que 6 um tegistrador de uso geral. Eu preciso “salvar” o dado que esté em “A” em outro lugar, pois vou ter que utilizar de novo a instrugao “do passo b” para colher o dado de “meméria2”. Se eu nao salvar o dado “memoria 1” que esté em “A’, matarei o antigo dado quando utilizar a instrugao de novo. mov DPTR,#(enderego da memoria 2): Faco o ponteiro chamado DPTR armazenar o enderego de meméria 2. movx A,@DPTR: Move o dado da “meméria 2” para “A”. add A,RO: Soma o contetido de “A” (que tem o dado “meméria 2") com o contetido de RO (que tem o dado “memoria 1”), isto é, teremos “meméria 2 + meméria 1". 0 resultado da soma dos contetidos ficard de novo em “A”. mov DPTR,#(enderego da memoria 1): Reatualiza o enderego do DPTR com o de “meméria 1”, pois quero guardar nele, em “meméria 1”, 0 resultado da soma. movx @DPTR,A: Carrego o resultado que esté em “A” na posigdo “memoria 1”. FIMLI!: © programa ‘cresceu’, néo 6? Estamos agora “falando” na linguagem do microcontrolador. E o que ele entende ! Observe que: di Nao existe instrugao que some diretamente dado de uma posi¢éo de meméria com outra (por exemplo: [add ‘mem1”, “‘mem2"] nao existe). Nao existe uma instrugdo que some uma posi¢éo de meméria externa airetamente com o acumulador (por exemplo: [add “A’, ‘mem1"] nao existe). 1 S6 ha instrugao que some dado qualquer com o acumulador (vide passo ‘f’). 86 existe instrugdo que move dado externo exclusivamente para “A” (passo ‘be “e’). i Além disso, 0 resultado sempre fica em “A”. Posigdes externas de memoria sé0 de 16 bits e nao cabem direto dentro instrugao; so indiretamente. Elas se referem a posi¢éo apontada pelo DPTR. Lo primeiro tenho que pér o enderego desejado em DPTR e depois usar a inst teferida ao “DPTR” (por exemplo: movx A,@DPTR; passos ‘a’, ‘b’, “d', ‘e’, ‘g" ‘nY), 1 - Modos de Enderecamento das Instrugdes As instrugdes operam com dados que podem ser enderegados de varias formas, motivo qual devemos saber muito bem os modos de enderegamento que o microprocessador ita, No caso da familia 8051/52, etc, dispde-se dos seguintes modos: 1, Registrador 2. Direto 3. Indireto 4. Imediato 5. Relativo 6, Absoluto 7. Longo 8, Indexado -Enderegamento por Registrador As instruges do 8051, quando se referem a registradores internos do ntrolador, apresentam-se como oito registradores com nomes RO, R1, R2, R3, R4, ¢R7. O nome genérico destes registradores 6 Rn. Por exemplo: add A,RO: Soma o contetido de “A” com o contetido de “RO” ¢ o resultado vn Nao se esquega que, neste caso, precisamos saber antes para qual banco esta lo. microcontrolador (vide 2.4.2.4, nos topicos PSW.4 e PSW.3). ‘As instrugdes que trabalham com registradores, acusam-no com o nome generico “Rn”, “n' 6 0 registrador especifico (n = 0 a7). Este tipo de instrugao é codificado em apenas 1 byte. EINEM Aver ds uviet 117, 1 BYTE -Enderegamento Direto instrugdes do 8051, que usam enderegamento direto, referem-se aos registradores da RAM do microprocessador pelo seu “mnemédnico” (apelido) ou seu enderego Microcontrolador 8051 Detalhado Por exemplo: a) mov A,P3: Move para “A” 0 contetido do registrador “P3", que 6 0 mesmo que 0 port fisico P3. b) mov A,30h: Move para “A” o contetido do registrador interno de enderego 30h. Este tipo de instrugao é codificado em 2 bytes. TT) C1 Noses i as ne tee et 2BYTES 5.1.3 - Enderegamento Indireto As instrugdes do 8051, que usam enderegamento indireto, fazem uso de um registrador, que sé pode ser o RO ou Ri, para se referir a outra posi¢aéo de meméria RAM. Por isto que & indireto: o registrador RO ou Ri aponta para um enderego, isto é, ele contém o enderego de outra posigdo de memoria. Utiliza-se 0 simbolo “@” para indicar que a operagao é de enderego indireto. O nome genérico desse registrador indireto 6 Ri (i = 0 ou 1). Por exemplo: Supondo que temos na posigdo “30h” da RAM interna o valor “05” em hexa e queremos nos referir & posigao 30h indiretamente pelo registrador “R1”, podemos fazer (vide figura 5.1): RAM INT. CONTEUDO- He) conte MOV A,@R1-+A=05 apts a instrugdo ser reaizada POSIGAO DE MEMORIA oth ‘© CONTEUDO DE Rt VIROU ENDEREGO Jooh POR CAUSA DERI"@" Figura 5.1 -llustragao da operagao de enderegamento indireto deste exemplo. at + mov 30h,#05h: Carrego a posigdo da RAM interna de endereco “30h", com o valor “05” (contetido=05). + mov R1,#30h: Carrego o registrador “R1” com o valor “30” (conteudo=30h). + mov A,@R1: Carrego ou movo para “A” o contetido da meméria apontada por R1, que 6 30h, isto 6, ele sabe que @ é enderego indireto. Logo, ele sabe que o valor “30h” dentro de R1 6 um enderego e nao um contetido. Assim, ele vai na posigéo de meméria com enderego “30h”, pega o contetido de “30h”, que é “05”, e carrega em A. Logo, A = 05 e nao A = 30; entendeu? Vide strana da figura 5.1 deste item para melhor compreensdo e leia este texto de novo. __ Este tipo de instrugo é codificado em 1 byte. CTE Nabe aaa rea 1 BYTE -Enderecamento Imediato As instrugdes do 8051, quando se referem a enderecamento imediato, significam que 0 da instrugao ja 6 codificado junto com uma constante, chamado “dado imediato”. Operandos do tipo imediato sao precedidos do sinal “#”. Por exemplo: + mov A,#25: Move para A 0 valor 25 em decimal. + mov A,#25h: Move para A 0 valor 25 em hexadecimal, + mov A,#00100101b: Move para A 0 valor 25h em binario. + mov DPTR,#1FFFh: Move para o DPTR, o endereco “FFF” em hexadecimal. Asinstrugdes deste tipo siio de 2 bytes, ou de 3 bytes quando se usa o DPTR. oP CODE IMEDIATE DATA 1 BYTE 1 0U2ByTES TOTAL = 2 ou 3BYTES ‘Ainnica excegao é a instrugao [mov DPTR,#data(16)], que é de 3 bytes, pois o endereco 2 bytes (16 bits). Enderecamento Relativo instrugdes do 8051, com enderegamento relativo, so utilizadas com instrugdes que realizar um ‘pulo” direto no passo cadenciado de um programa. Este enderego jamado “offset”) 6 um dado de 8 bits com sinal, isto é, realiza um salto relativo ao ‘que esta no Program Counter, PC, de -128 a +127 posigdes. Este enderego relativo @ instrugdo por um outro byte. Antes de achar o endereco final de salto, 0 PC é incrementado ao enderego da proxima instrugao e este é 0 enderego ao qual se soma 0 enderego relativo: vide ilustragéo seguinte, pois a explicagao verbal 6 muito dificil de absorver. Por exemplo, a instrugao: SJMP DESVIO = SHORT JUMP PARA "DESVIO" [> Como Exero coniso sca ney ‘ei ROM EXEMPLO 1: 80 DESVIO = 8003h supsnio qe dene Codigo. Enderero de | Asean oY SMP. Desvio= 03 Y fe {Fo fame ors Gamage SPORE] PO +06] (Enderego rlativa em que se desvia 0 program) Note que 0 PC inorementou para apés a instrugo SMP 03 € depots pulou de um ‘ofse" de 03, como pede ainstugSo! Endorogos da ROM ROM EXEMPLO 2: SJMP FB = 80FBh padi i (Obs. FB=-5; Fara const) nde “> o0F9| i sort : : i eT | inde coe m¢ Enteregolatvo om que howe 0 orf RE ap atid SDB é ai 2 i PC (Apts ainstugio SIMP FB) oro si 102] 1 +————— [conico NAROM Observagao: Em geral, ndo fazemos estas contas, pois o compilador, quando usamos % (nomes) como desvio, calcula tudo sozinho automaticamente (gragas a Deus)! As instrugdes deste tipo sao de 2 bytes: L Levees |] RELATIVE OFFSET 5.1.6 - Enderegamento Absoluto Instrugdes do 8051, que se utilizam de enderego absoluto, sao as ACALL e AJMP. instrugdes de 2 bytes que permitem desvio de até 2 Kbytes relativo, em apenas 2 (enderego total da faixa teria que ser em 3 bytes; nao 62). 4 incrementado ao enderego da proxima instrugao e este é o enderego ao qual se soma 0 enderego relativo: vide ilustragéo seguinte, pois a explicagdo verbal é muito dificil de absorver. Por exemplo, a instrugao: SJMP DESVIO = SHORT JUMP PARA "DESVIO" [> Come Exempla con1Go me ROM EXEMPLO 1: 80 DESVIO = 8003h suonss udev algo Ender de rela = 02H aa i SUMP Desvio= 03, Y 10 i So 102] 3 [4 —{PC (Apes oc da retrogao SINP 03" 00aH] o103| : | i 0105} rd PE +05] (Endereco relative em que se desva 0 pragrama) 0106] 0107] 0108] Note que o PC incrementou para apds ainstrugdo SUMP 03 © depois puou de um ‘ofset" de 03, como pede a instru! Enderegos da ROM ROM EXEMPLO 2: SJMP FB = 80FBh (Obs: FB= 5; Faga as contas) ‘+> ooF3 ora] 0F6| orc] Endereo reatvo em que houve 0 oe JL ECS "JUN" apés a insrugdo SJNB FEN 80. oa [PC (pos instuyto SIN FBR) ont]; —} ore | [50160 NRO Observagao: Em geral, nao fazemos estas contas, pois 0 compilador, quando usamos “ll (nomes) como desvio, calcula tudo sozinho automaticamente (gragas a Deus)! As instruges deste tipo sao de 2 bytes: Cee) Cee 5.1.6 - Enderegamento Absoluto Instrugdes do 8051, que se utilizam de enderego absoluto, sao as ACALL e AJMP. instrugdes de 2 bytes que permitem desvio de até 2 Kbytes relativo, em apenas 2 (enderego total da faixa teria que ser em 3 bytes; nao é?). lato aa) a wstrugKo _ fatsatqansl 1 > ofofo] |||] ]=]2]=[o ENDEREGO TOTAL = {Que ver das insti) °F Fa — Cédigo fea do Po de 2 Kbytes” de ento que se tora } absoluto. A idéia de um go “negative” 6 cabivel comentado no item 5.1.5, l] Com isto eu tenho “32 <--> “TBs fornecids pelainstoglo| (que se somam a prte do PCe Bo oenderego absokio, Ate 2 Kbytes se PC = XOCITTT1 T1111 pal ‘tits “t vindo da instrugdo (Enderego da proxima instruc) svems ===> CEnderogo da pena insiugo) Ate 2 Koyts se PC = xXxXx90000000000, Tibi vindo da instug0 f Att 2 Kbyles se PC = XXXXXYYYYYYYYYYYY, ethene Valores quaisquer vindos da instrugéo [Pe +02] ---» (Enderego da préxima instrugdo) As instrugdes deste tipo so de 2 bytes: CERES OI OF Observagao: O enderego relativo de destino a instrugéo ACALL e AJMP deve estar dentro da mesma pagina de 2 Kbytes em que 0 cddigo deles esta gravado. 5.1.7 - Enderegamento Longo As instrugdes no 8051, que usam enderegamento do tipo longo, sao LCALL e LJMP. Permitem enderegamento de 16 bits que mapeia todo o espaco disponivel de enderegos (64 Kbytes). A Unica desvantagem destas instrugdes é que elas consomem 3 bytes de programa, 0 que so sera um problema quando o processo exigir tempo de execucao muito pequeno (em que 1 jis a mais ou a menos 6 vital, por exemplo). Tem o problema, também, de ser um enderego absoluto que nao muda; logo, se vocé necessita executar esse programa em outra parte do espago de meméria, deve repensar neste enderego absoluto, ou se utilizar sempre de “labels” na criagdo do programa, para que, na compilacao, o compilador acerte os enderegos absolutos para vocé. Este tipo de instrugao consome 3 bytes: ork DELL fet 4 oat fre .8- Enderegamento Indexado Asinstrugdes do 8051, que usam enderegamento do tipo indexado, so JMP ou MOVC uma de suas formas. Sao instrugdes cujo enderego de destino depende nao so do ego inserido na instrugao, mas também do contetido de “A” naquele instante. E melhor los com um exemplo: jmp @A+DPTR: Salta para a posigéo dada pelo DPTR + contetido de “A”, isto é, 0 “A” set um contador de passos e o DPTR um ponteiro de faixas. Supondo que: “DPTR’ = meses do ano e “A” = dias do més. Logo, 0 DPTR aponta para a “cabeca” da tabela de cada més, e em “A” eu insiro 0 * do dia do més desejado. Assim, se vario “A”, ja estou alterando o dia daquele més fixo, jalterar mais 0 DPTR. ROM 0100 DIA 200 DIA 201 DIAZ 202 DIAS DIA3t DIA 1: Se quero ir para “Dia 3” do Més 2" te exemplo: 0200 Mes 1 wes 2 Mes 3 tanto, mp@ A¥DPTR = jmp (02+ 0200) = dia Simés 2. 5.2 - Tipos de Instrugao Introdugao: No subcapitulo passado, 5.1, vimos como as instrugdes sao classificaveis pela forma de enderegamento. Vamos agora mudar o enfoque de vé-las, agrupando-as por: 1. Instrugdes Aritméticas (Arithmetic Operations) 2. Instrugdes Logicas (Logical Operations) 3. Instrugdes de Transferéncia de Dados (Data Transfer Operations) 4, Instrugdes “Booleanas” (Boolean Variable Operations) 5, _Instrugdes de Desvio (Program Branching) As tabelas seguintes resumem, em inglés, todas estas instrugdes que veremos com detalhes. 1) Arithmetic Operations MNEMONIC DESCRIPTION ADD A, source add source to A ADD A#tdata add source to Data ADDC A, source add source with carry ADDC A,fdata add data with carry SUBB A, source subtract from A SUBB A,#data with borrow INCA increment A INC source inorement source DECA decrement A DEC source decrement source INC DPTR increment DPTR MUL AB muttiply A & B DIVAB divide A by B DAA decimal adjust A 2) Logical Operations [ MNEMONIC =| ‘DESCRIPTION ANLA, source logical AND ANL Ajidata logical AND ANL direct, A logical AND. © Conjunto de Instrugses MNEMONIC DESCRIPTION ANL direct,adata logical AND’ OLR A, source logical OR ORL Atdata logical OR ORL direct,A logical OR ORL direct, #data logical OR XRLA, source logical XOR XRL A data logical XOR XRL direct,A logical XOR XRL direct, #data logical XOR CLRA clear A CPLA complement A RLA rotate A left RLCA (through ©) RRA rotate A right RRC A (through C) SWAP. swap nibbles Transfer Operations MOV A, source move source to destination MOV A,fidata ‘move source to destination MOV dest,A move source to destination MOV dest, source move source to destination MOV dest,tdata move source to destination MOV DPTR, data 16 move source to destination MOVC A,@A+DPTR ‘move from code memory MOVC A,@A+PC ‘move from code memory MOVX A,@Ri move from data memory MOVX A,@DPTR move from data memory MOVX @RIA move to data memory MOVX @DPTR,A move to data memory PUSH direct push onto stack POP direct pop from stack XCH A, source exchange bytes XCHD A, @Ri exchange low order digits Microcontrolador 8051 Detalhado 4) Boolean Branching MNEMONIC DESCRIPTION SC rel jump if set INC rel if C not set JB bit, rel jump ifbit det “NB bit, el jump if bit not set JBC bit, rel jump if bit set then clear 5) Program Branching [lunewonic’ DESCRIPTION ACALL addr 11 call subroutine LCALL addr 16 call subroutine RET return from sub RETI ‘rom interrupt AJMP addr 11 jump LUMP addr 16 jump SUMP rel jump IMP @A+DPTR jump WZrel jump it A=0 INZ rel fAnot=0 CINE Adirectrel compare and jump Rn Tegister addressing using RO RT direct 8-bit internal address (00h — FFh) @Ri indirect addressing using RO or Rt source | any of (Rn.direct, @Ri] dest any of [R.direct, @Ri] data 8-bit constant included in instruction ‘tdatat6_ | 16-bit constant bit 8-bit direct address of bit rel signed 8-bit offset addR11 11-bit address in current 2k page addi6 | 16-bit address Tabela 5.2.a - Resumo das descri¢6es basicas das instrugdes do Mc 8051.

Você também pode gostar