• Nenhum resultado encontrado

Microcontroladores e o 8051

N/A
N/A
Protected

Academic year: 2021

Share "Microcontroladores e o 8051"

Copied!
78
0
0

Texto

(1)

Faculdade de Ciˆ

encia e Tecnologia

Engenharia de El´

etrica

Disciplina: Microprocessadores e Microcontroladores

Professor: Vitor Le˜

ao Filardi

(2)
(3)

1 Primeira Unidade 7

1.1 Explica¸c˜ao Intuitiva . . . 7

1.2 Princ´ıpios B´asicos . . . 8

1.2.1 Conceitos B´asicos da Computa¸c˜ao . . . 8

1.2.2 Blocos B´asicos de microcomputadores . . . 9

1.3 Arquitetura do Microprocessador/Microcontrolador . . . 12 1.4 A CPU Internamente . . . 13 1.5 O Microcontrolador 8051 . . . 14 1.5.1 Mem´oria . . . 15 1.5.2 Circuito de Reset . . . 21 1.5.3 O Gerador de Clock . . . 24 1.5.4 Interrup¸c˜ao . . . 25

1.5.5 Registro de Controle das Interrup¸c˜oes . . . 29

1.5.6 Tempo para Atendimento das Interrup¸c˜oes . . . 32

1.5.7 Ajuste das Interrup¸c˜oes Externas para serem Ativas em N´ıvel ou Transi¸c˜ao . . 32

1.5.8 Hardware para expandir as possibilidade de Interrup¸c˜ao Externa . . . 33

1.5.9 Exerc´ıcios Resolvidos . . . 34

1.5.10 Conjunto de Instru¸c˜oes . . . 36

2 Segunda Unidade 41 2.1 Ciclos de M´aquina . . . 41

2.2 Portas de I/O . . . 42

2.2.1 Princ´ıpio de Funcionamento e Utiliza¸c˜ao . . . 42

2.2.2 Caracter´ısticas Gerais e de Tempo dos Ports . . . 45

2.2.3 Uso das Portas de I/O para a Expans˜ao da Mem´oria de Dados e Programa . . 46

2.2.4 Sele¸c˜ao de Programa Externo ou Interno . . . 47

2.2.5 Uso dos Pinos da Porta 3 como fun¸c˜oes Alternativas . . . 47

2.2.6 Capacidade de Corrente nos Pinos de I/O . . . 48

2.3 Modos de Endere¸camento das Instru¸c˜oes . . . 48

2.3.1 Endere¸camento por Registrador . . . 48

2.3.2 Endere¸camento Direto . . . 48 2.3.3 Endere¸camento Indireto . . . 49 2.3.4 Endere¸camento Imediato . . . 50 2.3.5 Endere¸camento Relativo . . . 50 2.3.6 Endere¸camento Absoluto . . . 51 2.3.7 Endere¸camento Longo . . . 51 2.3.8 Endere¸camento Indexado . . . 51 2.4 Temporizadores e Contadores . . . 52 2.4.1 Introdu¸c˜ao . . . 52 2.4.2 Registros Envolvidos . . . 52 2.4.3 Modos de opera¸c˜ao . . . 55

(4)

3 Terceira Unidade 65

3.1 Comunica¸c˜ao Serial . . . 65

3.1.1 Introdu¸c˜ao . . . 65

3.1.2 Registros Envolvidos . . . 65

3.1.3 Modos de Opera¸c˜ao . . . 67

3.1.4 Cuidados com a Porta Serial . . . 70

3.1.5 Comunica¸c˜ao entre v´arios 8051 . . . 72

3.1.6 Comunica¸c˜ao serial entre o 8051 e o PC . . . 73

3.1.7 Exerc´ıcios . . . 74

3.2 Programa¸c˜ao em Assembly . . . 76

3.2.1 Introdu¸c˜ao te´orica . . . 76

3.2.2 Estrat´egias de elabora¸c˜ao de programas . . . 77

(5)

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.

(6)
(7)

Primeira Unidade

O que ´

e Microcontrolador

1.1

Explica¸

ao Intuitiva

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 ´e em dire¸c˜ao ao livro de receitas onde dever´a ter impresso a rotina de como fazer uma ”Torta de Chocolate”

Tudo bem at´e aqui. E agora como vamos acessar a receita da torta? De que se comp˜oe uma receita? Pois bem, vamos procurar a p´agina que cont´em o t´ıtulo ”Torta de Chocolate”, encontra-se ent˜ao a receita que ´e equivalente a um ”software” de constru¸c˜ao da torta, que est´a gravada em um p´agina ”ABC” do livro de receitas. Notemos que, na p´agina, apenas lemos; n˜ao escrevemos nada l´a, ou seja, em trocado de mi´udo ser´a a nossa futura ”ROM” - Read Only Memory - e p´agina o nosso endere¸co, pois toda vez quisermos tal informa¸c˜ao basta acessar tal endere¸co e obtˆe-l´a.

Poder´ıamos ainda necessitar de uma cobertura para a torta caso fossemos mostrar servi¸co para o chefe da casa, vejamos que no livro de receita exista em uma outra p´agina a rotina ”Cobertura 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 execu¸c˜ao e depois retornar a torta, o que ´e chamado tamb´em como 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 mem´oria ”RAM”) para ajustarmos a receita,uma vez que na receita da torta n˜ao devo anotar nada nela. Esta mem´oria tempor´aria, ser´a utilizada para c´alculos, e depois podemos nos desfazer do seu conte´udo, ou seja, jogar no lixo.

Vejamos como ficaria esta estrutura intuitiva na figura abaixo.

Quais s˜ao as diferen¸cas sutis e importantes entre o microprocessador e o cozinheiro e suas an-ota¸c˜oes?

Bem, ´e que o microprocessador, por ser uma m´aquina limitada, n˜ao atende ao rico vocabul´ario do ser humano cozinheiro que, al´em de rico, ´e sofisticado, impreciso e de m´ultipla interpreta¸c˜ao, que s´o uma m´aquina inteligente como o homem entede ( vejamos o exemplo: para o homem as seguintes palavras s˜ao equivalentes: fazer = realizar = trabalhar. Para o microprocessador, o vocabul´ario ´e bem reduzido e espec´ıfico; n˜ao existem adjetivos, sinˆonimos, etec...).

(8)

C o z i n h e i r o Livro de Receitas Complexa) Escrevo Leio Ingredientes + Utensilios HARDWARE SOFTWARE (Linguagem So Leio Folha de Rascunho M i c r o p r o c. Especifica Perifericos: Etc.... HARDWARE SOFTWARE Linguagem So Leio (Programa de Teclado,mouse WRITE

READ RAM (Dados)

ROM

Figura 1.1: Analogia da estrutura Intuitiva

se a ela para fazer a m´aquina trabalhar. Este ´e o ASSEMBLER do microprocessador, que ´e o seu conjunto de instru¸c˜oes.

1.2

Princ´ıpios B´

asicos

1.2.1 Conceitos B´asicos da Computa¸c˜ao

Antes de iniciarmos o estudo de microcomputadores, vamos nos familiarizar com os termos t´ecnicos e saber o seu significado individualmente.

1.Bit: abrevia¸c˜ao de d´ıgito bin´ario (binary digit), que corresponde ao valor zero l´ogico(0) ou ao valor um l´ogico(1). Podemos fazer uma analogia ao sistema num´erico como sendo uma unidade de um valor qualquer.

2.Byte: representa¸c˜ao num´erica composta de 8 bits. Pode representar n´umeros de 00h(=010) a

FFh(=25510). Essa representa¸c˜ao ´e vastamente utilizada na representa¸c˜ao das instru¸c˜oes que

o microcontrolador ´e capaz de executar. Novamente fazendo analogia, teremos o similaridade como as dezenas, centenas etc..., lembrando que em eletrˆonica digital corresponde como sendo uma palavra.

3.Registradores: conjunto de flip-flop, geralmente do tipo D que s˜ao interligados em paralelo entre si. Eles s˜ao respons´aveis pelo armazenamento de uma informa¸c˜ao que pode ter 8, 16, 32, 64 ou 128 bits, dependendo de quantos flip-flops do tipo D est˜ao interligados entre si. Os registradores apresentam caracter´ısticas vol´ateis e , quando eles s˜ao desenergizados, perdem suas informa¸c˜oes.

(9)

4.Microcomputador: equipamento compacto cujo objetivo principal ´e simular eletronicamente o sistema chamado ser humano. Suas principais vantagens s˜ao: grande velocidade do proces-samento das informa¸c˜oes e alta confiabilidade nas atividades executadas. Ele ´e composto por trˆes blocos b´asicos: Unidade Central e de Processamento, Unidade de Mem´oria e Unidade de entrada e sa´ıda de informa¸c˜oes.

5.Instru¸c˜ao: define uma ´unica a¸c˜ao (tarefa) que o microcomputador pode executar por vez. As a¸c˜oes das instru¸c˜oes podem corresponder a opera¸c˜oes de leitura e escrita nos conte´udos dos reg-istradores ou nas posi¸c˜oes de mem´orias, a opera¸c˜ao l´ogica e aritm´eticas, etc.

6.Equipamento Inteligente: equipamento com microprocessador ou com microcontrolador. Tamb´em chamada de eletrˆonica embarcada

7.Programa ou software: definido por um conjunto de instru¸c˜oes arranjadas de maneira or-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 exe-cutadas ao longo do tempo. Existem v´arias classifica¸c˜oes de programas: os programas de sistema operacional( linux, DOS, windows e etc.), os utilit´arios( Anti-virus,scandisk e etc.) e os aplica-tivos (WORD, EXCEL, Kile e etc.)

8.Firmware: programa (software) que est´a exclusivamente armazenado em uma mem´oria n˜ao-vol´atil(ROM/PROM/EPROM/E2PROM) de um equipamento inteligente. No m´ınimo o firmware tem a finalidade principal de programar a forma de opera¸c˜ao do hardware (n´umero de portas de entrada e sa´ıda, forma de comunica¸c˜ao serial, forma de opera¸c˜ao dos timers/contadores etc.) e de definir suas condi¸c˜oes iniciais de opera¸c˜ao.

9.Hardware: s˜ao as partes eletrˆonicas que comp˜oem um microcomputador, como a mother board (placa m˜ae que cont´em pelo menos o microprocessador ou o microcontrolador de um microcom-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 mi-crocomputador corresponde ao c´erebro de um ser humana. Fisicamente ´e um dispositivo semi-condutor (circuito integrado,CI) constitu´ıdo por milh˜oes de transistores que implementam uma variedade de circuitos (registradores, m´aquinas seq¨uenciais, circuitos l´ogicos e etc.). Ele ´e re-spons´avel pela busca de um programa na mem´oria e por sua execu¸c˜ao.

11.Microcontrolador: dispositivo semicondutor em forma de CI, que integra todas as partes b´asicas de um microcomputador - microprocessador(CPU), mem´orias n˜ao-vol´ateis (ROM /PROM /EPROM /E2PROM), mem´orias vol´ateis(RAM, SRAM, DRAM, Flash RAM), portas de en-trada e sa´ıdas (portas de comunica¸c˜ao paralela e/ou serial, conversores anal´ogicos/digitais,conversores digitais/anal´ogicos etc.). Ele ´e conhecido como ummicrocomputador implementado em um ´unico CI.

1.2.2 Blocos B´asicos de microcomputadores

Qualquer computador, seja ele microcomputadores, computadores de m´edio porte ou ainda com-putadores de grande porte, s˜ao constitu´ıdos por trˆes blocos b´asicos: a unidade central de processamento (CPU), a unidade de mem´oria (na qual s˜ao armazenados os programas e as informa¸c˜oes) e a unidade de entrada e sa´ıda (dispositivos que fazem a comunica¸c˜ao com o mundo externo).

(10)

CPU

A CPU ´e respons´avel pela inteligˆencia da m´aquina, ou seja, ´e ela que tem a capacidade de tomar decis˜oes (a¸c˜oes) no sistema microcomputadorizado, por meio da execu¸c˜ao de um programa. ´E ela que executa o programa armazenado na mem´oria do microcomputador, que foi projetado por um progra-mador. Ao executar um programa, ela ´e respons´avel pela obten¸c˜ao das informa¸c˜oes a serem analisadas por meio de dispositivos de entrada (teclado, canal de comunica¸c˜ao serial etc.), pelo processamento (interpreta¸c˜ao, manipula¸c˜ao, ordena¸c˜ao, modifica¸c˜ao, c´alculos l´ogicos ou matem´aticos etc.) das in-forma¸c˜oes e pela resposta (a¸c˜ao) do sistema microcomputadorizado a uma determinada situa¸c˜ao de controle para a qual ele foi projetado a fim de controlar, por meio de um dispositivo de sa´ıda (escrita na mem´oria de v´ıdeo, transmiss˜ao de dados para outro microcomputador, acionamento de um rel´e, acionamento de um bip,etc.). Assim, por exemplo, um microcomputador projetado para funcionar como um caixa eletrˆonico de banco deve fazer as seguintes opera¸c˜oes: leitura das informa¸c˜oes conti-das no cart˜ao magn´etico (obten¸c˜ao de informa¸c˜oes), decodifica¸c˜ao da senha digitada no teclado pelo usu´ario, busca de saldo banc´ario nos bancos de dados do banco (processamento), disponibiliza¸c˜ao do saldo banc´ario no monitor de v´ıdeo e a impress˜ao em papel do referido saldo banc´ario (resposta do sistema por meio da a¸c˜ao de gerar informa¸c˜oes no monitor de v´ıdeo e tamb´em pela impress˜ao em papel das informa¸c˜oes organizadas solicitadas pelo usu´ario).

De maneira simplificada, pode-se dizer que a unidade de processamento central (microprocessador) apresenta duas fun¸c˜oes b´asicas:

a)Leitura (busca) e interpreta¸c˜ao do programa alocado na mem´oria, instru¸c˜ao por in-stru¸c˜ao: como o programa fica alocado na mem´oria do microcomputador, e n˜ao dentro do micro-processador/CPU, em primeiro lugar, o microprocessador precisa buscar as instru¸c˜oes, uma por uma, na mem´oria. Isso ´e feito por meio da opera¸c˜ao de leitura de um byte na mem´oria que corresponde a uma determinada instru¸c˜ao e depois ´e realizada a interpreta¸c˜ao da instru¸c˜ao lida (decodifica¸c˜ao), pois o microprocessador tem uma determinada quantidade de instru¸c˜oes que ele ´e capaz de executar. Dessa maneira, ele precisa verificar qual dessas instru¸c˜oes deve ser executada. Assim, ao finalizar essa etapa, o microprocessador/CPU sabe o que deve fazer. O pr´oximo passo ´e a execu¸c˜ao da in-stru¸c˜ao.

b)Execu¸c˜ao do programa, instru¸c˜ao por instru¸c˜ao: a palavra execu¸c˜ao de uma instru¸c˜ao pode significar a transferˆencia de dados dos registradores internos do microprocessador/CPU para a mem´oria ou para os dispositivos de entrada e sa´ıda, e vice-versa. Pode tamb´em significar a ex-ecu¸c˜ao de opera¸c˜oes l´ogicas e aritm´eticas etc.

Esse processo de buscar, interpretar e executar instru¸c˜ao por instru¸c˜ao ´e uma atividade cont´ınua do microprocessador e, dessa forma, um programa ´e processado por inteiro. A unidade de processamento central (microprocessador) ´e constitu´ıda por trˆes partes principais: a unidade l´ogica e aritm´etica, os registradores internos e o bloco de temporiza¸c˜ao e controle.

a)Unidade L´ogica e Aritm´etica (ULA): muitas vezes, tamb´em ´e chamada de ALU (Arithmetic Logic Unit). Ela ´e respons´avel, principalmente, pela execu¸c˜ao das instru¸c˜oes correspondentes `as opera¸c˜oes aritm´eticas e l´ogicas. Al´em disso, uma caracter´ıstica muit´ıssimo importante que deve ser destacada, referente `a ULA, ´e que, ao executar uma instru¸c˜ao de uma opera¸c˜ao aritm´etica ou l´ogica, ela tamb´em define a condi¸c˜ao num´erica do resultado por meio de alguns bits sinalizadores, chamados de flags de sinaliza¸c˜ao, tornando-os iguais a um (setando-os) ou tornando-os iguais a zero (resetando-os), e pela utiliza¸c˜ao de outras instru¸c˜oes que s˜ao ca- pazes de testar esses flags de sinaliza¸c˜ao. Isso faz com que o sistema microcomputadorizado possa gerenciar uma determinada situa¸c˜ao de projeto ou desempenhar uma determinada tarefa bem-definida.

b)Registradores internos: s˜ao compostos por m registradores de n bits interligados em paralelo entre si. Os valores m e n dependem das caracter´ısticas de cada microprocessador/microcontrolador

(11)

(p. ex.: 32 registrado- res de 8 bits etc.). Como s˜ao formados por flip-flops, ´e poss´ıvel realizar opera¸c˜oes de leitura e escrita de informa¸c˜oes. Quando a CPU ´e ”desenergizada”por apresentar car-acter´ısticas vol´ateis, essas informa¸c˜oes s˜ao perdidas. Geralmente, eles s˜ao capazes de armazenar:

•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 ´e chamado de microcomputador de 8 bits se ele for capaz de processar in-forma¸c˜oes de oito em oito bits por vez (opera¸c˜oes de movimenta¸c˜ao de inin-forma¸c˜oes e opera¸c˜oes aritm´eticas e l´ogicas). Analogamente, para os microcomputadores de 16 e 32 bits, quanto maior for a quantidade de bits processados em paralelo por vez, maior ser´a sua capacidade de processamento. A unidade utilizada para medir a capacidade de processamento ´e o Mips (milh˜oes de informa¸c˜oes por segundo).

c)Bloco de temporiza¸c˜ao e controle: respons´avel pelo controle do fluxo de informa¸c˜oes do micro-processador para as unidades de mem´oria e para as unidades de entrada e sa´ıda. ´E esse bloco que define os sinais de controle de temporiza¸c˜ao para o sincronismo do fluxo de informa¸c˜oes no sistema microcomputadorizado (p. ex.: libera¸c˜ao de informa¸c˜oes da ULA para os registradores, mem´oria e unidades de entrada e sa´ıda etc.) por meio da defini¸c˜ao dos sinais de leitura (read), de escrita (write), de inicializa¸c˜ao do sistema (reset), de libera¸c˜ao dos barramentos de dados e endere¸cos, entre outros.

Unidades de Mem´orias

As unidades de mem´orias s˜ao divididas em duas partes: mem´oria de armazenamento de programa e mem´oria de armazenamento de informa¸c˜oes (dados, bytes, bits etc.).

a)Mem´oria de armazenamento de programa: todo microcomputador deve ter uma ´area de mem´oria na qual ser´a armazenado o programa que definir´a as tarefas que o microcomputador / CPU deve executar. Esse programa define a fun¸c˜ao de um microcomputador e tamb´em diz ao mi-crocomputador, instru¸c˜ao por instru¸c˜ao, o que ele deve fazer ao longo do tempo. Esse programa deve ser implementado por um programador t´ecnico, conhecedor do hardware do sistema microcomputa-dorizado e das instru¸c˜oes do microprocessador. O microcomputador n˜ao funcionar´a se n˜ao existir um programa armazenado em sua mem´oria de programa. Assim, uma vez energizado o microcom-putador, esse programa ser´a buscado e executado pelo microprocessador. Esse programa define a caracter´ıstica funcional do microcomputador (p. ex.: operar como um forno de microondas, como uma m´aquina de lavar roupas ou como uma inje¸c˜ao eletrˆonica de autom´ovel etc.). Esse programa n˜ao pode ser perdido na ausˆencia de energia el´etrica, pois isso acarretaria a perda da funcionalidade desse microcomputador, para a qual foi projetado. Assim, o tipo de mem´oria em que esse programa deve ser armazenado ´e a mem´oria n˜ao-vol´atil.

b)Mem´oria de armazenamento de informa¸c˜oes: todo microcomputador deve ter uma ´area de armazenamento de informa¸c˜oes. Essa mem´oria deve permitir a escrita e a leitura de informa¸c˜oes. Para entender melhor, considere um microcomputador controlando uma determinada atividade. Caso existam informa¸c˜oes definidas pelo mundo externo por meio de chaves, sensores, teclados etc., elas devem ser lidas e armazenadas na mem´oria, para depois serem lidas novamente e analisadas (tratadas) pelo microprocessador por meio de um programa. Como exemplo, considere o aciona-mento das teclas do teclado de um microcomputador, ou seja, uma vez acionada uma tecla, a CPU dever´a ler a informa¸c˜ao que foi gerada pelo hardware associado a essa tecla e executar o armaz na-mento dessa informa¸c˜ao na mem´oria. Depois, dever´a fazer a leitura dessa informa¸c˜ao, a fim de analis´a-la (interpret´a- la), para verificar qual tecla foi acionada. Al´em disso, a informa¸c˜ao dever´a

(12)

de leitura e escrita na mem´oria, para a realiza¸c˜ao dessa tarefa. Assim, ´e preciso utilizar uma mem´oria que tenha a caracter´ıstica de realizar leitura e escrita de informa¸c˜oes. Portanto, deve-se utilizar mem´orias RAM (Random Access Memory). Lembre-se de que essas mem´orias apresentam a caracter´ıstica de se- rem vol´ateis. Portanto, sempre que o microcomputador for desenergizado, as informa¸c˜oes contidas nesse tipo de dispositivo ser˜ao perdidas.

Unidade de Entrada e Sa´ıda

Unidade de entrada e sa´ıda (E/S): tamb´em chamada pela abrevia¸c˜ao de I/O (Input/Output), ´e respons´avel pelo interfaceamento das informa¸c˜oes entre o microcomputador e o mundo externo. Geralmente s˜ao circuitos integrados (CIs) capazes de ler e armazenar as informa¸c˜oes vindas do mundo externo, por exemplo, informa¸c˜oes origin´arias do teclado, do canal de comunica¸c˜ao serial de um mi-crocomputador etc.; e que tamb´em podem definir informa¸c˜oes do mimi-crocomputador para o mundo externo, por exemplo, o acionamento de bips, alto-falantes, leds indicadores, displays, interfaces de comunica¸c˜ao seriais e paralelas etc.

1.3

Arquitetura do Microprocessador/Microcontrolador

Como vimos at´e aqui o microprocessador ´e um elemento eletrˆonico, desenvolvido para execu-tar execu-tarefas espec´ıficas, que dependem de uma linguagem pr´opria para cada fam´ılia de micropro-cessadores/microcontroladores. Quando falo em fam´ılias estou me referindo ao tipo de linguagem que o meu microprocessador/microcontrolador ser´a capaz de interpretar, isto quer dizer que a lin-guagem a qual irei utilizar no programa est´a diretamente relacionada ao modelo do meu micropro-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 n˜ao conecta no computador, um palm idem, s˜ao todos eles pertencentes a diversas fam´ılias, mas que interagem entre si.

Assim, ao programarmos a ROM com os c´odigos compat´ıveis com a linguagem ou fam´ılia perten-centes ao microprocessador, ele ser´a capaz de executar as tarefas por esse c´odigo designadas. Cabe ao projetista entender perfeitamente o conjunto de instru¸c˜oes da m´aquina (o t˜ao famoso ASSEMBLER) e a sua estrutura fisica, e de interfaces, tamb´em conhecida como hardware.

Vejamos como os trˆes blocos visto at´e aqui se comunicam entre si para dar funcionalidade ao microprocessador. As vias de comunica¸c˜ao entre os blocos b´asicos s˜ao chamadas de barramentos ou do inglˆes bus. Cada barramento ´e constitu´ıdo por um n´umero de vias (trilhas de cobre), nas quais fluem informa¸c˜oes em paralelo. S˜ao trˆes os barramentos existentes: o barramento de endere¸cos, de temporiza¸c˜ao e controle e o de dados.

1.Barramento de endere¸cos: A CPU utiliza esse barramento para definir os endere¸cos das posi¸c˜oes de mem´oria de programa em que ela ir´a buscar as instru¸c˜oes a serem executadas e tamb´em para definir os endere¸cos de mem´oria de dados ou dos dispositivos de entrada e saida para a troca de informa¸c˜oes. Esse barramento ´e unidirecional.

2.Barramento de temporiza¸c˜ao e controle: A CPU utiliza esse barramento para definir os sinais de temporiza¸c˜ao e controle para gerenciar o tempo e a dire¸c˜ao do fluxo de informa¸c˜oes nas opera¸c˜oes de leitura e escrita nos dispositivos (unidades de mem´oria ou unidades de entrada e saida). Esse barramento ´e unidirecional.

3.Barramento de dados: A CPU utiliza esse barramento para receber as informa¸c˜oes vindas da mem´oria ou dos dispositivos de entrada e saida ou ent˜ao definir as informa¸c˜oes para a mem´oria ou para os dispositivos de entrada e sa´ıda. Esse barramento ´e bidirecional. Vale ressaltar que

(13)

nem todos os microprocessadores/microcontroladores n˜ao trocam informa¸c˜oes diretamente com os dispositivos de entrada e saida.

4.Oscilador: ´E o elemento que gera o ”marcapasso”da CPU, que permite que o microprocessador realize as suas tarefas internas e externas de maneira sincronizada e com velocidade predetermi-nada.

5.Reset: ´E o elemento que faz a CPU iniciar suas rotinas internas e realizar tamb´em a primeira leitura de instru¸c˜ao no endere¸co 0000h.

6.Interrup¸c˜oes: S˜ao pinos de acesso externo que permitem interromper o microprocessador, que ent˜ao interrompe suas tarefas atuais e atende aquelas planejadas pela interrup¸c˜ao solicitada.

Microprocessador ou Nao−Volatil (ROM) Volatil (RAM) Mem´oria ou E/S I/O Unidade Cental de Processamento Bus Endereco BUS Dados Oscilador Reset Interupcao BUS de Temp. Controle

Figura 1.2: Arquitetura b´asica de um microprocessador

Como o computador s´o interpreta c´odigos bin´arios, n˜ao existe a necessidade que n´os programadores converse no mesmo n´ıvel, podemos utilizar os outros tipos de codifica¸c˜ao Octal, Hexadecimal, Deci-mal e por Nomes Simb´olicos, que representam uma instru¸c˜ao, como por exemplo: ”add”= ”Soma”= C´odigo Hexa 24 ou 00100100 em bin´ario (no exemplo, add=add A,#valor), para o microprocessador 8051. A CPU s´o entende d´ıgitos bin´arios, mas n´os a memorizarmos por ”add”, que ´e mais f´acil de se lembrar. Assim atrav´es de um software (interpretador) ir´a transformar este ”add”em 00100100, quando gravamos a ROM.

1.4

A CPU Internamente

Veremos algumas de suas funcionalidades mais importantes

a)Registradores: S˜ao equivalentes a uma RAM, s´o que interna `a CPU. Servem para armazenamento tempor´ario de informa¸c˜oes de utilidade interna e externa `a CPU. Existem registradores com fun¸c˜ao definida: por exemplo, aquele que ´e imagem ou espelho de uma porta de ”I/O”. O sinal na porta de I/O pode ser lido diretamente no registrador equivalente; por exemplo, a porta ¨PO”tem um reg-istrador imagem de ”PO”, cujo conte´udo ´e o reflexo do que h´a na entrada f´ısica dessa porta. Existem registradores de Fun¸c˜ao Geral, que podem ser acessados pelas instru¸c˜oes do Mp (microprocessador) e ainda podem ser conhecidos por nomes (registradores R0, R1 etc.) ou sem nomes (registradores

(14)

b)Contador de Programa (Program Counter ou PC): ´E o indicador de endere¸co de mem´oria ex-terna. Ele serve para endere¸car a pr´oxima instru¸c˜ao a ser lida pelo Mp, a fim de que ela ”saiba”onde estava e para onde deve ir (ler nova instru¸c˜ao no pr´oximo endere¸co).

c)Registradores de Instru¸c˜ao (Instruction Register ou IR): ´E o local para onde se dirige o c´odigo da instru¸c˜ao que foi retirada da ROM por meio do endere¸co dado pelo PC no ciclo de busca (fetch) da instru¸c˜ao da mem´oria. O IR ´e necess´ario para que, depois da busca, um decodificador possa decodificar, ”abrir”a instru¸c˜ao e envi´a-la `a unidade de processamento (ALU-Aritmetic Logic Unit), a fim de que, neste local, ela seja ”executada”.

d)Unidade de Decodifica¸c˜ao (Decode Unit): ´E o local em que a instru¸c˜ao ´e decodificada, e tamb´em s˜ao gerados os controles que, junto com a Unidade de Controle, permitem executar a instru¸c˜ao na ALU.

e)Unidade L´ogica e Aritm´etica (ALU-Arithmetic Logic Unit): ´E o local em que s˜ao realizadas as opera¸c˜oes de: l´ogica, aritm´etica e decis˜ao/compara¸c˜ao. ´E o ”c´erebro”da m´aquina.

f)Acumulador (Accumulator): ´E um registrador principal e muito ”popular”, pois v´arias in-stru¸c˜oes se referem a ele para operar.

g)Unidade de Controle (Control Unit): ´E o local em que se processa o controle do fluxo das informa¸c˜oes a fim de realizar a instru¸c˜ao recebida.

Exemplo de Funcionamento: Suponha que o Mp foi ler uma instru¸c˜ao na ROM. Os seguintes passos ser˜ao dados:

1.O endere¸co de PC ´e posto na via de endere¸co (que ´e o endere¸co desta pr´oxima instru¸c˜ao a ser lida).

2.O sinal de controle da ROM, ´e ativado (pois vamos ler a ROM e n˜ao a RAM).

3.A instru¸c˜ao ´e lida da ROM, no endere¸co dado pelo PC (no caso, o endere¸co ”n”), e ´e lida pela via de dados. Estes trˆes itens correspondem ao ciclo de busca ou fetch.

4.A instru¸c˜ao ´e carregada e armazenada no IR (Registrador de Instru¸c˜oes). 5.O PC ´e incrementado para ler a pr´oxima instru¸c˜ao (apontar´a para ”n+1”).

6.Inicia-se outro ciclo, o de execu¸c˜ao interna da instru¸c˜ao, auxiliado pela Unidade de Controle e pelos registradores, decodificado pela Unidade de Decodifica¸c˜ao e executado pela ALU.

1.5

O Microcontrolador 8051

O 8051 ´e um microcontrolador r´apido com clock t´ıpico de 12 MHz sendo que existem vers˜oes de at´e 30 MHz, fornecidas por diversos fabricantes, e suas caracter´ısticas de hardware e software permitem us´a-lo como um poderoso controlador, sobretudo em sistemas para l´ogica seq¨uencial e combinat´oria.

Entre as suas caracter´ısticas de hardware, podemos destacar: 1)2 Kbytes de mem´oria de programa (Flash)

2)128 Bytes de mem´oria RAM 3)Duas portas de I/O de 8 bits 4)Comparador de tens˜ao on-chip

5)Controlador de interrup¸c˜ao de 6 entradas com estrutura Nesting* 6)Canal serial UART Full-Duplex program´avel

(15)

7)Dois contadores/temporizadores de 16 bits 8)Modos Power-Down e Power-Idle

[*] ”Nesting”´e o nome que se d´a ao processo pelo qual uma interrup¸c˜ao pode interromper outra que j´a estiver sendo atendida, desde que tenha maior prioridade.

Entre as caracter´ısticas de software podemos destacar a capacidade de executar complexas opera¸c˜oes aritm´eticas e l´ogicas (multiplica¸c˜ao, divis˜ao, permuta, e deslocamento de bits,. . . ), trabalhar com ban-cos de registradores nominais e inclusive trabalhar com 128 bits individualmente endere¸c´aveis na RAM. H´a um tempo n˜ao muito distante, para realizar um projeto utilizando microcontroladores com todas estas funcionalidades, era necess´ario agrupar diversas pastilhas com as fun¸c˜oes descritas ante-riormente. Isto tornava prot´otipo fisicamente maior, aumentaria o consumo de energia, diminuindo a autonomia das baterias e inviabilizando a sua portabilidade que hoje s˜ao fundamentais para os sis-temas embarcados.

Para compreendermos melhor o 8051 torna-se necess´ario conhecer a estrutura interna do micro-controlador e estudarmos cada uma delas detalhadamente. Para isso nos dividiremos da seguinte forma: 1)Mem´oria 2)Circuito de Reset 3)Gerador de Clock 4)Controlador de Interrup¸c˜ao 5)Conjunto de Instru¸c˜oes

Com esta divis˜ao ficar´a mais claro definirmos todas as instru¸c˜oes realizadas pelo 8051 e, o fun-cionamento dos demais componentes associados ao microcontrolador.

1.5.1 Mem´oria

Vejamos, o diagrama de blocos do 89C2051 na figura 1.3. Neste diagrama de blocos, temos uma no¸c˜ao geral dos elementos internos ao 8051 e de suas liga¸c˜oes com o mundo externo.

A mem´oria de programa do 8051 ´e do tipo Flash ROM (E2PROM), podendo sofrer um ciclo de escrita/apagamento de 1000 vezes. Este tipo de mem´oria de programa torna as tarefas de teste e depura¸c˜ao dos programas bastante agrad´aveis, pois a antiga etapa de apagar a mem´oria em luz ultra-violeta n˜ao se faz mais necess´aria.

O segmento de programa da mem´oria se inicia no endere¸co 0000h e pode ocupar todos os 2048 bytes da mem´oria, a ATMEL oferece tamb´em outros modelos de microcontroladores com uma ROM interna maior para que possamos utilizar programas maiores.

A mem´oria RAM se divide conforme a figura 1.4

Os registradores de fun¸c˜oes especiais incluem loca¸c˜oes referentes `as portas de I/O, ponteiros do sistema, registros de interrup¸c˜ao, registros da porta serial, dos temporizadores e registros aritm´eticos. A CPU trata os registros de fun¸c˜oes especiais da mesma forma que trata a RAM, podendo ali efetuar altera¸c˜oes e, o mais importante, endere¸car algumas dessas posi¸c˜oes como bit.

Esta facilidade de endere¸car bits ´e muito interessante, pois facilita a vida do programador. Vamos supor que temos de zerar o quinto bit de uma certa posi¸c˜ao de mem´oria. O m´etodo tradicional consiste

(16)

Figura 1.3: Organiza¸c˜ao Interna do 8051

pois 1 AND X resulta X, logo n˜ao alteramos os bits 7, 6, 4, 3, 2, 1 e 0. Mas temos que 0 AND X resulta 0, e desta forma zeramos o quinto bit.

Quando o sistema trabalha com bits, basta dar uma instru¸c˜ao do tipo ”zere o bit 5 na posi¸c˜ao N”e teremos efetuado a opera¸c˜ao, sem nos preocuparmos com os demais bits.

A parte baixa da mem´oria RAM interna (daqui a diante chamaremos apenas de RAM) est´a di-vidida em por¸c˜oes distintas, que incluem 4 bancos de registradores de 8 bytes cada, uma por¸c˜ao de 16 bytes cujos bits s˜ao individualmente endere¸c´aveis pela CPU e o restante da mem´oria, que somente pode ser endere¸cado byte a byte.

Os bancos de registradores s˜ao simples posi¸c˜oes de mem´oria RAM que permitem seu endere¸camento pelo nome dado a cada registro, al´em de seu endere¸camento pela posi¸c˜ao de mem´oria.

(17)

Figura 1.4: Organiza¸c˜ao da RAM Interna do 8051

A vantagem dos bancos de registradores est´a em seu uso pelo sistema, como ´ındice para en-dere¸camento e pela facilidade de lembran¸ca de seu nome, al´em de serem amplamente utilizados por compiladores de linguagem de alto n´ıvel.

Por exemplo, ´e mais f´acil lembrar que um certo dado est´a no registro R2 do que lembrar que o mesmo est´a na posi¸c˜ao 02 de mem´oria (Supondo Banco 0).

(18)

A sele¸c˜ao de um certo banco de registradores se d´a pelo valor dos bits RS1 e RS0 conforme a tabela a seguir:

Posi¸c˜ao de Mem´oria Nome do Registrador Bit RS1 Bit RS0 BANCO

1F R7 1 1 3 1E R6 1 1 1D R5 1 1 1C R4 1 1 1B R3 1 1 1A R2 1 1 19 R1 1 1 18 R0 1 1 17 R7 1 0 2 16 R6 1 0 15 R5 1 0 14 R4 1 0 13 R3 1 0 12 R2 1 0 11 R1 1 0 10 R0 1 0 0F R7 0 1 1 0E R6 0 1 0D R5 0 1 0C R4 0 1 0B R3 0 1 0A R2 0 1 09 R1 0 1 08 R0 0 1 07 R7 0 0 0 06 R6 0 0 05 R5 0 0 04 R4 0 0 03 R3 0 0 02 R2 0 0 01 R1 0 0 00 R0 0 0

Tabela 1.1: Tabela de registradores do banco de mem´oria

Conforme visto anteriormente, temos 16 bytes na RAM cujos bits s˜ao individualmente endere¸c´aveis pela CPU, conforme podemos ver pela tabela abaixo, dispostos da seguinte forma.

(19)

Endere¸cos Individuais dos bits Endere¸cos dos bytes 7F 7E 7D 7C 7B 7A 79 78 2F 77 76 75 74 73 72 71 70 2E 6F 6E 6D 6C 6B 6A 69 68 2D 67 66 65 64 63 62 61 60 2C 5F 5E 5D 5C 5B 5A 59 58 2B 57 56 55 54 53 52 51 50 2A 4F 4E 4D 4C 4B 4A 49 48 29 47 46 45 44 43 42 41 40 28 3F 3E 3D 3C 3B 3A 39 38 27 37 36 35 34 33 32 31 30 26 2F 2E 2D 2C 2B 2A 29 28 25 27 26 25 24 23 22 21 20 24 1F 1E 1D 1C 1B 1A 19 18 23 17 16 15 14 13 12 11 10 22 0F 0E 0D 0C 0B 0A 09 08 21 07 06 05 04 03 02 01 00 20

Tabela 1.2: Endere¸cos de Mem´oria endere¸cavel por byte e bit

Temos tamb´em alguns registros de fun¸c˜oes especiais que tˆem seus bits endere¸c´aveis, sendo que al-guns deles tˆem, inclusive, um nome mnemˆonico, para maior facilidade de desenvolvimento de software em compiladores.

Antes de estudarmos o mapa de mem´oria dos registros de fun¸c˜oes especiais, vamos estudar cada um deles em separado para melhor compreens˜ao do funcionamento interno do 89C2051.

Em seguida ao nome de cada registro, temos seu endere¸co em hexadecimal na RAM:

P1 (90) - Porta P1 P3 (B0) - Porta P3

S˜ao posi¸c˜oes da RAM que contˆem os dados das portas de I/O do micro, caso as mesmas sejam usadas como tal.

Uma escrita num desses registros altera automaticamente o conte´udo presente na sa´ıda do chip, e uma leitura dos mesmos coloca o estado presente nos pinos (ou nos latchs de sa´ıda, conforme veremos adiante) dentro da posi¸c˜ao desejada. Essa opera¸c˜ao ´e poss´ıvel devido aos buffers e latchs de cada porta, que s´o s˜ao ativos na leitura ou escrita das mesmas.

(20)

SP (81) - Stack Pointer ´

E um registrador de 8 bits que cont´em o endere¸co de topo de uma ”pilha”realizada com os registradores, em que se acumulam endere¸cos de retorno, quando se trabalha com sub-rotinas e interrup¸c˜oes. Vocˆe pode EMPURRAR (PUSH) dados para a pilha (STACK) ou TIRAR (POP) dados da pilha (STACK).

A instru¸c˜ao PUSH incrementa o SP ”antes”de escrever os dados e a instru¸c˜ao POP lˆe o dado da pilha e ”depois decrementa”o SP. A pilha ´e formada inicialmente dentro da RAM interna quando se tem o RESET da m´aquina, e neste caso o SP ´e carregado com valor 07h. Isto ´e, qualquer dado a ser armazenado na pilha causar´a primeiro o incremento do SP, isto ´e, ir´a para 08h, e depois ser´a gravado o dado na pilha nesta posi¸c˜ao 08h. Isto ´e, ela estar´a ocupando a posi¸c˜ao 08h da RAM que ´e o registrador R0 do banco 1! Se vocˆe quiser utilizar esse banco e os outros seguintes, ´e melhor, logo de ´ınicio, carregar o SP com outro valor de ponteiro, a partir do qual ele ir´a formar a pilha.

TH1 (8D) - Timer High 1 TL1 (8B) - Timer Low 1 TH0 (8C) - Timer High 0 TL0 (8A) - Timer Low 0

S˜ao os registros de dados dos temporizadores/contadores (1 e 0 respectivamente). Contem os val-ores contados, no caso de usarmos as fun¸c˜oes desse importante perif´erico do 89C2051.

TCON (88) - Timer Control Register TMOD (89) - Timer Mode Register

Registradores de controle e de modo de opera¸c˜ao dos temporizadores/contadores. ´E nestes reg-istros que efetuamos a programa¸c˜ao de como queremos que esses perif´ericos trabalhem. Vale lembrar que o 89C2051 possui dois temporizadores/contadores internos.

PCON (87) - Power Control

Este registro permite-nos adaptar o chip para situa¸c˜oes em que n˜ao h´a processamento, mas n˜ao desejamos perder o conte´udo das mem´orias internas do chip, como pode ocorrer numa falha da ali-menta¸c˜ao, assim podemos controlar o consumo de energia do sistema.

SCON (98) - Serial Port Control Register SBUF (99) - Serial Buffer

No SCON, colocamos os bits que nos permitir˜ao trabalhar com a porta de comunica¸c˜ao serial con-forme desejamos, e o SBUF ´e o registro no qual a porta armazenar´a o dado recebido, ou escrevemos o dado a ser transmitido.

IE (A8) - Interrupt Priority IP (B8) - Interrupt Enable

Estes registros permitem-nos escolher qual ou quais interrup¸c˜oes ser˜ao habilitadas (ou desabili-tadas) e qual a prioridade (maior ou menor) de cada uma.

(21)

PSW (D0) - Program Status Word

O Program Status Word cont´em bits que indicam quais as ocorrˆencias da ALU na ultima opera¸c˜ao l´ogica e aritm´etica, alem de indicar qual banco de registradores foi acessado pela ultima vez. Equivale 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 s˜ao acess´ıveis como simples posi¸c˜oes de mem´oria.

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 ´e usado quando desejamos fazer endere¸camento indireto para a leitura de constantes armazenadas na mem´oria de programa, para ler ou escrever vari´aveis na mem´oria externa de dados e para desvio para mem´oria de programa de at´e 64 Kbytes.

N˜ao s˜ao todos os registros de fun¸c˜oes especiais que tem seus bits individualmente endere¸c´aveis. Temos na tabela abaixo, os registros e seus bits com seus respectivos endere¸cos. Assim como nos registros endere¸c´aveis (que s˜ao bytes), alguns destes bits tamb´em tem um nome mnemˆonico.

Este componente possui um poderoso conjunto de instru¸c˜oes que permite usar diversos modos de endere¸camento, admitindo desvios e leitura/escrita em toda a mem´oria.

No momento oportuno, veremos como ´e acessada uma posi¸c˜ao de mem´oria, e tamb´em como a CPU faz para acessar fisicamente essas posi¸c˜oes.

1.5.2 Circuito de Reset

Agora, estudaremos como se processa a opera¸c˜ao de RESET no 89C2051. ´E atrav´es desta fun¸c˜ao que o chip se prepara para trabalhar, seja ao ligarmos a alimenta¸c˜ao do sistema, ou for¸cosamente.

Embora o RESET n˜ao seja propriamente uma interrup¸c˜ao, muitas vezes ´e assim chamado devido `a semelhan¸ca de suas a¸c˜oes, j´a que o RESET interrompe o processamento e reinicializa o sistema.

O RESET no 89C2051 ´e ativo quando o pino 1 (RST/VPP) permanecer em n´ıvel alto por dois ou mais ciclos de maquina.

Neste caso, a CPU executa o que chamamos de reset interno, que consiste em preencher seus reg-istros internos com os valores predeterminados, a saber:

a)O PC, o acumulador, o registro B, os flags, o DPTR e todos os registros dos tempo-rizadores/contadores s˜ao ZERADOS.

b)No SP ´e colocado o valor 07h.

(22)

Endere¸cos Individuais dos bits Registradores

E7 E6 E5 E4 E3 E2 E1 E0 ACC

F7 F6 F5 F4 F3 F2 F1 F0 B

97 96 95 94 93 92 91 90 P1

B7 B6 B5 B4 B3 B2 B1 B0 P3

EA ES ET1 EX1 ET0 EX0

1 0 0 AF AC AB AA A9 A8 IE PS PT1 PX1 PT0 PX0 1 0 0 BC BB BA B9 B8 IP CY AC FD RS1 RS0 OV P D7 D6 D5 D4 D3 D2 D0 PSW SM1 SM2 SM3 REN TB8 RB8 T1 R1 9F 9E 9D 9C 9B 9A 99 98 SCON

TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

8F 8E 8D 8C 8B 8A 89 88 TCON

Tabela 1.3: Mnemˆonicos de cada bit

d)O SBUF estar´a com conte´udo indeterminado e o registro de controle da porta serial SCON ser´a zerado.

e)O registro PCON ter´a apenas seu bit mais significativo zerado.

f)Os registros de controle de interrup¸c˜ao (IE e IP) ter˜ao ambos o valor bin´ario XXX00000, onde X = irrelevante (pode ser 0 ou 1).

A RAM interna n˜ao ´e afetada pelo reset for¸cado, sendo que ao ligar (power-up), o seu valor ´e aleat´orio, mas pode ser lido por software.

Geralmente, ao ligarmos o sistema, desejamos que o mesmo execute uma seq¨uˆencia de fun¸c˜oes de inicializa¸c˜ao, dividida em dois blocos, inicializa¸c˜ao do sistema b´asico, que sempre ocorre no RESET, e a inicializa¸c˜ao do sistema montado, que prepara o equipamento para a opera¸c˜ao para o qual foi projetado, por exemplo, ajustando os contadores, as portas entre outros.

Embora estas fun¸c˜oes sejam executadas pelo software que come¸ca a rodar ap´os o RESET, no en-dere¸co 0000h da mem´oria de programa, costumamos cham´a-lo de rotina de inicializa¸c˜ao.

O 89C2051 pode ser automaticamente resetado ao ligar a fonte, pela coloca¸c˜ao de um resistor de 8,2 kΩ entre seu pino seu pino de RESET e o terra, e pela coloca¸c˜ao de um capacitor (preferencial-mente de tˆantalo) de 10 µF entre o pino e o +Vcc, o que garante que este pino estar´a em n´ıvel alto por mais de 2 ciclos de maquina ap´os a liga¸c˜ao da alimenta¸c˜ao, pois o capacitor comporta-se como um curto-circuito, provocando uma circula¸c˜ao de corrente pelo resistor, que ter´a uma tens˜ao inicial da ordem de +Vcc.

Ap´os algum tempo, o capacitor ”estar´a carregado”e n˜ao circular´a mais corrente na resistˆencia, e desta forma a diferen¸ca de potencial sobre a mesma ser´a nula, garantindo que o pino RST/VPP esteja

(23)

Figura 1.5: Mapa de Registradores e Valores de Reset do 8051 no n´ıvel 0.

Na eventualidade de necessitarmos provocar o reset (reset for¸cado), basta ent˜ao colocarmos uma chave de contato momentˆaneo NA (push-botton NA) em paralelo com o capacitor, e ao pressiona-la e solt´a-la teremos provocado uma nova opera¸c˜ao de reset.

Na entrada, o chip possui um Schmidt Trigger para garantir rejei¸c˜ao a ru´ıdo, sendo que a sa´ıda do mesmo ´e amostrada a cada ciclo de maquina pelo hardware, para ver a ocorrˆencia de reset.

Durante o reset, o n´ıvel l´ogico dos pinos ´e indeterminado, indo a n´ıvel l´ogico 1 ?ap´os? a execu¸c˜ao da rotina interna de reset, de tal forma que devemos prever esta situa¸c˜ao no projeto do hardware, para evitar acionamento indesej´avel de qualquer perif´erico externo.

(24)

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´a possuam um sinal TTL que possa ser aproveitado, como por exemplo, para trabalho junto a contadores e outros equipamentos seq¨uenciais r´apidos.

Sua implementa¸c˜ao ´e simples, bastando desconectar o pino 4 (XTAL2) (deixar em aberto), e inje-tar o sinal externo no pino 5 (XTAL1), que desta forma ir´a diretamente para o sistema de controle e temporiza¸c˜ao do chip (conforme a figura 1.7).

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 filtro cerˆamico (o cristal e o mais indicado) na freq¨uˆencia desejada, e dois capacitores de realimenta¸c˜ao conforme a figura 1.8

Os valores recomendados dos capacitores s˜ao os seguintes:

40 pF +/- 10 pF para filtro ressonante de cerˆamica. 30 pF +/- 10 pF para cristal oscilador.

Em qualquer caso, a freq¨uˆencia de oscila¸c˜ao m´ınima ´e de 3.5 MHz, ´e a m´axima pode ser de 24 MHz conforme o modelo utilizado. Existem atualmente vers˜oes de outros fabricantes que trabalham com freq¨uˆencia de 30 MHz e superiores, sendo que o seu custo tamb´em ´e relativamente superior.

(25)

Figura 1.8: Oscilador Interno

Quanto ao layout do circuito deve-se destacar o fato de que as liga¸c˜oes devem ser mantidas as mais curtas poss´ıveis, para evitar capacitˆancias parasitas que venham a interferir no funcionamento 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 Interrup¸c˜ao

A interrup¸c˜ao ´e, provavelmente, uma das mais importantes ferramentas nos sistemas de controle microprocessados, pois ´e o processo pelo qual a execu¸c˜ao de um programa ´e interrompida (ou n˜ao), de acordo com as necessidades de eventos externos ou internos.

Temos dessa forma, que existem trˆes fontes de interrup¸c˜ao: a interrup¸c˜ao por Software (instru¸c˜ao), a pedida por perif´erico externo e a interrup¸c˜ao pedida por perif´erico interno (timer/counter, porta serial, etc. . .).

A interrup¸c˜ao ´e um sinal, gerado de uma das trˆes formas acima descritas, que pede para a CPU parar o processamento corrente e efetuar outro, referente `a interrup¸c˜ao solicitada, desde que a mesma esteja habilitada e possa ser aceita.

A vantagem da interrup¸c˜ao est´a na simplifica¸c˜ao do Hardware, pois n˜ao precisamos fazer com que nosso sistema fique monitorando o funcionamento de certos dispositivos perif´ericos. Por exemplo, nos computadores did´aticos simples, e mesmo em alguns sistemas industriais, o teclado ´e um perif´erico

(26)

J´a nos computadores da linha IBM-PC, isso n˜ao ocorre, pois o teclado ´e um perif´erico inteligente, que possui um microcontrolador interno que, caso uma tecla seja pressionada, pede uma interrup¸c˜ao ao microprocessador para poder enviar o c´odigo da tecla pressionada para o mesmo.

Muitas vezes as entradas de interrup¸c˜ao s˜ao as principais entradas do sistema. Para o perfeito entendimento das interrup¸c˜oes, devemos antes relembrar os seguintes conceitos:

a)Mascaramento ´

E a possibilidade de impedirmos, geralmente por Software, que uma certa interrup¸c˜ao seja atendida. Existem sistemas que possuem interrup¸c˜oes n˜ao-mascar´aveis, ou seja, jamais podem ser desabilitadas por Software.

b)Prioridades

No caso do sistema poder atender mais de uma interrup¸c˜ao, devemos ter uma tabela de seq¨uˆencia de prioridades, para que o microprocessador saiba como agir, no caso de duas ou mais interrup¸c˜oes chegarem simultaneamente.

c)Interrup¸c˜ao Vetorada e N˜ao Vetorada

As interrup¸c˜oes vetoradas s˜ao aquelas que possuem o vetor de interrup¸c˜ao (endere¸co de in´ıcio da interrup¸c˜ao) fixo, e n˜ao pode ser mudado pelo usu´ario. ´E o caso do 8051, onde cada vetor de in-terrup¸c˜ao j´a est´a definido pelo fabricante. As interrup¸c˜oes n˜ao vetoradas s˜ao aquelas nas quais os endere¸cos de desvios do programa s˜ao escolhidos pelo programador, como ´e o caso do COP 68705.U3 da Motorola, por exemplo.

d)Tipo de Ativa¸c˜ao das Interrup¸c˜oes

Existem trˆes maneiras pelas quais um sistema pode reconhecer um sinal l´ogico:

•Pelo n´ıvel (alto ou baixo).

•Pela borda de subida ou de descida.

•Pela soma de borda (subida ou descida) e um n´ıvel correspondente.

Estudo das Interup¸c˜oes no 8051

0 8051 pode ser interrompido de 5 maneiras: 1)Pela interrup¸c˜ao externa INTO\; 2)Pela interrup¸c˜ao externa INT1\; 3)Pelo timer/counter interno TIMER0; 4)Pelo timer/counter interno TIMER1; 5)Pelo canal de comunica¸c˜ao serial.

O canal serial e as interrup¸c˜oes externas usam alguns pinos da porta trˆes, conforme a seguir: 1.Porta 3, pino 0 = Receptor de dados seriais (RX);

(27)

2.Porta 3, pino 1 = Transmissor de dados seriais (TX); 3.Porta 3, pino 2 = Entrada da interrup¸c˜ao externa INTO\;. 4.Porta 3, pino 3 = Entrada da interrup¸c˜ao externa INT1\.

OBSERVAC¸ ˜AO: Dessa forma, se usarmos algumas dessas interrup¸c˜oes, devemos tratar a porta trˆes como porta de I/O apenas bit endere¸c´avel.

No 8051, cada interrup¸c˜ao pode ser individualmente habilitada ou n˜ao, e podemos tamb´em desabil-itar todas de uma s´o vez.

As interrup¸c˜oes podem ter apenas dois n´ıveis de prioridade, e dessa forma, se duas ou mais ocor-rerem ao mesmo tempo (algo ”praticamente”imposs´ıvel), a de maior prioridade ser´a atendida primeiro. Caso uma interrup¸c˜ao de prioridade 0 (menor) esteja em andamento, uma interrup¸c˜ao de priori-dade 1 (maior) interromper´a aquela e ser´a atendida. Ao seu fim, a CPU retorna ao atendimento da interrup¸c˜ao de n´ıvel 0 que foi interrompida.

Este Microcontrolador possui ainda um processo de prioridade interno, para o caso de duas inter-rup¸c˜oes de mesma prioridade estarem aguardando atendimento.

Neste caso, esta ´e a ordem de atendimento das interrup¸c˜oes (IP): 1)Interrup¸c˜ao Externa 0 −→ Maior prioridade Timer 0 2)Interrup¸c˜ao Externa 1 Timer 1

Se a interrup¸c˜ao que chegar for de n´ıvel igual ou menor da que j´a est´a sendo atendida, ficar´a aguardando o fim desta para ser servida.

Quando atende uma interrup¸c˜ao, 0 8051 salva no Stack o valor do PC, ”mas n˜ao salva o acu-mulador e o registro Program Status Word (PSW)”. Os mesmos devem ser salvos e devolvidos pela rotina de interrup¸c˜ao, se assim for necess´ario, assim como qualquer outro registro importante.

Endere¸cos de Desvio

Neste Microcontrolador, cada interrup¸c˜ao ´e desviada para um certo endere¸co fixo, no qual come¸ca a nossa rotina de interrup¸c˜ao.

S˜ao os seguintes os endere¸cos de desvio:

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 interrup¸c˜oes teremos que usar os trˆes Bytes dispon´ıveis para o reset, num desvio incondicional para outra parte da mem´oria, onde realmente teria in´ıcio o programa.

(28)

As interrup¸c˜oes INT0\, Timer/counter 0, INT1\ e Timer/counter 1 possuem apenas 8 Bytes dispon´ıveis antes de sobrepor se com a pr´oxima, e desta forma, provavelmente, deveremos efetuar um desvio para outra parte da mem´oria, sendo a ´unica exce¸c˜ao a interrup¸c˜ao do canal serial, que por ser a ´ultima n˜ao se sobrep˜oe a nenhuma outra. Temos na figura 1.10, um mapa parcial da mem´oria de programa com destaque para os endere¸cos de desvio de cada interrup¸c˜ao.

00h ←− Inicio 01h 02h 03h ←− End. de INT0\ 04h 05h 06h Diferen¸ca de 8 bits .. . 0Ah ↓ 0Bh ←− End. do Timer/Counter 0 0Ch 0Dh .. . 11h 12h 13h ←− End. de INT1\ 14h .. . 1Ah 1Bh ←− End. do Timer/Counter 1 1Ch 1Dh .. . 22h

23h ←− End. do Canal Serial 24h

25h

Figura 1.10: Mapa parcial da mem´oria de programa do 8051 com destaque ao in´ıcio das interup¸c˜oes

(29)

1.5.5 Registro de Controle das Interrup¸c˜oes

O 8051 possui dois registro de 8 bits cada um, na sua mem´oria RAM mais alta (Registros de Fun¸c˜oes especiais-SFR) que servem para habilita¸c˜ao ou n˜ao das interrup¸c˜oes, e indica para a CPU a prioridade de cada uma delas.

Sempre que uma interrup¸c˜ao ´e requisitada, um certo bit de controle dessa interrup¸c˜ao ser´a setado e assim permancer´a at´e que essa interrup¸c˜ao seja atendida.

Exce¸c˜ao ´e a esta regra ´e a interrup¸c˜ao serial, que deve ter seu bit de controle resetado pelo Software.

O primeiro de todos estes registros ´e o IE que tem por fun¸c˜ao indicar qual das interrup¸c˜oes est´a ou n˜ao habilitada.Vejamos a figura 1.11

Bit 7 . . . Bit 0

EA X X ES ET1 EXT1 ET0 EX0

Figura 1.11: Resgistro IE

EA - Enable All: Localizado no bit n´umero 7, significa habilitar todos. Quando o em n´ıvel 0, desabilita todas as interrup¸c˜oes de forma geral, independente de qualquer outro controle. Se em n´ıvel 1, permite-nos escolher qual interrup¸c˜ao em particular ser´a habilitada, em fun¸c˜ao dos bits de controle individuais a seguir.

ES: Enable Serial: Localiza-se no bit 4, significa habilitar a serial, quando em n´ıvel l´ogico 1, libera a interrup¸c˜ao pedida pelo canal serial.

ET1 - Enable Timer 1: Localiza-se no bit 3, significa habilitar a interrup¸c˜ao do timer 1 e quando em n´ıvel l´ogico 1, libera a interrup¸c˜ao pedida pelo Timer/Counter 1.

EX1 - Enable External 1: Localiza-se no bit 2, significa habilitar a interrup¸c˜ao externa (INT1\ e quando em n´ıvel l´ogico 1, libera a interrup¸c˜ao pedida pelo dispositivo externo ligado a INT1\.

ET0 - Enable Timer 0: Localiza-se no bit 1, significa habilitar a interrup¸c˜ao do timer 0 e quando em n´ıvel l´ogico 1, libera a interrup¸c˜ao pedida pelo Timer/Counter 0.

EX1 - Enable External 0: Localiza-se no bit 0, significa habilitar a interrup¸c˜ao externa (INT0\ e quando em n´ıvel l´ogico 1, libera a interrup¸c˜ao pedida pelo dispositivo externo ligado a INT0\.

Prioridade Natural das interrup¸c˜oes 1.INT0\

2.TIMER/COUNTER0 3.INT1\

4.TIMER/COUNTER1 5.Serial

Veremos agora o registro IP, nele fixaremos qual o n´ıvel de prioridade de nossas interrup¸c˜oes. Ve-jamos o formato deste registro.

(30)

Bit 7 . . . Bit 0

X X X PS PT1 PX1 PT0 PX0

Figura 1.12: Resgistro IP

em n´ıvel 0, indica prioridade baixa.

PT1 - Priority Timer 1: Localiza-se no bit 3, significa prioridade do timer 1 e quando em n´ıvel l´ogico 1, indica prioridade alta `a interrup¸c˜ao gerada pelo Timer/Counter 1, se a mesma estiver habilidade. Quando em n´ıvel 0, indica prioridade baixa.

PX1 - Priority External 1: Localiza-se no bit 2, significa habilitar a interrup¸c˜ao externa (INT1\ e quando em n´ıvel l´ogico 1, indica prioridade alta `a interrup¸c˜ao externa 1, se a mesma estiver habili-dade. Quando em n´ıvel 0, indica prioridade baixa.

PT0 - Priority Timer 0: Localiza-se no bit 1, significa prioridade do timer 0 e quando em n´ıvel l´ogico 1, indica prioridade alta `a interrup¸c˜ao gerada pelo Timer/Counter 0, se a mesma estiver habilidade. Quando em n´ıvel 0, indica prioridade baixa.

PX1 - Priority External 0: Localiza-se no bit 0, significa habilitar a interrup¸c˜ao externa (INT0\ e quando em n´ıvel l´ogico 1, indica prioridade alta `a interrup¸c˜ao externa 0, se a mesma estiver habili-dade. Quando em n´ıvel 0, indica prioridade baixa.

(31)

Veremos como ´e o registrador PSW (Program Status Word)

Lembrando que neste registrador representa o status da ´ultima opera¸c˜ao realizada no acumulador, vejamos a seguinte figura 1.13

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 PSW.7 PSW.6 PSW.5 PSW.4 PSW.3 PSW.2 PSW.1 PSW.0

CY AC F0 RS1 RS0 OV - P

Figura 1.13: Resgistros bit a bit do PSW

CY - Carry ´E um indicador de ”vai um”em opera¸c˜oes aritm´eticas: vai para 1 quando uma soma com A ”estoura”na sua capacidade (isto ´e, o s´etimo bit ou ACC.7 vai um para uma pr´oxima casa que n˜ao existe; seria um nono bit, que ´e um ”estouro”da conta). Vai para ”1”se existir um empr´estimo do 7 bit no caso de uma subtra¸c˜ao com o acumulador.

Por exemplo:

Se ACC=FFh e ap´os isto aparece a instru¸c˜ao: acc A,#01h: A soma de FFh com 01h far´a com que o resultado de A seja 00h e ”vai 1”para o carry, isto ´e,”CY”´e setado no registrador PSW.

O carry ”CY”tamb´em ´e utilizado como se fosse o ”acumulador para um s´o bit”. Existem v´arias instru¸c˜oes booleanas que usam o ”C”, isto ´e, o carry, como operando, em que se posiciona o resultado das opera¸c˜oes. Por exemplo:

anl C,ACC.0: Executa um AND booleano entre o carry e o bit ACC.0. O resultado da opera¸c˜ao fica em ”C”(ele ´e equivalente ao acumulador para opera¸c˜ao com bytes), isto ´e, o resultado volta para ele mesmo.

AC - Auxiliary Carry ´E um indicador de ”vai um”entre os quatro primeiros bit do acumulador, isto ´e, ´e o ”vai um”de um ”nible”para outro ”nible”do acumulador.

Isto ´e muito ´util em aritm´etica BCD em que os nibbles que correspodem a 4 bits s˜ao representados por um n´umero codificado em bin´ario, mas que representa um decimal de 0 a 9.

Flag 0 ´E um bit registrador de uso geral, n˜ao tem nenhuma fun¸c˜ao especial e n˜ao indica nada.(literalmente ”sobrou”dentro do PSW, sem fun¸c˜ao)

RS1 e RS0 S˜ao dois bits que fazem mudar o banco de registradores a que se referem os nomes R0 a R7, utilizados nas instru¸c˜oes que trabalham com esses registradores (por ex.: mov A,R0 = move para o ”A”o conte´udo de ”R0”; mas qual R0? Os bits RS0 e RS1 ´e que dizem a qual R0 de qual banco est´a se referindo).Vejamos na tabela 1.4

RS1 RS0 BANCO

0 0 Banco 0

0 1 Banco 1

1 0 Banco 2

1 1 Banco 3

Tabela 1.4: Sele¸c˜ao do banco de registradores pelos bit do PSW

Quando se d´a o reset da m´aquina, ele aponta para o banco 0, isto ´e, as instru¸c˜oes que se referirem a R0,R1,. . .R7 est˜ao se referindo ao ”Rn”do banco O. Podemos utilizar a mudan¸ca de bancos e usar os mesmos apelidos de R0 a R7 para o outro banco, ou usar o endere¸co absoluto de cada registrador. Em geral, deixa-se que o microcontrolador aponte para o banco 0 direto e os outros registradores utilizam os endere¸cos absolutos deles, s´o para n˜ao ter i trabalho de mudar toda hora de banco. Isto depende do gosto do programador.Quando se ”reseta”a m´aquina, os bits RS1 e RS0 ficam em 00h, isto ´e, est˜ao se referindo ao banco 0.

(32)

OV ´E um bit que vai para 1 quando, ap´os um adi¸c˜ao ou subtra¸c˜ao, acontece um ”estouro”da conta. Resultados maiores que +127 ou menores que -128 ”setar˜ao”o bit ”OV”. Paor exemplo:

0F ⇒ +15

+7F ⇒ +127

8E e ”OV” +142

Note que 8E ´e -116, que n˜ao ´e a resposta desejada +142, por isto OV ´e setado. PSW.1 N˜ao ´e um bit dispon´ıvel ao usu´ario.

P - Parity Bit que ´e ”setado”em ”1”quando a paridade do conte´udo do acumulador ´e par. Por exemplo, seja A, contendo os seguintes dados:

Observa¸c˜ao: Paridade ´e o resultado par ou ´ımpar do somat´orio bin´ario do acumulador. N de ”1s” = ´Impar

A= 1001 1110 −→ P=1

N de ”1s” = ´Impar

A= 1001 1111 −→ P=0

´

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

1.5.6 Tempo para Atendimento das Interrup¸c˜oes

Um certo tempo decorrer´a entre o reconhecimento da interrup¸c˜ao, altera¸c˜oes nos registros internos e efetivo desvio para o endere¸co. O melhor caso ocorre quando uma interrup¸c˜ao chega pouco antes dos ´ultimos 14 per´ıodos de clock, que correspondam ao final da instru¸c˜ao; a pr´oxima instru¸c˜ao n˜ao seja multiplica¸c˜ao ou divis˜ao; e temois mais 24 per´ı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 interrup¸c˜ao chegar ap´os os 14 ´ultimos per´ıodos da instru¸c˜ao em vigor, e se a pr´oxima instru¸c˜ao for multiplica¸c˜ao ou divis˜ao, que consomem 48 per´ı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 Interrup¸c˜oes Externas para serem Ativas em N´ıvel ou Transi¸c˜ao

Podemos ajustar as interrup¸c˜oes externas para serem detectadas por transi¸c˜ao de 1 para 0, ou pelo n´ıvel 0. Os bits de controle das interrup¸c˜oes externas est˜ao no registro TCON (Controle do Timer), e os que nos interessam s˜ao os quadro bits menos significativos.

Bit 7 . . . Bit 0

IE1 IT1 IE0 IT0

Figura 1.14: Resgistro TCON com os bits relevantes `as interrup¸c˜oes

IT0 - Interrup¸c˜ao Externa 0 (INT0\) : Localizado no bit 0 do TCON, indica qual o processo para a chamada da interrup¸c˜ao INT0\ ser´a aceita na transi¸c˜ao de 1 para 0 do n´ıvel pino, devendo permanecer em 0 por pelo menos 12 per´ıodos de clock. Se em n´ıvel 0, INT0\ ser´a aceita apenas pelo n´ıvel 0 presente no pino.

(33)

IE0 - Habilita¸c˜ao da Interrup¸c˜ao Externa 0 (INT0\): Bit para o hardware de controle da interrup¸c˜ao INT0\, localiza-se no bit 1. Este bit ´e setado pelo Hardware interno quando for detec-tada uma transi¸c˜ao de 1 para 0 no pino INT0\. Tem por fun¸c˜ao sinalizar internamente o pedido da interrup¸c˜ao. ´E resetado logo que a interrup¸c˜ao seja atendida.

IT1 - Interrup¸c˜ao Externa 1 (INT1\) : Localizado no bit 2 do TCON, indica qual o processo para a chamada da interrup¸c˜ao INT1\ ser´a aceita na transi¸c˜ao de 1 para 0 do n´ıvel pino, devendo permanecer em 0 por pelo menos 12 per´ıodos de clock. Se em n´ıvel 0, INT1\ ser´a aceita apenas pelo n´ıvel 0 presente no pino.

IE1 - Habilita¸c˜ao da Interrup¸c˜ao Externa 1 (INT1\): Bit para o hardware de controle da interrup¸c˜ao INT1\, localiza-se no bit 3. Este bit ´e setado pelo Hardware interno quando for detec-tada uma transi¸c˜ao de 1 para 0 no pino INT1\. Tem por fun¸c˜ao sinalizar internamente o pedido da interrup¸c˜ao. ´E resetado logo que a interrup¸c˜ao seja atendida.

Como vimos, se a interrup¸c˜ao for ativa pela transi¸c˜ao, ´e a esta que a CPU dever´a detectar para aten-der `a interrup¸c˜ao, por isso temos que esperar um per´ıodo de 12 ciclos de clock, porque na amostragem anterior, a CPU detectou n´ıvel 1 e agora devemos esperar que a mesma detecte o n´ıvel 0.

J´a na detec¸c˜ao por n´ıvel, a entrada dever´a estar em n´ıvel 0, apenas durante a amostragem que ocorre ao fim de cada instru¸c˜ao executada. O interessante ´e que neste caso, o pino pode permanecer em n´ıvel 0 durante a execu¸c˜ao da rotina de interrup¸c˜ao, mas deve estar em n´ıvel 1 ao fim desta, sen˜ao o sistema atender´a novamente `a interrup¸c˜ao, visto que na amostragem da ´ultima instru¸c˜ao da rotina, encontrar´a este pino em n´ıvel adequado para a interrup¸c˜ao, o que n˜ao ocorre no caso anterior, pois l´a a CPU deve sentir a TRANSIC¸ ˜AO do n´ıvel 1 para o O.

1.5.8 Hardware para expandir as possibilidade de Interrup¸c˜ao Externa

Na figura 1.15, temos uma porta AND de 8 entradas na qual todas as NOVAS 8 entradas de inter-rup¸c˜ao estar˜ao ligadas. Estas 8 entradas tamb´em est˜ao ligadas a um lacth, por exemplo o 74LS374.

A sa´ıda desta porta ser´a ligada diretamente ao pino de interrup¸c˜ao externa INT0\, por exemplo, e tamb´em a um inversor, e da´ı ao ”gate”do lacth, e as sa´ıdas do lacth est˜ao ligadas `a porta P1.

Caso ocorra uma transi¸c˜ao de 1 para 0 na porta AND, teremos sua sa´ıda indo para o n´ıvel 0 tamb´em, ocasionando o pedido de interrup¸c˜ao e ”travando”o estado dos pinos I1 a I8 no lacth.cc

No momento do atendimento da interrup¸c˜ao, o valor a ser lido na porta P1 conter´a o estado dos bits que geraram a interrup¸c˜ao, e uma rotina verificar´a qual bit est´a em 0. Este bit ´e respons´avel pelo pedido de interrup¸c˜ao, e basta ao Software encarregar-se de executar a rotina apropriada.

(34)

                 7430 8051 74LS374 D0 D1 D2 D3 D4 D5 D6 D7 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 I8 I1 +Vcc P1.0 P1.7 INT0\

Figura 1.15: Detalhe do Hardware para expandir o n´umero de interrup¸c˜oes.

1.5.9 Exerc´ıcios Resolvidos

Quest˜ao 1 No microcontrolador da fam´ılia 8051, programar as palavras IE (Interrupt Enable), IP (Interrupt Priority) e TCON (Timer Control) de modo a:

a)INT1\ seja habilitado na m´axima prioridade.

b)Timer/Counter1 seja habilitado em segunda prioridade. c)INT0\ seja habilitado na terceira prioridade.

d)Serial e Timer/Counter0 n˜ao habilitadas. Passo a):Interrup¸c˜oes liberadas pela palavra IE

INT0,INT1 e Timer1 liberados Bit EA - Enable All ligado Timer0 e Serial desativadas

EA - - ES ET1 EX1 ET0 EX0

1 0 0 0 1 1 0 1

Assim carrega-se o valor 8Dh para a palavra IE atrav´es do seguinte comando: MOV IE,8Dh

Pbsso b):Prioridade programadas pela palavra IP INT1 e Timer1: alta prioridade INT0: baixa prioridade

(35)

- - - PS PT1 PX1 PT0 PX0

- - - X 1 1 X 0

Quest˜ao 2 Obter a outra representa¸c˜ao do endere¸co do bit 5Dh? (Ver tabela 1.2) Solu¸c˜ao: •Transformar o endere¸co do bit de hexadecimal para decimal 5 ∗ 161

+ 13 ∗ 160

= 9310

•Dividir o valor do endere¸co em decimal (9310) por 8 → 93/8, obtendo o quociente q=1110 e o

resto r=510

•Transformar o quociente (q) e o resto (r) em hexadecimal: q=1110=Bh e r=510=5h.

•Aplicar a f´ormula: 5Dh = [20h+Bh]h.5=2Bh.5, ou seja, o endere¸co do bit 5 ´e igual a 2Bh.5. Para transformar o endere¸co de um bit da representa¸c˜ao 2Xh.Y para ZWh(2Xh.Y−→ZWh),basta seguir o procedimento:

•Obter o quociente e o resto. O quociente (q) ´e obtido subtraindo 2Xh de 20h e transformando-o em decimal, e o resto ´e obtido atrav´es do n´umero ap´os o ponto (.) de tal representa¸c˜ao. Multi-plicando o quociente em decimal por 8 e somando com o resto em decimal, obt´em-se o endere¸co em decimal. O valor do endere¸co em decimal deve ser transformado para hexadecimal.

Quest˜ao 3 Obter a outra representa¸c˜ao do endere¸co do bit 2Ah.3? (Ver tabela 1.2) •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=8310

•Transformar o endere¸co de decimal para hexadecimal: 8310= 5 ∗ 161+ 3 ∗ 160=53h

Quest˜ao 4 Defina o tipo de endere¸camento de cada uma das instru¸c˜oes dadas a seguir: a)ADDC A,20h

Resposta: Endere¸camento direto. b)MOV @R0,55h

Resposta: Endere¸camento combinado (misto), formado pelos endere¸camentos direto e indireto ou indexados por registrador.

c)MOV R7,6Ah

Resposta: Endere¸camento indireto, pois R7 (Rn) ´e um registrador indexado (mnemˆonico). Quest˜ao 6 Crie um programa que fa¸ca a opera¸c˜ao OR-Exclusivo entre o conte´udo do acumulador (A) e a constante 33h. O resultado deve ser armazenado no conte´udo do registrador R5 do segundo banco de registradores.

Resposta:

XRL A,#33h (A)←−(A)or-ex #33h

MOV PSW,#08h (PSW)←−#08h=#00001000 =⇒ (RS1)=0 e (RS0)=1=⇒ define o se-gundo banco de registradores (B1).

MOV R5,A Armazena, no conte´udo do registrador R5 do segundo banco de reg-istradores, o conte´udo do acumulador A.

(36)

1.5.10 Conjunto de Instru¸c˜oes

Instru¸c˜oes Aritm´eticas

Mnemˆonico Fun¸c˜ao Opcode Bytes Clocks Flags Afetados

CY AC OV

ADD A,Rn Soma o conte´udo de Rn ao acumu-lador

0010/1 abc

B 1 12 ? ? ?

ADD A,Direto Soma o conte´udo da posi¸c˜ao de mem´oria ao acumulador

25 H 2 12 ? ? ?

ADD A,@Ri Soma o conte´udo da RAM en-dere¸cada por Ri ao acumulador

0010/011iB 1 12 ? ? ?

ADD A,DADO Soma o dado ao acumulador 24 H 2 12 ? ? ?

ADDC A,Rn Soma o conte´udo de Rn e o carry ao acumulador 0011/1 abc B 1 12 ? ? ? ADDC A,DIRETO

Soma o conte´udo da posi¸c˜ao de mem´oria e o carry o acumulador

35 H 2 12 ? ? ?

ADDC A,@Ri Soma o conte´udo da RAM en-dere¸cada por Ri e o carry ao acu-mulador

0011/011iB 1 12 ? ? ?

ADDC A,#DADO

Soma o dado e o carry ao acumu-lador

34 H 2 12 ? ? ?

SUBB A,Rn Subtrai o conte´udo de Rn e o Bor-row do acumulador 1001/1 abc B 1 12 ? ? ? SUBB A,DIRETO

Subtrai o conte´udo da posi¸c˜ao de mem´oria e o Borrow do acumulador

95 H 2 12 ? ? ?

SUBB A,@Ri Subtrai o conte´udo da RAM en-dere¸cada por Ri e o Borrow do acu-mulador

1001/011iB 1 12 ? ? ?

SUBB A,#DADO

Subtrai o dado e o Borrow do acu-mulador

94 H 2 12 ? ? ?

INC A Soma 1 ao acumulador 04 H 1 12 - -

-INC Rn Soma 1 ao conte´udo de Rn 0000/1

abc

B 1 12 - -

-INC DIRETO Soma 1 ´a posi¸c˜ao de mem´oria 05 H 2 12 -

-INC @Ri Soma 1 ´a RAM endere¸cada por Ri 0000/011 i

B 1 12 - -

-DEC A Subtrai 1 do acumulador 14 H 1 12 - -

-DEC Rn Subtrai 1 do conte´udo de Rn 0001/1 abc

B 1 12 - -

-DEC DIRETO Subtrai 1 da posi¸c˜ao de mem´oria 15 H 2 12 - -

-DEC @Ri Subtrai 1 da RAM endere¸cada por Ri

0001/011 i

B 1 12 - -

-INC DPTR Soma 1 ao registrador DPTR A3 H 1 24 - -

-MUL AB Multiplica A e B resultado: BA A4 H 1 48 0 - ?

DIC AB Divide A e B resultado: A inteiro B resto

84 H 1 48 0 ? 0

DA A Ajuste decimal do acumulador D4 H 1 12 ? ?

(37)

Opera¸c˜oes L´ogicas

Mnemˆonico Fun¸c˜ao Opcode Bytes Clocks Flags Afetados

CY AC OV

ANL A,Rn ”e”entre registro e acumulador 0101/1 abc

B 1 12 - -

-ANL A,DIRETO ”e”entre mem´oria e acumulador 55 H 2 12 - -

-ANL A,@Ri ”e”entre RAM indireta e acumu-lador

0101/011iB 1 12 - -

-ANL A,#DADO ”e”entre dado e acumulador 54 H 2 12 - -

-ANL DIRETO,A ”e”entre acumulador e mem´oria. Resultado na mem´oria

52 H 2 12 - -

-ANL

DI-RETO,#DADO

”e”entre dado e mem´oria 53 H 3 12 - -

-ORL A,Rn ”ou”entre registro e acumulador 0100/1 abc

B 1 12 - -

-ORL A,DIRETO ”ou”entre mem´oria e acumulador 45 H 2 12 - -

-ORL A,@Ri ”ou”entre RAM indireta e acumu-lador

0100/011iB 1 12 - -

-ORL A,#DADO ”ou”entre DADO e acumulador 44 H 2 12 - -

-ORL DIRETO,A ”ou”entre acumulador e mem´oria. Resultado na mem´oria

42 H 2 12 - -

-ORL

DI-RETO,#DADO

”ou”entre DADO e mem´oria 43 H 3 12 - -

-XRL A,Rn ”ou exclusivo”entre registro e acu-mulador

0110/1 abc

B 1 12 - -

-XRL A,Direto ”ou exclusivo”entre mem´oria e acu-mulador

65 H 2 12 - -

-XRL A,@Ri ”ou exclusivo”? entre RAM indireta e acumulador

0110/011iB 1 12 - -

-XRL A,#DADO ”ou exclusivo”entre dado e acumu-lador

64 H 2 12 - -

-XRL DIRETO,A ”ou exclusivo”entre acumulador e mem´oria. Resultado na mem´oria

62 H 2 12 - -

-XRL

DI-RETO,#DADO

”ou exclusivo”entre dado e mem´oria 63 H 3 12 - -

-CRL A Faz A = 0 E4 H 1 12 - -

-CPL A Inverte o estado dos bits do acumu-lador

F4 H 1 12 - -

-RL A Desloca o acumulador `a esquerda 23 H 1 12 - -

-RL C Desloca o acumulador `a esquerda atrav´es do carry

33 H 1 12 ? -

-RR A Desloca acumulador `a direita 03 H 1 12 - -

-RRC A Desloca acumulador `a direta atrav´es do carry

13 H 1 12 ? -

-SWAP A Troca os nibbles do acumulador. Equivale a 4 RR A ou 4 RL A

Referências

Documentos relacionados

A partir das reflexões de Oliveira Júnior (2005; 2014) acerca dos lugares geográficos e os locais narrativos 2 , que considero uma discussão pertinente para diferenciar o

QUANDO TIVER BANHEIRA LIGADA À CAIXA SIFONADA É CONVENIENTE ADOTAR A SAÍDA DA CAIXA SIFONADA COM DIÂMTRO DE 75 mm, PARA EVITAR O TRANSBORDAMENTO DA ESPUMA FORMADA DENTRO DA

Este trabalho buscou, através de pesquisa de campo, estudar o efeito de diferentes alternativas de adubações de cobertura, quanto ao tipo de adubo e época de

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam

O enfermeiro, como integrante da equipe multidisciplinar em saúde, possui respaldo ético legal e técnico cientifico para atuar junto ao paciente portador de feridas, da avaliação

Engenharia de Software Características Operacionais Usuário Desenvolvedor Adaptabilidade a Novos Ambientes Habilidade de ser Alterado Corretitude Confiabilidade

Equipamentos de emergência imediatamente acessíveis, com instruções de utilização. Assegurar-se que os lava- olhos e os chuveiros de segurança estejam próximos ao local de

Após retirar, da maré observada, o valor da maré teórica, aplicou-se uma linha de tendência aos dados resultantes, a qual representa a variação do nível médio das águas no