Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Microcontrolador 8051, Notas de estudo de Mecatrônica

Revista Saber eletrônica

Tipologia: Notas de estudo

Antes de 2010

Compartilhado em 07/03/2010

hanna-ribeiro-3
hanna-ribeiro-3 🇧🇷

4.6

(2)

7 documentos

1 / 20

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
INTRODUÇÃO
Com o avanço da tecnologia e a uti-
lização da eletrônica digital por grande
parte das empresas, o emprego de
microcontroladores vêm sendo muito
requisitado para um melhor desenvol-
vimento da produção, diminuindo os
custos e trazendo benefícios para as
empresas que utilizam esse sistema. É
importante salientar que, considerando
a relação custo/benefício, os microcon-
troladores podem não só ser usados em
empresas de médio/grande porte, como
podem também ser utilizados em vári-
os projetos de eletrônica, na substitui-
ção de vários componentes digitais, ob-
tendo-se assim no final do projeto um
melhor acabamento – pois um
microcontrolador ocuparia um menor
espaço físico - e uma maior eficiência e
praticidade, uma vez que todos os co-
mandos seriam executados via software.
Antes de um aprofundamento no
assunto microcontroladores, é importan-
te conhecermos um pouco da história
desses componentes desde as suas
origens.
Na década de 70 começaram a ser
utilizados microprocessadores em com-
putadores para uma maior eficiência no
processamento de dados. O micropro-
cessador Intel foi um dos precursores
e, a partir daí, houve uma preocupação
em melhorar cada vez mais o sistema
de processamento de dados através
desses componentes. Baseado na ar-
quitetura de um microprocessador e
seus periféricos, foi criado um compo-
nente que (fisicamente em uma unida-
de) comportasse todo um sistema que
equivalesse a um microprocessador e
seus periféricos; assim surgiu o micro-
controlador. Todas as informações e ex-
plicações citadas neste trabalho basei-
am-se nos microcontroladores 8051 e
8031 da Intel.
UNIDADE CENTRAL DE
PROCESSAMENTO (CPU)
A unidade central de processamento
controla todas as funções realizadas
pelo sistema.
A CPU de qualquer sistema de com-
putador contém os seguintes grupos de
unidades funcionais:
- Registradores e contadores
Os registradores e contadores são
unidades funcionais usadas para o
armazenamento temporário de bits den-
tro da CPU.
- Unidade Lógica e Aritmética (ULA)
A unidade lógica e aritmética é a
unidade funcional da CPU que executa
operações lógicas e aritméticas entre
palavras binárias, gerando uma outra
palavra na saída .
- Unidade de controle e sincronização
A unidade de controle e sincroniza-
ção coordena e controla todas as uni-
dades funcionais em uma seqüência
lógica e sincronizada.
PROCESSAMENTO
O processador ou unidade central
de processamento (CPU) é a parte do
sistema que faz o processamento das
informações para que as instruções se-
jam executadas; as instruções devem
estar armazenadas na memória de pro-
grama em seqüência, formando assim
o programa .
A CPU possui um registrador cha-
mado de contador de programa (PC)
que contém o endereço da próxima ins-
trução que deve ser executada.
Toda vez que uma instrução é reti-
rada da memória pela unidade central
de processamento, automaticamente o
contador de programa é incrementado
para que, após o processamento desta
instrução, quando a CPU for buscar a
próxima instrução, baste usar o ende-
reço contido no contador de programa.
Toda vez que a CPU é ligada ou
resetada
, automaticamente o seu con-
tador de programa é zerado, desta for-
ma, a primeira tarefa que a CPU irá rea-
lizar é a execução da instrução contida
na posição de memória de endereço
“0000”. Cada instrução possui duas fa-
ses distintas: o ciclo de busca e o ciclo
de execução. Durante o ciclo de uma ins-
trução a CPU faz com que o conteúdo
do contador de programa seja colocado
no barramento de endereços, endere-
çando, desta maneira, a posição de me-
mória que contém a instrução que deve
ser executada.
UNIDADES DE ENTRADA/SAÍDA (I/O)
As unidades de entrada/saída são
os meios pelos quais o usuário se co-
munica com o sistema. Essas unidades
possuem interfaces que permitem a co-
nexão com dispositivos chamados de
periféricos, tais como teclado,
monitores, LCD´s, etc.
ARQUITETURA
A performance do microcontrolador
depende da sua arquitetura interna, ou
seja, do modo em que o microcontro-
lador foi projetado tanto para o hardware
como para software. No hardware apre-
sentaremos a arquitetura Von-Neumann,
na qual se refere o software CISC.
- Arquitetura Von-Neumann
Na arquitetura Von-Neumann, os
barramentos de dados e endereços são
compartilhados entre memórias de pro-
gramas e memórias de dados na comu-
nicação com a CPU (figura1). Nesse tipo
de arquitetura, quando a CPU está
acessando a memória de programa não
pode acessar a memória de dados, por-
que usa os mesmos barramentos para
as duas memórias.
CISC (Complex Instruction Set
Computer)
CISC: Computador com Set de Ins-
trução mais Complexo, quanto maior a
complexidade da instrução que deve ser
executada, mais espaço ela ocupa no
chip
. Desse modo, chegará um momen-
to que passaremos a ter um
set
de ins-
truções tão grande que começará a afe-
tar o desempenho, dificultando a possi-
bilidade de implementar outras funções
José Edson dos Santos Marinho
Ednaldo dos Santos Marinho
MINI-CURSO DE
MICROCONTROLADOR
SABER ELETRÔNICA ESPECIAL Nº 2 /JANEIRO/2001SABER ELETRÔNICA ESPECIAL N º 2 /JANEIRO/2001
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14

Pré-visualização parcial do texto

Baixe Microcontrolador 8051 e outras Notas de estudo em PDF para Mecatrônica, somente na Docsity!

INTRODUÇÃO

Com o avanço da tecnologia e a uti- lização da eletrônica digital por grande parte das empresas, o emprego de microcontroladores vêm sendo muito requisitado para um melhor desenvol- vimento da produção, diminuindo os custos e trazendo benefícios para as empresas que utilizam esse sistema. É importante salientar que, considerando a relação custo/benefício, os microcon- troladores podem não só ser usados em empresas de médio/grande porte, como podem também ser utilizados em vári- os projetos de eletrônica, na substitui- ção de vários componentes digitais, ob- tendo-se assim no final do projeto um melhor acabamento – pois um microcontrolador ocuparia um menor espaço físico - e uma maior eficiência e praticidade, uma vez que todos os co- mandos seriam executados via software. Antes de um aprofundamento no assunto microcontroladores, é importan- te conhecermos um pouco da história desses componentes desde as suas origens. Na década de 70 começaram a ser utilizados microprocessadores em com- putadores para uma maior eficiência no processamento de dados. O micropro- cessador Intel foi um dos precursores e, a partir daí, houve uma preocupação em melhorar cada vez mais o sistema de processamento de dados através desses componentes. Baseado na ar- quitetura de um microprocessador e seus periféricos, foi criado um compo- nente que (fisicamente em uma unida- de) comportasse todo um sistema que equivalesse a um microprocessador e seus periféricos; assim surgiu o micro- controlador. Todas as informações e ex- plicações citadas neste trabalho basei- am-se nos microcontroladores 8051 e 8031 da Intel.

UNIDADE CENTRAL DE

PROCESSAMENTO (CPU)

A unidade central de processamento controla todas as funções realizadas pelo sistema.

A CPU de qualquer sistema de com- putador contém os seguintes grupos de unidades funcionais:

- Registradores e contadores Os registradores e contadores são unidades funcionais usadas para o armazenamento temporário de bits den- tro da CPU. - Unidade Lógica e Aritmética (ULA) A unidade lógica e aritmética é a unidade funcional da CPU que executa operações lógicas e aritméticas entre palavras binárias, gerando uma outra palavra na saída. - Unidade de controle e sincronização A unidade de controle e sincroniza- ção coordena e controla todas as uni- dades funcionais em uma seqüência lógica e sincronizada.

PROCESSAMENTO

O processador ou unidade central de processamento (CPU) é a parte do sistema que faz o processamento das informações para que as instruções se- jam executadas; as instruções devem estar armazenadas na memória de pro- grama em seqüência, formando assim o programa. A CPU possui um registrador cha- mado de contador de programa (PC) que contém o endereço da próxima ins- trução que deve ser executada. Toda vez que uma instrução é reti- rada da memória pela unidade central de processamento, automaticamente o contador de programa é incrementado para que, após o processamento desta instrução, quando a CPU for buscar a próxima instrução, baste usar o ende- reço contido no contador de programa. Toda vez que a CPU é ligada ou resetada, automaticamente o seu con- tador de programa é zerado, desta for- ma, a primeira tarefa que a CPU irá rea- lizar é a execução da instrução contida na posição de memória de endereço “0000”. Cada instrução possui duas fa- ses distintas: o ciclo de busca e o ciclo

de execução. Durante o ciclo de uma ins- trução a CPU faz com que o conteúdo do contador de programa seja colocado no barramento de endereços, endere- çando, desta maneira, a posição de me- mória que contém a instrução que deve ser executada.

UNIDADES DE ENTRADA/SAÍDA (I/O)

As unidades de entrada/saída são os meios pelos quais o usuário se co- munica com o sistema. Essas unidades possuem interfaces que permitem a co- nexão com dispositivos chamados de periféricos, tais como teclado, monitores, LCD´s, etc.

ARQUITETURA

A performance do microcontrolador depende da sua arquitetura interna, ou seja, do modo em que o microcontro- lador foi projetado tanto para o hardware como para software. No hardware apre- sentaremos a arquitetura Von-Neumann, na qual se refere o software CISC.

- Arquitetura Von-Neumann Na arquitetura Von-Neumann, os barramentos de dados e endereços são compartilhados entre memórias de pro- gramas e memórias de dados na comu- nicação com a CPU (figura1). Nesse tipo de arquitetura, quando a CPU está acessando a memória de programa não pode acessar a memória de dados, por- que usa os mesmos barramentos para as duas memórias.

CISC (Complex Instruction Set Computer) CISC: C omputador com S et de I ns- trução mais C omplexo, quanto maior a complexidade da instrução que deve ser executada, mais espaço ela ocupa no chip. Desse modo, chegará um momen- to que passaremos a ter umset de ins- truções tão grande que começará a afe- tar o desempenho, dificultando a possi- bilidade de implementar outras funções

José Edson dos Santos Marinho

Ednaldo dos Santos Marinho

MINI-CURSO DE

MICROCONTROLADOR

importantes. Ter um complexo (grande) set de intruções “CISC” nem sempre é interessante para um bom desempenho do processador. Numa análise feita pelo laboratório da IBM sobre como estavam sendo usa- do os diversos tipos de instruções, concluiram que num microprocessador que usava umset de instruções de, por exemplo, 200 instruções, a maior parte do processamento era feita apenas com umas 10 instruções. Uma grande parte das instruções era pouco usada, às vezes até uma única vez em um longo programa, de modo que elas poderiam ser implementadas pelas instruções básicas mais usadas. Daí o aparecimento da nova arqui- tetura com oset de instruções reduzido “RISC”.

MEMÓRIAS

Memórias são os dispositivos que armazenam informações e são usadas em todos os sistemas microcontrolados. Existem vários tipos de memórias que podem ser classificadas por vários ítens diferentes. Vamos analisar os principais:

- Acesso As memórias armazenam informa- ções em lugares que se denominam “lo- calidades de memória”. Cada localida- de de memória guarda um conjunto de bits e tem um endereço. No acesso des- ses endereços podemos analisar : O tempo de acesso : é o tempo que a memória necessita para que sejam es- critos ou lidos os dados em suas locali- dades; Acesso seqüencial : nas memórias que têm acesso seqüencial, para acessar um endereço de uma certa lo- calidade, precisa-se passar por ende- reços intermediários (as memórias mais comuns desse tipo são as que utilizam fita magnética); Acesso aleatório: as memórias que utilizam esse tipo de acesso são as que permitem que seja acessado qualquer dado em qualquer endereço sem a ne- cessidade de ter que passar por outros endereços intermediários. - Volatilidade Memórias voláteis : são aquelas que perdem as informações quando é cortada sua alimentação. São memóri- as que geralmente usam como elemen- to de memória oflip-flop. Memórias não voláteis : são memó- rias que mesmo desligando-se sua ali- mentação, não perdem as informações armazenadas. Dentre essas se desta- cam as magnéticas e as eletrônicas ROM, PROM, EPROM, EEPROM , e outras. - Memórias de escrita/leitura ou so- mente leitura Escrita/leitura : são memórias que podem ser acessadas pela CPU tanto para leitura quanto para escrita; elas são usadas para armazenar dados que se- rão utilizados durante a execução do programa (memórias RAM´s, EEPROM´s).

Somente leitura : são as memórias que armazenam o programa, ou seja são as memórias que só serão lidas pela CPU e que já vêm gravadas para o sistema (memórias ROM´s ,PROM´s , etc).

- Tipo de armazenamento Estáticas : memórias estáticas são aquelas nas quais as informações per- manecem armazenadas enquanto não houver escrita ou não faltar energia. Dinâmicas : memórias dinâmicas são memórias que perdem informações armazenadas mesmo com alimentação. Na RAM dinâmica (ou DRAM) isso acon- tece porque cada célula tem um tran- sistor MOSFET e um capacitor que ar- mazena um dado (1bit). - Tipos de memórias Veremos a seguir alguns tipos de memórias existentes no mercado e que são muito utilizadas:

Memórias RAM (Random Acces Memory) Essas memórias são de acesso ale- atório, que podem ser acessadas a qual- quer momento e em qualquer endere- ço. Elas podem ser estáticas ou dinâmi- cas e também podem ser gravadas pelo sistema com a tensão de 5V. São me- mórias consideradas voláteis.

Memórias ROM (Ready Only Memory) Essas memórias são utilizadas no sistema somente para a leitura.

Memórias PROM (Programmable Ready Only Memory) Essas memórias são utilizadas no sistema somente para a leitura; geral- mente usadas como memórias de pro- grama, só podem ser gravadas com gra-

vadores específicos e só uma vez. São as memórias não voláteis;

Memórias EPROM (Erasable Programmable Ready Only Memory) Essas memórias são utilizadas no sistema somente para a leitura , tam- bém empregadas como memórias de programa e só podem ser gravadas com gravadores específicos. Podem ser apa- gadas por raios ultravioleta e regrava- das por muitas vezes. São chamadas memórias não voláteis.

Memórias EEPROM ou E²PROM (Electrically Erasable Programmable Ready Only Memory) Essas memórias podem ser usadas no sistema tanto para leitura como para escrita, podem ser gravadas com gra- vadores específicos ou pelo sistema; são apagadas eletricamente e regrava- das por muitas vezes; são consideradas memórias não voláteis.

Memórias PEROM (Programmable Erasable Ready Only Memory) Uma linha de memórias programá- veis e apagáveis apenas para leitura, de 3V e 5V, apenas dentro do sistema. Fabricadas com a avançada tecnologia CMOS, não voláteis, suas característi- cas incluem: · Operação de leitura e programação em apenas 3V e 5V · Proteção de dados de software e hardware · Operação de programação por setor · 1000 ciclos de programa · Retenção de dados de 10 anos · Baixa dissipação de potência · Tempo de ciclo de programa rápido · Detecção de fim de programa

Memórias FLASH A memória FLASH é um dispositivo de armazenamento confiável, não volá- til, de boa relação custo/ benefício e que possui características de leitura da EPROM, EEPROM e SRAM , porém quando aplica-se 12V sobre o dispositi- vo, este pode ser gravado com base em bytes. No caso da memória FLASH - 5V estes dispositivos foram projetados para serem programados dentro do sistema com o fornecimento padrão de 5V. Em programadores de EPROM convencio- nais não há necessidade de 12Vpp, nem para programação, nem para apaga- mento. É composta de uma arquitetura de apagamento de setor (qualquer com- binação pode ser apagada simultanea- mente) e 100.000 ciclos de apagamen- to/programação.

Memória FLASHFILE A memória FLASHFILE, simetrica- mente bloqueada, da Intel, oferece uma solução não volátil com leitura e pro- gramação de mais alta densidade para

Figura 1

pino 10 = P3.0 RXD/ Data : entra- da de dados serial. pino 11 = P3.1 TXD/Clock: saída de dados serial. pino 12 = P3.2 INT0: interrupção externa de número 0, ativo em nível ló- gico baixo. pino 13 = P3.3 INT1: interrupção externa de número 1, ativo em nível ló- gico baixo. pino 14 = P3.4 T/C0 : entrada ex- terna para o temporizador/contador de eventos. pino 15 = P3.5 T/C1: entrada ex- terna para o temporizador/ contador de eventos. pino 16 = P3.6 WR: strobe (sinalizador) de escrita de dados exter- no pino 17 = P3.7 RD :strobe (sina- lizador) de leitura de dados externo Obs : estas funções serão mais de- talhadas na continuação da apostila

Os pinos 18 e 19 são: XTAL 1 (18) XTAL 2 (19)

Pino 20: VSS conectado ao terra do circuito

Do pino 21 ao pino 28 temos: O port P2 , que vai de P2.0 a P2.7. Tem as mesmas características de fun- cionamento do port P1, sendo estes pi- nos usados como pinos de endereça- mento externo endereçando a parte mais significativa dos 16 bits (A8 a A15).

Pino 29: PSEN (Program Store Enable), sa- ída para habilitação do programa exter- no, sinalizador de leitura da memória de programa exter na; quando o microcontrolador busca instruções este pino vai ao nível zero.

Pino 30: ALE (Address Latch Enable), saí- da habilitadora dolatch de endereços, separando o barramento de dados da parte menos significativa do barramento de endereços que são multiplexados pelo port P0.

Pino 31: EA (External Enable) , entrada de seleção de memórias. Quando coloca- do em nível lógico baixo, a CPU execu- ta somente as instruções da memória de programa externa; quando em nível lógico alto, a CPU executa as instruções da memória de programa interna (se existir).

Pino 32 ao pino 39 temos: Port P0: que vai de P0.0 a P0.7. Este é umport de 8 bits bidirecional com dre- no aberto. Sem resistores depull-up internos, funciona como um barramento de da- dos, e a parte menos significativa do barramento de endereços.

Pino 40, temos VCC (Alimentação positiva) Basicamente, os pinos do microcon- trolador são construídos como mostra a figura 4 abaixo com algumas diferenças uns dos outros, mas para explicação de um modo geral pode ser considerado um flip-flop tipo D com doisbuffers tri-state, um transistor e um resistor. Quando o microcontrolador vai es- crever no pino, o dado é enviado para a via de dados interna e também é dado umclock noflip-flop, que terá o mesmo sinal na saída “Q” (e o complemento des- te sinal na saída Q/), que por sua vez está ligada aogate de um transistor, o qual entra em saturação quando for apli- cado nível “1”. Se o sinal que estiver na via de da- dos for “1” e oflip-flop receber umclock, a saída Q terá um sinal de nível alto, e Q/ terá um sinal de nível baixo que en- trará nogate do transistor deixando-o em corte e, então, o sinal no pino será o do resistor, ou seja , nível “1”. Agora, se o sinal que estiver na via de dados in- terna for nível baixo e novamente oflip- flop receber umclock, na saída Q tere- mos um sinal de nível baixo, e na saída Q/ um sinal de nível alto que levará o transistor à saturação e com isso o pino terá um nível baixo. Quando se quer ler um pino, o microcontrolador deve envi-

ar um sinal para obuffer “lê pino”, que pega o sinal que estiver nele e envia para via de dados interna; quando se quer ler oflip-flop, o sinal é enviado para o buffer “lê latch” que libera o sinal da saída Q para a via de dados interna. No microcontrolador existem algumas ins- truções responsáveis pela leitura doflip- flop, e outras do pino. Para que se pos- sa ler um sinal externo no pino, deve- se primeiro escrever nele um nível alto evitando assim que o transistor condu- za e mande um sinal baixo no pino, pois se for entrar um sinal de nível alto no pino, o transistor não poderá estar saturado, senão entrará em conflito pre- judicando a leitura. Isso acontece em todos os PORT’s do microcontrolador. Quando estão sendo usado os pinos de I/O como PORT’s (empregando somen- te as memórias internas, é necessário o uso de resistores depull-up no port P.

CLOCK E CICLO DE MÁQUINA

O microcontrolador é um circuito di- nâmico, e para o seu funcionamento necessita de um sinal declock (relógio) para sincronização de suas operações. Este sinal de clock é gerado por um oscilador que fornece um seqüência ininterrupta de pulsos com períodos constantes. O chamado ciclo de máqui- na é uma quantidade de pulsos de clock que o processador requer para fazer suas funções; e o ciclo de instrução é a quantidade de ciclos de máquina que são necessários para a execução de uma instrução. Um exemplo genérico de uma ins- trução: suponhamos que um processa- dor qualquer leve para a execução de uma instrução 5 (cinco) ciclos de má- quina, e que cada ciclo de máquina des- se processador seja igual a 2 (dois) clocks. Para executar essa instrução o processador levará 10 (dez) clocks; su- pondo também que desses 5 (cinco) ci- clos de máquina, 2(dois) seriam para a busca da instrução na memória de pro- grama e os outros 3 (três) para a execu-

Fig. 4 - ConstruÁ„o b·sica de um pino. Figura 5

ção dessa instrução, como mostra o grá- fico abaixo (figura 5). No microcontrolador 8051 um ciclo de máquina corresponde a 12 períodos, e as instruções levam de 1 (um) a 3 (três) ciclos de máquina para ser realizadas dependendo da instrução. Conforme o componente, o ciclo de máquina pode ser em maior ou menor número de perí- odos, outros microcontroladores têm os ciclos de máquina diferentes. O 8051 possui internamente um cir- cuito oscilador com um inversor linear de estágio simples, oferecendo duas possibilidades de clock distintas, sendo um externa e outra interna. Para o uso de oscilador externo deve-se aterrar o pino 19 e injetar o si- nal externo no pino 18 que, desta for- ma, não atuará no gerador interno. Para usarmos o clock gerado inter- namente devemos intercalar entre os pinos 18 e 19 um cristal com filtro cerâmico na freqüência desejada, como mostra na figura 6.

RESET

O reset não é bem uma interrup- ção, mas às vezes o chamamos assim por sua ação semelhante a uma inter- rupção, já que ele interrompe o proces- so e reinicia o sistema. No 8051 o reset é ativo quando o pino 9 permanecer em nível alto por pelo menos 2 ciclos de máquina. Quando os pinos do 8051 es- tiverem todos em tri-state, e enquanto estiver no processo de reset, os pinos permanecerão em alta impedância. Quando acontece uma interrupção por reset, a CPU se reorganiza e inicializa com os seguintes valores nos registradores. Valores dos Registradores após o RESET Registrador Valor PC 0000 ACC 00 PSW 00 SP 07 DPTR 0000 P0-P1-P2-P3 FF IP Xxx IE 0xx TMDO 00 TCOM 00 TH0 00 TL0 00 TH1 00 TL1 00 SCOM 00 SBUF Indeterminado PCOM 0xxxxxxx* B 00

O 8051 pode ser automaticamente resetado toda vez que for ligado (POWER-ON), colocando um resistor e um capacitor no pino 9 (RESET) como

mostra a figura 7 abaixo. O auto-reset é usado para que se tenha um tempo para a fonte se estabilizar e, assim, todos os componentes do sistema serão alimen- tados corretamente evitando níveis de tensões errados. Outro modo de se obter o reset é através de um “push-button” ligado ao pino 9, em paralelo com o capacitor (‘reset forçado’). Desse modo o reset pode ser dado a qualquer instante sem a necessidade de desligar o sistema.

ORGANIZAÇÃO DA MEMÓRIA

No microcontrolador 8051 a memó- ria está organizada do seguinte modo: memórias internas de 256 bytes de memória RAM, sendo 128 bytes de re- gistradores de função especial e 128 de registradores comuns; e até 4 kbytes de memória de programa interna. Em relação à memória externa, o microcontrolador pode endereçar até 64 kbytes de memória de programa exter- na, ou 4kbytes internos e 60 kbytes ex- ternos

RESISTRADORES DE FUNÇÕES

ESPECIAIS (SFR)

Na área de memória SFR (Regis- tradores de Funções Especiais) existem alguns registradores que são bytes e bits endereçáveis, e outros que só são bytes endereçáveis. Veja figura 8.

Os registradores que são bytes e bits endereçáveis podem ser acessados bit a bit individualmente, ou pode-se acessar os 8 bits (byte) de uma vez. Os registradores de funções espe- ciais de bytes e bits endereçáveis e seus endereços, assim como os endereços dos bytes, são mostrados na tabela 2. OBS.: estes registradores fazem par- te da RAM interna do 8051. Na tabela 2 temos a parte da RAM dos registradores de funções especiais com nome e endereço individual dos bits. Alguns bits têm nomes e endereços, outros só nomes e outros só endereços; dependendo do microcontrolador usa- do pode-se ter mais registradores com outras funções.

Descrevemos agora as funções de cada um dos registradores :

O acumulador ( E0 ) BIT7 ACC7 E BIT6 ACC6 E BIT5 ACC5 E BIT4 ACC4 E BIT3 ACC3 E BIT2 ACC2 E BIT1 ACC1 E BIT0 ACC0 E

O acumulador é um registrador de uso geral e é um operador em várias instruções, sendo também o lugar onde fica o resultado de varias operações. Ele é muitas vezes parte do operando da instrução.

Obs.: notem que o endereço do byte do acumulador tem o mesmo no nome do endereço do bit zero, então, como acessar o endereço do bit sem alterar o byte? É simples: no momento de acessar qualquer endereço, a instrução de bit é diferente da instrução de byte, logo o código em hexadecimal também

Figura 6

Figura 7

REGISTRADO-

RES DE

FUN«’ES

ESPECIAIS

¡REA DE BYTES

ENDERE«¡VEIS

DIRETAMENTE

¡REA DE BITS

ENDERE«¡VEIS

BANCO DE

REGISTRADORES

FF

7F

1F

2F

Figura 8

TABELA 1

PX0 Priority External 0 (Priorida- de Interrupção Externa 0) quando em nível 1, indica que a prioridade é para o dispositivo que esteja ligado no pino 12 (INT1/P3.2) do 8051; no caso de nível 0 indica baixa prioridade.

Registrador PSW Program Status Word (D0) Este registrador contémflags (bits) que indicam as ocorrências da ULA a cada operação lógica e aritmética que houver, e também avisa em que banco de registradores está ativo.

BIT7 D7 CY BIT6 D6 AC BIT5 D5 F BIT4 D4 RS BIT3 D3 RS BIT2 D2 0V BIT1 D1 X BIT0 D0 P

CY Carry Flag AC Carry Auxiliar OV Overflow Flag Estas flags (CY, AC, OV ) são modi- ficadas por algumas instruções, como mostra a tabela abaixo

Instruções CY AC VO ADD x x x ADDC x x x ANL C,bit x - - ANL C,\bit x - - CLR C 0 - - CPL C x - - CJNE x - - DA x - - DIV 0 - x MUL 0 - x MOV C, bit x - - ORL C, bit x - - ORL C, \bit x - - RLC x - - RRC x - - SETB C 1 - - SUBB x x x

RS1 Register bank Select 1 RS0 Register bank Select 0 Estas duas flags selecionam o ban- co de registradores do começo da RAM interna

RS1 RS0 Banco 0 0 0 0 1 1 1 0 2 1 1 3

F0 Flag 0 É um bit de uso geral. Quando so- bra no registrador não tem função P Parity Flag Bit que vai para o nível lógico 1 quan- do o acumulador tiver um número par de “1”.

Registrador SCON Serial Control (98) Este registrador serve para o con- trole do canal serial. BIT7 9F SM BIT6 9E SM BIT5 9D SM BIT4 9C REN BIT3 9B TB BIT2 9A BB BIT1 99 TI BIT0 98 RI

SM0 e SM1: Estes selecionam o modo em que o 8051 irá operar com o canal serial, como segue abaixo SM0 SM1 Modo Taxa de transmissão 0 0 0 Freq. Clock / 0 1 1 Variável ( Timer 1) 1 0 2 Freq. Clock /32 ou 64 1 1 3 Variável ( Timer 1)

SM Possui várias finalidades, dependen- do de que modo foi selecionado: Modo 0: não tem qualquer efeito no funcionamento do canal serial, deven- do ficar em zero. Modo 1: não gera interrupção se estiver setado e o stop bit recebido for ilegal. Modo 2 e 3: habilita a comunicação entre vários microcontroladores, nestes modos não é gerada interrupção se es- tiver setado, e se o nono bit de dados enviado for zero.

REN Reception Enable (habilita re- cepção) Se estiver setado habilita a recep- ção tão logo um start bit seja detectado, se estiver resetado desabilita a recep- ção.

TB Nos modos 2 e 3 indica o estado do nono bit a ser transmitido, pode ser setado ou resetado por software.

RB Não é usado no modo 0 , e no modo 1 indica o estado do stop bit recebido, desde que SM2 esteja zerado. Nos mo- dos 2 e 3 indica o estado do nono bit que foi recebido.

TI É uma flag de requerimento de in- terrupção de transmissão, é setada pelo hardware após a transmissão do oitavo bit de dados quando no modo 0, e nos outros modos ao início do stop bit e deve ser zerado por software da rotina de atendimento para permitir novas inter- rupções.

RI É uma flag de requerimento de in- terrupção na recepção, é setada pelo hardware após a recepção do oitavo bit de dados quando no modo 0, e nos ou-

tros modos a meio tempo de recepção do stop bit e deve ser zerado por software da rotina de atendimento para permitir novas interrupções.

Registrador TCON time control (88) BIT7 8F TF BIT6 8E TR BIT5 8D TF BIT4 8C TR BIT3 8B IE BIT2 8A IT BIT1 89 IE BIT0 88 IT

TF

Sempre que ocorrer um estouro de contagem no contador 1, este bit será levado a nível alto gerando o pedido de interrupção do T/C 1 e será levado ao nível baixo automaticamente depois de ser atendida a interrupção.

TR Será levado ao nível alto para ligar o contador 1(iniciando a contagem) e le- vado ao nível baixo quando quiser des- ligar o contador 1(parar a contagem) por software.

TF Sempre que ocorrer um estouro de contagem no contador 0, este bit será levado ao nível alto gerando o pedido de interrupção do T/C 0 e será levado ao nível baixo automaticamente depois de ser atendida a interrupção

TR Será levado ao nível alto para ligar o contador 0(iniciando a contagem) e le- vado ao nível baixo quando quiser des- ligar o contador 0 (parar a contagem) por software.

IE Esse bit será levado ao nível alto quando for detectado um sinal de nível baixo no pino INT1, sinalizando o pedi- do de interrupção, e será levado ao ní- vel baixo logo depois que a interrupção for atendida via hardware.

IT Indica qual o processo para que haja a chamada de interrupção INT1. Se em nível alto a interrupção será aceita na transição negativa neste pino permane- cendo pelo menos 12 períodos de clock, se em nível baixo a interrupção será aceita apenas por nível baixo no pino.

IE Esse bit será levado ao nível alto quando for detectado um sinal de nível baixo no pino INT0 sinalizando o pedi- do de interrupção, e será levado ao ní- vel baixo logo depois que a interrupção for atendida via hardware.

IT

Indica qual o processo para que haja a chamada de interrupção INT0. Se em nível alto a interrupção será aceita na transição negativa neste pino permane- cendo pelo menos 12 períodos declock, se em nível baixo a interrupção será aceita apenas por nível baixo no pino.

Registrador TMOD time mode (89) BIT7 Gate BIT6 C/T BIT5 M1. BIT4 M0. BIT3 Gate BIT2 C/T BIT1 M1. BIT0 M0.

Gate Este bit tem por função escolher como o T/C1 será habilitado. Se for 0 (função temporizador), o T/C1 estará habilitado, iniciando tal contagem quan- do o bit TR1(no registrador TCON) for 1. Se o GATE for 1 (função contador), o T/ C1 estará habilitado quando TR1 e INT estiverem em 1 simultaneamente.

C/T Este bit seleciona a função de con- tador ou temporizador. Se o bit T/C1 for 0, a função é de temporizador e o sinal será interno. Se o bit T/C1 for 1, a fun- ção será de contador e o sinal será ex- terno.

M1.1 e M0. Estes dois bits servem para deter- minar em que modo o C/T1 irá traba- lhar, como segue a tabela a baixo.

M1.1 M0.1 Modo Operação 0 0 0 C/T 1 de 8 bits com clock / 0 1 1 C/T1 de 16bits 1 0 2 C/T1 de 8 bits com recarga automática 1 1 3 C/T1 de 8 bits. Dois contadores de 8 bits

Gate Este bit tem por função escolher como o T/C0 será habilitado. Se for 0 (função temporizador), o T/C0 estará habilitado iniciando tal contagem quan- do o bit TR0(no registrador TCON) for 1. Se o GATE for 1 (função contador) o T/ C0 estará habilitado quando TR0 e INT estiverem em 1 simultaneamente.

C/T Este bit seleciona a função de con- tador ou temporizador. Se o bit T/C0 for 0, a função é de temporizador e o sinal será interno. Se o bit T/C0 for 1, a fun- ção será de contador e o sinal será ex- terno M1.0 e M0.

M1.0 M0.0 Modo Operação 0 0 0 C/T 0 de 8 bits com clock / 0 1 1 C/T0 de 16bits 1 0 2 C/T0 de 8 bits com recarga automática 1 1 3 C/T0 de 8 bits.Dois contadores de 8 bits

Essa tabela também faz parte dos registradores de funções especiais, po- rém não são bits endereçáveis , portan- to seus bits não tem nomes, e os regis- tradores só podem ser acessados pelo endereço dos bytes.

8D Time High 1 TH 8C Time High 0 TH 8B Time Low 1 TL 8 A^ Time Low 0 TL 87 Power Control Register PCON 83 Data Pointer High DPH 82 Data Pointer Low DPL 81 Stack Pointer SP

TH1 Time High 1 (8D) e TL1 Time Low 1 (8B) São registradores de 8 bits que em conjunto com registradores de 16 bits são chamados de Time 1, Temporizador e contador.

TH0 Time High 0 (8C) e TL0 Time Low 0 (8A) São registradores de 8 bits que em conjunto com registradores de 16 bits são chamados de Time 0: Temporizador e contador.

PCON Power Control ( 87 ) Esse registrador é usado para alte- rar modos de funcionamento do microcontrolador com relação ao canal serial e consumo de potência.

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT SMOD * * * GF1 GF2 PD IDL

  • = bit sem função

SMOD Dobra a relação de divisão de frequência na serial.

GF Bit de uso geral.

FG Bit de uso geral.

PD Bit de Power-Down: modo especial de trabalho do microcontrolador da sé- rie CMOS, em que o microcontrolador “congela” suas atividades.

IDL Bit que ativa o modo “idle”, modo especial de trabalho do microcontrola- dor da série CMOS em que o microcon- trolador “congela” suas atividades.

DPH Data Pointer High (83) e DPL Data Pointer Low (82) Esses registradores juntos formam um registrador de 16 bits chamado de DPTR (Data Pointer) e permite criar um endereço de acesso externo.

SP Stack Pointer (81) É um registrador utilizado com pilha de endereços de retorno de sub-rotina, ele é indiretamente manipulado pelas instruções CALL , RET e RETI , e acessado diretamente pelas instruções PUSH e POP.

Do endereço 30H ao endereço 7F H da RAM temos registradores comuns com acesso por byte; já do endereço 20H até o endereço 2F H, os registra- dores podem ser acessados tanto por byte como por bits. Do endereço 00 H ao endereço 1F H existem quatro ban- cos de registradores que só são bytes endereçáveis, como mostra a tabela abaixo.

7F

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

REGISTRADORES DE USO

GERAL ENDEREÇÁVEIS POR

BYTES

Do endereço 00H ao endereço 1FH temos conjuntos de registradores divi- didos em 4 bancos, sendo que cada banco com 8 registradores. Esses regis- tradores têm nomes que vão de R0 a R7 ; os registradores de cada banco têm os mesmos nomes, só mudando o en- dereço. Os bancos são acessados por duas flags no registrador PSW, como é mostrado na tabela da próxima página. Qualquer registrador de qualquer banco pode ser acessado pelo endere- ço imediato ou através do nome (R0 , R1 , R2 , R3 , R4 , R5 , R6 e R7 ), basta para isso ter selecionado o banco cor- reto. Obs.: o ponteiro de pilha está apon- tado para o registrador do endereço 07H (R7 do banco 0) sempre que se liga o microcontrolador, mas poderá ser mu- dado para outro endereço da RAM pelo programador, se for necessário.

  1. Todos podem ser configurados para operar como timer ou counter (tempori- zador ou contador ) Na configuração timer, o registrador é incrementado todo ciclo de máquina, desde que o ciclo de máquina consista em 12 períodos do oscilador, proporção de contagem de 1/12 da freqüência do oscilador. Na função counter (contador), o re- gistrador é incrementado em resposta à transição de 1 para 0 na entrada ex- terna correspondente T0 ou T1. Nesta função a entrada é amostrada em todo ciclo de máquina, quando uma amostragem tem um nível 1 em um ci- clo e um nível 0 no próximo ciclo , o con- tador é incrementado. Um novo valor aparecerá no regis- trador no ciclo seguinte , aquele em que a transição foi detectada. Se for neces- sário, por exemplo, dois ciclos para de- tectar uma transição, a máxima razão de contagem é de 1 / 24 da freqüência do oscilador , não existindo restrições sobre o duty cycle do sinal de entrada. Através do registrador TMOD podemos configurar os T/C’s em 4 modos que são:

MODO 0 Contador ou temporizador de 8 bits com divisão de até 32 vezes. Os regis- tradores TH0 ou TH1 recebem o valor de contagem e pode ser até FFh com o valor escrito pelo software, que também pode ser lido a qualquer momento; se ocorrer um estouro(overflow) o T/C em questão gera um pedido de interrupção que pode ou não ser aceito pela CPU interna do microcontrolador. Ainda nes- se modo os registradores TL0 ou TL com os bits 0, 1, 2, 3 e 4 servem para determinar em quanto será dividido o sinal de contagem (interno ou externo) podendo ir até 32 pela combinação bi- nária desses bits; os bits 5 a 7 destes registradores deverão ser ignorados. A figura 8 mostra o funcionamento.

MODO 1 Neste modo temos um T/C de 16 bits e, desta forma, usamos os pares de registradores TH0/TL0 ou TH1/TL0 para efetuar a contagem. Quando um estou- ro acontecer ou seja quando o par de registradores passa de FFFFh para 0000h, é setado o bit de overflow ( TF ou Tf1) forçando uma interrupção, se esta tiver sido previamente programada via software. Ver figura 9.

MODO 2 Nos registradores TL0 ou TL1 tere- mos o valor de onde começará a conta- gem, e nos registradores TH0 ou TH teremos o valor de recarga, os quais se- rão recarregados em TL0 ou TL1 sem- pre que um estouro acontecer nos mes- mos. Como cada registrador pode ser alterado a qualquer momento pelo

Figura 8

Figura 9

Figura 10

software , temos uma grande flexibilida- de para trabalhar com este modo. Ob- serve a figura 10.

MODO 3 Neste modo o T/C1 pára sua opera- ção sem receber pulsos de contagem, e o T/C0 fica com dois sistemas de 8 bits, um em TH0 e outro em TL0. O T/C de 8 bits TL0 será controlado pelos os bits TR0 e TF0, enquanto que o outro T/C de 8 bits será controlado pe- los bits TR 1 e TF 1.

TR1 e TF Neste modo. T/C 1 pára sua opera- ção e fica inerte, sem receber pulsos de contagem. Para o T/C 0 temos dois sis- temas de 8 bits, um em THO e outro em TL0. O T/C de 8 bits TL0 será controla- do pelos bits TR0 e TF0, e o T/C de 8 bits THO será controlado pelos bits TR e TF1.

Para o caso de programarmos o T/C 0 para o modo 3, podemos programar T/C 1 para qualquer um dos outros mo-

dos restantes, mas este não poderá gerar pedido de interrupção, pois o bit de requisição de interrupção do T/C 1 estará sendo usado por T/C 0, mas mes- mo assim o overflow neste contador poderá ser utilizado para chavear o ge- rador de taxa de transmissão do canal serial. Neste modo, o T/C 0 será habili- tado pelo bit de controle do T/C 1, mais especificamente TR1, no registro TCON e, ao ocorrer o overflow de TH0, quem será setado é o bit TF1 e não o TF0. Veja a figura 11. Se configurarmos o T/C 1 para o modo 3, o registro TL0 poderá ser usa- do como T/C de 8 bits, mas será contro- lado pelos bits GATE, C/T, TR0 e TF0. Neste modo o overflow em TH0 aciona- rá o flag de requisição de interrupção referente ao T/C 1, e o overflow de TL acionará o flag de requisição de inter- rupção referente ao TC0.

COMUNICAÇÃO DE DADOS

Para se transmitir dados entre equi- pamentos são necessários dispositivos de comunicação de dados. A transmissão de dados pode ser classificada pela sua forma (paralela ou serial), pela forma do sinal transmitido (analógico ou digital) e pelo sentido do sinal na transmissão(simplex, half- duplex e duplex). Para uma transmissão de dados a longa distância, para uma maior fidelidade é necessário que se conver tam os sinais digitais em analógicos ao transmitir, e ao receber converter os sinais analógicos em digi- tais através de aparelhos chamados modems. A denominada comunicação de dados pode ser feita de duas formas: serial e paralela. Neste trabalho será dada ênfase à comunicação serial, que é mais utilizada.

COMUNICAÇÃO SERIAL

A comunicação serial é feita com a transmissão de bytes ou caracteres de

bit em bit, um por vez na sequência. Este é um modo de comunicação muito re- comendado para transmissões de da- dos a longa distância. A comunicação serial usa níveis de tensão de 0 e a 5 V TTL e, para facilitar a transmissão de dados entre equipamentos diferentes, utiliza-se do código ASCII (American Standard Code for Interchange of Information), que representa cada caracter como uma palavra binária de 8 bits. Na comunicação serial em níveis de tensão pode-se ter problemas rela- cionados à distância (como ruídos, por exemplo). Daí o uso de um outro padrão de tensões (no caso do sistema RS-232, utiliza-se de tensões de 30 V), facilitan- do a transmissão de dados por uma grande distância com poucas interferên- cias). A comunicação serial pode ser síncrona ou assíncrona: na primeira, além dos bits de dados tem-se também os denominadosbits de sincronismo (bits que ajustam o clock interno do re- ceptor para que este tenha compatibili- dade suficiente para receber os dados do transmissor). Além dos bits de sincronismo, existem os chamadosbits de parada (bits usados para informar ao receptor o fim dos bits de dados). Es- ses bits de parada permitem que o re- ceptor confirme se recebeu ou não uma informação corretamente. No caso da comunicação assíncrona, é transmitido um caracter por vez, bit a bit; onde existe um bit para indicar o início da transmissão, chama- do destart bit, e outro para indicar o fim da transmissão, o chamadostop bit. O start bit é reconhecido como uma tran- sição do nível alto presente na linha para nível baixo, enquanto que o stop bit é reconhecido pela transição do nível bai- xo para o nível alto. Se o último bit refe- rente ao dado for em nível alto, o siste- ma aguarda um novo start bit, para ini- ciar a recepção de um novo caracter. Para a comunicação serial existem vários tipos de protocolos de comuni-

cação (normas padronizadas para trans- missão e recepção de dados), tais como o RS-485 e o RS-232, sendo este últi- mo o mais utilizado no mundo atualmen- te, pois define todos os padrões (elétri- cos, mecânicos e de transmissão) a se- rem empregados numa comunicação de dados. Na comunicação serial opera-se com três sistemas de interligação digi- tais:simplex, half–duplex e full-duplex. Figura 12. No modo simplex, temos apenas um elemento que transmite e um outro que recebe os dados, este modo é muito uti- lizado em impressoras e terminais de dados de bancos. No modo half-duplex, também temos um elemento que transmite e um outro que recebe, só que não é possível trans- mitir e receber as informações ao mes- mo tempo, de modo simultâneo, como noswalkie-talkies, por exemplo. No modo full-duplex ou apenas duplex, é possível transmitir e receber dados simultaneamente. O microcontro- lador 8051 tem uma interface serial in- terna que utiliza exatamente deste modo de interligação de sistema digital.

Figura 11

Figura 12

INTERFACE SERIAL NO 8051

No 8051 a interface serial já é imple- mentada no próprio chip, e ela é do tipo Full-Duplex ou, conforme usaremos no decorrer do texto duplex onde, neste caso, dados podem estar sendo recebi- dos e enviados simultaneamente no hardware sem necessitar a intervenção direta do programa (a CPU é sinalizada via interrupção, quando alguma atitude do programa for precisa: recepção ou envio de um byte). Isto significa que o sistema pode re- ceber e transmitir informações simulta- neamente, sendo que para tal temos registros especialmente destinados para este fim. Este registro chama-se SBUF (Serial buffer) e uma escrita no mesmo implica em transmissão automática do dado escrito: assim como um certo dado que chegue no pino de recepção impli- cará na automática operação de recep- ção por parte do sistema, independen- temente do controle do usuário (desde que o canal serial esteja habilitado). Pode parecer, à primeira vista, que temos um único registro físico para efe- tuar este trabalho. Isto não é verdade. Temos, na realidade, dois registros com o mesmo nome SBUF, sendo que um é para recepção e outro para transmissão.

mais interrompidos, pois os dados têm RB8 = 0 e poderão continuar suas ativi- dades normalmente. 7 – Quando o mestre desejar nova- mente enviar um endereço, bastará en- viar novamente o nono bit em 1, para habilitara interrupção em todos os ‘es- cravos’.

EXPANSÃO DE I / O

A PPI 8255 é uma interface de fina- lidade geral programável, compatível com o 8051, que apresenta as seguin- tes características :

  • Alimentação = 5V
  • três por tas de oito bits cada , programáveis por software
  • programação feita utilizando-se ins- truções de entrada e saída (IN e OUT) e uma palavra de controle *operação realizada em três modos dis- tintos: modo 0, modo 1, modo 2.

Pinagem Os pinos da 8255 têm a seguinte configuração mostrados na figura 16, enquanto a figura 17 mostra o endereçamento.

Correspondência entre pino e sinais

PINO 1 2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

37 38 39 40

SINAL PA PA PA PA RD

CS GND A A

PC PC PC PC PC PC PC PC PB PB PB PB PB PB PB PB VCC D D D D D D D D RESET WR

PA PA PA PA

FUNÇÃO Bit 3 da porta A Bit 2 da porta A Bit 1 da porta A Bit 0 da porta A Sinal ativo em zero que habilita o envio de dados através da interface para o microcontrolador através do barramento de dados Sinal ativo em zero que habilita o funcionamento da interface Referência 0V A1 e A0 são conectados no barramento de endereço do sistema , usado para selecionar uma das três portas ou registrador da palavra de controle do 8255 Bit 7 da porta C Bit 6 da porta C Bit 5 da porta C Bit 4 da porta C Bit 0 da porta C Bit 1 da porta C Bit 2 da porta C Bit 3 da porta C Bit 0 da porta B Bit 1 da porta B Bit 2 da porta B Bit 3 da porta B Bit 4 da porta B Bit 5 da porta B Bit 6 da porta B Bit 7 da porta B Tensão de alimentação Bit 7 de dados Bit 6 de dados Bit 5 de dados Bit 4 de dados Bit 3 de dados Bit 2 de dados Bit 1 de dados Bit 0 de dados Sinal vindo do sistema para limpar os registradores ativos em nível 1 Sinal de controle, ativo em nível zero que habilita a operação de escrita Bit 7 da porta A Bit 6 da porta A Bit 5 da porta A Bit 4 da porta A

SOFTWARE O software, também conhecido como programa, é um conjunto de ins- truções colocadas em um seqüência ló- gica, pela qual o processador poderá tomar algumas “decisões” já definidas pelo programador. A programação de um sistema é a construção correta dessa seqüência de instruções que ele deve realizar para conduzir à solução de um problema. Essa seqüência é variável, pois o pro- gramador possui uma ampla variedade

Figura 16

de alternativas e opções para atingir os mesmos resultados. Para se programar um sistema é necessário que se conheça a parte do hardware, ou seja , a arquitetura inter- na do microcontrolador a ser programa- do, seus periféricos, o set de instrução, etc.

INSTRUÇÃO A instrução pode ser definida como sendo uma “ordem dada para executar

uma certa tarefa”. No microprocessador essas tarefas podem ser :

  • ler ou escrever numa posição de memória;
  • fazer uma operação aritmética e ló- gica;
  • fazer qualquer outra manipulação de dados, etc. A instrução para um microproces- sador pode ser representada por lingua- gem de máquina, códigos em hexade- cimal ou binário.

Outra maneira de representação pode ser feita através dos mnemônicos (códigos que representam uma sequência de palavras) de um progra- ma fonte, que serão transformados em linguagem de máquina (ou linguagem objeto) por um programa compilador (tradutor).

LINGUAGEM ASSEMBLY

A linguagem ASSEMBLY foi a primei- ra linguagem que surgiu nesta área de computação, sendo formada por mnemônicos. Cada mnemônico possui o um códi- go correspondente em hexadecimal, e cada ‘família’ de microcontrolador pos- sui um conjunto de mnemônicos diferen- te. Esta linguagem tem como finalidade facilitar o manuseio das instruções para desenvolver programas, desde uma sim- ples rotina até um sofisticado programa para controle industrial. Todo microcontrolador precisa de um lista de instruções para ser seguida passo-a-passo, lista essa chamada de programa, que diz exatamente o que o microcontrolador deve fazer. O microcontrolador só faz duas coi- sas: lê e processa números binários.

Cada fabricante de microcontrolador define os mnemônicos para os seus pro- dutos. Algumas linguagens assembly utili- zam o mesmo código (instrução de má- quina) para diversas CPU´s (Unidade Central de Processamento) porém an- tes de iniciar a tradução deve-se infor- mar ao tradutor para qual CPU deve ser feita a tradução. A linguagem assembly é classifica- da de baixo nível , porque na elabora- ção do programa há a necessidade de elaborar rotinas para o completo con- trole da CPU.

ASSEMBLER:

O tradutor assembler é um progra- ma de computador que produz um có- digo binário correspondente a cada mnemônico. Os programas de tradução avisam quando encontram algum erro no programa fonte (programa elabora- do para a CPU).

ESTRUTURA DA LINGUAGEM

ASSEMBLY

A linguagem ASSEMBLY é dividida em grupos , e nessa ordem:

Label Código de Operando Comentário Operação ou Endereço

LABEL

A principal característica da lingua- gem ASSEMBLY é o uso de label (lê-se ‘lêibol). O label torna a programação em ASSEMBLY mais rápida e segura, por- que ao invés de lidar com um endereço absoluto, lida-se com um conjunto de caracteres (label). Este artifício é útil para se seguir o fluxo de dados, e tam- bém quando se acrescenta ou se retira alguma instrução, pois o novo endere- ço do label é automaticamente corrigi- do pelo programa compilador Assembler. A única restrição é que o primeiro caracter do label deve ser sempre uma letra, isto é, ele não pode começar com um número.

CÓDIGO DE OPERAÇÃO O código de operação é simples- mente a instrução em si. No código de operação aparecerá apenas o conjunto de caracteres, que representará o tipo de instrução, tal como soma, carrega- mento, teste, entre outras.

Fig. 17 - EndereÁamento.

Endereçamento

O endereçamento é feito por meio da combina-

ção dos bits de endereço A0 e A1.

A

A

Porta selecionada Porta A Porta B Porta C Unidade de controle

RL A = Rotaciona para a esquer- da os bits do acumulador

MUL AB = Multiplica o conteúdo do acumulador pelo conteúdo do regis- trador B, gravando a parte mais signifi- cativa do resultado em B e a menos sig- nificativa no acumulador

CLR C = Escreve no flag carry o dígito “0”

INC DPTR = Incrementa o con- teúdo do registrador de 16 bits. DPTR.

MODO CONSTANTE IMEDIATO

Este modo permite que possa ope- rar com dados diretamente na instrução. Exemplos:

MOV B, #54 = Grava o valor 54 no registrador B

MOV R3, #87H = Grava o valor 87 em hexadecimal no registrador R

ORL A, #67 = Grava no acumula- dor o resultado de uma operação OR entre o acumulador e o valor 67.

MODO ENDEREÇAMENTO À MEMÓ-

RIA DE PROGRAMA

Este modo permite a utilização de instruções que fazem somente a leitura da memória de programa, sendo muito utilizadas para a leitura de tabelas na EPROM. O endereço denominado ‘alvo’ é formado pela soma do conteúdo do registrador de 16 bits DPTR (data pointer) ou PC (program counter) com o conteúdo do acumulador. Exemplos:

MOVC A, @A+DPTR = Grava o byte lido no endereço resultante da soma do acumulador com o registrador de 16 bits DTPR , no acumulador.

MOVC A, @A+PC = Grava o byte lido no endereço resultante da soma do acumulador com o registrador de 16 bits PC , no acumulador.

MODO ENDEREÇAMENTO À MEMÓ-

RIA DE DADOS EXTERNA

Este modo permite o acesso à me- mória RAM externa, pela instrução MOVX. Acesso este feito através de pon- teiros de 16 bits (@ DPTR e @Ri), de forma indireta. Na utilização do ponteiro @Ri, os 8 bits menos significativos es- tarão no registrador Ri (R0 ou R1) e os 8 bits restantes estarão na porta P2, for- mando assim o endereço de 16 bits. Exemplos:

MOVX @DPTR, A = Grava o valor do acumulador no endereço DPTR, na memória RAM externa.

MOVX A, @Ri = Grava o conteú- do do endereço X: (Ri + P2), no acumu- lador.

TIPOS DE INSTRUÇÕES

Os microcontroladores da família 8051 têm vários tipos diferentes de ins- truções, sendo cada uma representada por seu mnemônico e pelo código em hexadecimal. Estas instruções são mostradas a seguir: As anotações seguintes são usadas nas tabelas a seguir (modo de endereçamento). Rn pode ser registradores de R0 a R Ri indica registrador R0 ou R @Ri endereçado pelo valor de R0 ou R #Dado valor constante, numeral de 8 bits: #20H(hex), #30(dec), #01010101B(bin) #Dado16 valor constante, numeral de 16 bits: #1FF2H(hex) Direto um endereço de memória RAM interna (8 bits), registradores de status e controles, e portas End16 endereço de 16 bits para ROM (usado por LCALL e LJMP) End11 endereço de 11 bits para ROM (usado por ACALL e AJMP) rel endereço relativo ou utilização de label bit variável da RAM interna, bits de I/O , bits de status e controle

TABELAS As tabelas a seguir mostram os mnemônicos e suas descrição.

Tabela de Operações Aritméticas Mnemônico Descrição ADD A,Rn Soma o conteúdo de Rn com ACC, o resul- tado da soma é gravado no ACC. ADD A, direto Soma o conteúdo da posição de memória com ACC, o resultado é gravado no ACC. ADD A, @Ri Soma o conteúdo da posição de memória indicado por Ri (R1 ou R0) com ACC, gra- vando o resultado no ACC. ADD A, # dado Soma o dado ao ACC. O resultado é grava- do no ACC. ADDC A, Rn Soma o conteúdo de Rn (R0 à R7) ao ACC, e com a flag carry, o resultado é gravado no ACC.

ADDC A, direto Soma o conteúdo da posição de memória com o ACC, e com flag carry, o resultado é gravado no ACC. ADDC A, @Ri Soma o conteúdo da posição de memória indicado por Ri (R1 ou R0) com o ACC, e com a flag carry, o resultado é gravado no ACC. ADDC A, # dado Soma o dado ao ACC, e a flag carry, o re- sultado é gravado no ACC. SUBB A, Rn Subtrai do ACC, o conteúdo de Rn (R0 à R7) e o ‘vem um’ (borrow), o resultado é gravado no ACC. SUBB A, direto Subtrai do ACC. o conteúdo da posição de memória e o ‘vem um’ (borrow), o resultado é gravado no ACC SUBB A, @Ri Subtrai do ACC, o conteúdo da posição de memória indicado por Ri (R1 ou R0) e o vem um (se existir) o resultado é gravado no ACC. SUBB A, # dado Subtrai do ACC, o dado e o ‘vem um’ (se existir), o resultado é gravado no ACC. INC A Soma 1 ao ACC. INC Rn Soma 1 ao conteúdo de Rn (R0 a R7). INC direto Soma 1 ao conteúdo da posição de memó- ria. INC @Ri Soma 1 ao conteúdo de memória indicado por Ri (R0 ou R1). DEC A Subtrai 1 do ACC. DEC Rn Subtrai 1 do conteúdo de Rn (R0 a R7). DEC direto Subtrai 1 do conteúdo da posição de me- mória. DEC @Ri Subtrai 1 do conteúdo da posição de me- mória indicado por Ri (R0 ou R1). INC DPTR Soma 1 ao registrador DPTR. MUL AB Multiplica o conteúdo do ACC pelo conteú- do do registrador B. O resultado fica em B (MSB) e ACC (LSB) DIV AB Divide o conteúdo do ACC pelo conteúdo do registrador B. O resultado fica em A e o resto em B. DA A Converte em BCD, o conteúdo do ACC.

Tabela de Operações Lógicas Mnemônico Descrição ANL A, Rn Grava no acumulador o resultado da ope- ração lógica AND entre o acumulador e registrador Rn

ANL A, direto Grava no acumulador o resultado da ope- ração lógica AND entre o acumulador e conteúdo do endereço “direto” ANL A, @Ri Grava no acumulador o resultado da ope- ração lógica AND entre o acumulador e o conteúdo endereçado pelo registrador Ri ANL A, #dado Grava no acumulador o resultado da ope- ração lógica AND entre o acumulador e o dado ANL direto, A Grava no endereço “direto” o resultado da operação lógica AND entre o endereço “di- reto” e o acumulador ANL direto,#dado Grava no endereço “direto” o resultado da operação lógica AND entre o endereço “di- reto” e o dado ORL A, Rn Grava no acumulador o resultado da ope- ração lógica OR entre o acumulador e re- gistrador Rn ORL A, direto Grava no acumulador o resultado da ope- ração lógica OR entre o acumulador e con- teúdo do endereço “direto” ORL A, @Ri Grava no acumulador o resultado da ope- ração lógica OR entre o acumulador e o conteúdo endereçado pelo registrador Ri ORL A, #dado Grava no acumulador o resultado da ope- ração lógica OR entre o acumulador e dado ORL direto, A Grava no endereço “direto” o resultado da operação lógica OR entre o endereço “di- reto” e o acumulador ORL direto,#dado Grava no endereço “direto” o resultado da operação lógica OR entre o endereço “di- reto” e o dado XRL A, Rn Grava no acumulador o resultado da ope- ração lógica XOR entre o acumulador e registrador Rn XRL A, direto Grava no acumulador o resultado da ope- ração lógica XOR entre o acumulador e conteúdo do endereço “direto” XRL A, @Ri Grava no acumulador o resultado da ope- ração lógica XOR entre o acumulador e o conteúdo endereçado pelo registrador Ri XRL A, #dado Grava no acumulador o resultado da ope- ração lógica XOR entre o acumulador e o dado XRL direto, A Grava no endereço “direto” o resultado da operação lógica XOR entre o endereço “di- reto” e o acumulador XRL direto,#dado Grava no endereço “direto” o resultado da operação lógica XOR entre o endereço “di- reto” e o dado

CLR A Zera o acumulador CPL A Inverte todos os bits do acumulador RL A Rotaciona todos os bits do acumulador para esquerda RLC A Rotaciona todos os bits do acumulador para esquerda junto com a flag carry RR A Rotaciona todos os bits do acumulador para direita RRC Rotaciona todos os bits do acumulador para direita junto com a flag carry SWAP A Troca os nibbles do acumulador (equivale a 4 instruções RL A)

Transferência de Dados Mnemônico Descrição MOV A, Rn Carrega o acumulador com o conteúdo do registrador Rn MOV A, direto Carrega o acumulador com o conteúdo do endereço “direto” (endereços dos registra- dores internos) MOV A, @Ri Carrega o acumulador com o conteúdo en- dereçado pelo registrador Ri MOV A, #dado Carrega o acumulador com o dado MOV Rn, A Carrega o registrador Rn com o conteúdo do acumulador MOV Rn, direto Carrega o registrador Rn com o conteúdo do endereço “direto” MOV Rn, #dado Carrega o registrador Rn com o dado MOV direto, A Carrega o endereço “direto” com o conteú- do do acumulador MOV direto, Rn Carrega o endereço “direto” com o conteú- do do registrador Rn MOV direto1,direto Carrega o endereço “direto1” com o con- teúdo endereço2 “direto2” MOV direto, @Ri Carrega o endereço “direto” com o conteú- do endereçado pelo registrador Ri MOV direto, #dado Carrega o endereço “direto” com o dado MOV @Ri, A Carrega o registrador endereçado por Ri com o conteúdo do acumulador MOV @Ri, direto Carrega o registrador endereçado por Ri com o conteúdo do endereço “direto” MOV @Ri, dado Carrega o registrador endereçado por Ri com o dado MOV DPTR,dado Carrega o registrador DPTR com o dado de 16 bits

MOVC A,@A+DPTR Carrega o acumulador com o conteúdo en- dereçado pelo acumulador mais o regis- trador DPTR MOVC A, @A+PC Carrega o acumulador com o conteúdo en- dereçado pelo acumulador mais o regis- trador PC MOVX A, @Ri Carrega o acumulador com o conteúdo da RAM externa endereçado pelo registrador Ri MOVX A, @DPTR Carrega o acumulador com o conteúdo da RAM externa endereçado pelo registrador DPTR MOVX @Ri, A Carrega o registrador da RAM externa en- dereçado pelo registrador de 8 bits Ri , com o conteúdo do acumulador MOVX @DPTR, A Carrega o registrador da RAM externa en- dereçado pelo registrador de 16 bits DPTR, com o conteúdo do acumulador PUSH direto Incrementa o registrador SP e salva na pi- lha o conteúdo do endereço “direto” POP direto Grava na memória o conteúdo da pilha e decrementa o registrador SP XCH A, Rn Troca os dados do acumulador com o re- gistrador Rn XCH A, direto Troca os dados do acumulador com o en- dereço “direto” XCH A, @Ri troca os dados do acumulador com o re- gistrador endereçado por Rn XCHD A, @Ri Troca os nibbles menos significativos do acumulador com o registrador endereçado por Ri

Variáveis Booleanas Bit Mnemônico Descrição CLR C - grava 0 no flag carry CLR Bit Grava 0 no bit endereçável (bit de pino ou bit de registradores) SETB C - grava 1 no flag carry SETB Bit Grava 1 no bit endereçável (bit de pino ou bit de registradores) CPL C - Complementa o flag carry CPL Bit Complementa o bit endereçável (bit de pino ou bit de registradores) ANL C, Bit Grava no flag carry o resultado da opera- ção lógica AND entre o flag carry e o bit endereçável (bit de pino ou bit de registra- dores) ANL C, \Bit Grava no flag carry o resultado da opera- ção lógica AND entre o flag carry e o com- plemento do bit endereçável (bit de pino ou bit de registradores).

XRL A, R7 1 6F 1 XRL A, direto 2 65 1 XRL A, @R0 1 66 1 XRL A, @R1 1 67 1 XRL A, #dado 2 64 1 XRL direto, A 2 62 1 XRL direto,#dado 3 63 2 CLR A 1 E4 1 CPL A 1 F4 1 RL A 1 23 1 RLC A 1 33 1 RR A 1 03 1 RRC A 1 13 1 SWAP A 1 C4 1

Transferência de Dados Mnemônico e tamanho Código Tempo operandos em byte em hex Ciclo maq. MOV A, R0 1 E8 1 MOV A, R1 1 E9 1 MOV A, R2 1 EA 1 MOV A, R3 1 EB 1 MOV A, R4 1 EC 1 MOV A, R5 1 ED 1 MOV A, R6 1 EE 1 MOV A, R7 1 EF 1 MOV A, direto 2 E5 1 MOV A, @R0 1 E6 1 MOV A, @R1 1 E7 1 MOV A, #dado 2 74 1 MOV R0, A 1 F8 1 MOV R1, A 1 F9 1 MOV R2, A 1 FA 1 MOV R3, A 1 FB 1 MOV R4, A 1 FC 1 MOV R5, A 1 FD 1 MOV R6, A 1 FE 1 MOV R7, A 1 FF 1 MOV R0, direto 2 A8 2 MOV R1, direto 2 A9 2 MOV R2, direto 2 AA 2 MOV R3, direto 2 AB 2 MOV R4, direto 2 AC 2 MOV R5, direto 2 AD 2 MOV R6, direto 2 AE 2 MOV R7, direto 2 AF 2 MOV R0, #dado 2 78 1 MOV R1, #dado 2 79 1 MOV R2, #dado 2 7A 1 MOV R3, #dado 2 7B 1 MOV R4, #dado 2 7C 1 MOV R5, #dado 2 7D 1 MOV R6, #dado 2 7E 1 MOV R7, #dado 2 7F 1 MOV direto, A 2 F5 1 MOV direto, R0 2 88 2 MOV direto, R1 2 89 2 MOV direto, R2 2 8A 2 MOV direto, R3 2 8B 2 MOV direto, R4 2 8C 2 MOV direto, R5 2 8D 2 MOV direto, R6 2 8E 2 MOV direto, R7 2 8F 2 MOV direto1,direto2 3 85 2 MOV direto, @R0 2 86 2 MOV direto, @R1 2 87 2 MOV direto, #dado 3 75 2

MOV @R0, A 1 F6 1 MOV @Ri1 A 1 F7 1 MOV @R0, direto 2 A6 2 MOV @R1, direto 2 A7 2 MOV @R0, dado 2 76 1 MOV @R1, dado 2 77 1 MOV DPTR,dado16 3 90 2 MOVC A,@A+DPTR 1 93 2 MOVC A, @A+PC 1 83 2 MOVX A, @R0 1 E2 2 MOVX A, @R1 1 E3 2 MOVX A, @DPTR 1 E0 2 MOVX @R0, A 1 F2 2 MOVX @R1, A 1 F3 2 MOVX @DPTR, A 1 F0 2 PUSH direto 2 C0 2 POP direto 2 D0 2 XCH A, R0 1 C8 1 XCH A, R1 1 C9 1 XCH A, R2 1 CA 1 XCH A, R3 1 CB 1 XCH A, R4 1 CC 1 XCH A, R5 1 CD 1 XCH A, R6 1 CE 1 XCH A, R7 1 CF 1 XCH A, direto 2 C5 1 XCH A, @R0 1 C6 1 XCH A, @R1 1 C7 1 XCHD A, @R0 1 D6 1 XCHD A, @R1 1 D7 1

Variáveis Booleanas Bit Mnemônico e tamanho Código Tempo operandos em byte em hex Ciclo maq. CLR C 1 C3 1 CLR Bit 2 C2 1 SETB C 1 D3 1 SETB Bit 2 D2 1 CPL C 1 B3 1 CPL Bit 2 B2 1 ANL C, Bit 2 82 2 ANL C, \ Bit 2 B0 2 ORL C, Bit 2 72 2 ORL C, \ Bit 2 A0 2 MOV C, Bit 2 A2 1 MOV Bit, C 2 92 2

Fluxo de Execução Mnemônico e tamanho Código Tempo operandos em byte em hex Ciclo maq. ACALL End 11 2 11 2 LCALL End 16 3 12 2 RET 1 22 2 RETI 1 32 2 AJMP End 11 2 01 2 LJMP End 16 3 02 2 SJMP rel 2 80 2 JMP @A+DPTR 1 73 2 JZ rel 2 60 2 JNZ rel 2 70 2 JC rel 2 40 2 JNC rel 2 50 2 JB bit, rel 3 20 2 JNB bit, rel 3 30 2 JBC bit, rel 3 10 2 CJNE A,direto,rel 3 B5 2 CJNE A,#dado,rel 3 B4 2

CJNE R0,dado,rel 3 B8 2 CJNE R1,dado,rel 3 B9 2 CJNE R2,dado,rel 3 BA 2 CJNE R3,dado,rel 3 BB 2 CJNE R4,dado,rel 3 BC 2 CJNE R5,dado,rel 3 BD 2 CJNE R6,dado,rel 3 BE 2 CJNE R7,dado,rel 3 BF 2 CJNE @R0,#dado,rel 3 B6 2 CJNE @R1,#dado,rel 3 B7 2 DJNZ R0, rel 2 D8 2 DJNZ R1, rel 2 D9 2 DJNZ R2, rel 2 DA 2 DJNZ R3, rel 2 DB 2 DJNZ R4, rel 2 DC 2 DJNZ R5, rel 2 DD 2 DJNZ R6, rel 2 DE 2 DJNZ R7, rel 2 DF 2 DJNZ direto, rel 3 D5 2 NOP 1 00 1

ALGORÍTMOS

Algorítmo é a descrição de um con- junto de comandos que resultam numa sucessão de ações. Geralmente, um al- goritmo se destina a resolver uma ação, fixar um padrão de comportamento a ser seguido ou uma norma de execução a ser trilhada para se atingir um resultado final ,a solução de um problema.

Exemplo: Algoritmo do “programa soma” “programa soma” em assembly (8051)

A← 10 MOV A,#0AH B← 05 MOV B,#05H R0←A+B ADD AB MOV R0,A

FLUXOGRAMA

O fluxograma é uma representação gráfica das tarefas de um programa, por meio de símbolos que fornecem a se- qüência de um processo. O fluxograma ajuda a organizar o programa, permitin- do o seu delineamento e possibilitando seguir passo- a- passo o que será exe- cutado nele. Existem estruturas, definições rigo- rosas das regras de um fluxograma e uma variedade de símbolos para a cons- trução do mesmo, o que é interessante seguir, principalmente quando se trata de um projeto complexo onde se encon- tram várias pessoas no mesmo projeto, programando partes diferentes do flu- xograma. Com um fluxograma bem estruturado fica fácil corrigir eventuais erros que possam surgir no decorrer do projeto. Para o programador de microcon- trolador é preferível que ele estruture o seu fluxograma, podendo assim criar um estilo individual, pois não convém de- terminar princípios fixos ou normas de funcionamento, mesmo porque os pro-

gramas para os microcontroladores são muito pessoais. Programas diferentes podem chegar ao mesmos resultados, e o fluxograma depende do sistema, do tipo de equipamento para qual será fei- to o programa, do tipo da linguagem, etc. O fluxograma não é um elemento indispensável ao desenvolvimento de um programa, porém, sem ele se torna mais difícil qualquer alteração ou corre- ção. O fluxograma deve ser feito com a visualização do problema a ser resolvi- do passo-a-passo, e o programa deve ser feito por partes, e testado a cada parte para que fique mais simples de- tectar e solucionar qualquer tipo de erro. As alterações devem ser bem analisa- das porque poderão influenciar em ou- tras partes do programa. Essencialmente, o projeto de um pro- grama a ser processado por sistema deve ter os seguintes procedimentos:

  • análise do problema
  • elaboração do fluxograma
  • escrever o programa em linguagem simbólica
  • traduzir o programa para linguagem de máquina
  • testar e, se necessário corrigir,

Na análise do problema devem ser determinados de maneira bem clara quais os objetivos a ser alcançados, exatamente que tarefa deve ser realiza- da e definir todo o hardware do sistema. O fluxograma deve ser dividido em ta- refas e a definição da sequência que es- tas tarefas deve-se executadas incluin- do-se decisões. Para escrever o programa deve ser primeiramente determinar que tipo de linguagem será utilizada, se uma lingua- gem de baixo nível ou alto nível. A tradução do programa para lingua- gem de máquina é feita normalmente por um programa copilador já instalado no PC e depende da linguagem usada para escrever o programa. O teste pode ser feito através de um programa simu- lador ou diretamente no sistema para qual o programa esta sendo escrito.

Alguns símbolos utilizado em fluxogramas são apresentados a seguir.

TERMINAL

Ponto de início, térmi-

no ou interrupção de

um programa.

PROCESSAMENTO

Um grupo de instru-

ções que executam uma função de

processamento do programa.

DECISÃO

Indica a possibilidade

de desvios para di-

versos pontos do

programa

PROCESSO PRÉ-DEFINIDO

Indica uma rotina que será executa-

da fora do programa

principal (sub-rotinas)

CONECTOR FORA DE

PÁGINA

Uma entrada ou saída de

uma página para outra

página do diagrama

FLUXO

Indica a direção do fluxo

de dados ou de um

processamento

CONEXÃO

Indica a rota de prossegui-

mento do fluxograma

ENTRADA / SAÍDA

Qualquer função relaci-

onada com dispositivo

de entrada ou saída ge-

néricos

SUB-ROTINA

Um grupo de opera-

ções separadas do

fluxo do programa

VISOR

Saída de informações

através de vídeo ou

display

MODIFICAÇÃO DE

PROGRAMA

Qualquer função

que altera o próprio

programa

TECLADO

Entrada de informa-

ções através de te-

clado. n