Você está na página 1de 78

1

Faculdade de Cincia e Tecnologia e Engenharia de Eltrica e Disciplina: Microprocessadores e Microcontroladores Professor: Vitor Leo Filardi a

Apostila de Programao em 8051 ca

Sumrio a
1 Primeira Unidade 1.1 Explicaao Intuitiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . c 1.2 Princ pios Bsicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 1.2.1 Conceitos Bsicos da Computaao . . . . . . . . . . . . . . . . . . . . . . . a c 1.2.2 Blocos Bsicos de microcomputadores . . . . . . . . . . . . . . . . . . . . . a 1.3 Arquitetura do Microprocessador/Microcontrolador . . . . . . . . . . . . . . . . . . 1.4 A CPU Internamente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.5 O Microcontrolador 8051 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.5.1 Memria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 1.5.2 Circuito de Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.5.3 O Gerador de Clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.5.4 Interrupao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . c 1.5.5 Registro de Controle das Interrupoes . . . . . . . . . . . . . . . . . . . . . c 1.5.6 Tempo para Atendimento das Interrupoes . . . . . . . . . . . . . . . . . . c 1.5.7 Ajuste das Interrupoes Externas para serem Ativas em N ou Transiao c vel c 1.5.8 Hardware para expandir as possibilidade de Interrupao Externa . . . . . . c 1.5.9 Exerc cios Resolvidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.5.10 Conjunto de Instruoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . c 2 Segunda Unidade 2.1 Ciclos de Mquina . . . . . . . . . . . . . . . . . . . . . . . a 2.2 Portas de I/O . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1 Princ pio de Funcionamento e Utilizaao . . . . . . . c 2.2.2 Caracter sticas Gerais e de Tempo dos Ports . . . . 2.2.3 Uso das Portas de I/O para a Expanso da Memria a o 2.2.4 Seleao de Programa Externo ou Interno . . . . . . . c 2.2.5 Uso dos Pinos da Porta 3 como funoes Alternativas c 2.2.6 Capacidade de Corrente nos Pinos de I/O . . . . . . 2.3 Modos de Endereamento das Instruoes . . . . . . . . . . . c c 2.3.1 Endereamento por Registrador . . . . . . . . . . . . c 2.3.2 Endereamento Direto . . . . . . . . . . . . . . . . . c 2.3.3 Endereamento Indireto . . . . . . . . . . . . . . . . c 2.3.4 Endereamento Imediato . . . . . . . . . . . . . . . c 2.3.5 Endereamento Relativo . . . . . . . . . . . . . . . . c 2.3.6 Endereamento Absoluto . . . . . . . . . . . . . . . c 2.3.7 Endereamento Longo . . . . . . . . . . . . . . . . . c 2.3.8 Endereamento Indexado . . . . . . . . . . . . . . . c 2.4 Temporizadores e Contadores . . . . . . . . . . . . . . . . . 2.4.1 Introduao . . . . . . . . . . . . . . . . . . . . . . . c 2.4.2 Registros Envolvidos . . . . . . . . . . . . . . . . . . 2.4.3 Modos de operaao . . . . . . . . . . . . . . . . . . . c 2.4.4 Exerc cios . . . . . . . . . . . . . . . . . . . . . . . . 3 7 7 8 8 9 12 13 14 15 21 24 25 29 32 32 33 34 36 41 41 42 42 45 46 47 47 48 48 48 48 49 50 50 51 51 51 52 52 52 55 58

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . de Dados e Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

4 3 Terceira Unidade 3.1 Comunicaao Serial . . . . . . . . . . . . . . . . c 3.1.1 Introduao . . . . . . . . . . . . . . . . c 3.1.2 Registros Envolvidos . . . . . . . . . . . 3.1.3 Modos de Operaao . . . . . . . . . . . c 3.1.4 Cuidados com a Porta Serial . . . . . . 3.1.5 Comunicaao entre vrios 8051 . . . . . c a 3.1.6 Comunicaao serial entre o 8051 e o PC c 3.1.7 Exerc cios . . . . . . . . . . . . . . . . . 3.2 Programaao em Assembly . . . . . . . . . . . c 3.2.1 Introduao terica . . . . . . . . . . . . c o 3.2.2 Estratgias de elaboraao de programas e c 3.2.3 Fluxogramas . . . . . . . . . . . . . . .

SUMARIO 65 65 65 65 67 70 72 73 74 76 76 77 78

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

Referncias Bibliogrcas e a
GIMENEZ, S. P. Microcontroladores 8051. [S.l.]: Editora Pearson Education do Brasil, 2002. NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplicaoes Prticas do Microcontrolador 8051. [S.l.]: Editora Erica, 1998. c a

Cap tulo 1

Primeira Unidade
O que Microcontrolador e
1.1 Explicao Intuitiva ca

Vamos fazer de conta que somos meros aprendizes de cozinheiros, o chefe de cozinha teve que sair e chega um pedido de uma torta de chocolate do gerente da casa. O primeiro passo que nos vamos dar em direao ao livro de receitas onde dever ter impresso a rotina de como fazer uma Torta e c a de Chocolate Tudo bem at aqui. E agora como vamos acessar a receita da torta? De que se compe uma receita? e o Pois bem, vamos procurar a pgina que contm o t a e tulo Torta de Chocolate, encontra-se ento a receita que equivalente a um software de construao da torta, que est gravada em um a e c a pgina ABC do livro de receitas. Notemos que, na pgina, apenas lemos; no escrevemos nada a a a l, ou seja, em trocado de mi do ser a nossa futura ROM - Read Only Memory - e pgina o nosso a u a a endereo, pois toda vez quisermos tal informaao basta acessar tal endereo e obt-l. c c c e a Poder amos ainda necessitar de uma cobertura para a torta caso fossemos mostrar servio para c o chefe da casa, vejamos que no livro de receita exista em uma outra pgina a rotina Cobertura a para Tortas e que esta por sua vez estava seperada por servir para mais de um tipo de torta, e poder amos partir para a sua execuao e depois retornar a torta, o que chamado tambm como c e e subrotina de um programa. Agora se fossemos complicar um pouco mais a nossa receita e fossemos fazer uma receita e meia da torta? Precisar amos de uma folha de rascunho (a memria RAM) para ajustarmos a receita,uma o vez que na receita da torta no devo anotar nada nela. Esta memria temporria, ser utilizada para a o a a clculos, e depois podemos nos desfazer do seu conte do, ou seja, jogar no lixo. a u Vejamos como caria esta estrutura intuitiva na gura abaixo. Quais so as diferenas sutis e importantes entre o microprocessador e o cozinheiro e suas ana c otaoes? c Bem, que o microprocessador, por ser uma mquina limitada, no atende ao rico vocabulrio e a a a do ser humano cozinheiro que, alm de rico, sosticado, impreciso e de m ltipla interpretaao, que e e u c s uma mquina inteligente como o homem entede ( vejamos o exemplo: para o homem as seguintes o a palavras so equivalentes: fazer = realizar = trabalhar. Para o microprocessador, o vocabulrio bem a a e reduzido e espec co; no existem adjetivos, sinnimos, etec...). a o Ento vimos que o microprocessador entende apenas algumas instruoes bsicas e se nos quisermos a c a que ele faa alguma coisa precisamos estudar e compreender precisamente a sua linguagem e limitarc

Microprocessadores e Microcontroladores - 1a Unidade - Prof. Vitor Leo Filardi a

Leio Escrevo
C o z i n h e i r o

Folha de Rascunho

Ingredientes + Utensilios

Livro de Receitas
So Leio

(Linguagem Complexa)

HARDWARE
READ WRITE
M i c r o p r o c.

SOFTWARE
RAM (Dados)

Perifericos: Teclado,mouse Etc....

ROM (Programa de Linguagem Especifica

So Leio

HARDWARE

SOFTWARE

Figura 1.1: Analogia da estrutura Intuitiva se a ela para fazer a mquina trabalhar. Este o ASSEMBLER do microprocessador, que o seu a e e conjunto de instruoes. c

1.2
1.2.1

Princ pios Bsicos a


Conceitos Bsicos da Computao a ca

Antes de iniciarmos o estudo de microcomputadores, vamos nos familiarizar com os termos tcnicos e e saber o seu signicado individualmente. 1.Bit: abreviaao de d c gito binrio (binary digit), que corresponde ao valor zero lgico(0) ou ao a o valor um lgico(1). Podemos fazer uma analogia ao sistema numrico como sendo uma unidade o e de um valor qualquer. 2.Byte: representaao numrica composta de 8 bits. Pode representar n meros de 00h(=0 10 ) a c e u FFh(=25510 ). Essa representaao vastamente utilizada na representaao das instruoes que c e c c o microcontrolador capaz de executar. Novamente fazendo analogia, teremos o similaridade e como as dezenas, centenas etc..., lembrando que em eletrnica digital corresponde como sendo o uma palavra. 3.Registradores: conjunto de ip-op, geralmente do tipo D que so interligados em paralelo a entre si. Eles so responsveis pelo armazenamento de uma informaao que pode ter 8, 16, a a c 32, 64 ou 128 bits, dependendo de quantos ip-ops do tipo D esto interligados entre si. Os a registradores apresentam caracter sticas volteis e , quando eles so desenergizados, perdem suas a a informaoes. c

Pgina 8 a

Microprocessadores e Microcontroladores - 1a Unidade - Prof. Vitor Leo Filardi a

4.Microcomputador: equipamento compacto cujo objetivo principal simular eletronicamente e o sistema chamado ser humano. Suas principais vantagens so: grande velocidade do procesa samento das informaoes e alta conabilidade nas atividades executadas. Ele composto por c e trs blocos bsicos: Unidade Central e de Processamento, Unidade de Memria e Unidade de e a o entrada e sa de informaoes. da c 5.Instruao: dene uma unica aao (tarefa) que o microcomputador pode executar por vez. As c c aoes das instruoes podem corresponder a operaoes de leitura e escrita nos conte dos dos regc c c u istradores ou nas posioes de memrias, a operaao lgica e aritmticas, etc. c o c o e 6.Equipamento Inteligente: equipamento com microprocessador ou com microcontrolador. Tambm chamada de eletrnica embarcada e o 7.Programa ou software: denido por um conjunto de instruoes arranjadas de maneira orc ganizada por um programador, com o objetivo de informar ao microcomputador o que ele deve executar, ou seja, o programa informa ao microcomputador quais as tarefas que devem ser executadas ao longo do tempo. Existem vrias classicaoes de programas: os programas de sistema a c operacional( linux, DOS, windows e etc.), os utilitrios( Anti-virus,scandisk e etc.) e os aplicaa tivos (WORD, EXCEL, Kile e etc.) 8.Firmware: programa (software) que est exclusivamente armazenado em uma memria noa o a voltil(ROM/PROM/EPROM/E2PROM) de um equipamento inteligente. No m a nimo o rmware tem a nalidade principal de programar a forma de operaao do hardware (n mero de portas de c u entrada e sa da, forma de comunicaao serial, forma de operaao dos timers/contadores etc.) e c c de denir suas condioes iniciais de operaao. c c 9.Hardware: so as partes eletrnicas que compem um microcomputador, como a mother board a o o (placa me que contm pelo menos o microprocessador ou o microcontrolador de um microcoma e putador), a placa de v deo de um microcomputador etc. 10.Microprocessador ou Unidade Central de Processamento(CPU):mais conhecido como CPU. Fazendo analogia com o sistema ser humano, o microprocessador, ou CPU, de um microcomputador corresponde ao crebro de um ser humana. Fisicamente um dispositivo semie e condutor (circuito integrado,CI) constitu por milhes de transistores que implementam uma do o variedade de circuitos (registradores, mquinas seq enciais, circuitos lgicos e etc.). Ele rea u o e sponsvel pela busca de um programa na memria e por sua execuao. a o c 11.Microcontrolador: dispositivo semicondutor em forma de CI, que integra todas as partes bsicas de um microcomputador - microprocessador(CPU), memrias no-volteis (ROM /PROM a o a a /EPROM /E2PROM), memrias volteis(RAM, SRAM, DRAM, Flash RAM), portas de eno a trada e sa das (portas de comunicaao paralela e/ou serial, conversores analgicos/digitais,conversores c o digitais/analgicos etc.). Ele conhecido como ummicrocomputador implementado em um unico o e CI.

1.2.2

Blocos Bsicos de microcomputadores a

Qualquer computador, seja ele microcomputadores, computadores de mdio porte ou ainda come putadores de grande porte, so constitu a dos por trs blocos bsicos: a unidade central de processamento e a (CPU), a unidade de memria (na qual so armazenados os programas e as informaoes) e a unidade o a c de entrada e sa (dispositivos que fazem a comunicaao com o mundo externo). da c Pgina 9 a

Microprocessadores e Microcontroladores - 1a Unidade - Prof. Vitor Leo Filardi a

CPU A CPU responsvel pela inteligncia da mquina, ou seja, ela que tem a capacidade de tomar e a e a e decises (aoes) no sistema microcomputadorizado, por meio da execuao de um programa. E ela que o c c executa o programa armazenado na memria do microcomputador, que foi projetado por um prograo mador. Ao executar um programa, ela responsvel pela obtenao das informaoes a serem analisadas e a c c por meio de dispositivos de entrada (teclado, canal de comunicaao serial etc.), pelo processamento c (interpretaao, manipulaao, ordenaao, modicaao, clculos lgicos ou matemticos etc.) das inc c c c a o a formaoes e pela resposta (aao) do sistema microcomputadorizado a uma determinada situaao de c c c controle para a qual ele foi projetado a m de controlar, por meio de um dispositivo de sa (escrita da na memria de v o deo, transmisso de dados para outro microcomputador, acionamento de um rel, a e acionamento de um bip,etc.). Assim, por exemplo, um microcomputador projetado para funcionar como um caixa eletrnico de banco deve fazer as seguintes operaoes: leitura das informaoes contio c c das no carto magntico (obtenao de informaoes), decodicaao da senha digitada no teclado pelo a e c c c usurio, busca de saldo bancrio nos bancos de dados do banco (processamento), disponibilizaao do a a c saldo bancrio no monitor de v a deo e a impresso em papel do referido saldo bancrio (resposta do a a sistema por meio da aao de gerar informaoes no monitor de v c c deo e tambm pela impresso em e a papel das informaoes organizadas solicitadas pelo usurio). c a De maneira simplicada, pode-se dizer que a unidade de processamento central (microprocessador) apresenta duas funoes bsicas: c a a)Leitura (busca) e interpretaao do programa alocado na memria, instruao por inc o c struao: como o programa ca alocado na memria do microcomputador, e no dentro do microc o a processador/CPU, em primeiro lugar, o microprocessador precisa buscar as instruoes, uma por uma, c na memria. Isso feito por meio da operaao de leitura de um byte na memria que corresponde o e c o a uma determinada instruao e depois realizada a interpretaao da instruao lida (decodicaao), c e c c c pois o microprocessador tem uma determinada quantidade de instruoes que ele capaz de executar. c e Dessa maneira, ele precisa vericar qual dessas instruoes deve ser executada. Assim, ao nalizar c essa etapa, o microprocessador/CPU sabe o que deve fazer. O prximo passo a execuao da ino e c struao. c b)Execuao do programa, instruao por instruao: a palavra execuao de uma instruao pode c c c c c signicar a transferncia de dados dos registradores internos do microprocessador/CPU para a e memria ou para os dispositivos de entrada e sa o da, e vice-versa. Pode tambm signicar a exe ecuao de operaoes lgicas e aritmticas etc. c c o e Esse processo de buscar, interpretar e executar instruao por instruao uma atividade cont c c e nua do microprocessador e, dessa forma, um programa processado por inteiro. A unidade de processamento e central (microprocessador) constitu por trs partes principais: a unidade lgica e aritmtica, os e da e o e registradores internos e o bloco de temporizaao e controle. c a)Unidade Lgica e Aritmtica (ULA): muitas vezes, tambm chamada de ALU (Arithmetic o e e e Logic Unit). Ela responsvel, principalmente, pela execuao das instruoes correspondentes as e a c c ` operaoes aritmticas e lgicas. Alm disso, uma caracter c e o e stica muit ssimo importante que deve ser destacada, referente a ULA, que, ao executar uma instruao de uma operaao aritmtica ou ` e c c e lgica, ela tambm dene a condiao numrica do resultado por meio de alguns bits sinalizadores, o e c e chamados de ags de sinalizaao, tornando-os iguais a um (setando-os) ou tornando-os iguais a c zero (resetando-os), e pela utilizaao de outras instruoes que so ca- pazes de testar esses ags de c c a sinalizaao. Isso faz com que o sistema microcomputadorizado possa gerenciar uma determinada c situaao de projeto ou desempenhar uma determinada tarefa bem-denida. c b)Registradores internos: so compostos por m registradores de n bits interligados em paralelo a entre si. Os valores m e n dependem das caracter sticas de cada microprocessador/microcontrolador Pgina 10 a

Microprocessadores e Microcontroladores - 1a Unidade - Prof. Vitor Leo Filardi a

(p. ex.: 32 registrado- res de 8 bits etc.). Como so formados por ip-ops, poss a e vel realizar operaoes de leitura e escrita de informaoes. Quando a CPU desenergizadapor apresentar carc c e acter sticas volteis, essas informaoes so perdidas. Geralmente, eles so capazes de armazenar: a c a a um byte se forem constitu dos por registradores de 8 bits; um duplo byte ou address ou word, se forem constitu dos por registradores de 16 bits; um duplo address ou duplo word, se forem constitu dos por registradores de 32 bits etc. Um microcomputador chamado de microcomputador de 8 bits se ele for capaz de processar ine formaoes de oito em oito bits por vez (operaoes de movimentaao de informaoes e operaoes c c c c c aritmticas e lgicas). Analogamente, para os microcomputadores de 16 e 32 bits, quanto maior for e o a quantidade de bits processados em paralelo por vez, maior ser sua capacidade de processamento. a A unidade utilizada para medir a capacidade de processamento o Mips (milhes de informaoes e o c por segundo). c)Bloco de temporizaao e controle: responsvel pelo controle do uxo de informaoes do microc a c processador para as unidades de memria e para as unidades de entrada e sa o da. E esse bloco que dene os sinais de controle de temporizaao para o sincronismo do uxo de informaoes no sistema c c microcomputadorizado (p. ex.: liberaao de informaoes da ULA para os registradores, memria c c o e unidades de entrada e sa etc.) por meio da deniao dos sinais de leitura (read), de escrita da c (write), de inicializaao do sistema (reset), de liberaao dos barramentos de dados e endereos, entre c c c outros.

Unidades de Memrias o As unidades de memrias so divididas em duas partes: memria de armazenamento de programa o a o e memria de armazenamento de informaoes (dados, bytes, bits etc.). o c a)Memria de armazenamento de programa: todo microcomputador deve ter uma area de o memria na qual ser armazenado o programa que denir as tarefas que o microcomputador / o a a CPU deve executar. Esse programa dene a funao de um microcomputador e tambm diz ao mic e crocomputador, instruao por instruao, o que ele deve fazer ao longo do tempo. Esse programa deve c c ser implementado por um programador tcnico, conhecedor do hardware do sistema microcomputae dorizado e das instruoes do microprocessador. O microcomputador no funcionar se no existir c a a a um programa armazenado em sua memria de programa. Assim, uma vez energizado o microcomo putador, esse programa ser buscado e executado pelo microprocessador. Esse programa dene a a caracter stica funcional do microcomputador (p. ex.: operar como um forno de microondas, como uma mquina de lavar roupas ou como uma injeao eletrnica de automvel etc.). Esse programa a c o o no pode ser perdido na ausncia de energia eltrica, pois isso acarretaria a perda da funcionalidade a e e desse microcomputador, para a qual foi projetado. Assim, o tipo de memria em que esse programa o deve ser armazenado a memria no-voltil. e o a a b)Memria de armazenamento de informaoes: todo microcomputador deve ter uma area de o c armazenamento de informaoes. Essa memria deve permitir a escrita e a leitura de informaoes. c o c Para entender melhor, considere um microcomputador controlando uma determinada atividade. Caso existam informaoes denidas pelo mundo externo por meio de chaves, sensores, teclados etc., c elas devem ser lidas e armazenadas na memria, para depois serem lidas novamente e analisadas o (tratadas) pelo microprocessador por meio de um programa. Como exemplo, considere o acionamento das teclas do teclado de um microcomputador, ou seja, uma vez acionada uma tecla, a CPU dever ler a informaao que foi gerada pelo hardware associado a essa tecla e executar o armaz naa c mento dessa informaao na memria. Depois, dever fazer a leitura dessa informaao, a m de c o a c analis-la (interpret- la), para vericar qual tecla foi acionada. Alm disso, a informaao dever a a e c a ser mostrada no monitor de v deo. Repare que foram necessrias, nesse exemplo, vrias operaoes a a c Pgina 11 a

Microprocessadores e Microcontroladores - 1a Unidade - Prof. Vitor Leo Filardi a

de leitura e escrita na memria, para a realizaao dessa tarefa. Assim, preciso utilizar uma o c e memria que tenha a caracter o stica de realizar leitura e escrita de informaoes. Portanto, deve-se c utilizar memrias RAM (Random Access Memory). Lembre-se de que essas memrias apresentam o o a caracter stica de se- rem volteis. Portanto, sempre que o microcomputador for desenergizado, as a informaoes contidas nesse tipo de dispositivo sero perdidas. c a

Unidade de Entrada e Sa da Unidade de entrada e sa (E/S): tambm chamada pela abreviaao de I/O (Input/Output), da e c responsvel pelo interfaceamento das informaoes entre o microcomputador e o mundo externo. e a c Geralmente so circuitos integrados (CIs) capazes de ler e armazenar as informaoes vindas do mundo a c externo, por exemplo, informaoes originrias do teclado, do canal de comunicaao serial de um mic a c crocomputador etc.; e que tambm podem denir informaoes do microcomputador para o mundo e c externo, por exemplo, o acionamento de bips, alto-falantes, leds indicadores, displays, interfaces de comunicaao seriais e paralelas etc. c

1.3

Arquitetura do Microprocessador/Microcontrolador

Como vimos at aqui o microprocessador um elemento eletrnico, desenvolvido para execue e o tar tarefas espec cas, que dependem de uma linguagem prpria para cada fam de microproo lia cessadores/microcontroladores. Quando falo em fam lias estou me referindo ao tipo de linguagem que o meu microprocessador/microcontrolador ser capaz de interpretar, isto quer dizer que a lina guagem a qual irei utilizar no programa est diretamente relacionada ao modelo do meu microproa cessador/microcontrolador. Podemos ter no mesmo circuito diversos tipos de fam lias diferentes que trabalham entre si sem problemas, desde de que se respeite o programa individual de cada um, por exemplo: o nosso celular no conecta no computador, um palm idem, so todos eles pertencentes a a a diversas fam lias, mas que interagem entre si. Assim, ao programarmos a ROM com os cdigos compat o veis com a linguagem ou fam pertenlia centes ao microprocessador, ele ser capaz de executar as tarefas por esse cdigo designadas. Cabe ao a o projetista entender perfeitamente o conjunto de instruoes da mquina (o to famoso ASSEMBLER) c a a e a sua estrutura sica, e de interfaces, tambm conhecida como hardware. e Vejamos como os trs blocos visto at aqui se comunicam entre si para dar funcionalidade ao e e microprocessador. As vias de comunicaao entre os blocos bsicos so chamadas de barramentos ou c a a do ingls bus. Cada barramento constitu por um n mero de vias (trilhas de cobre), nas quais e e do u uem informaoes em paralelo. So trs os barramentos existentes: o barramento de endereos, de c a e c temporizaao e controle e o de dados. c 1.Barramento de endereos: A CPU utiliza esse barramento para denir os endereos das c c posioes de memria de programa em que ela ir buscar as instruoes a serem executadas e c o a c tambm para denir os endereos de memria de dados ou dos dispositivos de entrada e saida e c o para a troca de informaoes. Esse barramento unidirecional. c e 2.Barramento de temporizaao e controle: A CPU utiliza esse barramento para denir os c sinais de temporizaao e controle para gerenciar o tempo e a direao do uxo de informaoes c c c nas operaoes de leitura e escrita nos dispositivos (unidades de memria ou unidades de entrada c o e saida). Esse barramento unidirecional. e 3.Barramento de dados: A CPU utiliza esse barramento para receber as informaoes vindas da c memria ou dos dispositivos de entrada e saida ou ento denir as informaoes para a memria o a c o ou para os dispositivos de entrada e sa da. Esse barramento bidirecional. Vale ressaltar que e Pgina 12 a

Microprocessadores e Microcontroladores - 1a Unidade - Prof. Vitor Leo Filardi a

nem todos os microprocessadores/microcontroladores no trocam informaoes diretamente com a c os dispositivos de entrada e saida. 4.Oscilador: E o elemento que gera o marcapassoda CPU, que permite que o microprocessador realize as suas tarefas internas e externas de maneira sincronizada e com velocidade predeterminada. 5.Reset: E o elemento que faz a CPU iniciar suas rotinas internas e realizar tambm a primeira e leitura de instruao no endereo 0000h. c c 6.Interrupoes: So pinos de acesso externo que permitem interromper o microprocessador, que c a ento interrompe suas tarefas atuais e atende aquelas planejadas pela interrupao solicitada. a c

Oscilador

Microprocessador ou

Memoria E/S NaoVolatil (ROM) Volatil (RAM) ou I/O

Reset Interupcao

Unidade Cental de Processamento

BUS Dados BUS de Temp. Controle Bus Endereco

Figura 1.2: Arquitetura bsica de um microprocessador a

Como o computador s interpreta cdigos binrios, no existe a necessidade que ns programadores o o a a o converse no mesmo n vel, podemos utilizar os outros tipos de codicaao Octal, Hexadecimal, Decic mal e por Nomes Simblicos, que representam uma instruao, como por exemplo: add= Soma= o c Cdigo Hexa 24 ou 00100100 em binrio (no exemplo, add=add A,#valor), para o microprocessador o a 8051. A CPU s entende d o gitos binrios, mas ns a memorizarmos por add, que mais fcil de a o e a se lembrar. Assim atravs de um software (interpretador) ir transformar este addem 00100100, e a quando gravamos a ROM.

1.4

A CPU Internamente

Veremos algumas de suas funcionalidades mais importantes a)Registradores: So equivalentes a uma RAM, s que interna a CPU. Servem para armazenamento a o ` temporrio de informaoes de utilidade interna e externa a CPU. Existem registradores com funao a c ` c denida: por exemplo, aquele que imagem ou espelho de uma porta de I/O. O sinal na porta e de I/O pode ser lido diretamente no registrador equivalente; por exemplo, a porta POtem um registrador imagem de PO, cujo conte do o reexo do que h na entrada f u e a sica dessa porta. Existem registradores de Funao Geral, que podem ser acessados pelas instruoes do Mp (microprocessador) c c e ainda podem ser conhecidos por nomes (registradores R0, R1 etc.) ou sem nomes (registradores 20h, 21h, etc.). Pgina 13 a

Microprocessadores e Microcontroladores - 1a Unidade - Prof. Vitor Leo Filardi a

b)Contador de Programa (Program Counter ou PC): E o indicador de endereo de memria exc o terna. Ele serve para enderear a prxima instruao a ser lida pelo Mp, a m de que ela saibaonde c o c estava e para onde deve ir (ler nova instruao no prximo endereo). c o c c)Registradores de Instruao (Instruction Register ou IR): E o local para onde se dirige o c cdigo da instruao que foi retirada da ROM por meio do endereo dado pelo PC no ciclo de busca o c c (fetch) da instruao da memria. O IR necessrio para que, depois da busca, um decodicador c o e a possa decodicar, abrira instruao e envi-la a unidade de processamento (ALU-Aritmetic Logic c a ` Unit), a m de que, neste local, ela seja executada. d)Unidade de Decodicaao (Decode Unit): E o local em que a instruao decodicada, e c c e tambm so gerados os controles que, junto com a Unidade de Controle, permitem executar a e a instruao na ALU. c e)Unidade Lgica e Aritmtica (ALU-Arithmetic Logic Unit): E o local em que so realizadas o e a o crebroda mquina. as operaoes de: lgica, aritmtica e deciso/comparaao. E c o e a c e a f)Acumulador (Accumulator): E um registrador principal e muito popular, pois vrias ina struoes se referem a ele para operar. c g)Unidade de Controle (Control Unit): E o local em que se processa o controle do uxo das informaoes a m de realizar a instruao recebida. c c Exemplo de Funcionamento: Suponha que o Mp foi ler uma instruao na ROM. Os seguintes c passos sero dados: a 1.O endereo de PC posto na via de endereo (que o endereo desta prxima instruao a ser c e c e c o c lida). 2.O sinal de controle da ROM, ativado (pois vamos ler a ROM e no a RAM). e a 3.A instruao lida da ROM, no endereo dado pelo PC (no caso, o endereo n), e lida pela c e c c e via de dados. Estes trs itens correspondem ao ciclo de busca ou fetch. e 4.A instruao carregada e armazenada no IR (Registrador de Instruoes). c e c 5.O PC incrementado para ler a prxima instruao (apontar para n+1). e o c a 6.Inicia-se outro ciclo, o de execuao interna da instruao, auxiliado pela Unidade de Controle e c c pelos registradores, decodicado pela Unidade de Decodicaao e executado pela ALU. c

1.5

O Microcontrolador 8051

O 8051 um microcontrolador rpido com clock t e a pico de 12 MHz sendo que existem verses de at o e 30 MHz, fornecidas por diversos fabricantes, e suas caracter sticas de hardware e software permitem us-lo como um poderoso controlador, sobretudo em sistemas para lgica seq encial e combinatria. a o u o Entre as suas caracter sticas de hardware, podemos destacar: 1)2 Kbytes de memria de programa (Flash) o 2)128 Bytes de memria RAM o 3)Duas portas de I/O de 8 bits 4)Comparador de tenso on-chip a 5)Controlador de interrupao de 6 entradas com estrutura Nesting* c 6)Canal serial UART Full-Duplex programvel a Pgina 14 a

Microprocessadores e Microcontroladores - 1a Unidade - Prof. Vitor Leo Filardi a

7)Dois contadores/temporizadores de 16 bits 8)Modos Power-Down e Power-Idle [*] Nesting o nome que se d ao processo pelo qual uma interrupao pode interromper outra que e a c j estiver sendo atendida, desde que tenha maior prioridade. a Entre as caracter sticas de software podemos destacar a capacidade de executar complexas operaoes c aritmticas e lgicas (multiplicaao, diviso, permuta, e deslocamento de bits,. . . ), trabalhar com bane o c a cos de registradores nominais e inclusive trabalhar com 128 bits individualmente endereaveis na RAM. c H um tempo no muito distante, para realizar um projeto utilizando microcontroladores com a a todas estas funcionalidades, era necessrio agrupar diversas pastilhas com as funoes descritas antea c riormente. Isto tornava prottipo sicamente maior, aumentaria o consumo de energia, diminuindo a o autonomia das baterias e inviabilizando a sua portabilidade que hoje so fundamentais para os sisa temas embarcados. Para compreendermos melhor o 8051 torna-se necessrio conhecer a estrutura interna do microa controlador e estudarmos cada uma delas detalhadamente. Para isso nos dividiremos da seguinte forma: 1)Memria o 2)Circuito de Reset 3)Gerador de Clock 4)Controlador de Interrupao c 5)Conjunto de Instruoes c Com esta diviso car mais claro denirmos todas as instruoes realizadas pelo 8051 e, o funa a c cionamento dos demais componentes associados ao microcontrolador.

1.5.1

Memria o

Vejamos, o diagrama de blocos do 89C2051 na gura 1.3. Neste diagrama de blocos, temos uma noao geral dos elementos internos ao 8051 e de suas ligaoes com o mundo externo. c c A memria de programa do 8051 do tipo Flash ROM (E2PROM), podendo sofrer um ciclo de o e escrita/apagamento de 1000 vezes. Este tipo de memria de programa torna as tarefas de teste e o depuraao dos programas bastante agradveis, pois a antiga etapa de apagar a memria em luz ultrac a o violeta no se faz mais necessria. a a O segmento de programa da memria se inicia no endereo 0000h e pode ocupar todos os 2048 o c bytes da memria, a ATMEL oferece tambm outros modelos de microcontroladores com uma ROM o e interna maior para que possamos utilizar programas maiores. A memria RAM se divide conforme a gura 1.4 o Os registradores de funoes especiais incluem locaoes referentes as portas de I/O, ponteiros do c c ` sistema, registros de interrupao, registros da porta serial, dos temporizadores e registros aritmticos. c e A CPU trata os registros de funoes especiais da mesma forma que trata a RAM, podendo ali c efetuar alteraoes e, o mais importante, enderear algumas dessas posioes como bit. c c c Esta facilidade de enderear bits muito interessante, pois facilita a vida do programador. Vamos c e supor que temos de zerar o quinto bit de uma certa posiao de memria. O mtodo tradicional consiste c o e em fazer uma operaao AND entre o conte do da memria especicada e o numero binrio 11011111, c u o a Pgina 15 a

Microprocessadores e Microcontroladores - 1a Unidade - Prof. Vitor Leo Filardi a

Figura 1.3: Organizaao Interna do 8051 c pois 1 AND X resulta X, logo no alteramos os bits 7, 6, 4, 3, 2, 1 e 0. Mas temos que 0 AND X a resulta 0, e desta forma zeramos o quinto bit. Quando o sistema trabalha com bits, basta dar uma instruao do tipo zere o bit 5 na posiao Ne c c teremos efetuado a operaao, sem nos preocuparmos com os demais bits. c A parte baixa da memria RAM interna (daqui a diante chamaremos apenas de RAM) est dio a vidida em poroes distintas, que incluem 4 bancos de registradores de 8 bytes cada, uma porao de c c 16 bytes cujos bits so individualmente endereaveis pela CPU e o restante da memria, que somente a c o pode ser endereado byte a byte. c Os bancos de registradores so simples posioes de memria RAM que permitem seu endereamento a c o c pelo nome dado a cada registro, alm de seu endereamento pela posiao de memria. e c c o

Pgina 16 a

Microprocessadores e Microcontroladores - 1a Unidade - Prof. Vitor Leo Filardi a

Figura 1.4: Organizaao da RAM Interna do 8051 c A vantagem dos bancos de registradores est em seu uso pelo sistema, como a ndice para endereamento e pela facilidade de lembrana de seu nome, alm de serem amplamente utilizados por c c e compiladores de linguagem de alto n vel. Por exemplo, mais fcil lembrar que um certo dado est no registro R2 do que lembrar que o e a a mesmo est na posiao 02 de memria (Supondo Banco 0). a c o

Pgina 17 a

Microprocessadores e Microcontroladores - 1a Unidade - Prof. Vitor Leo Filardi a

A seleao de um certo banco de registradores se d pelo valor dos bits RS1 e RS0 conforme a c a tabela a seguir: Posiao de Memria c o 1F 1E 1D 1C 1B 1A 19 18 17 16 15 14 13 12 11 10 0F 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00 Nome do Registrador R7 R6 R5 R4 R3 R2 R1 R0 R7 R6 R5 R4 R3 R2 R1 R0 R7 R6 R5 R4 R3 R2 R1 R0 R7 R6 R5 R4 R3 R2 R1 R0 Bit RS1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Bit RS0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 BANCO

Tabela 1.1: Tabela de registradores do banco de memria o Conforme visto anteriormente, temos 16 bytes na RAM cujos bits so individualmente endereaveis a c pela CPU, conforme podemos ver pela tabela abaixo, dispostos da seguinte forma.

Pgina 18 a

Microprocessadores e Microcontroladores - 1a Unidade - Prof. Vitor Leo Filardi a

7F 77 6F 67 5F 57 4F 47 3F 37 2F 27 1F 17 0F 07

Endereos c 7E 7D 76 75 6E 6D 66 65 5E 5D 56 55 4E 4D 46 45 3E 3D 36 35 2E 2D 26 25 1E 1D 16 15 0E 0D 06 05

Individuais dos 7C 7B 7A 74 73 72 6C 6B 6A 64 63 62 5C 5B 5A 54 53 52 4C 4B 4A 44 43 42 3C 3B 3A 34 33 32 2C 2B 2A 24 23 22 1C 1B 1A 14 13 12 0C 0B 0A 04 03 02

bits 79 71 69 61 59 51 49 41 39 31 29 21 19 11 09 01

78 70 68 60 58 50 48 40 38 30 28 20 18 10 08 00

Endereos dos bytes c 2F 2E 2D 2C 2B 2A 29 28 27 26 25 24 23 22 21 20

Tabela 1.2: Endereos de Memria endereavel por byte e bit c o c Temos tambm alguns registros de funoes especiais que tm seus bits endereaveis, sendo que ale c e c guns deles tm, inclusive, um nome mnemnico, para maior facilidade de desenvolvimento de software e o em compiladores. Antes de estudarmos o mapa de memria dos registros de funoes especiais, vamos estudar cada o c um deles em separado para melhor compreenso do funcionamento interno do 89C2051. a Em seguida ao nome de cada registro, temos seu endereo em hexadecimal na RAM: c P1 (90) - Porta P1 P3 (B0) - Porta P3 So posioes da RAM que contm os dados das portas de I/O do micro, caso as mesmas sejam a c e usadas como tal. Uma escrita num desses registros altera automaticamente o conte do presente na sa do chip, e u da uma leitura dos mesmos coloca o estado presente nos pinos (ou nos latchs de sa da, conforme veremos adiante) dentro da posiao desejada. Essa operaao poss c c e vel devido aos buers e latchs de cada porta, que s so ativos na leitura ou escrita das mesmas. o a

Pgina 19 a

Microprocessadores e Microcontroladores - 1a Unidade - Prof. Vitor Leo Filardi a

SP (81) - Stack Pointer E um registrador de 8 bits que contm o endereo de topo de uma pilharealizada com os registradores, e c em que se acumulam endereos de retorno, quando se trabalha com sub-rotinas e interrupoes. Voc c c e pode EMPURRAR (PUSH) dados para a pilha (STACK) ou TIRAR (POP) dados da pilha (STACK). A instruao PUSH incrementa o SP antesde escrever os dados e a instruao POP l o dado c c e da pilha e depois decrementao SP. A pilha formada inicialmente dentro da RAM interna quando e se tem o RESET da mquina, e neste caso o SP carregado com valor 07h. Isto , qualquer dado a e e a ser armazenado na pilha causar primeiro o incremento do SP, isto , ir para 08h, e depois ser a e a a gravado o dado na pilha nesta posiao 08h. Isto , ela estar ocupando a posiao 08h da RAM que c e a c e o registrador R0 do banco 1! Se voc quiser utilizar esse banco e os outros seguintes, melhor, logo e e de nicio, carregar o SP com outro valor de ponteiro, a partir do qual ele ir formar a pilha. a

TH1 (8D) - Timer High 1 TL1 (8B) - Timer Low 1 TH0 (8C) - Timer High 0 TL0 (8A) - Timer Low 0 So os registros de dados dos temporizadores/contadores (1 e 0 respectivamente). Contem os vala ores contados, no caso de usarmos as funoes desse importante perifrico do 89C2051. c e

TCON (88) - Timer Control Register TMOD (89) - Timer Mode Register Registradores de controle e de modo de operaao dos temporizadores/contadores. E nestes regc istros que efetuamos a programaao de como queremos que esses perifricos trabalhem. Vale lembrar c e que o 89C2051 possui dois temporizadores/contadores internos.

PCON (87) - Power Control Este registro permite-nos adaptar o chip para situaoes em que no h processamento, mas no c a a a desejamos perder o conte do das memrias internas do chip, como pode ocorrer numa falha da aliu o mentaao, assim podemos controlar o consumo de energia do sistema. c

SCON (98) - Serial Port Control Register SBUF (99) - Serial Buer No SCON, colocamos os bits que nos permitiro trabalhar com a porta de comunicaao serial cona c forme desejamos, e o SBUF o registro no qual a porta armazenar o dado recebido, ou escrevemos e a o dado a ser transmitido.

IE (A8) - Interrupt Priority IP (B8) - Interrupt Enable Estes registros permitem-nos escolher qual ou quais interrupoes sero habilitadas (ou desabilic a tadas) e qual a prioridade (maior ou menor) de cada uma. Pgina 20 a

Microprocessadores e Microcontroladores - 1a Unidade - Prof. Vitor Leo Filardi a

PSW (D0) - Program Status Word O Program Status Word contm bits que indicam quais as ocorrncias da ALU na ultima operaao e e c lgica e aritmtica, alem de indicar qual banco de registradores foi acessado pela ultima vez. Equivale o e aos Flags dos microprocessadores de 8bits. ACC (E0) - Accumulator B (F0) Equivalem ao acumulador e ao registro B dos microprocessadores de 8 bits. O interessante aqui e que, inclusive os registros da CPU so acess a veis como simples posioes de memria. c o

DPH (83) - Data Pointer High DPL (82) - Data Pointer Low Estes dois registros de 8 bits podem ser referenciados como um registro de 16 bits, chamado DPTR -Data Pointer. Este registro usado quando desejamos fazer endereamento indireto para a leitura de e c constantes armazenadas na memria de programa, para ler ou escrever variveis na memria externa o a o de dados e para desvio para memria de programa de at 64 Kbytes. o e No so todos os registros de funoes especiais que tem seus bits individualmente endereaveis. a a c c Temos na tabela abaixo, os registros e seus bits com seus respectivos endereos. Assim como nos c registros endereaveis (que so bytes), alguns destes bits tambm tem um nome mnemnico. c a e o Este componente possui um poderoso conjunto de instruoes que permite usar diversos modos de c endereamento, admitindo desvios e leitura/escrita em toda a memria. c o No momento oportuno, veremos como acessada uma posiao de memria, e tambm como a CPU e c o e faz para acessar sicamente essas posioes. c

1.5.2

Circuito de Reset

Agora, estudaremos como se processa a operaao de RESET no 89C2051. E atravs desta funao c e c que o chip se prepara para trabalhar, seja ao ligarmos a alimentaao do sistema, ou forosamente. c c Embora o RESET no seja propriamente uma interrupao, muitas vezes assim chamado devido a c e a semelhana de suas aoes, j que o RESET interrompe o processamento e reinicializa o sistema. ` c c a O RESET no 89C2051 ativo quando o pino 1 (RST/VPP) permanecer em n alto por dois ou e vel mais ciclos de maquina. Neste caso, a CPU executa o que chamamos de reset interno, que consiste em preencher seus registros internos com os valores predeterminados, a saber:

a)O PC, o acumulador, o registro B, os ags, o DPTR e todos os registros dos temporizadores/contadores so ZERADOS. a b)No SP colocado o valor 07h. e c)As portas P1 e P3 tero o valor FFh a Pgina 21 a

Microprocessadores e Microcontroladores - 1a Unidade - Prof. Vitor Leo Filardi a

E7 F7 97 B7 EA AF

E6 F6 96 B6

Endereos Individuais dos bits c E5 E4 E3 E2 F5 F4 F3 F2 95 94 93 92 B5 B4 B3 B2 ES AC PS BC ET1 1 AB PT1 1 BB RS0 D3 TB8 9B IE1 8B EX1 AA PX1 BA OV D2 RB8 9A IT1 8A

E1 F1 91 B1 ET0 0 A9 PT0 0 B9

E0 F0 90 B0 EX0 0 A8 PX0 0 B8 P D0

Registradores ACC B P1 P3

IE

IP

CY D7 SM1 9F TF1 8F

AC D6 SM2 9E TR1 8E

FD D5 SM3 9D TF0 8D

RS1 D4 REN 9C TR0 8C

PSW

T1 99 IE0 89

R1 98 IT0 88

SCON

TCON

Tabela 1.3: Mnemnicos de cada bit o d)O SBUF estar com conte do indeterminado e o registro de controle da porta serial SCON a u ser zerado. a e)O registro PCON ter apenas seu bit mais signicativo zerado. a f)Os registros de controle de interrupao (IE e IP) tero ambos o valor binrio XXX00000, c a a onde X = irrelevante (pode ser 0 ou 1).

A RAM interna no afetada pelo reset forado, sendo que ao ligar (power-up), o seu valor a e c e aleatrio, mas pode ser lido por software. o Geralmente, ao ligarmos o sistema, desejamos que o mesmo execute uma seqncia de funoes de ue c inicializaao, dividida em dois blocos, inicializaao do sistema bsico, que sempre ocorre no RESET, c c a e a inicializaao do sistema montado, que prepara o equipamento para a operaao para o qual foi c c projetado, por exemplo, ajustando os contadores, as portas entre outros. Embora estas funoes sejam executadas pelo software que comea a rodar aps o RESET, no enc c o dereo 0000h da memria de programa, costumamos cham-lo de rotina de inicializaao. c o a c O 89C2051 pode ser automaticamente resetado ao ligar a fonte, pela colocaao de um resistor de c 8,2 k entre seu pino seu pino de RESET e o terra, e pela colocaao de um capacitor (preferencialc mente de tntalo) de 10 F entre o pino e o +Vcc, o que garante que este pino estar em n alto a a vel por mais de 2 ciclos de maquina aps a ligaao da alimentaao, pois o capacitor comporta-se como o c c um curto-circuito, provocando uma circulaao de corrente pelo resistor, que ter uma tenso inicial c a a da ordem de +Vcc. Aps algum tempo, o capacitor estar carregadoe no circular mais corrente na resistncia, e o a a a e desta forma a diferena de potencial sobre a mesma ser nula, garantindo que o pino RST/VPP esteja c a Pgina 22 a

Microprocessadores e Microcontroladores - 1a Unidade - Prof. Vitor Leo Filardi a

Figura 1.5: Mapa de Registradores e Valores de Reset do 8051 no n 0. vel Na eventualidade de necessitarmos provocar o reset (reset forado), basta ento colocarmos uma c a chave de contato momentneo NA (push-botton NA) em paralelo com o capacitor, e ao pressiona-la a e solt-la teremos provocado uma nova operaao de reset. a c Na entrada, o chip possui um Schmidt Trigger para garantir rejeiao a ru c do, sendo que a sa do da mesmo amostrada a cada ciclo de maquina pelo hardware, para ver a ocorrncia de reset. e e Durante o reset, o n lgico dos pinos indeterminado, indo a n lgico 1 ?aps? a execuao vel o e vel o o c da rotina interna de reset, de tal forma que devemos prever esta situaao no projeto do hardware, c para evitar acionamento indesejvel de qualquer perifrico externo. a e

Pgina 23 a

Microprocessadores e Microcontroladores - 1a Unidade - Prof. Vitor Leo Filardi a

Figura 1.6: Circuito de reset

1.5.3

O Gerador de Clock

Temos duas possibilidades para excitar o sistema: clock externo ou clock interno. O uso do clock externo ajuda a economizar componentes quando do uso do sistema junto de outros que j possuam um sinal TTL que possa ser aproveitado, como por exemplo, para trabalho junto a a contadores e outros equipamentos seq enciais rpidos. u a Sua implementaao simples, bastando desconectar o pino 4 (XTAL2) (deixar em aberto), e injec e tar o sinal externo no pino 5 (XTAL1), que desta forma ir diretamente para o sistema de controle e a temporizaao do chip (conforme a gura 1.7). c

Figura 1.7: Clock Externo para o 8051 Se utilizarmos o clock gerado pelo oscilador interno, deveremos intercalar aos pinos XTAL1 e XTAL2 um cristal ou um ltro cermico (o cristal e o mais indicado) na freqncia desejada, e dois a ue capacitores de realimentaao conforme a gura 1.8 c Os valores recomendados dos capacitores so os seguintes: a 40 pF +/- 10 pF para ltro ressonante de cermica. a 30 pF +/- 10 pF para cristal oscilador. Em qualquer caso, a freqncia de oscilaao m ue c nima de 3.5 MHz, a mxima pode ser de 24 e e a MHz conforme o modelo utilizado. Existem atualmente verses de outros fabricantes que trabalham o com freqncia de 30 MHz e superiores, sendo que o seu custo tambm relativamente superior. ue e e Pgina 24 a

Microprocessadores e Microcontroladores - 1a Unidade - Prof. Vitor Leo Filardi a

Figura 1.8: Oscilador Interno Quanto ao layout do circuito deve-se destacar o fato de que as ligaoes devem ser mantidas as c mais curtas poss veis, para evitar capacitncias parasitas que venham a interferir no funcionamento a do circuito, assim como uma boa malha de terra deve ser providenciada em toda a placa.

Figura 1.9: Layout Recomendado para o Oscilador Interno

1.5.4

Interrupo ca

A interrupao , provavelmente, uma das mais importantes ferramentas nos sistemas de controle c e microprocessados, pois o processo pelo qual a execuao de um programa interrompida (ou no), e c e a de acordo com as necessidades de eventos externos ou internos. Temos dessa forma, que existem trs fontes de interrupao: a interrupao por Software (instruao), e c c c a pedida por perifrico externo e a interrupao pedida por perifrico interno (timer/counter, porta e c e serial, etc. . .). A interrupao um sinal, gerado de uma das trs formas acima descritas, que pede para a CPU c e e parar o processamento corrente e efetuar outro, referente a interrupao solicitada, desde que a mesma ` c esteja habilitada e possa ser aceita. A vantagem da interrupao est na simplicaao do Hardware, pois no precisamos fazer com que c a c a nosso sistema que monitorando o funcionamento de certos dispositivos perifricos. Por exemplo, nos e computadores didticos simples, e mesmo em alguns sistemas industriais, o teclado um perifrico a e e que lido constantemente pelo monitor do sistema, para vericar se alguma tecla foi ou no apertada. e a Pgina 25 a

Microprocessadores e Microcontroladores - 1a Unidade - Prof. Vitor Leo Filardi a

J nos computadores da linha IBM-PC, isso no ocorre, pois o teclado um perifrico inteligente, que a a e e possui um microcontrolador interno que, caso uma tecla seja pressionada, pede uma interrupao ao c microprocessador para poder enviar o cdigo da tecla pressionada para o mesmo. o Muitas vezes as entradas de interrupao so as principais entradas do sistema. Para o perfeito c a entendimento das interrupoes, devemos antes relembrar os seguintes conceitos: c a)Mascaramento E a possibilidade de impedirmos, geralmente por Software, que uma certa interrupao seja atendida. c Existem sistemas que possuem interrupoes no-mascarveis, ou seja, jamais podem ser desabilitadas c a a por Software. b)Prioridades No caso do sistema poder atender mais de uma interrupao, devemos ter uma tabela de seqncia c ue de prioridades, para que o microprocessador saiba como agir, no caso de duas ou mais interrupoes c chegarem simultaneamente. c)Interrupao Vetorada e No Vetorada c a As interrupoes vetoradas so aquelas que possuem o vetor de interrupao (endereo de in c a c c cio da interrupao) xo, e no pode ser mudado pelo usurio. E o caso do 8051, onde cada vetor de inc a a terrupao j est denido pelo fabricante. As interrupoes no vetoradas so aquelas nas quais os c a a c a a endereos de desvios do programa so escolhidos pelo programador, como o caso do COP 68705.U3 c a e da Motorola, por exemplo. d)Tipo de Ativaao das Interrupoes c c Existem trs maneiras pelas quais um sistema pode reconhecer um sinal lgico: e o Pelo n (alto ou baixo). vel Pela borda de subida ou de descida. Pela soma de borda (subida ou descida) e um n correspondente. vel

Estudo das Interupoes no 8051 c 0 8051 pode ser interrompido de 5 maneiras: 1)Pela interrupao externa INTO\; c 2)Pela interrupao externa INT1\; c 3)Pelo timer/counter interno TIMER0; 4)Pelo timer/counter interno TIMER1; 5)Pelo canal de comunicaao serial. c O canal serial e as interrupoes externas usam alguns pinos da porta trs, conforme a seguir: c e 1.Porta 3, pino 0 = Receptor de dados seriais (RX); Pgina 26 a

Microprocessadores e Microcontroladores - 1a Unidade - Prof. Vitor Leo Filardi a

2.Porta 3, pino 1 = Transmissor de dados seriais (TX); 3.Porta 3, pino 2 = Entrada da interrupao externa INTO\;. c 4.Porta 3, pino 3 = Entrada da interrupao externa INT1\. c OBSERVACAO: Dessa forma, se usarmos algumas dessas interrupoes, devemos tratar a porta c trs como porta de I/O apenas bit endereavel. e c No 8051, cada interrupao pode ser individualmente habilitada ou no, e podemos tambm desabilc a e itar todas de uma s vez. o As interrupoes podem ter apenas dois n c veis de prioridade, e dessa forma, se duas ou mais ocorrerem ao mesmo tempo (algo praticamenteimposs vel), a de maior prioridade ser atendida primeiro. a Caso uma interrupao de prioridade 0 (menor) esteja em andamento, uma interrupao de prioric c dade 1 (maior) interromper aquela e ser atendida. Ao seu m, a CPU retorna ao atendimento da a a interrupao de n 0 que foi interrompida. c vel Este Microcontrolador possui ainda um processo de prioridade interno, para o caso de duas interrupoes de mesma prioridade estarem aguardando atendimento. c Neste caso, esta a ordem de atendimento das interrupoes (IP): e c 1)Interrupao Externa 0 Maior prioridade Timer 0 c 2)Interrupao Externa 1 Timer 1 c Se a interrupao que chegar for de n c vel igual ou menor da que j est sendo atendida, car a a a aguardando o m desta para ser servida. Quando atende uma interrupao, 0 8051 salva no Stack o valor do PC, mas no salva o acuc a mulador e o registro Program Status Word (PSW). Os mesmos devem ser salvos e devolvidos pela rotina de interrupao, se assim for necessrio, assim como qualquer outro registro importante. c a

Endereos de Desvio c Neste Microcontrolador, cada interrupao desviada para um certo endereo xo, no qual comea c e c c a nossa rotina de interrupao. c So os seguintes os endereos de desvio: a c 1.INT0\ 03h 2.Timer/Counter 0 0Bh 3.INT1\ 13h 4.Timer/Counter 1 1Bh Como vimos, o Reset inicia em 00h, e desta forma, por exemplo, se usarmos todas as interrupoes c teremos que usar os trs Bytes dispon e veis para o reset, num desvio incondicional para outra parte da memria, onde realmente teria in o programa. o cio Pgina 27 a

Microprocessadores e Microcontroladores - 1a Unidade - Prof. Vitor Leo Filardi a

As interrupoes INT0\, Timer/counter 0, INT1\ e Timer/counter 1 possuem apenas 8 Bytes c dispon veis antes de sobrepor se com a prxima, e desta forma, provavelmente, deveremos efetuar um o desvio para outra parte da memria, sendo a unica exceao a interrupao do canal serial, que por ser o c c a ultima no se sobrepe a nenhuma outra. Temos na gura 1.10, um mapa parcial da memria de a o o programa com destaque para os endereos de desvio de cada interrupao. c c
00h 01h 02h 03h 04h 05h 06h . . . 0Ah 0Bh 0Ch 0Dh . . . 11h 12h 13h 14h . . . 1Ah 1Bh 1Ch 1Dh . . . 22h 23h 24h 25h Inicio

End. de INT0\

Diferena de 8 bits c End. do Timer/Counter 0

End. de INT1\

End. do Timer/Counter 1

End. do Canal Serial

Figura 1.10: Mapa parcial da memria de programa do 8051 com destaque ao in das interupoes o cio c

Pgina 28 a

Microprocessadores e Microcontroladores - 1a Unidade - Prof. Vitor Leo Filardi a

1.5.5

Registro de Controle das Interrupoes c

O 8051 possui dois registro de 8 bits cada um, na sua memria RAM mais alta (Registros de o Funoes especiais-SFR) que servem para habilitaao ou no das interrupoes, e indica para a CPU a c c a c prioridade de cada uma delas. Sempre que uma interrupao requisitada, um certo bit de controle dessa interrupao ser setado c e c a e assim permancer at que essa interrupao seja atendida. a e c Exceao a esta regra a interrupao serial, que deve ter seu bit de controle resetado c e e c pelo Software. O primeiro de todos estes registros o IE que tem por funao indicar qual das interrupoes est e c c a ou no habilitada.Vejamos a gura 1.11 a Bit 7 EA ... ET1 Bit 0 EX0

ES

EXT1

ET0

Figura 1.11: Resgistro IE EA - Enable All: Localizado no bit n mero 7, signica habilitar todos. Quando o em n 0, u vel desabilita todas as interrupoes de forma geral, independente de qualquer outro controle. Se em n c vel 1, permite-nos escolher qual interrupao em particular ser habilitada, em funao dos bits de controle c a c individuais a seguir. ES: Enable Serial: Localiza-se no bit 4, signica habilitar a serial, quando em n vel lgico 1, o libera a interrupao pedida pelo canal serial. c ET1 - Enable Timer 1: Localiza-se no bit 3, signica habilitar a interrupao do timer 1 e quando c em n lgico 1, libera a interrupao pedida pelo Timer/Counter 1. vel o c EX1 - Enable External 1: Localiza-se no bit 2, signica habilitar a interrupao externa (INT1\ c e quando em n lgico 1, libera a interrupao pedida pelo dispositivo externo ligado a INT1\. vel o c ET0 - Enable Timer 0: Localiza-se no bit 1, signica habilitar a interrupao do timer 0 e quando c em n lgico 1, libera a interrupao pedida pelo Timer/Counter 0. vel o c EX1 - Enable External 0: Localiza-se no bit 0, signica habilitar a interrupao externa (INT0\ c e quando em n lgico 1, libera a interrupao pedida pelo dispositivo externo ligado a INT0\. vel o c Prioridade Natural das interrupoes c 1.INT0\ 2.TIMER/COUNTER0 3.INT1\ 4.TIMER/COUNTER1 5.Serial Veremos agora o registro IP, nele xaremos qual o n de prioridade de nossas interrupoes. Vevel c jamos o formato deste registro. PS: Priority Serial: Localiza-se no bit 4, signica prioridade serial, quando em n lgico 1, vel o indica prioridade alta a interrupao gerada pelo canal serial, se a mesma estiver habilidade. Quando ` c Pgina 29 a

Microprocessadores e Microcontroladores - 1a Unidade - Prof. Vitor Leo Filardi a

Bit 7 X

PS

... PT1

PX1

PT0

Bit 0 PX0

Figura 1.12: Resgistro IP em n 0, indica prioridade baixa. vel PT1 - Priority Timer 1: Localiza-se no bit 3, signica prioridade do timer 1 e quando em n lgico 1, indica prioridade alta a interrupao gerada pelo Timer/Counter 1, se a mesma estiver vel o ` c habilidade. Quando em n 0, indica prioridade baixa. vel PX1 - Priority External 1: Localiza-se no bit 2, signica habilitar a interrupao externa (INT1\ c e quando em n lgico 1, indica prioridade alta a interrupao externa 1, se a mesma estiver habilivel o ` c dade. Quando em n 0, indica prioridade baixa. vel PT0 - Priority Timer 0: Localiza-se no bit 1, signica prioridade do timer 0 e quando em n lgico 1, indica prioridade alta a interrupao gerada pelo Timer/Counter 0, se a mesma estiver vel o ` c habilidade. Quando em n 0, indica prioridade baixa. vel PX1 - Priority External 0: Localiza-se no bit 0, signica habilitar a interrupao externa (INT0\ c e quando em n lgico 1, indica prioridade alta a interrupao externa 0, se a mesma estiver habilivel o ` c dade. Quando em n 0, indica prioridade baixa. vel

Pgina 30 a

Microprocessadores e Microcontroladores - 1a Unidade - Prof. Vitor Leo Filardi a

Veremos como o registrador PSW (Program Status Word) e Lembrando que neste registrador representa o status da ultima operaao realizada no acumulador, c vejamos a seguinte gura 1.13 Bit 7 PSW.7 CY Bit 6 PSW.6 AC Bit 5 PSW.5 F0 Bit 4 PSW.4 RS1 Bit 3 PSW.3 RS0 Bit 2 PSW.2 OV Bit 1 PSW.1 Bit 0 PSW.0 P

Figura 1.13: Resgistros bit a bit do PSW CY - Carry E um indicador de vai umem operaoes aritmticas: vai para 1 quando uma soma c e com A estourana sua capacidade (isto , o stimo bit ou ACC.7 vai um para uma prxima casa que e e o no existe; seria um nono bit, que um estouroda conta). Vai para 1se existir um emprstimo do a e e 7 bit no caso de uma subtraao com o acumulador. c Por exemplo: Se ACC=FFh e aps isto aparece a instruao: acc A,#01h: A soma de FFh com 01h far com que o c a o resultado de A seja 00h e vai 1para o carry, isto ,CY setado no registrador PSW. e e O carry CYtambm utilizado como se fosse o acumulador para um s bit. Existem vrias e e o a instruoes booleanas que usam o C, isto , o carry, como operando, em que se posiciona o resultado c e das operaoes. Por exemplo: c anl C,ACC.0: Executa um AND booleano entre o carry e o bit ACC.0. O resultado da operaao c ca em C(ele equivalente ao acumulador para operaao com bytes), isto , o resultado volta para e c e ele mesmo. AC - Auxiliary Carry E um indicador de vai umentre os quatro primeiros bit do acumulador, isto , o vai umde um niblepara outro nibledo acumulador. e e Isto muito util em aritmtica BCD em que os nibbles que correspodem a 4 bits so representados e e a por um n mero codicado em binrio, mas que representa um decimal de 0 a 9. u a Flag 0 E um bit registrador de uso geral, no tem nenhuma funao especial e no indica nada.(literalmente a c a sobroudentro do PSW, sem funao) c RS1 e RS0 So dois bits que fazem mudar o banco de registradores a que se referem os nomes a R0 a R7, utilizados nas instruoes que trabalham com esses registradores (por ex.: mov A,R0 = move c para o Ao conte do de R0; mas qual R0? Os bits RS0 e RS1 que dizem a qual R0 de qual banco u e est se referindo).Vejamos na tabela 1.4 a RS1 0 0 1 1 RS0 0 1 0 1 BANCO Banco 0 Banco 1 Banco 2 Banco 3

Tabela 1.4: Seleao do banco de registradores pelos bit do PSW c Quando se d o reset da mquina, ele aponta para o banco 0, isto , as instruoes que se referirem a a e c a R0,R1,. . .R7 esto se referindo ao Rndo banco O. Podemos utilizar a mudana de bancos e usar os a c mesmos apelidos de R0 a R7 para o outro banco, ou usar o endereo absoluto de cada registrador. Em c geral, deixa-se que o microcontrolador aponte para o banco 0 direto e os outros registradores utilizam os endereos absolutos deles, s para no ter i trabalho de mudar toda hora de banco. Isto depende c o a do gosto do programador.Quando se resetaa mquina, os bits RS1 e RS0 cam em 00h, a isto , esto se referindo ao banco 0. e a

Pgina 31 a

Microprocessadores e Microcontroladores - 1a Unidade - Prof. Vitor Leo Filardi a

OV E um bit que vai para 1 quando, aps um adiao ou subtraao, acontece um estouroda o c c conta. Resultados maiores que +127 ou menores que -128 setaroo bit OV. Paor exemplo: a 0F +7F 8E e OV +15 +127 +142

Note que 8E -116, que no a resposta desejada +142, por isto OV setado. e a e e PSW.1 No um bit dispon ao usurio. a e vel a P - Parity Bit que setadoem 1quando a paridade do conte do do acumulador par. e u e Por exemplo, seja A, contendo os seguintes dados: Observaao: Paridade o resultado par ou c e mpar do somatrio binrio do acumulador. o a A= N de 1s 1001 N de 1s 1001 = Impar 1110 = Impar 1111 P=1

A=

P=0

E util quando se trabalha com o canal serial, pois ele muitas vezes necessita desta informaao. Outra c maneira de saber se P 1ou 0, pensar que a soma dos bits 1do acumulador mais o e e Ptem sempre que ser par.

1.5.6

Tempo para Atendimento das Interrupoes c

Um certo tempo decorrer entre o reconhecimento da interrupao, alteraoes nos registros internos a c c e efetivo desvio para o endereo. O melhor caso ocorre quando uma interrupao chega pouco antes c c dos ultimos 14 per odos de clock, que correspondam ao nal da instruao; a prxima instruao no c o c a seja multiplicaao ou diviso; e temois mais 24 per c a odos de clock para a chamada da sub-rotina. Estes tempos incorrem em atraso de 38 per odos de clock ou 3.2 s para um clock de 12 MHz. O pior caso ocorre se a interrupao chegar aps os 14 ultimos per c o odos da instruao em vigor, e c se a prxima instruao for multiplicaao ou diviso, que consomem 48 per o c c a odos de clock, que resulta num atraso de 86 per odos, ou 7.2 s para clock de 12 MHz.

1.5.7

Ajuste das Interrupoes Externas para serem Ativas em N c vel ou Transio ca

Podemos ajustar as interrupoes externas para serem detectadas por transiao de 1 para 0, ou pelo c c n 0. Os bits de controle das interrupoes externas esto no registro TCON (Controle do Timer), vel c a e os que nos interessam so os quadro bits menos signicativos. a Bit 7 ... IE1 IT1 Bit 0 IT0

IE0

Figura 1.14: Resgistro TCON com os bits relevantes as interrupoes ` c IT0 - Interrupao Externa 0 (INT0\) : Localizado no bit 0 do TCON, indica qual o processo c para a chamada da interrupao INT0\ ser aceita na transiao de 1 para 0 do n c a c vel pino, devendo permanecer em 0 por pelo menos 12 per odos de clock. Se em n 0, INT0\ ser aceita apenas pelo vel a n 0 presente no pino. vel Pgina 32 a

Microprocessadores e Microcontroladores - 1a Unidade - Prof. Vitor Leo Filardi a

IE0 - Habilitaao da Interrupao Externa 0 (INT0\): Bit para o hardware de controle da c c interrupao INT0\, localiza-se no bit 1. Este bit setado pelo Hardware interno quando for detecc e tada uma transiao de 1 para 0 no pino INT0\. Tem por funao sinalizar internamente o pedido da c c resetado logo que a interrupao seja atendida. interrupao. E c c IT1 - Interrupao Externa 1 (INT1\) : Localizado no bit 2 do TCON, indica qual o processo c para a chamada da interrupao INT1\ ser aceita na transiao de 1 para 0 do n c a c vel pino, devendo permanecer em 0 por pelo menos 12 per odos de clock. Se em n 0, INT1\ ser aceita apenas pelo vel a n 0 presente no pino. vel IE1 - Habilitaao da Interrupao Externa 1 (INT1\): Bit para o hardware de controle da c c interrupao INT1\, localiza-se no bit 3. Este bit setado pelo Hardware interno quando for detecc e tada uma transiao de 1 para 0 no pino INT1\. Tem por funao sinalizar internamente o pedido da c c interrupao. E resetado logo que a interrupao seja atendida. c c Como vimos, se a interrupao for ativa pela transiao, a esta que a CPU dever detectar para atenc c e a der a interrupao, por isso temos que esperar um per ` c odo de 12 ciclos de clock, porque na amostragem anterior, a CPU detectou n 1 e agora devemos esperar que a mesma detecte o n 0. vel vel J na detecao por n a c vel, a entrada dever estar em n a vel 0, apenas durante a amostragem que ocorre ao m de cada instruao executada. O interessante que neste caso, o pino pode permanecer c e em n 0 durante a execuao da rotina de interrupao, mas deve estar em n 1 ao m desta, seno vel c c vel a o sistema atender novamente a interrupao, visto que na amostragem da ultima instruao da rotina, a ` c c encontrar este pino em n adequado para a interrupao, o que no ocorre no caso anterior, pois l a vel c a a do n 1 para o O. a CPU deve sentir a TRANSICAO vel

1.5.8

Hardware para expandir as possibilidade de Interrupo Externa ca

Na gura 1.15, temos uma porta AND de 8 entradas na qual todas as NOVAS 8 entradas de interrupao estaro ligadas. Estas 8 entradas tambm esto ligadas a um lacth, por exemplo o 74LS374. c a e a A sa desta porta ser ligada diretamente ao pino de interrupao externa INT0\, por exemplo, da a c e tambm a um inversor, e da ao gatedo lacth, e as sa e das do lacth esto ligadas a porta P1. a ` Caso ocorra uma transiao de 1 para 0 na porta AND, teremos sua sa indo para o n c da vel 0 tambm, ocasionando o pedido de interrupao e travandoo estado dos pinos I1 a I8 no lacth.cc e c No momento do atendimento da interrupao, o valor a ser lido na porta P1 conter o estado dos c a bits que geraram a interrupao, e uma rotina vericar qual bit est em 0. Este bit responsvel pelo c a a e a pedido de interrupao, e basta ao Software encarregar-se de executar a rotina apropriada. c

Pgina 33 a

Microprocessadores e Microcontroladores - 1a Unidade - Prof. Vitor Leo Filardi a


+Vcc
( ( (

I8

I1

Figura 1.15: Detalhe do Hardware para expandir o n mero de interrupoes. u c

1.5.9

Exerc cios Resolvidos

Questo 1 No microcontrolador da fam 8051, programar as palavras IE (Interrupt Enable), a lia IP (Interrupt Priority) e TCON (Timer Control) de modo a: a)INT1\ seja habilitado na mxima prioridade. a b)Timer/Counter1 seja habilitado em segunda prioridade. c)INT0\ seja habilitado na terceira prioridade. d)Serial e Timer/Counter0 no habilitadas. a Passo a):Interrupoes liberadas pela palavra IE c INT0,INT1 e Timer1 liberados Bit EA - Enable All ligado Timer0 e Serial desativadas EA 1 0 0 ES 0 ET1 1 EX1 1 ET0 0 EX0 1

Assim carrega-se o valor 8Dh para a palavra IE atravs do seguinte comando: e MOV IE,8Dh Pbsso b):Prioridade programadas pela palavra IP INT1 e Timer1: alta prioridade INT0: baixa prioridade Pgina 34 a



&'



$% 

"#

! (





7430

INT0\

8051

D0 D1 D2 D3 D4 D5 D6 D7

Q0 Q1 74LS374 Q2 Q3 Q4 Q5 Q6 Q7

P1.0

P1.7

Microprocessadores e Microcontroladores - 1a Unidade - Prof. Vitor Leo Filardi a

PS X

PT1 1

PX1 1

PT0 X

PX0 0

Questo 2 Obter a outra representaao do endereo do bit 5Dh? (Ver tabela 1.2) Soluao: a c c c Transformar o endereo do bit de hexadecimal para decimal 5 16 1 + 13 160 = 9310 c Dividir o valor do endereo em decimal (93 10 ) por 8 93/8, obtendo o quociente q=11 10 e o c resto r=510 Transformar o quociente (q) e o resto (r) em hexadecimal: q=11 10 =Bh e r=510 =5h. Aplicar a frmula: 5Dh = [20h+Bh]h.5=2Bh.5, ou seja, o endereo do bit 5 igual a 2Bh.5. o c e Para transformar o endereo de um bit da representaao 2Xh.Y para ZWh(2Xh.YZWh),basta c c seguir o procedimento: Obter o quociente e o resto. O quociente (q) obtido subtraindo 2Xh de 20h e transformando-o e em decimal, e o resto obtido atravs do n mero aps o ponto (.) de tal representaao. Multie e u o c plicando o quociente em decimal por 8 e somando com o resto em decimal, obtm-se o endereo e c em decimal. O valor do endereo em decimal deve ser transformado para hexadecimal. c Questo 3 Obter a outra representaao do endereo do bit 2Ah.3? (Ver tabela 1.2) a c c Obter o quociente (q) e o resto (r): q= 2Ah - 20h = Ah e r=3h. Transformar q e r de hexadecimal para decimal: q=Ah = 1010 e r 3h = 310 Multiplicar o quociente por 8 e somar o resultado com o resto em decimal: 10*8+3=83 10 Transformar o endereo de decimal para hexadecimal: 83 10 = 5 161 + 3 160 =53h c Questo 4 Dena o tipo de endereamento de cada uma das instruoes dadas a seguir: a c c a)ADDC A,20h Resposta: Endereamento direto. c b)MOV @R0,55h Resposta: Endereamento combinado (misto), formado pelos endereamentos direto e indireto ou c c indexados por registrador. c)MOV R7,6Ah Resposta: Endereamento indireto, pois R7 (Rn) um registrador indexado (mnemnico). c e o Questo 6 Crie um programa que faa a operaao OR-Exclusivo entre o conte do do acumulador a c c u (A) e a constante 33h. O resultado deve ser armazenado no conte do do registrador R5 do segundo u banco de registradores. Resposta: XRL A,#33h (A)(A)or-ex #33h MOV PSW,#08h (PSW)#08h=#00001000 = (RS1)=0 e (RS0)=1= dene o segundo banco de registradores (B1). MOV R5,A Armazena, no conte do do registrador R5 do segundo banco de regu istradores, o conte do do acumulador A. u

Pgina 35 a

Microprocessadores e Microcontroladores - 1a Unidade - Prof. Vitor Leo Filardi a

1.5.10

Conjunto de Instruoes c
Opcode Bytes Clocks Flags Afetados CY ? ? ? ? ? ? ? AC ? ? ? ? ? ? ? OV ? ? ? ? ? ? ?

Instruoes Aritmticas c e Mnemnico o ADD A,Rn ADD A,Direto ADD A,@Ri ADD A,DADO ADDC A,Rn ADDC A,DIRETO ADDC A,@Ri Funao c Soma o conte do de Rn ao acumuu lador Soma o conte do da posiao de u c memria ao acumulador o Soma o conte do da RAM enu dereada por Ri ao acumulador c Soma o dado ao acumulador Soma o conte do de Rn e o carry ao u acumulador Soma o conte do da posiao de u c memria e o carry o acumulador o Soma o conte do da RAM enu dereada por Ri e o carry ao acuc mulador Soma o dado e o carry ao acumulador Subtrai o conte do de Rn e o Boru row do acumulador Subtrai o conte do da posiao de u c memria e o Borrow do acumulador o Subtrai o conte do da RAM enu dereada por Ri e o Borrow do acuc mulador Subtrai o dado e o Borrow do acumulador Soma 1 ao acumulador Soma 1 ao conte do de Rn u Soma 1 a posiao de memria c o Soma 1 a RAM endereada por Ri c Subtrai 1 do acumulador Subtrai 1 do conte do de Rn u Subtrai 1 da posiao de memria c o Subtrai 1 da RAM endereada por c Ri Soma 1 ao registrador DPTR Multiplica A e B resultado: BA Divide A e B resultado: A inteiro B resto Ajuste decimal do acumulador

0010/1 abc 25

B H

1 2 1 2 1 2 1

12 12 12 12 12 12 12

0010/011iB 24 0011/1 abc 35 H B H

0011/011iB

ADDC A,#DADO SUBB A,Rn SUBB A,DIRETO SUBB A,@Ri

34 1001/1 abc 95

H B H

2 1 2 1

12 12 12 12

? ? ? ?

? ? ? ?

? ? ? ?

1001/011iB

SUBB A,#DADO INC A INC Rn INC DIRETO INC @Ri DEC A DEC Rn DEC DIRETO DEC @Ri INC DPTR MUL AB DIC AB DA A

94

2 1 1 2 1 1 1 2 1 1 1 1 1

12 12 12 12 12 12 12 12 12 24 48 48 12

? 0 0 ?

? ? ?

? -

04 H 0000/1 B abc 05 H 0000/011 B i 14 H 0001/1 B abc 15 H 0001/011 B i A3 H A4 H 84 H D4 H

? 0 -

Pgina 36 a

Microprocessadores e Microcontroladores - 1a Unidade - Prof. Vitor Leo Filardi a

Operaoes Lgicas c o Mnemnico o ANL A,Rn ANL A,DIRETO ANL A,@Ri ANL A,#DADO ANL DIRETO,A ANL DIRETO,#DADO ORL A,Rn ORL A,DIRETO ORL A,@Ri ORL A,#DADO ORL DIRETO,A ORL DIRETO,#DADO XRL A,Rn XRL A,Direto XRL A,@Ri XRL A,#DADO XRL DIRETO,A XRL DIRETO,#DADO CRL A CPL A RL A RL C RR A RRC A SWAP A Funao c eentre registro e acumulador eentre memria e acumulador o eentre RAM indireta e acumulador eentre dado e acumulador eentre acumulador e memria. o Resultado na memria o eentre dado e memria o ouentre registro e acumulador ouentre memria e acumulador o ouentre RAM indireta e acumulador ouentre DADO e acumulador ouentre acumulador e memria. o Resultado na memria o ouentre DADO e memria o ou exclusivoentre registro e acumulador ou exclusivoentre memria e acuo mulador ou exclusivo? entre RAM indireta e acumulador ou exclusivoentre dado e acumulador ou exclusivoentre acumulador e memria. Resultado na memria o o ou exclusivoentre dado e memria o Faz A = 0 Inverte o estado dos bits do acumulador Desloca o acumulador a esquerda ` Desloca o acumulador a esquerda ` atravs do carry e Desloca acumulador a direita ` Desloca acumulador a direta atravs ` e do carry Troca os nibbles do acumulador. Equivale a 4 RR A ou 4 RL A Opcode Bytes Clocks Flags Afetados CY ? ? AC OV -

0101/1 B abc 55 H 0101/011iB 54 52 53 H H H

1 2 1 2 2 3 1 2 1 2 2 3 1 2 1 2 2 3 1 1 1 1 1 1 1

12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12

0100/1 B abc 45 H 0100/011iB 44 42 43 0110/1 abc 65 H H H B H

0110/011iB 64 62 63 E4 F4 23 33 03 13 C4 H H H H H H H H H H

Pgina 37 a

Microprocessadores e Microcontroladores - 1a Unidade - Prof. Vitor Leo Filardi a

Operaoes de Transferncia de Dados c e

Mnemnico o MOV A,Rn MOV A,Direto MOV A,@Ri MOV A,#DADO MOV Rn,A MOV Rn,Direto MOV Rn,#DADO MOV Direto,A MOV Direto,Rn MOV Direto1,Direto2 MOV Direto,@Ri MOV Direto,#DADO MOV @Ri,A MOV @Ri,Direto

Funao c Move o registro para o acumulador Move memria para o acumulador o Move RAM endereada por Ri ao c acumulador Move o dado para o acumulador Move o acumulador para o registro Move memria para o registro o Move o dado para o registro Move acumulador para a memria o Move o registro para a memria o Mova o conte do da memria Diu o reta2 para Direta1 Move RAM endereada por Ri para c a memria o Move o dado para a memria o Move o acumulador para a RAM endereada por Ri c Move a memria para a RAM eno dereada por Ri c Move o dado para a RAM indireta

Opcode

Bytes

Clocks

Flags Afetados CY AC OV -

1110/1 B abc E5 H 1110/0111B 74 1111/1 abc 1010/1 abc 0111/1 abc F5 1000/1 abc 85 H B B B H B H

1 2 1 2 1 2 2 2 2 3 2 3 1 2 2 3 1

12 12 12 12 12 24 12 12 24 24 24 24 12 24 12 24 24

1000/011iB 75 H

1111/011iB 1010/011iB 0111/011iB 90 93 H H

MOV @Ri,#DADO MOV Move dado de 16 bits para o DPTR DPTR,#DADO16 MOVC A, @A + Soma A + DPTR obtendo um enDPTR dereo de 16 bits na memria de proc o grama. Carrega acumulador com esta memria o MOVC A, Idem ao anterior, mas soma A + PC @A+PC MOVX A,@Ri Move RAM externa (End. 8 bits) para o acumulador MOVX A, Move RAM externa (End. 16 bits) @DPTR para o acumulador MOVX @Ri, A Move o acumulador para a RAM externa (End. 8 bits) MOVX @DPTR, Move o acumulador para a RAM exA terna (End. 16 bits)

83

1 1 1 1 1

24 24 24 24 24

1110/001iB E0 H

1111/001iB F0 H

OBS: Continua na prxima pgina . . . o a Pgina 38 a

Microprocessadores e Microcontroladores - 1a Unidade - Prof. Vitor Leo Filardi a

Mnemnico o PUSH Direto POP Direto XCH A,Rn XCH A,Direto XCH A,@Ri XCHD A,@Ri

Funao c Incrementa o SP e ento coloca a a memria no stack o Retira dado do stack e coloca na memria, depois decrementa SP o Troca entre si o conte do do acumuu lador e do registro Troca memria com acumulador o Troca RAM indireta com acumulador Troca nibble menos signicativo do acumulador e da RAM indireta entre si

Opcode

Bytes

Clocks

Flags Afetados CY AC OV -

C0 D0

H H

2 2 1 2 1 1

24 24 12 12 12 12

1100/1 B abc C5 H 1100/011iB 1101/011iB

Instruoes para Variveis Booleanas c a Mnemnico o CLR C CLR bit SETB C SETB bit CPL C CPL bit ANL C,bit ANL C,/bit ORL C,bit ORL C,/bit MOV C,bit MOV bit,C JC rel JNC rel JB bit,rel JNB bit,rel JBC bit,rel Funao c Zera o Carry Zera o bit endereado c Seta o carry Seta o bit endereado c Inverte o estado do carry Inverte o estado do bit endereado c eentre o bit endereado e o carry c eentre o complemento do bit endereado e o carry c ouentre o bit endereado e carry c ouentre o complemento do bit endereado e o carry c Move o bit endereado para o carry c Move o carry para o bit endereado c Desvia se o carry estiver setado Desvia se o carry estiver zerado Desvia se o bit endereado estiver c setado Desvia se o bit endereado estiver c zerado Desvia se o bit endereado estiver c setado e depois zera o bit Opcode Bytes Clocks Flags Afetados CY 0 1 ? ? ? ? ? ? AC OV -

C3 C2 D3 D2 B3 B2 82 B0 72 A0 A2 92 40 50 20 30 10

H H H H H H H H H H H H H H H H H

1 2 1 2 1 2 2 2 2 2 2 2 2 2 3 3 3

12 12 12 12 12 12 24 24 24 24 12 24 24 24 24 24 24

Pgina 39 a

Microprocessadores e Microcontroladores - 1a Unidade - Prof. Vitor Leo Filardi a

Instruoes de Desvio c Mnemnico o ACALL END11 LCALL END16 RET RETI AJMP END11 LJMP END16 SJMP rel JMP @A + DPTR JZ rel JNZ rel CJNE A,Direto, rel CJNE A,#Dado,rel CJNE Rn,#Dado,rel CJNE @Ri,#Dado, rel DJNZ Rn, rel DJNZ Direto, rel NOP Funao c Chama sub-rotina numa faixa de 2kbytes da atual posiao c Chama sub-rotina em qualquer posiao da memria de programa c o Retorne da sub-rotina Retorne da interrupao c Desvia para outro endereo numa c faixa de 2kbytes da atual posiao c Desvia para qualquer posiao da c memria de programa o Desvio curto relativo Desvia para o endereo obtido da c soma do acumulador e do DPTR Desvia se o acumulador for zero Desvia se o acumulador no for zero a Compara e desvia se o acumulador for diferente da memria endereada o c Compara e desvia se o acumulador for diferente do dado Compara e desvia se o registro for diferente do dado Compara e desvia se a RAM indireta for diferente do dado Decrementa o registro e desvia se for diferente de zero Decrementa a memria e desvia se o for diferente de zero Nenhuma Operaao c 12 22 32 02 80 73 60 70 B5 B4 Opcode Bytes Clocks Flags Afetados CY ? ? ? ? AC OV -

H H H H H H H H H H

2 3 1 1 2 3 2 1 2 2 3 3 3 3

24 24 24 24 24 24 24 24 24 24 24 24 24 24

1011/1 B abc 1011/011iB

1101/1 abc D5 00

B H H

2 3 1

24 24 12

Pgina 40 a

Cap tulo 2

Segunda Unidade
Dispositivos do 8051
2.1 Ciclos de Mquina a

Como vimos na unidade passada o clock o relgio interno do microprocessador para a execuao e o c sequencial de qualquer atividade interna ou externa a mquina, ou seja, o elemento que gera e con` a e trola os ciclos de trabalho da mquina. Cada ciclo de oscilaao chamaremos de Pde pulso. A cada a c dois pulsos Pcaracteriza-se um estado S. Uma sequncia de seis estados, S1 a S6, corresponde a e um ciclo de mquina. Todas as atividades internas e externas do microprocessador so comandadas a a por esses pulsos e seus seis estados. Um ciclo de mquina se constitui de seis estados (S1 a S6) que, por sua vez, correspondem a a doze pulsos P do clock.
1 Ciclo de Maquina Estados S1 S2 S3 S4 S5 S6

P1

P2

P1

P2

P1

P2

P1

P2

P1

P2

P1

P2

1 Estado

2 Pulsos

Figura 2.1: Ilustraao de um ciclo de mquina do MSC8051 c a Por exemplo, o instante marcado como Xna gura o S6P1. Assim podemos ter um linguagem e comum de deniao de instantes de um ciclo de mquina. Cada pulso P1 depende da frequncia do c a e clock. Por exemplo, se o circuito oscilador for a cristal de 12MHz, teremos um ciclo de mquina = 12 a x (Per odo de Clock) = 12 x (1/12*10 6 )= 1s.

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

2.2

Portas de I/O

Temos no 8051 quatro grupos de sa das denominados de PORTS, so eles P0,P1,P2 3 P3, coma forme a versoo do 8051 utilizado. No 8051 (ROM Interna) temos todos os quatro ports dispon a veis; no 8031 (EPROM Externa) s temos os ports P1 e P3 dispon o veis como I/O. Cada port tem oito linhas que podem ser programadas como entrada ou como sa da, ou trabalhar com os perifricos internos. e

2.2.1

Princ pio de Funcionamento e Utilizao ca

O uso das linha de I/O simples e necessita apenas de que escrevamos o valor desejado (na caso e de utilizaao como sa c da), ou efetuarmos a leitura (no caso de entrada). Se o dado presente numa porta congurada como entrada variar, a variaao no ser sentida pelo sistema, at que efetuemos c a a e uma nova leitura dessa entrada. Isto ocorre porque cada linha , na realidade, um Buer tri-state de um bit. J no caso da escrita, e a temos associado a esta linha um ip-op D (latch) de um bit. Na gura 2.2, temos um esquema simplicado de um bit de I/O, que nos ajudar a compreender a o funcionamento da porta. Os circuitos reais so ligeramente diferentes para cada uma das portas, e a mais complexos do que o apresentado aqui, mas para ns ditticos e de entendimento este diagrama a bsico suciente. a e
LE LATCH

VIA DE DADOS INTERNA

ESCREVE

CLK

PINO

LE PINO

Figura 2.2: Diagrama em blocos simplicado de um pino de I/O Quando escrevemos um bit na porta, o mesmo vai pela via interna at a entrada D do ip-op, e e ento um pulso de clock em CLK coloca este bit em Q, que atravs da eletrnica associada leva este a e o n ao pino externo. vel J no caso da leitura, algumas instruoes lem o pino enquanto outras lem o estado do latch, em Q. a c e e As instruoes que lem o latch so aquelas que costumam ler, modicar e reescrever o bit, a saber c e a : INC, DEC, CPL, JBC, DJNZ, ANL, ORL, XRL, MOV Px.n,C, CLR Px.n e ainda SETB Px.n, conforme vimos na unidade anterior. As demais instruoes de acesso aos ports lem o estado presente nos pinos. E dai, qual a diferena c e c ento? a Vamos supor que temos a base de um transistor NPN sendo acionada pelo pino de I/O. Quando escrevemos 1 neste pino o transistor entrar em conduao, e se a CPU ler o estado deste pino para a c eventual conrmaao, ler a tenso na base do transistor e interpretar como n ZERO, ento neste c a a a vel a Pgina 42 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

caso deve ser lido o valor de latch, que estar corretamente indicando n UM. a vel Um exemplo simples de conexo das linhas seria um sistema que em funao de um certo bit, por a c exemplo o bit 5 da porta 3 (escrito como P3.5), far com que os leds colocados nos 8 pinos da porta a 1 sejam acesos sequencialmente, conforme o estado daquele bit. Na gura 2.3, temos um diagrama simples para este exemplo, e a seguir o Software simblico para esta funao. o c

Pgina 43 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a


+ + +

P1.0 P1.1

8051
+

P1.7

P3.5

Figura 2.3: Exemplo simples de utilizaao c SOFTWARE SIMBOLICO Inicio: Faz acumulador = 00000001 binrio a Lebit: Se P3.5 = 0 ento a roda acumulador a esquerda (coloca o bit D0 em D1, e assim ` por diante, at colocar o bit D7 em D0). e move acumulador para a porta 1 perde um tempo volta para lebit Seno (s pode a o ser P3.5 =1) roda acumulador a direita (coloca o bit D7 em D6, e assim ` por diante, at colocar o bit D0 em D7). e move acumulador para a porta 1 perde um tempo volta para lebit

Pgina 44 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

Port P0 O P0 uma estrutura de port bidirecional. Um certo pino ido port Po tomado como iluse e traao. O barramento interno do MC utilizado para ler/escrever no latch interno, ou ler o pino f c e sico P0.iem questo. Quando se utiliza uma instruao que escreveum valor no Port P0.i, o dado se a c apresenta na entrada D do ip-op. Um pulso de escreve(o CLKdo ip-op) imposto no i-op, e que transfere esse dados as sa ` das Qe Qdo latch. O sinal de controleatua para permitir que esse dado saia sicamente no pino P0.i. Este sinal de controle simboliza o gerenciamento que esse port tem para apresentar o dado sicamente a sa ` da. Existem instruoes que lem o conte do armazenado no latch. Existem instruoes que lem o estado dic e u c e retamente do pino. Em geral, as instruoes que lem o latchso do tipo READ-MODIFY-WRITE, c e a isto , l o conte do do latch, modica conforme a instruao imposta e escreve de novo no latch. So e e u c a as instruoes INC, DEC, CPL, JBC, DJNZ, ANL, ORL e XRL. c Quando P0 usado como port, como se ele fosse dreno aberto, isto , devemos utilizar resistores e e e de Pull-Upnesses pinos para podermos excitar devidamente o ambiente externo ao MC. Quando ele usado apenas para controle de memria externa, esses resistores no so necessrios, e neste caso o e o a a a port P0 visto como um port Tri-State. e O port P0 multiplexado entre dadose endereosquando gerencia memria externa e, ento, e c o a utiliza o pino ALE para captar o endereo em um latch externo ao MC. c

Port P1 Para nalizar este item, basta dizer que as possibilidades de uso destas linha de I/O so praticaa mente ilimitadas, cando a cargo do projestista desenvolver novas aplicaoes para tal. c Os ports 1,2 e 3 possuem pull-ups internos e so chamadas de quase bidirecionais. Esta caraca ter sticas faz com que seus pinos tenham sempre um estado denido, ou seja, 0 ou 1, de forma que mesmo quando as usamos como entrada, podemos medir seu n como se fosse de sa vel da. Os ports P1 e P3 podem ser congurados, pino a pino (bit a bit), ou totalmente (byte) como entrada ou sa da. No se pode esquecer que o port P3 ut a e lizado como meio de comunicaao externa entre os perifricos c e Timerse Seriale ento os p a nos s estaro dispon o a veis para I/0, dependendo de utilizar ou no os a perifricos desse Mc. e O port 0 no possui estas caracter a sticas, e quando congurada como entrada, ter seu n ua vel tuando na ausncia de n xo no pino. Entretanto, para todos os efeitos de uso, podemos considerar e vel as portas como simples portas de I/O bidirecionais como veremos a seguir.

2.2.2

Caracter sticas Gerais e de Tempo dos Ports

Instruoes que Alteram diretamente o Conte do dos Ports c u E necessrio ter cuidado com as instruoes do tipo Read-Modify-Wr` a c tecitadas neste item, quando so manipuladas diretamente com os ports. Por exemplo, a operaao: a c orl P1,#11111110b ; vai executar a leitura do Port P1 pelo latch, vai operar a instruao c ORcom o dado e devolver o resultado em P1. Se a intenao s realizar uma mscarapara ler o bit P1.0, esta instruao est sendo mal aplic e o a c a cada, pois ela, alm de realizar a mscara, pos valor 1em todos os outros bits do port P1, alterando e a seus valores originais! Pgina 45 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

Assim, se queremos s uma mscara, devemos operar fora de P1, isto : o a e mov A,Pi ;l P1 e carrega em A e orl A,11111110b ;faz a mscarasem alterar P1 a Esta e outras instruoes abaixo listadas correm este perigode utilizaao e precisamos saber exc c atamente o que queremos antes de aplic-las direto aos ports: a Instruao e Forma Bsica c a INC DEC CPL JBC DJNZ ANL ORL XRL Funao Exemplo c INC P1 DEC P3 CPL P1 JBC P1.0,#XX DJNZ P1,#XX ANL PO,A ORL PO,A XRL P1,#XX

Tabela 2.1: Instruoes que afetam diretamente os ports quando aplicadas junto a eles. c

Condioes de Tempo Envolvendo os Ports c Cada pino do port amostrado perto da descidado pulso ALEno instante de leitura de ine struao, entre o per c odo S5 do ciclo de mquina. E poss que, se o pino, neste instante, estiver em a vel transiao, o Mc possa ler dado errado. Quando se escreveum dado no latch do pino do port, ele j c a aparece efetivamente na sa do latch durante o per da odo S6P2 do ultimo ciclo de mquina necessrio a a para nalizaao da referida instruao. Assim, s aparecer sicamente no pino, no instante S1P1 do c c o a prximo ciclo de mquina. o a Observe que s se pode ler com conabilidade um dado no pino do port que que presente por o tempo acima de 1 valor de S(com clock de 12 MHz teremos per odo S 1 s ou genericamente, per odo maior que 1 ciclo de mquina). a

2.2.3

Uso das Portas de I/O para a Expanso da Memria de Dados e Programa a o

As portas 0 e 2 possuem como funao alternativa, enderear memria extema, para que possamos c c o expandir a capacidade de dados e de programas no 8051. Neste caso, a porta 2 fornece a parte alta do endereo (A8-A15) e a porta 0 fornece, multiplexada no tempo, a parte baixa de endereo (AO-A7) e c c a via de dados (DO-D7). 0 pino 30 fornece o sinal ALE, que habilitar o latch de endereos a segurar a parte baixa do a c mesmo, para que os dados possam transitar peia porta 0. Os outros sinais de controle so o PSEN\, a o RD\ e o WR\. 0 sinal PSEN\ habilita a sa da memria de programa (permite a (eitura na Eprom externa) de da o forma que ativo quando a CPU deseja ler programa da memria externa. Neste instante, os sina e o s RD\ e WR\ esto em n 1. a vel Os sinais RD\ e WR\ somente so ativos caso a CPU execute instruoes de leitura e escrita na a c memria de dados externa (lembre-se de que as instruoes para memria externa so diferentes das o c o a instr coes para memria interna). Temos ento, que para leitura o pino RD\ ir a n 0, mantendo u o a a vel o pino WR\ = 1, e vice-versa para escrita. LEMBRETE: OS SINAIS RD\ E WR\ S AO GER ADOS ATRAVES DE PINOS DA PORTA 3 CONFORME VEREMOS NO ITEM 2.2.5 Pgina 46 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

2.2.4

Seleo de Programa Externo ou Interno ca

O pino 31 tem a funao EA\ (extemal address) e quando em n c vel 1 diz a CPU para procu` raros primeiros 4 KBytes de programa intemamente, e o que exceder esta memria ser procurado o a extemamente. Quando em n vel 0, informa a CPU que deve procurar todos os passos de programa ` externamente, ignorando a memria interna. o OBSERVACAO: No confundir este pino com o bit EA, presente no registro IE. a Esta a opao utilizada quando se usa o 8031, que um 8051 mas que no tem a ROM interna, e c e a ou quando no se deseja arcar com as despesas de encomendar grande quantidade de peas do 8051 a c gravadas em fbrica. a DEVE FICAR CLARO QUE QUANDO SE UTILIZA MEM ORIA EXTERNA DE PROGRA NAO PODEREMOS MAIS UTILIZAR OS PINOS DAS PORTAS MAS, EM QUALQUER OPCAO 0 E 2 COMO I/0. Na gura 2.4, temos um esquema de Hardware onde colocamos 8 KBytes de programa e 8 KBytes de dados externos, sendo que neste caso, temos toda a memria de programa externa, utilizando 0 8031. o RD\ 1 0 1 0 WR\ 1 1 0 0 Funao c Espera Lendo na RAM Escrevendo na RAM No ocorre a

Tabela 2.2: Tabela de Acesso a RAM. `

Figura 2.4: Seleao Externa c

2.2.5

Uso dos Pinos da Porta 3 como funoes Alternativas c

A porta 3, conformej foi visto, pode ter seus pinos usados de forma independente como pinos de a funoes especiais. Por exemplo, para a expanso de memria de dados vista acima, so dois pinos da c a o a porta 3 que fomecem os sinais RD\ e WR\ para controle. Quando usamos os temporizadores internos como contadores de eventos, so outros dois pinos a desta porta que servem como entrada para o sinal de contagem. Se nosso projeto necessitar de interrupao extema, ser atravs de dois pinos desta porta que as mesmas sero sinalizadas a CPU. c a e a ` E nalmente, nos dois pinos restantes, temos os que permitem a implementaao do canal serial. A c maneira pela qual utilizamos ou no uma funao especial da porta 3, ser vista no momento em que a c a a estudarmos o canal serial. Com relaao aos pinos RD\ e WR\ so os unicos com os quais no precisamos nos preocupar, pois c a a seu controle efetuado pela CPU, e ca claro que se desejamos utilizar memria de dados externa, e o no utilizaremos estes pinos como I/0. a CASO QUALQUER UMA DAS FUNCOES ESPECIAIS ESTEJA SENDO UTI PODEREMOS MAIS ACESSAR A PORTA 3 COMO PORTA DE I/0 LIZADA, NAO PARA BYTE, APENAS COMO BIT ENDERECAVEL. Pgina 47 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

2.2.6

Capacidade de Corrente nos Pinos de I/O

A porta 0, devido as suas caracter ` sticas de construao de dreno aberto (open-drain), pode fomecer c ou absorver 2 cargas TTL, e as portas 1, 2 e 3 podem absorver ou suprir uma carga TTL.

2.3

Modos de Endereamento das Instruoes c c

As instruoes operam com dados que podem ser endereados de vrias formas, motivo pelo qual c c a devemos saber muito bem os modos de endereamento que o microprocessador aceita. No caso da c fam 8051/52, etc, dispe-se dos seguintes modos: lia o

1.Registrador 2.Direto 3.Indireto 4.Imediato 5.Relativo 6.Absoluto 7.Longo 8.Indexado

2.3.1

Endereamento por Registrador c

As instruoes do 8051, quando se referem a registradores internos do microcontrolador, apresentamc se como oito registradores com nomes R0, R1, R2, R3, R4, R5, R6 e R7. 0 nome genrico destes e registradores Rn. e Por exemplo: add A,RO: Soma o conte do de Acom o conte do de ROe o resultado ca em A. u u No se esquea que, neste caso, precisamos saber antes para qual banco est apontado o microcontroa c a lador (nos bits PSW.4 e PSW.3). As instruoes que trabalham com registradores, acusam-no com o nome genrico Rn, em que n c e e o registrador espec co (n = 0 a 7). Este tipo de instruao codicado em apenas 1 byte. c e

OP CODE

RN

1 BYTE

2.3.2

Endereamento Direto c

As instruoes do 8051, que usam endereamento direto, referem-se aos registradores internos da c c RAM do microprocessador pelo seu mnemnico(apelido) ou seu endereo absoluto. Por exemplo: o c o conte do do registrador P3, que o mesmo que o port f a) mov A,P3: Move para A u e sico P3. b) mov A,30h: Move para Ao conte do do registrador. interno de endereo 30h. Este tipo de instruao u c c codicado em 2 bytes. e Pgina 48 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

OP CODE

END. DIRETO

2 BYTE

2.3.3

Endereamento Indireto c

As instruoes do 8051, que usam endereamento indireto, fazem uso de um registrador, que s c c o pode ser o RO ou R1, para se referir a outra posiao de memria RAM. Por isto que indireto: o c o e registrador RO ou R1 aponta para um endereo, isto , ele contm o endereo de outra posiao de c e e c c memria. Utiliza-se o s o mbolo para indicar que a operaao de endereo indireto. O nome genrico c e c e desse registrador indireto Ri (i = 0 ou 1). Por exemplo: Supondo que temos na posiao 30hda e c RAM interna o valor 05em hexa e queremos nos referir a posiao 30h indiretamente pelo registrador ` c R1 , podemos fazer (vide gura 2.5)

RAM INT
CONTEUDO Posicao de Memoria 05 30h

MOV A,@R1
CONTEUDO

A=05

R1

30

01h 00h

Figura 2.5: Ilustraao da operaao de endereamento indireto c c c

mov 30h,#05h: Carrego a poscao da RAM interna de endereo 30h, com o valor 05(conte do=05). c u

mov R1,#30h: Carrego o registrador R1com o valor 30(conte do=30h). u

mov A,@Rl: Carrego ou movo para Ao conte do da memria apontada por R1,que 30h, u o e isto , ele sabe que endereo indireto. Logo, ele sabe que o valor 30hdentro de R1 um e e c e endereo e no um conte do. Assim, ele vai na posiao de memria com endereo 30h, pega c a u c o c Pgina 49 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

o conte do de 30h, que 05, e carrega em A.Logo, A = 05 e no A = 30; entendeu? u e a

Olhando a ilustraao da gura 2.5 deste item para melhor compreenso e leia este texto de novo. c a Este tipo de instruao codicado em 1 byte. c e

OP CODE

Ri

1 BYTE

2.3.4

Endereamento Imediato c

As instruoes do 8051, quando se referem a endereamento imediato, signicam que o cdigo da c c o instruao j codicado junto com uma constante, chamado dado imediato. Operandos do tipo c a e imediato so precedidos do sinal #. Por exemplo: a mov A,#25: Move para A o valor 25 em decimal. mov A,#25h: Move para A o valor 25 em hexadecimal. mov A,#00100101b: Move para A o valor 25h em binrio. a mov DPTR,#1FFFh: Move para o DPTR, o endereo 1FFFem hexadecimal. c As instruoes deste tipo so de 2 bytes, ou de 3 bytes quando se usa o DPTR. c a

OP CODE

VALOR IMEDIATO

1 BYTE

1 OU 2 BYTES

A unica exceao a ` c e nstruao [mov DPTR,#data(16)], que de 3 bytes, pois o endereo dela de c e c e 2 bytes (16 bits).

2.3.5

Endereamento Relativo c

As instruoes do 8051, com endereamento relativo, so utilizadas com instruoes que permitem c c a c realizar um pulodireto no passo cadenciado de um programa. Este endereo relativo (chamado oc set) um dado de 8 b` com s` e ts nal, ` , realiza um salto relat` ao endereo que est no Program sto e vo c a Counter, PC, de -128 a +127 pos`coes. Este endereo relativo l` c e gado a instruao por um outro byte. ` c Antes de achar o endereo f` c nal de salto, o PC incrementado ao endereo da prxima instruao e este e c o c o endereo ao qual se soma o endereo relativo: vide ilustraao seguinte, pois a explicaao verbal e c c c c e muito dif de absorver. Vejamos o exemplo: cil

Pgina 50 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a


CODIGO NA ROM
0100 0101 0102 0103 0104 0105 0106 0107 0108

ROM
80 03

SJMP DESVIO= Salto pequeno para DESVIO


Exemplo 1: 80 DESVIO = 8003h
Endereco de DESVIO=03 Codigo do comando PC (Apos o inicio da instrucao SJMP 03=8003h)

xx

PC+3

OBS: Em geral, no fazemos estas contas, pois o compilador, quando usamos laa bels(nomes) como desvio, calcula tudo isto sozinho automaticamente. As instruoes deste tipo so de 2 bytes c a

OP CODE

PONTO RELATIVO

2.3.6

Endereamento Absoluto c

Instruoes do 8051, que se utilizam de endereo absoluto, so as ACALL e AJMP. So instruoes c c a a c de 2 bytes que permitem desvio de at 2 Kbytes relativo, em apenas 2 bytes (endereo total da e c faixa teria que ser em 3 bytes; no ?). a e

2.3.7

Endereamento Longo c

As instruoes no 8051, que usam endereamento do tipo longo, so LCALL e LJMP. Permitem c c a endereamento de 16 bits que mapeia todo o espao dispon de endereos (64 Kbytes). A unica c c vel c desvantagem destas instruoes que elas consomem 3 bytes de programa, o que s ser c e o a um problema quando o processo exigir tempo de execuao muito pequeno (em que 1 s a c mais ou a menos vital, por exemplo). Tem o problema, tambm, de ser um endereo absoluto que e e c no muda; logo, se voc necessita executar esse programa em outra parte do espao de memria, deve a e c o repensar neste endereo absoluto, ou se utilizar sempre de labelsna criaao do programa, para que, c c na compilaao, o compilador acerte os endereos absolutos para voc. c c e Este tipo de instruao consome 3 bytes: c

2.3.8

Endereamento Indexado c

As instruoes do 8051, que usam endereamento do tipo indexado, so JMP ou MOVC em uma c c a de suas formas. So instruoes cujo endereo de destino depende no s do endereo inserido na a c c a o c melhor explic-los com um exemplo: instruao, mas tambm do conte do de Anaquele instante. E c e u a jmp @A+DPTR: Salta para a posiao dada pelo DPTR + conte do de A, isto , o Apode c u e ser um contador de passos e o DPTR um ponteiro de faixas. Supondo que: DPTRH = meses do ano e An = dias do ms. Logo, o DPTR aponta para a ucabeada tabela de cada ms, e em Aeu e c e insiro 0 ndicedo dia do ms desejado. Assim, se vario An, j estou alterando o dia daquele ms e a e xo, sem alterar mais o DPTR. Pgina 51 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

2.4
2.4.1

Temporizadores e Contadores
Introduo ca

O 8051 tem dois registros contadores de 16 bits, denominados TIMER 0 e TIMER 1, dedicados as funoes de contagem e temporizaao (counter/timer-contador/temporizador). H uma importante ` c c a distinao entre os conceitos de contador e temporizador. c Quando opera como temporizador, o registro incrementado a cada ciclo de mquina (usa como e a base o cristal da CPU). O sinal de contagem aparece com 1/12 da freqncia do clock. ue Quando opera como contador, o registro incrementado de acordo com o sinal que se coloca nas e entradas T1 e T0, ou seja, o contador opera a cada transiao de 1 para 0 (borda de descida ) na c entrada T0 ou T1. Deve-se ter um cuidado quando em operaoes em modo contador: j se sabe que as entradas so c a a amostradas durante S5P2 de cada ciclo de mquina (gura 2.1). Quando em um ciclo de mquina a a a entrada detectada em 1 e depois em 0, no prximo ciclo o contador incrementado. O incremento e o e acontece em S3P1 do ciclo seguinte ao que foi detectada a transiao. Para garantir que o n correto c vel tenha sido amostrado, necessrio que o sinal de entrada (o sinal que vai acionar os contadores) pere a manea pelo menos um ciclo de mquina em n alto e pelo menos outro ciclo de mquina em n c a vel a vel baixo, quer dizer, a mxima freqncia que responder o contador de 1/24 da freqncia de clock. O a ue a e ue sinal de entrada pode ter qualquer duty cycle, desde que se respeite a restriao antes mencionada. c

2.4.2

Registros Envolvidos

Dois registros SFR so utilizados para controlar as funoes e operaoes do temporizador/contador: a c c em TMOD especica-se o modo de operaao e em TCON controla-se a operaao. A gura 2.6 ilustra c c o registro TMOD e a gura 2.7 ilustra o registro TCON.

Pgina 52 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

Figura 2.6: Descriao do Registro TMOD c GATE especica como ser feito o controle: a se GATE = 1 conta somente se TR1=1 e INT1=high, (idem para TR0 e INT0) se GATE = 0 conta somente se TR1=1 (controle somente por software) (GATE especica se INT1 ser usado para controlar o funcionamento do contaa dor/temporizador pode ser usado para medir a largura de pulsos externos ligados a INT0 ou INT1)

C/*T

seleciona modo contador ou temporizador: se C/*T = 1 modo contador (conta usando a entrada T1) se C/*T = 0 modo temporizador (conta a cada ciclo de mquina) a

M1 0 0 1 1

M0 0 1 0 1

seleciona o modo de operaao: c THi temporizador/contador de 8 bits e TLi um pre-scaler de 5 bits, e e THi e TLi formam um temporizador/contador de 16 bits, contador/temporizador de 8 bits com auto-recarga (TLi conta e THi valor para recarga), TL0 contador/temporizador de 8 bits (usando TR0, *INT0 e TF0) TH0 contador/temporizador de 8 bits (usando TR1, *INT1 e TF1) TH1 e TL1 parado (mas pode operar em outros modos)

Pgina 53 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

Figura 2.7: Descriao do Registro TCON c TF1 ag de transbordamento (overow) do contador/temporizador 1. Ativado por hardware quando h transbordamento no timer 1. E apagado por hardware quando o processamento a desviado para a rotina de interrupao. e c bit de partida/parada (run/stop) do contador/temporizador 1. ag de transbordamento (overow) do contador/temporizador 0. Ativado por hardware quando h transbordamento no timer 0. E apagado por hardware quando o processamento a desviado para a rotina de interrupao. e c bit de partida/parada (run/stop) do contador/temporizador 0. ag da interrupao externa 1. Ativada por hardware quando detectada uma interrupao. c e c Apagado por hardware (somente se for modo borda) quando a interrupao processada, c e ou seja, quando se desvia para a rotina de interrupao. c indica se a interrupao externa 1 opera por borda ou por n c vel: 1 borda de descida (), 0 n baixo. vel ag da interrupao externa 0. Ativada por hardware quando detectada uma interrupao. c e c Apagado por hardware (somente se for modo borda) quando a interrupao processada, c e ou seja, quando se desvia para a rotina de interrupao. c indica se a interrupao externa 0 opera por borda ou por n c vel: 1 borda de descida (), 0 n baixo. vel

TR1 TF0

TR0 IE1

IT1

E0

IT0

Pgina 54 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

2.4.3

Modos de operao ca

Os dois contadores/temporizadores (timer1 e timer0) podem trabalhar em 4 modos de operaao c que so selecionados empregando os bits M1 e M0 do registro TMOD. Os modos 0, 1 e 2 so iguais a a para os 2 contadores/temporizadores mas o modo 3 diferente. e

Modo 0 Este modo idntico para os dois contadores/temporizadores. Neste modo tem-se um contador e e de 8 bits com um divisor (pre-scaler) de 5 bits. Resulta ento em um contador/temporizador de 13 a bits, compat com o que havia no MCS-48. Os 13 bits so formados pelos 8 bits do registro THi vel a e pelos 5 bits menos signicativos do registro TLi. Os outros 3 bits do TLi so indeterminados. O a transbordamento (overow) gerador quando a contagem faz a transiao de 1FFFH para 0000; neste e c instante ativa-se o bit de overow (TF1 ou TF0). A gura 2.8 apresenta um diagrama em blocos do contador/temporizador 1 operando em modo 0. A mesma gura vlida para o contador/temporizador 0. e a O controle da contagem simples: e se GATE = 0, TR1 controla o contador/temporizador (controle por software) se GATE = 1, TR1 e INT1 controlam o contador/temporizador (permite tambm um controle e externo por hardware)

Figura 2.8: Diagrama de Blocos para o TIMER 1 em MODO 0

Pgina 55 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

Modo 1 e Este modo de operaao o mais simples e por isto muito utilizado. E idntico ao modo 0, mas c e e os contadores so de 16 bits. A gura 2.9 ilustra o diagrama em blocos para este modo, que idntico a e e para os dois timers.

Figura 2.9: Diagrama de Blocos para o TIMER 1 em MODO 1

Modo 2 Neste modo tem-se um contador/temporizador de 8 bits (TLi) com registro de recarga (THi) para quando ocorre o transbordamento. Neste modo os dois contadores/temporizadores operam de forma idntica. O transbordamento (overow) no somente ativa TFi como tambm recarrega TLi com o e a e valor guardado em THi (este permanece inalterado). O valor de recarga deve ser fornecido por software.

Figura 2.10: Diagrama de Blocos para o TIMER 1 em MODO 2

Pgina 56 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

Modo 3 Este o unico modo onde os contadores/temporizadores tm um comportamento diferente. Neste e e modo, o contador/temporizador 1 simplesmente suspende a contagem ( como se estivesse com e TR1=0), enquanto o contador/temporizador 0 se divide em dois contadores de 8 bits: TH0 contador/temporizador de 8 bits usando C/*T, GATE, TR0, *INT0 e TF0, TL0 contador/temporizador de 8 bits usando TR1 e TF1 (ou seja, provoca a interrupao do c timer 1). E como se existem 2 contadores/temporizadores de 8 bits (TH0 e TL0) e outro de 16 bits (timer 1). O timer 1, entretanto, pode ser usado para operar em qualquer outro modo (0, 1 ou 2) e usa-se o modo 3 para det-lo. No h problemas porque os modos so independentes. Tambm se pode usar o timer e a a a e 1 (em modo 2) para gerar o baud rateda porta serial.

Figura 2.11: Diagrama de Blocos para o TIMER 1 em MODO 3

Pgina 57 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

2.4.4

Exerc cios

LED 10HZ Acender os leds vermelho, amarelo e verde a uma freqncia de 10 Hz. Para solucionar esse ue exerc necessrio gerar um retardo equivalente ao per cio e a odo de 10 Hz. A gura 2.12 ilustra o clculo a do valor do contador para gerar esse retardo.

Figura 2.12: Clculo de N para determinar uma frequncia a e Se F=10 Hz e CLOCK=3,575611 Hz, ento N=29797. Como este um contador que conta para a e cima, temos que subtrair este valor de 65536. Com isto, N=65536-29797=35739 ou 8B9BH. Na realidade, a freqncia gerada no ser exatamente 10 Hz mas de um valor muito prximo: ue a a o F = 3,575611 / 12*29797 = 9,99 Hz Ser utilizado o timer 0 no modo 1; a cada interrupao a rotina a c acende um novo led e recarrega o timer. TMOD GATE 0 IE EA 1 C/*T M1 M0 0 0 0 - - ES ET1 0 0 0 0 GATE C/*T M1 0 0 0 EX1 ET0 EX0 0 1 0 M0 1

;LED_10HZ.ASM; DEFSEG PROG, CLASS=CODE, START=0 SEG PROG ; DEZ_HZ ; EQU ORG AJMP ; ORG AJMP ; ORG INIC MOV MOV MOV MOV MOV MOV CLR SETB SJMP ; TIM0 ORG MOV MOV RLC MOV RETI END 100H TL0,#LOW DEZ_HZ ;REINICALIZAR TH0,#HIGH DEZ_HZ ;O CONTADOR A P1,A TL0,#LOW DEZ_HZ TH0,#HIGH DEZ_HZ TMOD,#1 ;TIMER 0 EM MODO 1 IE,#82H P1 ,#0 ;APAGAR TODOS OS LEDS A,#01001001B C TR0 $ 50H TIMER0 TIM0 35739 RESET INIC

Pgina 58 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

Notar que na rotina de interrupao est a recarga dos temporizadores que feita com a instruao c a e c MOV direto,#datamas que consome 2 ciclos de mquina, ou seja, que h um retardo que se acua a mula. Para evitar ou corrigir isso, pode-se adicionar ao contador o retardo da instruao; mais preciso c e usar MOV TL0,# LOW (DEZ HZ+2). Quando existem vrias interrupoes, no se sabe com certeza quando uma interrupao do tempoa c a c rizador pode ser aceita; isso implica um erro maior que se acumula. H uma soluao simples porque a c depois do transbordamento o temporizador segue contando e esta contagem exatamente o tempo e que atrasou o servio da interrupao; basta usar esse valor na recarga. c c As instruoes a seguir ilustram a idia. c e

MOV ADD MOV MOV

A,#LOW (DEZ_HZ+2) A,TL0 ;1 ciclo TL0,A ;1 ciclo TH0,#HIGH (DEZ_HZ+2)

Pgina 59 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

LED 1HZ Acender os leds vermelho, amarelo e verde a uma freqncia de 1 Hz. A soluao idntica ao ue c e e exerc anterior, mas vai surgir uma diculdade ao calcular os valores de recarga: cio CLOCK=3575611 Hz e F=1 Hz N=3575611 / 12*1 = 297968 Como se pode ver, o valor de recarga muito grande (297 968 > 65 536) e impede a utilizaao do e c temporizador. Uma boa sa utilizar o esquema do exerc anterior (com 10 Hz) e adicionar, por da e cio software, um divisor por 10.

;LED_1HZ.ASM ; DEFSEG PROG, CLASS=CODE, START=0 SEG PROG ; DEZ_HZ DIVISOR ; EQU EQU ORG AJMP ; ORG AJMP ; INIC ORG MOV MOV MOV MOV MOV MOV MOV CLR SETB SJMP ORG MOV MOV DJNZ MOV RLC MOV RETI END 50H TL0,#LOW DEZ_HZ TH0,#HIGH DEZ_HZ R7,#DIVISOR ;PREPARAR DIVISAO POR 10 TMOD,#1 ;TIMER 0 EM MODO 1 IE,#82H P1,#0 ;APAGAR TODOS OS LEDS A,#01001001B C TR0 $ 100H TL0,#LOW DEZ_HZ ;REINICALIZAR TH0,#HIGH DEZ_HZ ;O CONTADOR R7,FIM ;DIVIDIR POR 10 R7,#DIVISOR A P1,A TIMER0 TIM0 32203 10 RESET INIC

; TIM0

FIM

Pgina 60 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

ONDA1 Gerar atravs de P1.7 uma onda com o seguinte formato: e

Figura 2.13: Sinal a ser gerado na P1.7 Usando N = (t*CLOCK)/12, calcula-se o valor de recarga para o temporizador. Sero programados a dois retardos alternadamente de forma a gerar o sinal pedido. Para t=1 ms N=298 65536-298=65238 Para t=40 s N=12 65536-12 =65524 ;ONDA1.ASM DEFSEG PROG, CLASS=CODE, START=0 SEG PROG ; SAIDA EQU P1.7 R_1MS EQU 65238 ;RETARDO DE 1 MILISEG R_40MICRO EQU 65524 ;RETARDO DE 40 MICROSEG ; ORG RESET AJMP INICIO ; ORG TIMER0 AJMP TIM0 ; ORG 50H INICIO MOV TL0,#LOW R_1MS MOV TH0,#HIGH R_1MS MOV TMOD,#1 ;TIMER 0 EM MODO 1 MOV IE,#82H ;EA=1 E ET0=1 CLR SAIDA SETB TR0 ;PARTIDA DO TIMER 0 SJMP $ ;LOOP INFINITO ; TIM0 JB SAIDA,LB1 ;2 CICLOS MOV TH0,#LOW (R_40MICRO+4) ;2 CICLOS MOV TL0,#HIGH (R_40MICRO+4) ;2 CICLOS SETB SAIDA ;1 CICLO RETI ;2 CICLOS LB1 MOV TH0,#LOW (R_1MS+4) MOV TL0,#HIGH (R_1MS+4) CLR SAIDA RETI END Notar que a rotina que atualiza o temporizador para gerar o retardo de 40 s consome 9 ciclos de mquina, quer dizer, consome 30,2 s. Pode parecer que se o tempo de 40 s fosse mudado para 25 a s no haveria soluao. a c Pgina 61 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

ONDA2 Gerar atravs de P1.7 uma onda com o seguinte formato: e

Figura 2.14: Sinal a ser gerado na P1.7 Usando N = (t*CLOCK)/12, calcula-se o valor de recarga para o temporizador. O segredo ser a trabalhar com o temporizador em modo 2 (os dois valores de recarga so menores que 256) e a rotina a de interrupao apenas muda o valor da recarga (que est em TH0). c a Para t=600 seg N=179 256-179=77 Para t=25 seg N=7 256-7 =249

;ONDA2.ASM DEFSEG PROG, CLASS=CODE, START=0 SEG PROG ; SAIDA R_600MICRO R_25MICRO ; EQU EQU EQU ORG AJMP ; ORG AJMP ; INICIO ORG MOV MOV MOV MOV CLR SETB SJMP JB MOV SETB RETI MOV CLR RETI END 50H TL0,#R_600MICRO TH0,#R_25MICRO TMOD,#2 IE,#82H SAIDA TR0 $ SAIDA,LB1 TH0,#R_25MICRO SAIDA ;PRIMEIRA CONTAGEM ;CONTAGEM SEGUINTE ;TIMER 0 EM MODO 2 ;EA=1 E ET0=1 ;PARTIDA DO TIMER 0 ;LOOP INFINITO ;2 ;2 ;1 ;2 CICLOS CICLOS CICLOS CICLOS TIMER0 TIM0 P1.7 77 249 RESET INICIO

;RETARDO DE 600 MICROSEG ;RETARDO DE 25 MICROSEG

; TIM0

; LB1

TH0,#R_600MICRO SAIDA

Pgina 62 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

LEDS1 Acender os leds vermelho, amarelo e verde em seqncia, mudando a cada 10 pulsos em T1. Ser ue a usado o contador/temporizador 1 como contador e programado para operar em modo 2, com um valor de recarga igual a 246 (256-10). O acumulador e carry sero usados para acender os leds na seqncia a ue correta. TMOD GATE 0 C/*T 1 M1 1 M0 0 GATE 0 C/*T 0 M1 0 M0 1

IE

EA 1

ES 0

ET1 1

EX1 0

ET0 0

EX0 0

;LEDS1.ASM DEFSEG PROG, CLASS=CODE, START=0 SEG PROG ; CONTA_10 ; EQU 246

ORG RESET AJMP INICIO ; ORG TIMER1 AJMP TIM1 ; INICIO: ORG 50H MOV A,#01001001B CLR C MOV P1,A MOV TL1,#CONTA_10 MOV TH1,#CONTA_10 MOV TMOD,#60H MOV IE,#88H SETB TR1 SJMP $

;CARREGAR CONTADOR ;VALOR DE RECARGA ;CONTADOR 1, MODO 2 ;EA=1, ET1=1 ;LIGAR CONTADOR ;LOOP INFINITO

; TIM1: RLC A MOV P1,A RETI END

A chave SW3 aciona diretamente a entrada T1, mas h bouncing e por isso sero notadas mua a danas nos leds antes de 10 acionamentos. Para esse caso espec c co o bouncing dever ser eliminado a por hardware.

Pgina 63 a

Cap tulo 3

Terceira Unidade
Porta Serial
3.1
3.1.1

Comunicao Serial ca
Introduo ca

A porta serial existente na fam MCS-51 full duplex, quer dizer, pode transmitir e receber lia e dados simultaneamente. Tem um buer que permite receber um segundo byte antes que o byte previamente recebido tenha sido retirado (lido) do registro de recepao. Mas, se o primeiro byte no tiver c a sido lido no tempo em que o segundo byte se completa, um dos dois ser perdido. a

3.1.2

Registros Envolvidos

A porta serial possui um registrador chamado SBUF, o mesmo que se usa para enviar ou receber dados pela porta serial. Na realidade, o nome SBUF se refere a dois registros, um somente para leitura por onde se recebem os dados que chegam pela porta serial e outro somente para escrita por onde se transmitem dados pela porta serial. O modo de operaao da porta serial controlado pelo registro SCON, que ilustrado na gura c e e 3.1. A gura 3.2 apresenta um resumo dos modos de operaao. c

Figura 3.1: Descriao do Registro SCON c

SM0 0 0 1 1

SM1 0 1 0 1

MODO 0 1 2 3

DESCRICAO registro de deslocamento UART de 8 bits UART de 9 bits UART de 9 bits

FREQUENCIA clock/12 varivel a clock/12 ou clock/64 varivel a

SM2 comunicaao multiprocessador (habilitada com SM2=1): c SM2=1 e em modo 1 == interrupao (RI=1) com o bit de parada (stop bit) igual a 1. c SM2=1 e em modo 2 ou 3 == interrupao (RI=1) se for recebido RB8=1. c REN habilita a recepao serial (Reception Enable) c TB8 oitavo bit a ser transmitido nos modos 2 e 3. RB8 oitavo bit recebido nos modos 2 e 3. TI ag de interrupao por trmino de transmisso pela porta serial: c e a MODO 0 ativado no nal do oitavo bit DEMAIS ativado no comeo do bit de parada c RI ag de interrupao por recepao pela porta serial: c c MODO 0 ativado no nal do oitavo bit. DEMAIS ativado na metade do bit de parada. Observaao: Os ags TI e RI no so apagados por hardware e por isso a rotina de interrupao c a a c deve faz-lo, ou seja, estes ags devem ser zerados por software. e O registro PCON tambm toma parte na geraao do baud rate da porta serial. Este registro e c e ilustrado na gura 3.2.

Figura 3.2: Descriao do Registro PCON c

Microprocessadores e Microcontroladores - 3a Unidade - Prof. Vitor Leo Filardi a

3.1.3

Modos de Operao ca

Existem quatro modos de operaao da porta serial, cada um com uma nalidade. Ser apresentado c a um resumo de cada modo:

Modo 0 (s ncrono, 8 bits) Neste modo os dados entram e saem pelo pino RXD. O pino TXD fornece o clock para o deslocamento (shift). So transmitidos e recebidos dados de 8 bits (LSB primeiro). O baud rate de 1/12 a e da freqncia do clock (igual a 1 ciclo de mquina). ue a

Figura 3.3: Esquema da Porta Serial em MODO 0 Este modo pode ser utilizado para expandir as portas de I/O do microcontrolador, utilizando o esquema a seguir:

Figura 3.4: Expanso das Portas de I/O a

Pgina 67 a

Microprocessadores e Microcontroladores - 3a Unidade - Prof. Vitor Leo Filardi a

Modo 1 (ass ncrono, 8 bits) No Modo 1 so operados 10 bits com um baud rate programvel. Recebe-se pelo pino RXD e a a transmite-se pelo pino TXD. A tabela 3.1 ilustra o frame de bits serial. O bit de partida (START) e sempre zero e o bit de parada (STOP) sempre um na transmisso. Na recepao o bit de parada e a c e colocado no bit RB8. START Bit 0 Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Bit 6 Bit 7 STOP

Tabela 3.1: Frame de bits gerado pela porta serial em MODO 1 Neste modo o baud rate gerado pelo contador/temporizador 1. A cada 16 (SMOD=1) ou 32 e (SMOD=0) transbordamentos (overows) enviado um pulso para o circuito serial. A gura 3.5 e ilustra o esquema do gerador do baud rate e tambm apresenta algumas frmulas para o clculo do e o a valor a ser programado no contador/temporizador.

Figura 3.5: Esquema para a geraao do Baud Rate (BR) em MODO 1 c Usando o contador/temporizador 1 programa-se qualquer baud rate. Na grande maioria dos casos tem-se o baud rate e buscado o valor N a ser programado no contador/temporizador 1 (o mais e cmodo usar o modo 2 - auto recarga). Um problema que sempre existe o erro gerado pela aproxo e e imaao do valor a ser programado no contador/temporizador. Isto provoca a geraao de baud rates c c ligeiramente diferentes. Exemplo: Usando um cristal de 3,575611 MHz, qual o valor a ser programado no timer 1 para e operar a 9600 bauds (usar SMOD=0)? N = 3575611 / (384*9600) = 0,9699 (aproximadamente 1) Usando timer 1 no modo 2 tem-se: 256 - 1 = 255 (TH1=TL1=255). Observaao: a transferncia do dado recebido para o registro SBUF (e RB8, que guarda o stop c e bit) e a ativaao do ag RI somente acontecer se: c a RI = 0 e (SM2= 0 ou o bit de parada =1).

Pgina 68 a

Microprocessadores e Microcontroladores - 3a Unidade - Prof. Vitor Leo Filardi a

Modo 2 (ass ncrono, 9 bits, baud rate xo) Este modo opera com 11 bits e o baud rate pode ser de 1/32 ou 1/64 do clock. O bit TB8/RB8 serve para transmitir a paridade ou gerar um segundo bit de parada (TB8=1). O frame de bits usado neste modo ilustrado na tabela 3.2. e START Bit 0 Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Bit 6 Bit 7 TB8 STOP

Tabela 3.2: Frame de bits gerado pela porta serial em MODO 2 O unico controle que se tem sobre o baud rate atravs do uso do bit SMOD. Se SMOD=0, e e trabalha-se com BR=clock/32 e se SMOD=1, trabalha-se com BR=clock/64. A gura 3.6 ilustra o esquema para geraao do baud rate no modo 2. c

Figura 3.6: Esquema para a geraao do Baud Rate (BR) em MODO 2 c Na transmisso o bit 8 copiado do bit TB8. Na recepao o bit 8 copiado para o bit RB8. Os a e c e bits TB8 e RB8 esto no registro SCON. a O dado recebido somente carregado no SBUF (e RB8) se: e RI=0 e (SM2=0 ou bit 9 (stop bit) = 1).

Pgina 69 a

Microprocessadores e Microcontroladores - 3a Unidade - Prof. Vitor Leo Filardi a

Modo 3 (ass ncrono, 9bits, baud rate varivel) a e E idntico ao modo 2, exceto que a geraao do baud rate idntico ao modo1. A tabela 3.3 e c e e gura 3.7 ilustra o frame de bits e a geraao do baud rate. c START Bit 0 Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Bit 6 Bit 7 TB8 STOP

Tabela 3.3: Frame de bits gerado pela porta serial em MODO 3

Figura 3.7: Esquema para a geraao do Baud Rate (BR) em MODO 3 c

3.1.4

Cuidados com a Porta Serial

Nos quatro modos a transmisso se inicia quando escrito um byte em SBUF. A recepao haa e c e bilitada quando REN=1 (no MODO 0 exige-se tambm RI=0). No se esquea de que somente existe e a c uma unica interrupao dedicada a porta serial, portanto ela gerada por duas condioes: c ` e c a)Trmino da transmisso de um byte ag TI e a b)Trmino da recepao de um byte ag RI e c Deve-se testar os ags RI e TI para determinar se a interrupao foi por transmisso ou por recepao. c a c Os ags RI e TI devem ser apagados por software. Um outro cuidado muito importante com a geraao do baud rate. Muitas vezes no se consegue e c a a comunicaao serial devido a impreciso do baud rate. Portanto o problema a seguir proposto: c ` a e Programar o contador/temporizador 1 para gerar 9600 bauds para a porta serial operando em modo 3, sendo que o cristal de 4 MHz. e Soluao: N = 4000000/(384*9600) = 1,085 (SMOD=0). c Na soluao calculou-se que N=1,085 mas somente podem ser programados n meros interos; assim, c u caso se aproxime para 1, o baud rate gerado ser de BR=4000000/384=10416,7. Ser que ir funcionar a a a bem com esse baud rate ? Para responder esta pergunta necessrio compreender o que acontece com a transmisso serial. e a a Esta transmisso ass a e ncrona, quer dizer, pode iniciar em qualquer instante; o inicio caracterizado e pela presena de um bit de partida (START). Uma vez iniciada, deve-se garantir a duraao de cada c c bit. Para cada byte transmitido um bit de partida, os bits de dados e um ou dois bits de parada. e O que se deve buscar garantir que no haja um erro muito grande neste frame de bits. A gura 3.8 e a ilustra o caso da porta serial operando em modo 3. Pgina 70 a

Microprocessadores e Microcontroladores - 3a Unidade - Prof. Vitor Leo Filardi a

Figura 3.8: Erros provocados pela diferena no baud rate c A fase mais critica a recepao do ultimo bit porque poder apresentar uma defasagem muito e c a grande (rotuladas de E1 e E2 na gura). No se pode especicar um valor limite para esses erros pois a diversos fatores, particulares para cada caso, precisam ser levados em consideraao. Como um valor c prtico e que funciona na grande maioria dos casos arbitra-se que o valor do erro, para o ultimo bit, a deve ser menor que 40% da duraao de um bit (usando BR exato). c | 11 40 1 11 | BRp BR 100 BR 11 11 1 | BRp BR 27, 5 BR

A equaao pode ser simplicada para: | c

Como pode ser vericado, com um cristal de 4Mhz no se conseguir transmitir a 9600 pois o baud a a rate ser muito grande. a | 11 1 11 | 10416, 7 9600 27, 5 9600 8,167 s3,788sfalso

Pgina 71 a

Microprocessadores e Microcontroladores - 3a Unidade - Prof. Vitor Leo Filardi a

3.1.5

Comunicao entre vrios 8051 ca a

Figura 3.9: Comunicaao entre vrios 8051 c a Os modos 2 e 3 permitem interligar vrios 8051, sendo um mestre e vrios escravos. Nestes modos a a temos: *1 start bit; *8 bits de dados; *um nono bit que vai para o bit RB8 ( na recepao) ou pode ser escolhido 0 ou 1 na transmisso c a escrevendo-se em TB8; *1 stop bit Note que se SM2 = 1 e RB8 = 1, a interrupao da serial ser atendida. c a O algoritmo de comunicaao consiste em: c 1)No in cio, todos os escravos esto com SM2 = 1 a 2)Quando o mestre quiser enviar dados para algum escravo, ele escrever 1 em seu bit TB8 e a ento enviar serialmente o endereo do escravo desejado, e como teremos todos os bits RB8 a a c em 1, todos escravos sero interrompidos para vericar se seu o endereo enviado. a e c 3)O escravo selecionado zerar o seu bit SM2 e estar preparado para receber os dados, os quais a a tero agora o nono bit (RB8) em 0. a 4)Os demais escravos permanecero com SM2 em 1 e, dessa forma, no sero mais interrompidos a a a pois os dados tm RB8 = 0. e 5)Em resumo, o mestre envia endereos com o nono bit em 1 e os dados com o nono bit em 0, c portanto, se o mestre desejar se comunicar com outro escravo basta enviar o novo endereo c com o nono bit em 1. Pgina 72 a

Microprocessadores e Microcontroladores - 3a Unidade - Prof. Vitor Leo Filardi a

3.1.6

Comunicao serial entre o 8051 e o PC ca

Devido a diferena de tenso entre os n ` c a veis TTL e os usados no padro RS-232C (PC), necessrio a e a usar circuitos conversores para interfacear o microcontrolador com a porta serial do PC. A converso a pode ser feita atravs de circuitos transistorizados discretos (veja as guras 11.10,11.11 e 11.12 e leia e a seao 11.4) ou atravs de circuitos integrados como o 1488 (conversor de TTL para RS-232C) e o c e 1489 (conversor de RS-232C para TTL). A seguir esto os esquemas dos dois integrados e o esquema a bsico de interligaao entre o 8051 e a serial do PC. a c

Figura 3.10: Esquema de ligaao entre o computador(PC) e o 8051 c

Pgina 73 a

Microprocessadores e Microcontroladores - 3a Unidade - Prof. Vitor Leo Filardi a

3.1.7

Exerc cios

TX SER Usando um loop innito, transmitir pela porta serial todos os caracteres ASCII de 0a Z. Usar 9600 bauds, 8 bits de dados, 1 bit de partida e 2 bits de parada. Para este caso o modo 3 o mais adequado e TB8=1 ser usado para gerar um bit de parada. A e a transmisso ser feita por interrupao, quer dizer, a cada byte transmitido haver uma interrupao. a a c a c O contador/temporizador 1 ser programado para modo 2 (auto-recarga). a SCON SM0 1 SM1 1 SM2 0 REN 0 TB8 1 RB8 0 TI 0 RI 0

TMOD

GATE 0

C/*T 0

M1 1

M0 0

GATE 0

C/*T 0

M1 0

M0 0

IE

EA 1

ES 1

ET1 0

EX1 0

ET0 0

EX0 0

Clculo do divisor formado pelo contador/temporizador 1: a N = 3575611/(384*9600) = 0,9699 1. (TH1 = TL1 = 256 - 1 = 255). =
;TX_SER.ASM DEFSEG PROG, CLASS=CODE, START=0 SEG PROG ; BR_9600 ; EQU ORG AJMP ; ORG AJMP ; INIC: ORG MOV MOV MOV SETB MOV MOV MOV SETB SJMP ORG 100H CLR MOV INC CJNE MOV ACALL RETI MOV DJNZ RET END 50H TMOD,#20H TH1,#BR_9600 TL1,#BR_9600 TR1 SCON,#0C8H IE,#90H A,#"0" TI $ ;TIMER 1 EM MODO 2 ;PROGRAMAR BAUD RATE ;INICIAR TIMER 1 ;MODO 3 COM TB8=1 ;HAB INTERRUP SERIAL ;PRIMERO ASCII ;TX PRIMEIRO ASCII ;LOOP INFINITO SINT SERIAL 255 RESET INIC

; SERIAL: TI SBUF,A A A,#"Z"+1,SER1 A,#"0" RETARDO ;APAGAR FLAG ;TRANSMITIR ;FOI O ULTIMO ? ;REINICIALIZAR ;ATRASAR TRANSMISSAO

; SER1: ; RETARDO: ; AQUI: ;

R7,#0 R7,AQUI

Pgina 74 a

Microprocessadores e Microcontroladores - 3a Unidade - Prof. Vitor Leo Filardi a

RX SER O circuito dever responder aos seguintes comandos que chegam pela porta serial: a 1 acender todos os leds R acender led vermelho A acender led amarelo V acender led verde 0 apagar todos os leds r apagar led vermelho a apagar led amarelo v apagar led verde

Estes comandos vo chegar pela porta serial usando o formato: 1 bit de partida, 8 bits de dados, a 2 bits de parada, com um baud rate de 9600.
;RX_SER.ASM DEFSEG PROG, CLASS=CODE, START=0SEG PROG ; BR_9600 EQU 255 LED_VERMELHO EQU P1.0 LED_AMAR EQU P1.1 LED_VERDE EQU P1.2 CHEGOU EQU 32.0 ; ORG RESET AJMP INIC ; ORG SINT AJMP SERIAL ; ORG 50H INIC: MOV TMOD,#20H MOV TH1,#BR_9600 MOV TL1,#BR_9600 SETB TR1 MOV SCON,#0D0H MOV IE,#90H CLR CHEGOU ; ESPERA: JNB CHEGOU,ESPERA CLR CHEGOU ; CJNE A,#"0",LB1 CLR LED_VERMELHO CLR LED_AMAR CLR LED_VERDE SJMP ESPERA ; LB1: CJNE A,#"1",LB2 SETB LED_VERMELHO SETB LED_AMAR SETB LED_VERDE SJMP ESPERA ; LB2: CJNE A,#"R",LB3 SETB LED_VERMELHO SJMP ESPERA ; LB3: CJNE A,#"r",LB4 CLR LED_VERMELHO SJMP ESPERA ; LB4: CJNE A,#"A",LB5 SETB LED_AMAR SJMP ESPERA

;TIMER 1 EM MODO 2 ;PROGRAMAR BAUD RATE ;INICIAR TIMER 1 ;MODO 3 COM REN=1 ;HAB INTERRUP SERIAL ;APAGAR FLAG

;AGUARDAR UM COMANDO

;CHEGOU 0

;CHEGOU 1

;CHEGOU R

;CHEGOU r

;CHEGOU A

Pgina 75 a

Microprocessadores e Microcontroladores - 3a Unidade - Prof. Vitor Leo Filardi a

; LB5: CJNE CLR SJMP ; LB6: CJNE SETB SJMP : LB7: CLR SJMP ; SERIAL: CLR MOV SETB RETI END RI A,SBUF CHEGOU ;APAGAR FLAG DE INTERRUP ;COLOCAR DADO NO Acc LED_AMAR ESPERA ;CHEGOU v A,#"V",LB7 LED_VERDE ESPERA ;CHEGOU V A,#"a",LB6 LED_AMAR ESPERA ;CHEGOU a

3.2
3.2.1

Programao em Assembly ca
Introduo terica ca o

Este parte da apostila de fundamental importncia para quem deseja adquirir conhecimentos e a bsicos em programaao (software). Aqui, ensinado passo a passo o procedimento da elaboraao de a c e c programas simples e com loops; utilizando a linguagem Assembly aplicada aos microcontroladores da fam MCS-Sl da Intel. lia Uma vez que ns aprendemos e praticamos as tcnicas de programaao ensinadas, poderemos o e c aplicar tal metodologia de implementaao de programas a qualquer outra linguagem de programaao, c c seja ela de baixo, mdio ou alto n e vel. Existem muitas linguagens de programaao que podem ser utilizadas na programaao de sistemas c c inteligentes, utilizando mierocontroladores, alm do Assembly (n baixo), tais como as linguagens e vel estruturadas de programaao C (n mdio), BASIC e PL/M (n alto). A escolha de uma delas c vel e vel na elaboraao de um projeto de software muito importante envolve o conhecimento tcnico espec e e e cializado. A caracter stica de uma linguagem de n baixo, como o Assembly, a de apresentar o mesmo vel e conjunto de instruoes que aquele denido pelo fabricante da fam de microprocessadores ou mic lia crocontroladores, com a qual se deseja desenvolver os projetos de programa. Isso permite um total controle sobre os registradores intemos do dispositivo e as posioes de memria e, conseq entemente, c o u so gerados programas muito mais compactos em relaao as outras linguagens. Assim, sempre que exa c ` istirem limitaoes de memria (pouca memria) e limitaoes de velocidade de processamento (mxima c o o c a velocidade de processamento), recomenda-se a utilizaao da linguagem de programaao de n baixo, c c vel ou seja, o Assembly. Portanto, pelas prprias caracter o sticas dos microcontroladores, muito comum e a utilizaao do Assembly na elaboraao de projetos de equipamentos inteligentes. Em contrapartida, a c c unica desvantagem da linguagem Assembly em relaao as outras linguagens sua caracter c ` e stica de ser rica em detalhes, solicitando dos programadores um conhecimento bastante grande sobre o dispositivo a ser programado. A caracter stica de uma linguagem de n vel mdio, como o C, a de apresentar os aspectos de e e uma linguagem de n baixo (manipulaao bit a bit ou byte a byte dos registradores internos e das vel c posioes de memria), como tambm as caracter c o e sticas de uma linguageni de n alto, que denimos vel a seguir. Atualmente, essa uma das linguagens de programaao mais utilizadas em projetos de e c equipamentos inteligentes. Pgina 76 a

Microprocessadores e Microcontroladores - 3a Unidade - Prof. Vitor Leo Filardi a

A caracter stica de uma linguagem de n alto a de ser muito mais prxima da linguagem do vel e o ser humano. Trata-se de uma linguagem descritiva, cujas instruoes so palavras escritas em ingls e c a e que esto muito longe das instruoes em Assembly. Cada instruao de uma linguagem de n alto a c c vel representada por muitas instruoes de uma linguagem de n e c vel baixo. Programar utilizando uma linguagem de n alto muito mais fcil que programar com uma linguagem de n baixo ou mdio. vel e a vel e Mas quando se utiliza uma linguagem de programaao de n alto, so gerados programas maiores e c vel a com menor velocidade de processamento. Outra desvantagem da linguagem de n alto, que muitas vel vezes interpretada como vantagem, a de no exigir do programador o conhecimento completo e e e a detalhado do dispositivo que se deseja programar. Um programa em cdigo de mquina (cdigo-objeto) composto por bytes que representam as o a o e a linguagem que o microcontrolador sabe e pode executar. Assim, seminstruoes do dispositivo. E c pre que for desenvolvido um programa em uma determinada linguagem de programaao, necessrio c e a fazer a compilaao desse programa para transform-lo em linguagem de mquina. O programa em c a a linguagem de mquina deve ser simulado por meio de um simulador (AVSIM5l, Pinnacle etc.) ou a gravado em uma memria para vericar seu funcionamento por meio da utilizaao do prprio hardo c o ware do produto. A seguir inicia-se o estudo das tcnicas de programaao em Assembly para a fam e c lia de microcontroladores MCS-51 da Intel.

3.2.2

Estratgias de elaborao de programas e ca

E muito importante para um programador, antes de implementar um programa, seguir uma determinada metodologia. A seguir, descrita uma metodologia de elaboraao de programas que e c e independente da linguagem de programaao. c

Pr-requisitos do tcnico que desenvolver o projeto e e a a)Conhecer a estrutura interna (hardware) do dispositivo com que se deseja desenvolver o projeto; b)Conhecer o conjunto de instruoes do dispositivo. c

Viabilidade do projeto a)Obter e entender claramente as especicaoes do cliente (desejos do cliente, caracter c sticas do produto e do sistema, modo de funcionamento etc.); b)Elaborar diferentes estratgias de soluoes para o projeto. Isso pode ser feito utilizando-se e c diagramas de uxo de dados (DFD), diagramas de blocos, desenhos etc.; c)Elaborar a viabilidade do projeto com relaao ao hardware e ao software para vericar a c possibilidade de sua implementaao junto ao cliente. Algumas perguntas so utilizadas para c a garantir a viabilidade do projeto: Quais so as necessidades de hardware? Qual ser o custo a a nal do produto (o cliente pagar por esse valor)? Qual ser a quantidade de equipamena a tos a ser fabricada (a fbrica comporta essa quantidade)? Como sero feitas as entregas do a a produto? Existem fornecedores de componentes no Brasil? Quais componentes devem ser importados? Existem concorrentes? etc.; d)Escolher a melhor soluao junto com o cliente, ou seja, aquela que utilizar o menor n mero c a u de componentes e a que apresenta maior velocidade de processamento. Isso afeta diretamente o custo nal do hardware e traz uma maior exibilidade funcional do produto. Pgina 77 a

Microprocessadores e Microcontroladores - 3a Unidade - Prof. Vitor Leo Filardi a

Implementaao do projeto c a)Elaborar o uxograma do programa em Assembly: os uxogramas devem ser implementados desde o n vel de macrodetalhamento at o n e vel de microdetalhamento. Um uxograma representando o n de macrodetalhamento deve conter as idias e os objetivos dentro dos vel e blocos representativos. Um uxograma representando o n vel de microdetalhamento deve utilizar as representaoes simblicas dos mnemnicos das instruoes dentro dos blocos reprec o o c sentativos. Exemplo: dentro de um bloco do uxograma, representar (A) (B): signica a instruao MOV A,B; c b)A partir do uxograma, gerar o programa-fonte na linguagem de programaao escolhida (arc quivo em cdigo ASCII que contm as instruoes que compem o programa); o e c o c)Compilar o programa-fonte para gerar o arquivo binrio que corresponde ao programa em a cdigos de mquina; o a d)Fazer a linkagem dos arquivos binrios para agrupar de maneira organizada, os diferentes a blocos de programa que compem o programa nal; o e)Efetuar a simulaao do programa para vericar seu funcionamento e corrigir os poss c veis erros de lgica. Nessa fase, no necessrio 0 hardware do produto; o a e a f)Realizar a gravaao da EPROM, inserao no hardware do produto e teste f c c sico de sua funcionalidade; g)Efetuar a emulaao do programa ( necessrio um sistema emulador) para corrigir erros de c e a lgica ou eventuais falhas de algum componente, utilizando o prprio hardware do produto; o o h)Fazer testes rpidos de bancada para vericar o funcionamento do produto nal; a i)Realizar testes de longa duraao (conabilidade), em condioes de estresse, para a hoc c mologaao do produto. c

3.2.3

Fluxogramas

Essa ferramenta de programaao fundamental para a implementaao de qualquer rotina de um c e c por meio dessa ferramenta que se pode observar como foi impleprograma de microcomputador. E mentada a estratgia de soluao de uma necessidade de programaao elaborada por um programador. e c c O uxograma representa como o uxo de informaoes ser processado pelo microprocessador. c a

Pgina 78 a

Você também pode gostar