Вы находитесь на странице: 1из 58

Colgio Tcnico de Campinas Cotuca Disciplina - TDM II

Microcontroladores
Famlia MCS51

Colgio Tcnico de Campinas COTUCA


Disciplina TDM II- Departamento Eletroeletrnica

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II
1- Conceitos Bsicos
Um sistema computador constitudo por trs blocos de base ligados atravs de
trs barramentos como se pode ver na figura 1.

Figura 1 Diagrama de blocos de um computador.

Os trs blocos de base so: a unidade central de processamento (CPU), as


memrias de programa e de dados e o sistema de comunicao com o exterior
(sistema E/S). A ligao entre os blocos de base feita atravs de trs
barramentos: barramento de dados, barramento de endereos e barramento de
controle. A unidade central de processamento divide-se funcionalmente em duas
unidades: a unidade de processamento de dados (CPU) e a unidade de controle e
responsvel pela execuo do programa. A unidade de controle decodifica e
controla a execuo das instrues gerando os comandos que permitem o
processamento da informao de acordo com o programa que est sendo executado. O
registrador program counter (PC) e o registrador de status fazem tambm parte da
unidade de controle. A unidade de processamento de dados faz o processamento da
informao e constituda por uma unidade aritmtica e lgica e por um conjunto
varivel de registradores com funes genricas. A estrutura descrita designa-se
estrutura de Von Neumann.

1.1 Conceitos de microprocessador


Designa-se por microprocessador um circuito integrado que implemente as funes
de uma unidade central de processamento. O primeiro microprocessador, designado
4004, surgiu em 1971 tendo sido produzido pela empresa Intel. Antes dessa data
as unidades centrais de processamento eram implementadas recorrendo a diversos
componentes.

1.2 Conceitos de microcontrolador


Designa-se por microcontrolador um circuito integrado que implementa um sistema
computador. Um microcontrolador constitudo por um microprocessador e um ou
mais dos seguintes dispositivos: memria, temporizador/contador, conversor A/D,
conversor D/A, controlador DMA, porta paralela, porta srie, circuitos para
interface com memria externa, nomeando apenas os blocos mais comuns. A
principal aplicao dos microcontroladores so os sistemas embarcados, em que o
microcontrolador programado para cumprir determinada funo sendo colocado
junto do sistema com que vai interagir. Estes componentes so utilizados para
estas funes porque so pequenos, versteis e (quase) auto-suficientes.

Como exemplos tpicos de microcontroladores de 8 bits podem referir-se os


microcontroladores das famlias seguintes: famlia MCS-51 da Intel, famlia
M68HC11 da Motorola e famlia PIC da Microchip.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II

2 - Famlia MCS-51
A arquitetura bsica da famlia MCS-51 constituda por uma unidade central de
processamento de 8 bits otimizada para aplicaes de controle, 64 Kbytes de
espao de endereamento para a memria de programa, 64 Kbytes de espao de
endereamento para a memria de dados, 4 Kbytes de memria de programa interna,
128 bytes de memria de dados interna, 32 linhas entrada/sada bidirecionais
endereveis individualmente. Dois temporizadores/contadores de 16 bits, uma
UART (universal asynchronous receiver transmiter) full duplex, uma estrutura de
interrupes com 5 fontes de interrupo correspondentes a 5 vetores de
interrupo com dois nveis de prioridades cada e um circuito oscilador para
gerar o sinal de relgio. O diagrama de blocos da arquitetura de base da famlia
MCS-51 pode ser visto na figura 2.

Figura 2- Arquitetura do microcontrolador 80C51.

As diferenas deste microcontrolador para outros membros da famlia MCS-51


relacionam-se fundamentalmente com a quantidade de memria interna (memria de
programa e memria de dados) e com as capacidades de E/S de cada um. Na tabela 1
apresentam-se algumas das caractersticas de alguns dos microcontroladores da
famlia MCS-51.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II

Tabela 1- Tabela comparativa das caractersticas de alguns microcontroladores da


famlia MCS- 51.

3 - Organizao da memria
A memria de dados e a memria de programa tm espaos de endereamento
diferentes cada um com 64 Kbytes, organizados segundo os mapas de memria da
figura 3.

Figura 3- Mapas de memria do microcontrolador 80C51.

3.1 - Memria de programa


A memria de programa uma memria do tipo ROM, por isso sobre ela s se
efetuam operaes de leitura. Este memria pode ser interna e/ou externa e ocupa
no mximo 64 Kbytes. O acesso memria de programa externa faz-se recorrendo ao
sinal /PSEN (Program Strobe Enable) que dever ser ligado ao pino de output
enable da memria. O sinal aplicado ao pino /EA do microcontrolador determina
qual o tipo de acesso a ser feito para os 4 Kbytes inferiores da memria de

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II
programa. Se /EA = 0, para endereos a partir de 0000H o acesso feito
memria de programa externa, se /EA = 1, o acesso feito memria de programa
interna para endereos de 0000H at 0FFFH, sendo feito o acesso memria de
programa externa para endereos mais elevados.

3.2 - Memria de dados


A memria de dados do tipo RAM podendo ser lida ou escrita pelo
microcontrolador. Esta memria pode ser interna e/ou externa. O espao de
endereamento associado memria de dados de 64 Kbytes.

3.2.1 Memria de programa externa


O acesso memria de programa externa faz-se recorrendo aos sinais /RD (Read) e
/WR (Write) fornecidos pelo microcontrolador para controle da operao da
memria. O endereamento pode fazer-se recorrendo a um mnimo de um e mximo de
dois bytes. Para acesso memria de programa externa utiliza-se a porta P0 como
barramento multiplexado de endereos/dados (byte menos significativo). A porta
P2, caso seja necessria a sua utilizao, funciona como barramento de endereos
(byte mais significativo).

3.2.2 - Memria de dados interna


A memria de dados interna encontra-se dividida em 3 blocos distintos, de acordo
com o mapa da figura 4. O acesso memria de dados interna faz-se utilizando
endereos de 8 bits.

Figura 4- Memria de dados interna.

A rea de memria superior contm os registrradores com funes especiais, SFRs


(Special Function Registers). O acesso a esta rea de memria faz-se utilizando
endereamento direto. A funo de cada um destes registradores ser analisada em
detalhe no item 5. A rea de memria superior representada na figura 4 a
tracejado no est implementada no microcontrolador 80C51 existindo apenas nos
dispositivos com 256 bytes de RAM interna. O acesso a esta rea de memria
feito utilizando endereamento indireto sendo uma regio de uso genrico.
A parte inferior da memria de dados interna encontra-se dividida em trs
regies distintas como se pode ver no mapa da figura 5. O acesso pode ser feito
utilizando endereamento direto ou indireto.

Figura 5- Espao inferior da memria de dados interna.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II
Os 32 bytes inferiores destinam-se aos quatro bancos de oito registradores
designados R0 a R7. A seleo do banco de registrradores feita recorrendo aos
bits RS1 (Register Select) e RS0 do registrador PSW (Program Status Word).
Segue-se uma rea de 16 bytes (128 bits) endereveis bit a bit sendo a restante
rea de uso genrico.

3.3 - Esquemas de montagem para acesso memria externa


As ligaes memria externa fazem-se utilizando os sinais de controle
disponibilizados pelo microcontrolador.

3.3.1 - Memria de programa externa


No exemplo apresentado na figura 6 considera-se que toda a memria de programa
externa e por isso o pino /EA do microcontrolador ligada a terra. O
endereamento feito utilizando 16 bits o que implica a utilizao para
endereamento da porta P2 (alm da porta P0). O sinal ALE (Address Latch Enable)
utiliza-se para fazer a desmultiplexagem do barramento P0 permitindo que o byte
menos significativo do endereo fique disponvel atravs da latch durante a fase
de acesso memria. O sinal /PSEN controla a operao da memria sendo a
leitura dos dados feita atravs de P0.

Figura 6- Acesso memria de programa externa.

3.3.2 - Memria de dados externa


A figura 7 apresenta um esquema de montagem para acesso memria de dados
externa. Neste exemplo considerou-se que toda a memria de programa interna
(/EA = VCC). Utiliza-se o esquema de demultiplexagem referido anteriormente. Os
sinais /RD e /WR so utilizados para fazer o controle da memria. Caso no seja
necessrio acessar a todo o espao de endereamento pode recorrer-se s
utilizao de alguns dos bits da porta P2 (alm da porta P0) para fazer o
endereamento da memria. A troca de dados faz-se atravs da porta P0.

Figura 7- Acesso memria de dados externa.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II

4 - Registradores com funes especiais (SFRs)


Os registradores com funes especiais encontram-se mapeados na parte superior
da memria de dados interna e so acessados utilizando endereamento direto. A
tabela 2 apresenta o smbolo, o nome, o endereo e o tipo de endereamento para
cada SFR do microcontrolador 80C51.

Smbolo Nome End. [Hexadecimal] Endereamento


ACC Acumulador E0 Bit
B Registrador B F0 Bit
PSW Program Status Word D0 Bit
SP Stack Pointer 81 Registrador
DPTR Data Pointer [2 bytes]
DPL Byte menos significativo 82 Registrador
DPH Byte mais significativo 83 Registrador
P0 Porta 0 80 Bit
P1 Porta 1 90 Bit
P2 Porta 2 A0 Bit
P3 Porta 3 B0 Bit
IP Interrupty Priority Control B8 Bit
IE Interrupty Enable Control A8 Bit
TMOD Timer/Counter mode Control 89 Registrador
TCON Timer/Counter Control 88 Bit
TH0 Timer/Counter 0 high byte 8C Registrador
TL0 Timer/Counter 0 low byte 8A Registrador
TH1 Timer/Counter 1 high byte 8B Registrador
TL1 Timer/Counter 1 low byte 8D Registrador
SCON Serial control 98 Bit
SBUF Serial Data Buffer 99 Registrador
PCON Power Control 87 Registrador

Tabela 2 Registradores com funes especiais.

4.1 - Registrador acumulador


O registrador acumulador serve de interface com a unidade aritmtica e lgica da
CPU. Nos programas deve ser referido por [A]. Este registrador pode ser
endereado bit a bit.

4.2 - Registrador B
Este registrador utilizado durante as operaes de diviso e multiplicao em
conjunto com o registrador acumulador. Para outras operaes pode ser tratado
como um registrador comum. enderevel bit a bit.

4.3 - Registrador Program Status Word


O registrador PSW corresponde ao registrador de status da arquitetura de Von
Newman e contm informao sobre a execuo dos programas. O registrador
apresentado em detalhe na figura 8.

Figura 8- Registrador PSW.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II

O bit mais significativo do registrador (PSW.7) designa-se CY (carry flag) e


reflete a condio de carry no oitavo bit do acumulador. O bit seguinte (PSW.6),
designado AC (Auxiliary Carry flag), reflete a condio de carry no quarto bit
do registrador acumulador. O bit PSW.5 designa-se F0 e utiliza-se como flag de
uso genrico. Os bits PSW.4 e PSW.3 so os bits de seleo do banco de
registradores, designados RS1 e RS0 respectivamente. A seleo feita de acordo
com a tabela 3.

Tabela 3- Seleo do banco de registradores.

O bit PSW.2 designa-se OV e reflete a condio de overflow. O bit PSW.1 no tem


nome atribudo e representa uma flag a ser definida pelo utilizador. Finalmente
o bit PSW.0, designado P, reflete a paridade do registrador acumulador. O bit P
colocado no nvel lgico 1 se o nmero de 1s no acumulador for impar e nos
outros casos o bit P colocado no nvel lgico 0.

4.4 - Registrador Stack Pointer


Contm o endereo do topo da stack. A stack uma estrutura de dados do tipo
LIFO (last-in-first-out) utilizada para guardar informao de modo temporrio.

4.5 - Registrador Data Pointer


Conjunto de dois registradores de 8 bits, DPL e DPH, que contm um endereo de
16 bits. Este registrador tem trs aplicaes principais:

fazer procura em tabelas no espao de memria de programa utilizando a


instruo MOVC A, @A+DPTR.
Implementar saltos multi-direcionais utilizando a instruo JMP @A+DPTR.
acesso memria de dados externa, utilizando a instruo MOVX A,@DPTR ou a
instruo MOVX @DPTR,A.

4.6 - Registradores associados s Portas


P0 a P3 so os registradores associados aos latches das portas de E/S P0, P1, P2
e P3, respectivamente.

4.7 - Registradores para controle de interrupes


IP e IE so os registradores que permitem fazer a seleo de prioridades e a
ativao das interrupes, respectivamente.

4.8 - Registradores dos temporizadores/contadores


TH0, TL0 e TH1, TL1 so os registradores que contm as contagens dos
temporizadores/contadores 0 e 1 respectivamente. TMOD e TCON so os
registradores de controle e status dos temporizadores/contadores. O primeiro
permite fazer a programao do modo de operao e no segundo encontram-se bits
relacionados com o controle do funcionamento dos temporizadores/contadores.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II

4.9 - Registradores da porta srie


SBUF representa dois registradores distintos um de recepo e outro de
transmisso. A utilizao de um ou de outro selecionada automaticamente pelo
hardware da porta srie dependendo do contexto em que SBUF est a ser referido
na instruo do programa (leitura ou escrita). SCON o registrador de controle
e status da porta srie.

4.10 - Registrador Power Control


O registrador power control permite efetuar a programao do modo de operao do
microcontrolador.

4.11 - Registrador Program Counter


O registrador program counter (PC) embora no seja referido na tabela, pois no
pode ser diretamente acessado pelo programador, um registrador de 16 bits que
contm o endereo da prxima instruo a executar. Depois de efetuado o reset do
microcontrolador o contedo deste registrador zero.

5 - Modos de endereamento
A codificao das instrues da famlia MCS-51 feita utilizando um byte para o
cdigo de operao (opcode) e 0 a 2 bytes para informao sobre os operandos. Os
modos de endereamento utilizam-se para especificar os operandos necessrios
para cada instruo. A famlia MCS-51 dispe de 10 modos de endereamento
divididos por trs classes: modos de endereamento de dados, modos de
endereamento relativos a saltos e modos de endereamento relativos a bits.

5.1 - Modos de endereamento de dados


Existem cinco modos de endereamento de dados: registrador inerente, direto,
imediato, indireto e indexado.

5.1.1 - Registrador inerente


O modo de endereamento registrador inerente utiliza-se para os registradores em
que no necessrio especificar nenhum byte adicional para designar o operando.
O registrador a operar codificado no cdigo de operao da instruo.
Os registradores para os quais este mtodo de codificao feito so os
seguintes: R0 a R7, A, PSW, SP e PC. Este modo de endereamento caracteriza-se
pelo tipo de codificao explcita que fornece para todas as instrues que
utilizem os registradores referidos. Este modo de endereamento pode coexistir
na mesma instruo com os outros modos de endereamento de dados referidos nos
pontos seguintes.

Exemplos:
MOV R1,#25 ; coloca o valor 25 no registrador R1
INC R0 ; adiciona 1 ao contedo do registrador R0

5.1.2 - Direto
Este modo de endereamento utiliza-se para acessar a memria de dados interna. A
codificao da instruo feita com um byte para o cdigo de operao da
instruo e um byte adicional para especificar o endereo a acessar. Como a
especificao do endereo se faz num nico byte a gama de endereos possvel
de 0 a 255. A gama de endereamento referida permite acessar a toda a rea de

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II
memria de dados interna podendo especificar-se o acesso a um registrador ou a
uma varivel.

Exemplos de operao sobre variveis em RAM interna:

MOV 23H,A ; copia o contedo do acumulador para a posio de


; memria cujo endereo 23H.
ADD A,40H ; soma o contedo da posio de memria 40H ao
; acumulador.

Exemplos de operao sobre SFRs:

MOV B0H,A ; coloca o contedo do acumulador sada da porta P3.

Este estilo de programao, embora correto, no muito claro e facilita a


ocorrncia de erros. Sempre que sejam referidos SFRs deve optar-se pela
utilizao do seu nome simblico, o que torna o cdigo mais perceptvel evitando
a ocorrncia de erros. O assembler do MCS-51 permite a utilizao de nomes
simblicos para os SFRs.

MOV P3,A ; coloca o contedo do acumulador sada da porta P3


; recorrendo ao nome simblico do registrador associado
; a porta 3.

O assembler procede traduo do nome simblico para o endereo correspondente.

5.1.3 - Imediato
O modo de endereamento imediato permite especificar um valor numrico
constante. As constantes a especificar podem ter 8 bits ou 16 bits. Os valores
de 16 bits s podem ser usados em conjunto com o registrador DPTR. Em assembly
os valores numricos imediatos so precedidos do caractere #.

Exemplos:

MOV A,#22 ; carrega o acumulador com o valor 22.


ADD A,#30 ; soma 30 ao acumulador
MOV DPTR,#20F0H ; carrega o valor hexadecimal 20F0
; no registrador DPTR.

5.1.4 - Indireto
No modo de endereamento indireto a instruo especifica um registrador que
contm o endereo do operando. Tanto a memria de dados interna como a externa
podem ser endereadas deste modo. Este modo de endereamento til no acesso a
arrays. S os registradores R0, R1 e DPTR podem ser utilizados como ponteiros de
dados. R0 e R1 so ponteiros de 8 bits e DPTR um ponteiro de 16 bits. O
registrador a utilizar precedido do caractere @.

Exemplos:

ADD A,@R1 ; adiciona o contedo da posio de memria


; pontada por R1 ao acumulador.
MOV @R0, A ; guarda o contedo do acumulador na posio de
; memria apontada por R0.
MOVX A,@DPTR ; copia o contedo da posio de memria externa
; apontada por DPTR para o acumulador.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II

5.1.5 - Indexado
Este modo de endereamento s permitido para acesso memria de programa, por
isso s utilizado para leitura. Destina-se ao acesso a tabelas e a instrues
de salto. No acesso a tabelas um registrador de 16 bits (DPTR ou PC) contm o
endereo base da tabela e o acumulador carregado com o nmero de entrada na
tabela. O endereo da entrada na tabela calculado somando ao valor do
registrador o valor do acumulador. Na instruo JMP o endereo do destino
calculado como a soma do ponteiro base (DPTR ou PC) e do valor do acumulador.

Exemplos:

JMP @A+DPTR ; coloca no registrador PC o valor igual soma do


; contedo dos registradores DPTR e acumulador e
; continua a execuo do programa a partir desse
; endereo.
MOVC A,@A+DPTR ; carrega o contedo da posio de memria
; apontada pela soma dos registradores acumulador
; e DPTR no acumulador.
MOVC A,@A+PC ; carrega o acumulador com o contedo da posio
; de memria cujo endereo a soma dos
; registradores acumulador e PC.

5.2 - Modos de endereamento relativos a saltos


So trs os modos de endereamento relativos a saltos: relativo, absoluto e
longo.

5.2.1 - Relativo
Este modo de endereamento utilizado com instrues de salto condicional. O
deslocamento (offset) do salto de 8 bits, tendo uma gama de 128 a 127 bytes,
e calcula-se tendo por referncia o primeiro byte depois da instruo de salto.
Quando o salto executado o deslocamento somado ao contedo do registrador PC
para formar o endereo de destino. O destino do salto normalmente especificado
utilizando um rtulo (label) sendo o assembler que calcula o valor do
deslocamento efetivo de acordo com as regras descritas.

Exemplos:

JZ et1 ; salta para a instruo com o rtulo et1 se o


; valor no acumulador for nulo.
JNC et2 ; salta para a instruo com o rtulo et2 se a
; flag de carry do registrador PSW for igual a 0.

5.2.1 - Absoluto
Este modo de endereamento utilizado com as instrues ACALL e AJMP. So
especificados os 11 bits menos significativos da instruo de destino. Os 5 bits
mais significativos so iguais aos 5 bits mais significativos do registrador PC.
Devido ao fato de s ser possvel especificar 11 bits do endereo de destino s
so permitidos saltos dentro da pgina corrente de 2 Kbytes da memria de
programa. O endereo absoluto normalmente especificado recorrendo a um rtulo
que o assembler traduz.

Exemplos:
ACALL et3 ; chama a sub-rotina que tem incio na posio
; dada por et3
AJMP ciclo1 ; faz com que a instruo com o rtulo ciclo1
; seja executada a seguir instruo corrente.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II
5.2.3 - Longo
Este modo de endereamento utiliza-se com as instrues LCALL e LJMP.
especificado um endereo de 16 bits para destino do salto. O endereo longo
normalmente referido no programa recorrendo a um rtulo.

Exemplos:
LCALL et5 ; chama a sub-rotina cujo incio corresponde
; posio de memria ao rtulo et5.
LJMP ciclo2 ; faz com que a instruo como rtulo ciclo2
; seja executada a seguir a esta instruo.

5.3 - Modos de endereamento relativos a bits


Os modos de endereamento relativos a bits so dois: bit inerente e bit direto.

5.3.1 - Bit inerente


O modo de endereamento bit inerente utiliza-se com instrues booleanas que
operam com o bit carry flag do registrador PSW. O bit carry flag codificado no
cdigo de operao no sendo necessrio nenhum byte adicional para codificar o
operando.

Exemplos:

SETB C ; coloca CY = 1.
CLR C ; coloca CY = 0.
CPL C ; complementa CY.

5.3.2 - Bit direto


Este modo de endereamento utiliza-se com instrues booleanas que necessitam
que o bit a operar seja identificado atravs de um byte adicional quando feita
a codificao da operao, para alm do byte utilizado para o cdigo de
operao. So endereveis bits no espao de RAM interna entre 20H e 2FH e bits
da maioria dos SFRs. Endereos de bit entre 0 e 127 definem bits na rea de
memria de dados interna que pode ser endereada bit a bit. Endereos de bit
entre 128 e 255 correspondem a bits dos SFRs que so endereveis
individualmente.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II

Figura 9 - Mapa de endereos de bit em memria interna.

A linguagem assembly do MCS-51 especifica que o endereamento a bit pode ser


feito de trs modos: pelo nmero ou expresso correspondente ao endereo direto
do bit (0-255), pelo nome ou endereo do registrador que contm o bit seguido de
um ponto e da posio do bit no registrador (0-7) ou pelo smbolo predefinido do
bit em assembly.

Nome do Posio do BIT


Registrador 7 6 5 4 3 2 1 0
PSW CY AC FO RS1 RS0 OV P
P3 RD WR T1 T0 INT1 INT0 TXD RXD
TCON TF1 TR1 TF0 TR0 IE1 IT1 TE0 IT0
SCON SM0 SM1 SM2 REN TB8 RB8 TI RI
IE EA ES ET1 EX1 ET0 EX0
IP PS PT1 PX1 PT0 PX0

Tabela 4 - Smbolos dos bits dos registradores de controle e status.

Exemplos:

CLR PSW.6 ; coloca a 0 o bit 6 (auxiliary carry) do registrador


; PSW.
SETB TR1 ; coloca a 1 o bit 6 do registrador TCON.
SETB 08H ; coloca a 1 o bit 0 da posio de memria de dados
; interna 21H, correspondente ao endereo de bit 08H.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II

5.4 - Espao de memria de dados / modos de endereamento


A rea de memria de dados a acessar relaciona-se diretamente com o modo de
endereamento a utilizar. Assim para a rea de memria de dados externa utiliza-
se endereamento indireto atravs dos registradores DPTR, R0 ou R1. Para a parte
inferior (128 bytes menos significativos) da rea de memria de dados interna,
utilizam-se os modos de endereamento direto ou indireto e para a parte superior
da rea de memria de dados interna (128 bytes mais significativos
correspondentes aos SFRs) utiliza-se o modo de endereamento direto. Finalmente
para as reas de memria interna acessveis bit a bit utiliza-se o modo de
endereamento bit direto, a menos que a instruo atue sobre o bit de carry,
sendo nesse caso utilizado o modo de endereamento bit inerente.

6 - Conjunto de Instrues
O conjunto de instrues de qualquer microcontrolador pode dividir-se em cinco
grupos fundamentais de operaes: operaes de transferncia, operaes
aritmticas, operaes lgicas (por vezes estes dois grupos so considerados em
conjunto), operaes sobre variveis booleanas e operaes de salto.
A famlia MCS-51 no constitui exceo, podendo o seu conjunto de instrues ser
dividido nos cinco grupos referidos. As operaes pertencentes a cada grupo so
apresentadas em seguida. As notaes utilizadas pela famlia MCS-51 na
apresentao do seu conjunto de instrues so as seguintes:

Rn Registradores R0-R7 do banco de registradores selecionado.


direto endereo de uma posio de memria (8 bits) do espao de
endereamento direto (RAM de dados interna ou SFRs).
@Ri posio de memria de dados interna (8 bits) endereada indiretamente
atravs dos registradores R0 ou R1.
#dados constante de 8 bits includa na instruo.
#dados16 constante de 16 bits includa na instruo.
end16 endereo de destino de 16 bits.
end11 endereo de destino de 11 bits.
Rel byte de deslocamento com sinal (complemento para 2).

6.1 - Operaes de Transferncia


O grupo de operaes de transferncia constitudo pelas operaes que permitem
a transferncia ou troca de informao entre duas posies de memria. Existem
operaes para transferncia de cdigo (MOVC), para manipulao da stack (PUSH e
POP) e para troca de dados entre o acumulador e um registrador ou byte direto
(XCH). As operaes pertencentes a este grupo de instrues so apresentadas na
tabela de SET de Instrues no final da apostila. Na tabela so apresentados os
mnemnicos da operao, utilizadas para a escrita do programa, a descrio
sumria da operao, o nmero de bytes que a operao ocupa depois de codificada
e o nmero de perodos do oscilador necessrios para a execuo da operao.

6.2 - Operaes Aritmticas


O grupo de operaes aritmticas inclui operaes para adio (ADD e ADDC),
subtrao (SUBB), incremento (INC), decremento (DEC), multiplicao (MUL),
diviso (DIV) e ajuste decimal (DA). De acordo com a arquitetura da unidade
aritmtica e lgica, um dos operandos das operaes aritmticas tem que estar
colocado no registrador acumulador, sendo o resultado apresentado no mesmo
registrador (adio e subtrao). No caso das operaes de multiplicao e de
diviso o segundo operando tem que estar colocado no registrador B. O resultado
da operao de multiplicao de 16 bits sendo o byte menos significativo
apresentado no acumulador e o byte mais significativo no registrador B.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II
Na operao de diviso o quociente colocado no acumulador e o resto no
registrador B. A operao de ajuste decimal utiliza-se o ajuste para BCD do
valor contido no acumulador. Verificar este conjunto de instrues no final da
apostila

6.3 - Operaes Lgicas


As operaes lgicas do conjunto de instrues so as operaes AND, OR, XOR,
clear (CLR), complemento (CPL), rotao simples para a direita ou para a
esquerda (RL, RR), rotao com carry, para a esquerda ou para a direita (RLC,
RRC) e troca de nibbles (conjunto de 4 bits) no acumulador.

6.4 - Operaes sobre variveis booleanas


Este grupo de operaes dispe de instrues para colocar um bit a zero (CLR) ou
a um (SETB), para complementar (CPL), para efetuar a operao AND ou OR entre um
bit e a flag de carry, para transferncia de um bit para a flag de carry ou da
flag de carry para um bit e operaes de salto condicional baseadas no teste da
flag de carry (JC, JNC) ou no teste de um bit (JB, JNB).

6.5 - Operaes de salto


As instrues do grupo de operaes de salto permitem alterar o fluxo de
execuo do programa. Existem instrues para chamada de rotinas (ACALL, LCALL),
retorno de rotinas (RET) e de rotinas de servio a interrupes (RETI), salto
incondicional (AJMP, LJMP) e salto condicional (JZ, JNZ, CJNE, DJNZ). Existe
ainda uma instruo que no produz nenhum resultado (NOP). A instruo de salto
condicional JZ e JNZ permite o salto com base no teste do valor da flag de zero.
A instruo CJNE compara o valor contido no acumulador, num registrador ou numa
posio de memria acessvel indiretamente, com o valor imediato ou com o byte
direto referido na instruo e salta se os valores forem iguais. A instruo
DJNZ decrementa o registrador ou byte direto e salta se o resultado da operao
de decremento for zero.

6.6- Exerccios Resolvidos


1- Considere uma tabela com 50 elementos de 8 bits. A tabela est armazenada
na memria de programa com incio no endereo 1000H. Escreva uma seqncia
de instrues que carregue o nono elemento da tabela no acumulador.

MOV DPTR,#1000H ; colocar endereo base no DPTR.


MOV A,#8 ; colocar 8 no acumulador.
MOVC A,@A+DPTR ; utilizar endereamento indexado para transferir
; o nono elemento da tabela para o acumulador.

2- Escrever uma seqncia de instrues para trocar o contedo das posies


de memria 40H e 30H.

MOV A,40H ; colocar contedo do endereo 40H (end. direto) em A.


MOV B,30H ; colocar contedo do endereo 30H em B.
MOV 30H,A ; guardar contedo de A na posio 30H.
MOV 40H,B ; guardar contedo de B na posio 40H.

3- Adicione o contedo das posies de memria 40H e 30H e deixe o contedo


no acumulador.

MOV A,30H ; colocar o contedo do endereo 30H em A.


ADD A,40H ; somar o contedo do endereo 40H a A.

4- Subtrair o contedo da posio de memria 40H e o carry ao contedo da


posio de memria 30H.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II

MOV A,30H ; colocar o contedo do endereo 30H em A.


SUBB A,40H ; subtrair o contedo do endereo 40H e o carry a A.

7- Temporizao da unidade central de processamento


A temporizao da CPU faz-se recorrendo ao circuito oscilador do
microcontrolador ou atravs de um sinal de relgio externo. Quando se utiliza o
circuito oscilador montagem recomendada segue o esquema da figura 10. Torna-se
necessria a utilizao de dois capacitores e um cristal oscilador como
componentes externos. O cristal deve respeitar a especificao de freqncia
mxima permitida e o valor dos capacitores depende do tipo de cristal utilizado
e pode ser determinado consultando o datasheet do microcontrolador a utilizar.

Figura 10- Esquema de montagem do circuito temporizador utilizando o oscilador


interno do microcontrolador.

Se o sinal de relgio for fornecido a partir do exterior pode utilizar-se o


esquema da figura 11.

Figura 11- Esquema de montagem do circuito temporizador para dispositivos HMOS


ou CHMOS, utilizando um sinal de relgio externo.

7.1- Ciclos mquina e execuo de instrues


A execuo de uma instruo implica a realizao de uma srie de operaes base
sobre o hardware que no podem ser executadas num nico perodo de oscilao. Um
ciclo mquina corresponde ao nmero mnimo de perodos do oscilador de que o
microcontrolador necessita para executar uma instruo. Na famlia MCS-51 um
ciclo mquina encontra-se dividido em 6 estados S1 a S6, cada um com durao de
dois perodos do oscilador. Assim um ciclo mquina corresponde a um total de
doze perodos do oscilador. O sinal ALE ativado durante os estados S1 e S4 de
cada ciclo mquina apresentado por isso uma freqncia igual a 1/6 da freqncia
do oscilador.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II

8- O assembly da famlia MCS-51


Um programa em linguagem assembly MCS-51 constitudo por linhas de que podem
ser:

instrues da linguagem assembly.


comentrios.
diretivas para o assembler.

Cada linha contendo instrues em assembly est dividida em 4 campos alguns dos
quais podem estar vazios. Esses campos so:

campo da etiqueta ou rtulo.


campo da operao.
campo dos operandos (0 a 3 operandos).
campo de comentrio.

O campo da etiqueta [ou rtulo]; facultativo e consiste num identificador que


constitui a etiqueta seguida de [:]. Os campos da operao e dos operandos esto
diretamente relacionados, pois o nmero de operandos a utilizar depende da
operao. Estes campos so constitudos pelas operaes descritas no conjunto de
instrues seguindo o formato apresentado nas tabelas 5 a 9 (onde so
apresentados os tipos de operandos permitidos para cada operao). O campo de
comentrio facultativo e inicia-se com [;]. Podem existir linhas que contenham
apenas comentrios que devero iniciar-se por [;]. Designa-se por programa
assembler ou simplesmente assembler o programa que traduz o cdigo em linguagem
assembly para cdigo mquina, que corresponde ao cdigo que a CPU consegue
processar. Cada assembler tem as suas particularidades prprias e as suas
limitaes sendo sempre necessria a consulta do manual a ele associado quando
durante a fase de programao do cdigo. As linhas de diretivas para o assembler
correspondem a ordens para o assembler sobre o modo como ele vai efetuar a
traduo do cdigo escrito em assembly para cdigo mquina. Em seguida so
apresentadas as diretivas utilizadas pelos assemblers da famlia MCS-51, devendo
notar que nem todos os assemblers utilizam todas as diretivas descritas, por
isso a consulta da documentao relacionada com o assembler indispensvel.

8.1- Diretivas do assembler


Existem oito tipos de diretivas:

para controle de segmentos.


para definio de smbolos.
para inicializao de memria.
para reserva de memria.
para ligao do programa.
para controle de endereos.
para definio de macros.
outras diretivas.

Em seguida sero apresentadas as diretivas correspondentes a cada tipo.

8.1.1- Diretivas para controlo de segmentos


Designa-se por segmento um bloco de memria de cdigo ou de dados criado pelo
assembler. As diretivas para controle de segmentos servem para criar e
selecionar segmentos. Esto definidas cinco classes de memria que podem ser
utilizadas na definio ou criao do segmento:

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II
BIT bit em memria interna. Endereos at de 0 a 255.
CODE memria de cdigo. Endereos de 0000H a 0FFFFH.
DATA memria de dados acessveis atravs de endereamento direto.

Endereos de 0 a 255 (posies genricas de 0 a 127 e SFRs de 128 a 255).

IDATA memria de dados interna. Endereos de 0 a 255.


XDATA memria de dados externa. Endereos de 0000H a 0FFFFH.

As diretivas deste tipo so apresentadas na tabela 5.

Tabela 5- Diretivas para controle de segmentos.

Exemplos:

mprogr SEGMENT CODE ; define o segmento de cdigo mprogr .


RSEG mprogr ; ativa o segmento mprogr.
dd1 SEGMENT DATA ; define o segmento de dados dd1.
mprog1 SEGMENT CODE AT 1000H ;define o segmento de cdigo mprogr1 com
; incio no endereo 1000H.
xdd SEGMENT XDATA PAGE ; define o segmento de dados externos xdd
; alinhado com uma pgina de 256 bytes.
BSEG AT 20H ; define um segmento absoluto de bit com
; incio no endereo 20H.

8.1.2- Diretivas para definio de smbolos


As diretivas para atribuio de smbolos atribuem determinado valor a um
smbolo. As diferenas entre as vrias diretivas deste tipo relacionam-se com o
tipo de valor a atribuir ao smbolo. A lista das diretivas deste tipo
apresentada na tabela 6.

Tabela 6- Diretivas para definio de smbolos.


Exemplos:

pt_leitura SET R1 ; utilizar R1 como pt_leitura.


falso EQU 0 ; utilizar falso para representar 0.
flag1 BIT 50H ; utilizar o bit cujo endereo 50H como flag1.
restart CODE 00H ; faz restart igual memria de cdigo 00H.
PORT1 DATA 90H ; atribui a PORT1 o valor 90H correspondente
; ao endereo do registrador associado ao porto P1.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II

8.1.3- Diretivas para inicializao de memria


As diretivas para inicializao de memria permitem inicializar em memria de
cdigo posies de 8 ou 16 bits. A tabela 7 apresenta as diretivas disponveis
com esta funo.

Tabela 7- Diretivas para inicializao de memria.

Exemplos:

segmento1: DB 7EH,60H,6DH,79H ; inicializa 4 posies de 8 bits, com incio


; na posio cujo endereo corresponde
; etiqueta segmento1, com os valores
; indicados.
prompt: DB Ola, como esta! ; neste caso a inicializao feita com
; os cdigos ASCII
; correspondentes aos caracteres entre .
tab_salto: DW end1, end2, end3 ; inicializa o segmento de
; cdigo com os endereos
; correspondentes s etiquetas
; end1, end2 e end3.

8.1.4- Diretivas para reserva de memria


Este tipo de diretivas serve para reservar espaos de memria de 1 ou de 8 bits.
As diretivas deste tipo so apresentadas na tabela 8.

Tabela 8- Diretivas para reserva de memria.

Exemplos:

DBIT 9 ; reserva nove bits.


DS 25 ; reserva 25 bytes no segmento ativo.

8.1.5- Diretivas para ligao do programa


As diretivas para ligao do programa utilizam-se quando o programa a
desenvolver se encontra distribudo por vrios mdulos. Como os mdulos
necessitam de partilhar informao torna-se necessrio identificar a origem da
informao (quando externa) ou qual a informao que vai ser partilhada. As
diretivas deste tipo utilizam-se para essas funes e encontram-se na tabela 9.

Tabela 9- Diretivas para ligao do programa.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II
Exemplos:

PUBLIC s1, s2, s3 ; torna pblicos os smbolos s1, s2 e s3.


EXTRN CODE(s1, s2) ; declara que os smbolos s1 e s2 esto definidos noutro
; mdulo.
NAME mdulo1 ; especifica que o mdulo objeto a se deve chamar
; mdulo1.

8.1.6- Diretivas para controle de endereos


Estas diretivas servem para determinar o endereo em que o cdigo deve ser
posicionado e para seleo do banco de registradores a utilizar. Estas diretivas
encontram-se na tabela 10.

Tabela 10- Diretivas para controle de endereos.

Exemplos:

ORG 2000H ; posiciona o contador de localizao no endereo 2000H


ORG reset ; em que reset um smbolo predefinido correspondendo a um
; dado endereo.
USING 2 ; seleciona o banco de registradores nmero 2.

8.1.7- Diretivas para definio de macros


Este tipo de diretivas permite definir macros. Designa-se por macro um conjunto
de instrues reunidas sob uma determinada etiqueta utilizando diretivas
especficas. Quando a etiqueta referida no programa o assembler procede sua
substituio pelo cdigo referido anteriormente. Nem todos os assemblers
suportam a utilizao de macros. Estas diretivas so apresentadas na tabela 11.

Tabela 11- Diretivas para definio de macros.


Uma macro define-se do seguinte modo:

nome_macro: MACRO ard1, arg2, ... ; comentrio


.
.
ENDM

8.1.8- Outras diretivas


A nica diretiva listada neste ponto serve para assinalar o fim do mdulo e por
isso corresponde sempre ltima linha de um programa em linguagem assembly. O
seu formato apresentado na tabela 12.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II

Tabela 12- Outras diretivas.


9- Reset
O reset do microcontrolador efetua-se colocando o pino RST no nvel lgico 1
durante pelo menos dois ciclos mquina (24 perodos do oscilador). Na tabela 13
apresentado o contedo dos SFRs depois do reset.

Tabela 13- Valor dos SFRs depois do reset.

O esquema de montagem recomendado para power-on reset do microcontrolador


apresentado na figura 12.

Figura 12- Circuito para power-on reset.

10- Estrutura e operao das portas E/S


O 8051 possui 4 portas de entrada/sada, designados P0 a P3, todas elas
bidirecionais. As portas so constitudas por uma latch, um driver de sada e um
buffer de entrada. As latches correspondem aos SFRs P0 a P3.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II

10.1- Funes alternativas das portas E/S


As portas P0, P2 e P3 tm funes especficas associadas utilizao de certas
configuraes ou blocos de hardware. A porta P0 utilizada como barramento de
endereos/dados nos acessos memria externa. Esta porta serve para enderear o
byte menos significativo do endereo. A porta P2 utilizada como barramento de
endereos nos acessos memria externa quando o endereamento de 16 bits.
Esta porta enderea o byte mais significativo do endereo. A porta P3
multifuncional estando os seus bits associados a diferentes blocos internos de
hardware. As funes alternativas da porta P3 so apresentadas na tabela 14.

Tabela 14- Funes alternativas da porta P3.

10.2- Estrutura dos pinos E/S


Os esquemas eltricos de um bit de cada um das portas so apresentados nas
figuras 13, 14, 15 e 16.

Figura 13- Esquema eltrico de um bit da porta P0.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II

Figura 14- Esquema eltrico de um bit da porta P1.

Figura 15- Esquema eltrico de um bit da porta P2.

Figura 16- Esquema eltrico de um bit da porta P3.

A estrutura dos pinos E/S no igual para todos eles. As portas P0 e P2 tm


multiplexadores para redirecionar o pino para os barramentos de endereos ou
dados, quando so utilizados para acesso memria externa. As portas P1, P2 e
P3 possuem pull-ups internos pelo que dispensam a utilizao de pull-ups
externos em circuitos de entrada. A porta P0 tem sadas open-drain devido sua
utilizao como barramento multiplexado de endereos e dados. A operao das
portas como entradas implicam a colocao das latches associadas s portas a 1,
quando no esto sendo usadas para funes alternativas, para que os driver de
sada sejam desativados. Algumas instrues para leitura das portas atuam sobre
a latch, outras sobre o pino. As instrues que atuam sobre a latch, so
instrues do tipo readmodify-write e encontram-se listadas na tabela 15.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II

Tabela 15- Instrues do tipo read-modify-write.

Durante o acesso externo o contedo do registrador associado a P2 no alterado


e o contedo do registrador associado a P0 colocado a 1. Os pinos de P3 ficam
controlados pela funo alternativa quando o contedo do registrador P3
colocado a 1.

10.3- Utilizao das portas E/S como entradas


Podem utilizar-se diversos dispositivos de entrada como sejam interruptores,
conversores A/D, teclado, entre outros. De seguida apresentam-se alguns exemplos
de interfaces com dispositivos de entrada.

10.3.1- Interface com um DIP switch


Um DIP switch consiste num conjunto de interruptores. Para a interface sugere-se
o esquema de montagem da figura 17, que deve ser repetida para cada um dos
interruptores utilizados na montagem.

Figura 17- Esquema de montagem para interface com DIP switch.

A montagem apresentada utiliza-se para portas que no tenham pull-ups internos.


Caso a porta utilizado na ligao tenha pull-ups internos no necessrio
colocar os resistores no circuito. Supondo que as ligaes foram feitas para um
DIP switch com 8 interruptores e que se utilizou a porta P2 para a ligao ao
microcontrolador, o cdigo para configurao da porta como entrada e para
leitura do valor colocado entrada o seguinte.

MOV P2,#FFH ; configurao da porta P2 como entrada.


MOV A,P2 ; leitura da porta P2.

10.3.2 Interface com um teclado


Existem diversos tipos de teclados: mecnicos, capacitivos, de efeito de Hall ou
de membrana. Cada um destes tipos de teclados apresenta caractersticas
distintas e requer um modo de processamento e hardware de interfaces diferentes.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II
Consideremos um teclado mecnico. Os teclados mecnicos quando so pressionados
apresentam sada uma srie de pulsos e no uma nica transio, como se pode
ver na figura 18. Este fenmeno designa-se por contact bounce e pode durar de
5ms a 20ms.

Figura 18- Ilustrao do fenmeno de contact bounce.

Para tornar obvio este problema necessrio usar uma das vrias tcnicas de
deboucing, que podem ser implementadas utilizando hardware (circuito set-reset,
porta CMOS, circuito RC, entre outros) ou por software. Neste exemplo o
deboucing ser feito por software. O algoritmo a utilizar num programa para
leitura do teclado dever seguir os passos seguintes:

1- Procura no teclado para determinar se alguma tecla foi pressionada.


2- Debouncing.
3- Consultam-se uma tabela para determinar o cdigo ASCII associado tecla
pressionada (se necessrio).

A implementao da rotina para procura no teclado da tecla premida


depende do modo como feito a interface com o microcontrolador e do
nmero de teclas disponveis. O debouncing por software pode ser
implementado atravs do algoritmo seguinte:

1- Espera X ms (X depende do tempo que o contacto leva a estabilizar).


2- L de novo o sinal associado tecla.
3- Se o sinal estiver no nvel lgico zero a tecla foi pressionada. Caso
contrrio a tecla no foi pressionada. Implementao de um salto de
acordo com a deciso anterior.

A rotina para determinao do cdigo ASCII correspondente tecla


pressionada pode ser implementada colocando em memria de cdigo a tabela
com os cdigos correspondentes s teclas existentes. Esta tabela pode ser
acedida atravs da instruo MOVC A,@A+DPTR, colocando o ndice de
acesso, de acordo com a tecla pressionada, em A. O cdigo base para
implementao desta rotina apresentado de seguida.

tabela: DB ... ; definio da tabela. Os caracteres devem ser


; colocados entre aspas.
conv:
MOV DPTR,#tabela ;coloca em DPTR o endereo base da tabela.
MOVC A,@A+DPTR ;l cdigo ASCII da tabela.
LCALL display ;chamada da rotina que faz o display do caractere.
RET

10.4- Utilizao dos portos I/O como sadas


Podem utilizar-se como dispositivos de sada LEDs, displays de sete segmentos,
LCDs, motores, conversores D/A entre outros. Em seguida so apresentados
exemplos de interfaces para alguns dos dispositivos de sada referidos.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II

10.4.1 Interface com LEDs


O LED permite de um modo simples a visualizao do valor de um dado pino de
sada. A interface pode ser implementada recorrendo ao esquema da figura 19.

Figura 19- Esquema de montagem para interface com LEDs.

As resistncias utilizam-se para limitar a corrente nos LEDs. O seu valor deve
ser calculado tendo em conta as caractersticas dos LEDs utilizados. No
necessrio nenhum tipo de configurao para utilizar uma porta como sada. A
ativao dos pinos como sada faz-se escrevendo para a latch associada ao pino.
Por exemplo, o cdigo necessrio para acender os LEDs L1 e L3 e para apagar o
LED L2 do circuito anterior seria:

MOV P1,#5

10.4.2 Interface com um display de sete segmentos


Um display de 7 segmentos permite a visualizao de dgitos entre 0 e 9. Este
circuito tem sete entradas correspondentes aos 7 segmentos que podem ser
manipulados de modo a permitir a visualizao dos dgitos de acordo com a tabela
16.

Tabela 16- Tabela de converso BCD para 7 segmentos.

O esquema para interface entre o microcontrolador e o display apresentado na


figura 20. O buffer utilizado no caso da porta do microcontrolador no
fornecer corrente suficiente para fazer o drive do display.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II

Figura 20- Esquema de montagem para interface com um display de 7 segmentos.

Cdigo para escrita do dgito 6 no display:

MOV P1,#5FH

10.4.3- Interface com LCD


O esquema de montagem para a interface depende do tipo de dispositivo LCD a
utilizar. Como exemplo apresenta-se na figura 21 uma interface com o LCD LM015
que pode servir de modelo para o desenvolvimento de interfaces para outros LCDs.

Figura 21- Esquema de montagem para interface com o LCD LM015.

O LCD recebe dois tipos de informao: ordens, para posicionamento do cursor,


por exemplo, e dados. A seleo do tipo de informao faz-se atravs do pino RS
do LCD. A latch utilizada para fazer a desmultiplexagem do barramento do
microcontrolador fornecendo o sinal para o pino RS. O decodificador de endereos
utilizado para fazer a seleo do LCD. O LM015 inclui um circuito de driving
interno por isso no necessria a colocao de buffers externos.

Algoritmo para escrita no LCD:

1- Inicializao do display.
2- Envio dos cdigos ASCII dos caracteres a serem mostrados.

O cdigo a desenvolver para implementar cada um dos passos do algoritmo anterior


depende do LCD, do seu conjunto de instrues e do modo de operao.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II

11- Acesso memria externa


Num sistema com microcontrolador podem existem dois tipos de memria externa:
memria de programa e memria de dados. Nos acessos memria externa a porta
P0 utiliza-se como barramento multiplexado de endereos/dados (byte menos
significativo). Durante o acesso externo a latch associada a P0 escrita com 1s
e a porta no pode ser utilizado para outros fins. Quando o endereamento da
memria externa feito a 16 bits a porta P2 utilizado como barramento de
endereos para enderear o byte mais significativo. O sinal ALE deve ser usado
para capturar o endereo para uma latch, de acordo com o esquema proposto na
figura 6.

11.1- Acesso memria de programa externa


O acesso memria de programa externa feito quando o sinal /EA est ativo
para os endereos contidos no registrador PC que excedem a capacidade de memria
interna do microcontrolador. O comando de leitura dado pelo sinal /PSEN. O
endereamento sempre feito a 16 bits, pelo que a porta P2 fica dedicado a esta
funo. O diagrama temporal tpico de um acesso memria de programa externa
apresentado na figura 22.

A.D.- amostragem dados


Figura 22- Diagrama temporal do acesso memria de programa externa.

11.2- Acesso memria de dados externa


O acesso memria de dados externa pode ser de leitura ou de escrita. Os sinais
de comando para essas operaes so /RD, para leitura, e /WR, para escrita. O
endereamento pode ser de 16 bits (MOVX @DPTR) ou 8 bits (MOVX @Ri, com i=0 ou i
=1). Com endereamento de 8 bits a porta P2 pode ser usado para fins genricos,
podendo utilizar-se algumas das suas linhas para fazer paging da memria, caso
seja necessrio. A figura 7 apresenta uma interface para acesso memria de
dados externa. As figuras 23 e 24 apresentam os diagramas temporais tpicos para
os acessos de leitura e escrita, respectivamente, memria de dados externa.

Figura 23- Diagrama temporal do acesso memria de dados ciclo leitura.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II

Figura 24- Diagrama temporal do acesso memria de dados ciclo escrita.

12- Temporizao / Contagem


Todos os microcontroladores incluem um bloco de hardware que possui capacidades
para fazer temporizao ou contagem. Este bloco de extrema importncia tendo
em considerao as aplicaes tpicas dos microcontroladores (sistemas de
controle de tempo real). O bloco de temporizao/contagem permite criar atrasos
com determinada durao, impor instantes de amostragem, medir a largura do pulso
de um dado sinal, medir a freqncia de um sinal peridico ou contar o nmero de
ocorrncias de um dado evento, entre outras. Na funo de temporizao o
registrador de contagem associado ao temporizador incrementado a um ritmo fixo
dependente da freqncia de oscilao aplicada ao o microcontrolador. Na funo
de contagem o registrador de contagem incrementado em resposta a uma transio
num sinal externo aplicado a um pino especfico.

12.1- Temporizao/ contagem na famlia MCS-51


A famlia MCS-51 possui dois tipos de blocos temporizadores/contadores: os
Timers 0 e 1 e o Timer 2. Na funo de temporizao so contados ciclos de
mquina, ou seja, a taxa de contagem de fOSC/12, sendo fOSC a freqncia de
oscilao aplicada ao microcontrolador. Na funo de contagem, o incremento
feito na ocorrncia de uma transio de 1 para 0 no sinal externo aplicado. O
reconhecimento dessa transio demora dois ciclos de mquina, sendo por isso a
taxa mxima de contagem igual fOSC/24.

12.1.1- Timers 0 e 1
Os Timers 0 e 1 so temporizadores/contadores de 16 bits com quatro modos de
operao possveis. Os registradores de contagem a eles associados so TH0, TL0,
TH1 e TL1. Associado a cada temporizador/contador existe ainda uma flag de
overflow que ativada por hardware quando se excede a capacidade de contagem do
registrador de contagem. Na ocorrncia da condio de overflow o registrador de
contagem passa a conter zeros e a contagem prossegue a partir desse valor. O
registrador TMOD permite fazer a seleo tipo de funo e do modo de operao de
cada um dos temporizadores/contadores. Este registrador no enderevel bit a
bit. Este registrador apresentado na figura 25.

Figura 25- Registrador TMOD (endereo 89H).

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II
O bit GATE permite determinar o modo como o temporizador/contador iniciado ou
parado. Para GATE = 0, a contagem ser iniciada quando o bit de controle TRx =
1. Este bit encontra-se no registrador TCON. Para GATE = 1, a contagem
iniciada se o sinal no pino /INTx estiver no nvel lgico alto e,
simultaneamente, TRx = 1. No primeiro caso diz-se que a ativao feita por
software e no segundo por hardware. O bit C/T permite fazer a seleo do tipo de
funo do bloco. Para C/T = 0 a funo ativa de temporizao, para C/T = 1 a
funo ativa de contagem. Os bits M1 e M0 permitem fazer a seleo do modo de
operao de acordo com a tabela 17.

Tabela 17- Seleo do modo de operao dos Timers 0 e 1.

TCON o registrador de controle dos Timers 0 e 1. Este registrador


enderevel bit a bit. A figura 26 apresenta o registrador TCON.

Figura 26- Registrador TCON (endereo 88H).

S os quatro bits mais significativos esto relacionados com os temporizadores/


contadores, por isso s esses bits sero referidos neste momento. O bit TF1 a
flag de overflow do Timer 1. Este bit colocado a 1 pelo hardware quando ocorre
a condio de overflow no registrador de contagem do Timer 1. TR1 o bit de
controle de incio/parada de operao do Timer 1. TF0 a flag de overflow do
Timer 0. TR0 o bit de controle de incio/parada de operao do Timer 0. As
flags de overflow so colocadas a zero durante o processo de atendimento
interrupo do temporizador/contador. Caso no esteja a ser utilizada a
interrupo respectiva necessrio proceder colocao da flag a 0 por
software. No modo de operao 0 o registrador do temporizador/contador
configurado como um registrador de 13 bits, utilizando o registrador THx (byte
menos significativo da contagem) e os 5 bits menos significativos de TLx. A flag
de overflow ativada quando a capacidade do registrador de contagem excedida.
A contagem iniciada quando TRx = 1 e GATE = 0. Se GATE = 1 o controle da
contagem do temporizador/contador feito atravs da entrada externa /INTx, o
que facilita a medio da largura de pulsos. Na figura 27 apresenta-se o
diagrama de blocos do Timer 1 no modo 0.

Figura 27- Diagrama de blocos da operao do Timer 1 no modo 0.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II
No modo de operao 1 o funcionamento anlogo ao modo 0, mas com o registrador
de contagem de 16 bits, utilizando os registradores TLx (byte menos
significativo) e THx (byte mais significativo). No modo de operao 2 o
registrador de contagem configurado para 8 bits (TLx) com recarga automtica.
A condio de overflow ativa a flag respectiva e faz a recarga do valor contido
no registrador THx em TLx. O valor de THx permanece inalterado. Na figura 28
apresentado o diagrama de blocos do Timer 1 no modo 2.

Figura 28- Diagrama de blocos do Timer 1 no modo de operao 2.

No modo de operao 3, TL0 e TH0 funcionam como temporizadores separados. TL0


utiliza os bits de controle do Timer 0: GATE, C/T, TR0, /INT0 e TF0. TL0 e pode
ser utilizado como temporizador ou como contador. TH0 tem a funo exclusiva de
temporizao e utiliza os bits de controle TR1 e TF1. O Timer 1 pode continuar a
ser usado como temporizador nos modos 0, 1 e 2, mas no pode provocar
interrupes nem atuar sobre a flag TF1, podendo ser utilizado para gerar a taxa
de transmisso da porta srie ou em qualquer aplicao que no necessite de usar
interrupes. Este modo destina-se a aplicaes que requerem um temporizador ou
contador extra de 8 bits. Na figura 29 apresenta-se o digrama de blocos do Timer
0 no modo 3.

Figura 29- Diagrama de blocos da operao do Timer 0 em modo 3.

12.1.2- Aplicaes dos Timers 0 e 1


Os Timers 0 e 1 utilizam-se para criao de atrasos, imposio de perodos de
amostragem, medio da largura de pulsos, medio da freqncia ou perodo de
uma forma de onda peridica, contagem de eventos externos, entre outras.

Criao de atrasos
De seguida apresentado o mtodo de clculo utilizado para determinar o nmero
de contagens a efetuar para gerar um atraso de X segundos. Utilizasse o modo de
operao 1 por ser aquele que permite realizar uma contagem maior, mas o mtodo
no depende do modo utilizado.

Freqncia de contagem = fOSC/12 perodo = 12/fOSC.


Atraso de X segundos X/12/fOSC contagens.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II
Se o valor obtido for menor ou igual que a capacidade de contagem do modo
utilizado (2161 para o modo 1, por exemplo) ento o atraso pode ser gerado
diretamente pelo Timer 0 ou Timer 1 nesse modo. Caso contrrio, ou se utiliza um
modo de contagem com maior capacidade (se no se tratar do modo 1), ou o atraso
tem que ser gerado com base num submltiplo do valor desejado, tendo em conta o
nmero de overflows do temporizador necessrio ara perfazerem o valor total
desejado. O valor inicial a colocar no registrador de contagem do temporizador
desejado igual capacidade mxima do registrador menos de contagens
necessrias para gerar o atraso.

De seguida so apresentados alguns exemplos:

1- Considere que dispe de um 80C51 cujo cristal oscilador de 12 MHz.


Escreva uma rotina para gerar um atraso de 20ms.

Perodo de contagem = 12/12MHz = 1us


20ms 20ms/1us = 20000 contagens
20000 < 65535 utilizao direta de um dos temporizadores em modo 1.

Escolhe-se o Timer 1.

Valor para o registrador de contagem do Timer 1 = 65535 20000 = 45535 = B1DFH.

Cdigo da rotina que provoca o atraso:

atr20ms:
MOV TMOD,#00010000B ; Timer 1 em modo 1.
CLR TF1 ; limpa a flag de overflow.
MOV TH1, #B1H ; coloca byte superior em TH1.
MOV TL1, #DFH ; coloca byte inferior em TL1.
SETB TR1 ; inicia operao do Timer 1.
espera:
JNB TF1, espera ; espera at TF1 = 1.
RET

Para criar atrasos superiores a 65,5ms necessrio programar o Timer 0 ou 1


para gerar um atraso que seja submltiplo do valor desejado e contar o nmero de
overflows do temporizador at se obter o valor desejado..

2- Considere o mesmo microcontrolador do exemplo anterior utilizado o mesmo


cristal. Escreva uma rotina que gere um atraso de 1s.

Como o atraso pedido superior a 65.5ms a implementao no direta.

Algoritmo:

1- Escrever um ciclo que gere um atraso de 50ms.


2- Repetir o ciclo 20 vezes.

Cdigo:

ct_ciclo SET R2 ; R2 utilizado como contador de ciclos.

atr1s:
MOV ct_ciclo, #20 ; definio do nmero de iteraes.
CLR ET1 ; disable interrupo Timer1.
CLR TF1 ; limpar TF1.
MOV TMOD, #10H ; programao do Timer 1 no modo1.
MOV TH1, #3CH ; inicializao do registrador de contagem
MOV TL1, #AFH ; com o valor 15535.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II
SET TR1 ; incio contagem.
rep:
CLR TF1 ; limpeza da flag TF1.
MOV TH1, #3CH ; repete inicializao
; registrador de contagem
MOV TL1, #AFH ; cada vez que h overflow.
espera:
JNB TF1, espera ; espera at TF1=1.
DJNZ ct_ciclo, rep ; espera que o ciclo se realize 20 vezes.
RET

Medio da largura de impulsos


Nesta aplicao necessrio ligar ao pino /INT1 ou /INT0 o sinal que se
pretende medir. Programa-se o bloco com a funo de temporizao com o bit GATE
= 1 para que a contagem seja permitida apenas enquanto o sinal externo se
encontra no nvel lgico alto. A contagem inicia-se quando o sinal passa ao
nvel lgico alto e termina quando o nvel lgico se alterar. No caso do nvel
lgico do pulso ser diferente necessrio colocar um inversor externo entre o
sinal e o pino do microcontrolador. Utilizando o modo de operao 1, se a
durao do pulso for menor ou igual a 216-1 o seu valor obtido diretamente (em
ciclos mquina) nos registradores de contagem. Se a durao do pulso for maior
que 216-1 tem que se considerar o nmero de overflows ocorridos para obter o
valor final. A converso do valor em ciclos mquina para segundos faz-se
recorrendo a alguns clculos simples. O mtodo descrito para determinao da
largura de um impulso recorre utilizao de interrupes pelo que ser apenas
apresentado o algoritmo do procedimento a utilizar. Sero utilizadas duas
variveis, uma para contar o nmero de ocorrncias da condio de overflow
(ct_count) e outra para indicar o fim do pulso (f_imp). Estas variveis so
atualizadas dentro das rotinas de servio interrupo. No exemplo utiliza-se o
Timer 1.

Algoritmo:

1- Configurar o Timer 1 para operar no modo 1 e selecionar funo de


temporizao. Colocar TF1 = 0 e inicializar os registradores de contagem do
Timer 1 a zero.
2- Inicializar ct_count a 0 e f_imp a 1.
3- Selecionar a interrupo por flanco descendente do pino /INT1.
4- Ativar a interrupo por overflow do Timer 0. Ativar a interrupo externa
/INT1.
5- Iniciar operao do Timer 1.
6- Escrever uma rotina de servio interrupo por overflow do Timer 1 que
incremente ct_count.
7- Escrever uma rotina de servio de interrupo /INT1 que decremente f_imp.
8- Espera at que f_imp seja igual a 0. A largura do pulso dada por larg_imp =
(cont_ovf x 216 + cont_timer) (em ciclos mquina) em que larg_imp representa a
largura do pulso, cont_ovf representa a contagem do nmero de overflows do Timer
e cont_timer representa o valor contido nos registradores de contagem do
temporizador.

Medio da freqncia de um sinal peridico


A freqncia corresponde, por definio, ao nmero de ciclos por segundo de um
dado sinal. Para medir freqncia utiliza-se um dos temporizadores/contadores na
funo de contador, inicializando-se os registradores de contagem a 0. Utiliza
se o sinal exterior como relgio do contador. O outro temporizador/contador gera
um atraso de 1s. A contagem obtida ao fim de 1s corresponde freqncia do
sinal (em Hz). Em seguida apresentado um exemplo.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II
3- Utilize os Timers 0 e 1 para medir a freqncia de um sinal desconhecido.
Suponha que a freqncia inferior a 65535 Hz. O Timer 0 ser utilizado
para fazer a contagem de ciclos e o Timer 1 para definir o intervalo de
1s. Deve proceder-se ligao do sinal externo ao pino T0.

Algoritmo:

1- Configurar Timer 0 para operar como contador em modo 1 sem sinal externo de
gating.
2- Configurar Timer 1 para operar como temporizador em modo 1 sem sinal externo
de gating.
3- Inicializar registradores de contagem de Timer 0 a 0.
4- Utilizar Timer 1 para criar um a atraso de 1s. Colocar o valor 3CAFH nos
registradores de contagem do Timer 1 para criar um atraso de 50ms.
5- Esperar 1s. Parar a contagem do Timer 1. O valor contido nos registradores de
contagem do Timer 1 corresponde freqncia do sinal.

Cdigo:

t1_ovc SET R0 ; registrador para guardar a contagem de overflow.


freq_1 SET R1 ; byte inferior da freqncia.
freq_h SET R2 ; byte superior da freqncia.

ORG 0000H ; incio do programa principal.


SETB P3.4 ; ativao da funo T0.
MOV TMOD,#15H ; configura Timers 0 e 1.
MOV t1_ovc,#20 ; inicializa a varivel t1_ovc a 20.
MOV TH0,#0 ; inicializa TH0 = 0.
MOV TL0,#0 ; inicializa TH0 = 0
MOV TH1,#3CH ; valores iniciais de contagem para gerao de um
MOV TL1,#AFH ; atraso de 50ms.
CLR ET1 ; desativa a interrupo do Timer 1.
SETB TR1 ; inicia operao de Timer 1.
SETB TR0 ; inicia operao de Timer 0.
rep:
CLR TF1 ; TF1 = 0.
MOV TH1,#3CH
MOV TL1,#AFH
esp:
JNB TF1,esp ; espera ativao da flag TF1.
DJNZ t1_ovc,rep ; espera at que o atraso de 50ms seja repetido 20

; vezes.
MOV freq_l, TL0 ; guarda byte inferior do valor obtido.
MOV freq_h, TH0 ; guarda byte superior do valor obtido.
END

12.1.3- Timer 2
O Timer 2 um temporizador/contador de 16 bits, com aplicaes diferentes das
dos Timers 0 e 1 e que, para alm destes, integra alguns dos microcontroladores
da famlia MCS-51 (8052, entre outros). Este temporizador/contador pode ser
utilizado para temporizao ou contagem e possui trs modos de operao
distintos. Os registradores de contagem designam se TH2 e TL2 e existem ainda
dois registradores adicionais RCAP2L e RCAP2H, designados registradores de
captura. A seleo da funo e do modo de operao deste temporizador faz-se nos
registradores T2CON e T2MOD. T2CON enderevel bit a bit. T2MOD no
enderevel bit a bit. Os registradores T2CON e T2MOD so apresentados nas
figuras 30 e 31, respectivamente.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II

Figura 30- Registrador T2CON (endereo C8H).

TF2 a flag de overflow do Timer 2. Esta flag ativada na ocorrncia da


condio de overflow nos registradores de contagem do Timer 2. TF2 tem que ser
desativada por software. Se RCLK = 1 ou TCLK = 1, a flag nunca ativada. EXF2
a flag externa do Timer 2. EXF2 ativada quando feita uma captura ou recarga
devida ocorrncia de uma transio negativa no sinal aplicado no pino T2EX, se
EXEN2 = 1. RCLK a flag do relgio de recepo, quando igual a 1 faz com que a
porta srie utilize a condio de overflow do Timer 2 para relgio de recepo,
quando programada nos modos de operao 1 e 3. Se RCLK = 0 o relgio de recepo
da porta srie dado pelo overflow do Timer 1. TCLK a flag do relgio de
transmisso. Esta flag tem significado semelhante RCLK referindo-se
transmisso. EXEN2 a flag de ativao externa do Timer 2. Quando igual a 1
permite a captura ou recarga do valor dos registradores de contagem na
ocorrncia de uma transio negativa no pino T2EX (se o Timer 2 no estiver ser
utilizado como relgio da porta srie). EXEN = 0 faz com que as transies em
T2EX sejam ignoradas. TR2 o bit de controle do arranque/parada do Timer 2. TR2
= 1 provoca o arranque enquanto que TR2 = 0 faz a parada. C/T2 o bit de
seleo da funo do Timer 2. CP/RL2 a flag de captura/recarga. Quando a 1
provoca a captura dos valores contidos nos registradores de contagem para os
registradores de captura na ocorrncia de uma transio negativa no pino T2EX se
EXEN2 = 1. Se CP/RL2 = 0, feita a recarga do valor contido nos registradores
de captura para os registradores de contagem quando ocorre a condio de
overflow no temporizador ou quando ocorre uma transio negativa no pino T2EX se
EXEN2 = 1. Quando RCLK = 1 ou TCLK = 1 este bit ignorado e forada a recarga
quando ocorre overflow.

Figura 31- Registrador T2MOD (endereo C9H).

T2OE o bit de output enable do Timer 2 e DCEN o bit de ativao da contagem


decrescente. Os modos de operao do Timer 2 so definidos atravs da
programao dos bits referidos na tabela 18.

Tabela 18- Modos de operao do Timer 2.

No modo de auto-recarga, o Timer 2 pode fazer contagens crescentes ou


decrescentes. Se DCEN = 0, a contagem crescente e se EXEN2 = 0, a flag TF2
ativada por overflow do registrador de contagem. A condio de overflow provoca
ainda a carga do valor de 16 bits contido em RCAP2H e RCAP2L nos registradores
de contagem TH2 e TL2. Se EXEN2 = 1, a carga dos valores contidos em RCAP2H e
RCAP2L feita na ocorrncia da condio de overflow ou quando ocorre uma
transio de 1 para 0 na entrada externa T2EX. Esta transio ativa a flag EXF2.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II
A ativao de TF2 e/ ou EXF2 pode ser usada para gerar interrupes, se
necessrio. A figura 32 apresenta o diagrama de blocos do Timer 2 em modo de
auto-recarga para DCEN = 0.

Figura 32- Diagrama de blocos do Timer 2 no modo de auto-recarga para DCEN = 0.

No modo de auto-recarga, para DEN = 1, a contagem pode ser crescente ou


decrescente. Se o sinal aplicado no pino T2EX estiver no nvel lgico baixo, a
contagem crescente e a flag TF2 ativada quando ocorre overflow. Esta
condio provoca ainda a carga dos valores contidos em RCAP2H e RCAP2L nos
registradores TH2 e TL2, respectivamente. Se o sinal aplicado no pino T2EX
estiver no nvel lgico alto, a contagem decrescente. A condio de underflow
ocorre quando o valor nos registradores de contagem igualar o valor contido nos
registradores RCAP2H e RCAP2L. Esta condio ativa a flag de TF2 e provoca a
carga do valor 0FFFFH nos registradores de contagem TH2 e TL2. A figura 33
apresenta o diagrama de blocos do Timer 2 no modo de captura para DCEN = 1.

Figura 33- Diagrama de blocos do Timer 2 em modo de auto recarga para DCEN = 1.

No modo de captura, se EXEN2 = 0, o Timer 2 comporta-se como um temporizador de


16 bits com ativao da flag TF2 na ocorrncia da condio de overflow. Se EXEN2
= 0, o Timer 2 comporta-se como descrito na situao anterior. A ocorrncia uma
transio do nvel lgico alto para o nvel lgico baixo na entrada externa T2EX
provoca a captura do valor contido nos registradores de contagem TH2 e TL2 para
os registradores de captura RCAP2H e RCAP2L, respectivamente. A transio
referida ativa a flag T2EX do registrador T2CON. A ativao das flags TF2 e EXF2
pode ser utilizada para gerar pedidos de interrupo. A figura 34 apresenta o
diagrama de blocos do Timer 2 no modo de captura.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II

Figura 34- Diagrama de blocos do Timer 2 em modo de captura.

No modo para gerao de taxas de transmisso a ativao de RCLK ou TCLK fora a


porta srie a utilizar a flag de overflow do Timer 2 para relgio de recepo ou
transmisso, respectivamente, quando programada nos modos 1 ou 3. Nos casos dos
bits RCLK e/ou TCLK estarem zero ser o overflow do Timer 1 a determinar a
taxa da recepo e/ou transmisso da porta srie. A figura 35 apresenta o
diagrama de blocos do Timer 2 no modo de gerao de taxas de transmisso ou
recepo.

Figura 35- Digrama de blocos do Timer 2 em modo de gerao de taxas de


transmisso.

Sada de relgio programvel


O Timer 2 pode ser utilizado para gerar um sinal de relgio com duty-cycle de
50% com freqncia compreendida entre 61HZ e 4MHz (para uma freqncia de
operao de 16MHz). Esta funo corresponde funo alternativa do pino P1.0
(8052). A programao do Timer 2 como gerador de relgio faz-se colocando C/T2 =
0 e T2OE = 1. O incio da operao do temporizador faz-se atravs de TR2. A
freqncia do sinal gerado depende da freqncia de oscilao do
microcontrolador e do valor de reload dos registradores de captura RCAP2H e
RCAP2L, sendo a relao entre ambos dados por:

FCLOCK = fOSC/[4*(65536 RCAP2H,RCAP2L)]

em que fCLOCK representa a freqncia do sinal de relgio e fOSC representa a


freqncia do oscilador do microcontrolador. Neste modo no gerada nenhuma
interrupo. possvel utilizar simultaneamente o Timer 2 para gerador de taxa

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II

de transmisso e gerador de relgio, mas a freqncia dos dois tipos de operao


no independente.

12.1.4- Aplicaes do Timer 2


O Timer 2 pode ser utilizado em todas as aplicaes descritas para os Timers 0 e
1 e ainda para medio do perodo de um sinal desconhecido. O modo de captura
pode utilizar-se para recolha do tempo de chegada de determinado evento, gerao
de interrupes.

Medio do perodo de um sinal desconhecido


A medio feita capturando dois flancos descendentes consecutivos do sinal,
como se pode ver na figura 36.

Figura 36- Medio do perodo de um sinal.

A diferena entre os dois valores capturados determina o perodo em ciclos


mquina. Para sinais muito lentos, o overflow do Timer 2 pode ocorrer vrias
vezes antes de se verificar a segunda transio sendo necessrio contar o nmero
de ocorrncias da condio de overflow para determinar corretamente o perodo do
sinal. O clculo do perodo faz-se utilizando as expresses seguintes:

Se flanco2 flanco1 perodo = nOVF * 216 + dif


Se flanco2 < flanco1 (nOVF -1) * 216 + dif

em que flanco1 representa o tempo capturado quando ocorreu a primeiro transio,


flanco 2 representa o tempo capturado quando ocorreu a segunda transio, nOVF
representa o nmero de ocorrncias de overflow entre a deteco dos dois flancos
e dif= igual a flanco 2 flanco 1. O Timer 2 deve ser programado do seguinte
modo:

1- Limpar TF2 e EXF2 (registrador T2CON).


2- Limpar RCLK e TCLK.
3- Colocar EXEN2 a 1 para permitir a captura dos valores captura.
4- Limpar C/T2 para escolher a funo de temporizador.
5- Colocar CP/RL2 a 1 para permitir a captura no flanco descendente da transio
do sinal no pino T2EX.
6- Colocar TR2 a 1 para iniciar a operao do Timer 2.

O programa principal deve esperar pela ocorrncia da primeira transio e


colocar o valor dos registradores de contagem a 0. Depois deve esperar pela
ocorrncia da segunda transio e de seguida efetuar os clculos descritos.
Paralelamente deve implementar-se uma rotina de servio interrupo por
overflow do Timer 2 que incremente a varivel nOVF.

Contagem de eventos durante um dado perodo de tempo


Se o evento se manifestar atravs da alterao do nvel lgico de um dado sinal
pode-se utilizar o algoritmo seguinte para proceder contagem de evento, depois
de se ter procedido ligao do sinal ao pino T2EX.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II
1- Programar o Timer 2 para o modo de captura.
2- Programar outro Timer para gerar o intervalo de medio.
3- Contar o nmero de vezes que a flag TF2 ativada durante o intervalo
referido e limpar a flag de cada vez que ela ativada.

Gerao de sinal de relgio


Em seguida apresenta-se um exemplo de aplicao do Timer 2 para gerao de um
sinal de relgio.

1- Utilize o Timer 2 para gerao de um sinal de relgio com duty-cycle de


50% com freqncia igual a 4KHz. Assuma que fOSC = 12KHz.

Utilizando a equao dada calcula-se o valor a colocar nos registradores RCAP2H


e RCAP2L. Para f = 4KHz o valor obtido para os registradores de captura FD12H.

MOV T2CON,#04H ; seleciona o modo e ativa o Timer 2.


MOV T2MOD,#02H ; ativa a sada do Timer 2.
MOV RCAP2H,#FDH
MOV RCAP2L,#12H
SETB P1.0 ; ativa funo alternativa de P1.0.

13- Porta srie

A famlia MCS-51 dispe de um bloco de hardware que implementa uma ligao srie
com o exterior. Esse bloco de hardware designa-se UART (Universal Asynchronous
Receiver-Transmitter) e faz a transferncia de um byte de informao de cada
vez. A trama enviada constituda por um start bit, os bits de dados e um stop
bit. A ligao srie fornecida full duplex, ou seja, permite transmisso e
recepo simultneas. A UART da famlia MCS-51 permite ainda que seja iniciada a
recepo de um segundo byte antes de o byte recebido anteriormente ter sido
lido. A interface com este bloco de hardware faz-se atravs do um nico
registrador designado SBUF que, dependendo do contexto de utilizao permite o
acesso ao registrador de transmisso ou ao registrador de recepo da porta
srie. O acesso fsico aos dois registradores feito pelo hardware dependendo
do tipo de operao executada sobre SBUF. Se a operao for de leitura
acessado o registrador de recepo, caso a operao seja de escrita acessado o
registrador de transmisso. SCON o registrador de programao e estado Sereia
da porta srie. Este registrador enderevel bit a bit. A sua estrutura
apresentada na figura 37.

Figura 37- Registrador SCON (endereo 98H).

Os bits SM0 e SM1 servem para fazer a seleo do modo de operao da porta srie
de acordo com a tabela 19.

SM0 SM1 Modo Descrio Taxa de Transmisso


0 0 0 Registrador de deslocamento FOSC/12
0 1 1 UART 8 bits Varivel
1 0 2 UART 9 bits FOSC/64 ou FOSC/32
1 1 3 UART 9 bits Varivel

Tabela 19- Modos de operao da porta srie.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II
O bit SM2 permite a comunicao multiprocessador nos modos 2 e 3. Nos modos 2 e
3 se SM2 = 1, RI no ativado se o nono bit de dados recebido for igual a 0. No
modo 1 se SM2 = 1, RI s ativado se o stop bit recebido for vlido. No modo 0
SM2 deve ser igual a 0. O bit REN permite ativar a recepo de bytes. REN = 1
ativa recepo. Se REN = 0 a recepo de informao no permitida. TB8 o
nono bit de dados a ser transmitido nos modos 2 e 3. RB8 o nono bit de dados
recebido nos modos 2 e 3. No modo 1, se SM2 = 0, RB8 representa o stop bit
recebido. No modo 0 no utilizado. TI a flag de transmisso. Esta flag
colocada a um no incio do envio do stop bit indicando que a UART est pronta
para uma nova transmisso. RI a flag de recepo. Esta flag ativada depois
de a informao recebida ter sido colocada no registrador de recepo, indicando
que a informao est disponvel para leitura.

13.1- Modos de operao


Como referido na tabela 19, existem 4 modos de operao possveis para a porta
srie. Em todos os modos a transmisso iniciada por qualquer instruo que
utilize o registrador SBUF como destino.
A recepo iniciada pela condio RI = 0 e REN = 1, para o modo 0 e pela
chegada de um start bit se REN = 1, para os outros modos de operao.

13.1.1- Modo de operao 0


Neste modo de operao a informao entra e sai atravs do pino RXD. O pino TXD
apresenta o relgio de deslocamento. So transmitidos/recebidos 8 bits, sendo o
bit menos significativo o primeiro a ser enviado (ou recebido). A taxa de
transmisso fixa e igual a (1/12) * fOSC. Sendo fOSC a freqncia do oscilador
do microcontrolador.

13.1.2- Modo de operao 1


Neste modo so transmitidos, atravs do pino TXD, ou recebidos, atravs do pino
RXD, 10 bits: 1 start bit (0), 8 bits de dados, 1 stop bit (1). Na recepo o
stop bit colocado no bit RB8 do registrador SCON. A taxa de transmisso
varivel e determinada pela taxa de overflow do Timer 1, do Timer 2, ou de
ambos.

13.1.3- Modo de operao 2


No modo 2 a informao transmitida atravs do pino TXD e recebida atravs do
pino RXD. A trama composta por 11 bits: 1 start bit (0), 8 bits de dados, 1
nono bit de dados programvel (TB8) e 1 stop bit (1). O bit TB8 pode ser
colocado a 0 ou a 1, podendo ser-lhe atribudo o valor do bit de paridade P do
registrador PSW. Na recepo o nono bit de dados recebido colocado em RB8 e o
stop bit ignorado.
Neste modo a taxa de transmisso fixa podendo ser igual a 1/32 * fOSC ou a 1/64
* fOSC.

13.1.4- Modo de operao 3


Este modo essencialmente igual ao modo 2 podendo a taxa de transmisso ser
programvel. So transmitidos, atravs do pino TXD, ou recebidos, atravs do
pino RXD 11 bits: 1 start bit (0), 8 bits de dados, 1 nono bit de dados
programvel e 1 stop bit (1). A taxa de transmisso controlada pela taxa de
overflow do Timer 1 ou do Timer 2 podendo ser projetada para o valor desejado.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II

13.2- Taxas de transmisso


No modo o a taxa de transmisso fixa e igual fOSC /12. No modo 2 a taxa de
transmisso depende do valor do bit SMOD do registrador PCON. O valor da taxa de
transmisso dado pela expresso seguinte:

Taxa de transmisso no modo 2 = 2SMOD * (fOSC/64).

Nos modos 1 e 3 a taxa de transmisso determinada pela taxa de overflow do


Timer 1 (ou do Timer 2) e pelo valor do bit SMOD. A taxa de transmisso dada
pela expresso seguinte:

Taxa de transmisso nos modos 1 e 3 = 2SMOD * (taxa de overflow do Timer 1).

13.2.1- Utilizao do Timer 1 para gerar a taxa de transmisso


Na maioria das aplicaes para gerao de taxa de transmisso utilizado o modo
de auto-recarga para o temporizador. Caso se utilize esse modo expresso que
permite a determinao do valor a colocar no registrador de contagem do Timer 1
a seguinte:

Taxa de transmisso dos modos 1 e 3 = (2SMOD/32) * (fOSC/(12*(256-TH1))

Nesta aplicao a interrupo do Timer 1 deve ser desligada. No caso de se


pretenderem taxas de transmisso muito baixas pode-se ativar a interrupo do
Timer 1 e configur-lo no modo 1, usando a interrupo para fazer a recarga do
valor inicial de contagem por software. A tabela 20 apresenta os valores de
programao do Timer 1 para o conjunto de taxas de transmisso mais utilizadas
em conjunto com a interface RS-232.

Tabela 20- Valores comuns de taxas de transmisso geradas pelo Timer 1.

13.2.2- Utilizao do Timer 2 para gerar a taxa de transmisso


A programao do Timer 2 deve ser feita colocando os bits TCLK e RCLK do
registrador T2CON a 1. A taxa de transmisso pode ser diferente da taxa de
recepo. O Timer 2 pode ser configurado como contador ou temporizador sendo
normalmente configurado como temporizador. Nesta aplicao a flag TF2 no
ativada e o pino T2EX no tem ligao com o Timer 2 podendo ser usado para gerar
uma interrupo externa. A programao dos registradores de contagem do Timer 2
faz-se recorrendo seguinte expresso:

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II
Taxa de transmisso dos modos 1 e 3 = fOSC/[32 *(65536- (RCAP2H,RCAP2L)]

em que (RCAP2H,RCAP2L) o valor contido nos registradores RACP2H e RCAP2L


(total de 16 bits). A tabela 21 apresenta os valores de programao do Timer 2
para o conjunto de taxas de transmisso mais utilizadas em conjunto com a
interface RS-232.

Tabela 21- Valores comuns de taxas de transmisso geradas pelo Timer 2.

Na escolha do Timer 1 ou 2 para a gerao de taxas de transmisso necessrio


ter em conta a preciso de cada um deles. Por exemplo, para gerar 9,6 KHz o
Timer 1 mais preciso que o Timer 2.

13.3- Comunicaes multiprocessador


Os modos de operao 2 e 3 da porta srie destinam-se a comunicaes
multiprocessador. O nono bit de dados recebido colocado em RB8 e a porta pode
ser programada de modo que se RB8 = 1 seja gerada uma interrupo. A programao
faz-se colocando o bit SM2 do registrador SCON a 1. O bit SM2 no afeta o modo 0
e no modo 1 pode ser utilizado para verificar a validade do stop bit.

13.4- Aplicaes da porta srie


De seguida sero apresentadas algumas aplicaes para cada modo da porta srie.

13.4.1- Aplicaes do modo 0


O modo 0 utiliza-se para a comunicao com dispositivos perifricos que tenham
interfaces srie.

13.4.2- Aplicaes do modo 1


Este modo utiliza-se para comunicao com a interface RS-232. Como as
polaridades eltricas e os nveis de tenso diferem da porta srie para a
interface RS-232 somos necessrios um circuito que proceda converso dos
nveis de tenso. Esse circuito, por exemplo, a MAX232 da MAXIM, deve ser
colocada entre a porta srie do microcontrolador e a ligao RS-232 do PC. Em
seguida apresentam-se alguns exemplos de programao da porta srie para operar
neste modo:

1 Escreva uma rotina que inicializa a porta srie para operar com os
parmetros seguintes: taxa de transmisso de 9600 bits/s, 1 start bit, oito bits
de dados e 1 stop bit, permisso para receber e transmitir e interrupes
inativas. Considere que a freqncia do oscilador do microcontrolador de
11.059 MHz.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II
Inic:
CLR IE.4 ; desativa a interrupo da porta srie.
ANL TMOD,#0FH ; programao do Timer 1 para gerar a
ORL TMOD,#20H ; taxa de transmisso desejada.
MOV TL1,#FDH ; valor de recarga.
MOV TH1,#FDH;
ANL PCON,#7FH ; SMOD = 0;
MOV SCON,#50H ; inicializao da porta srie.
RET

2 - Escreva uma rotina que leia um caractere da porta srie utilizando o mtodo
de polling. Assuma que a porta foi inicializada como indicado no exemplo
anterior.

get_char:
JNB RI, get_char ; verificao (poll) da flag RI.
MOV A,SBUF ; leitura do caractere.
CLR RI
RET

3 Escrever uma rotina que envie pela porta srie o caractere contido no
acumulador. Assuma que a porta foi inicializada como indicado no exemplo
anterior.

put_char:
MOV SBUF,A ;envio do caractere.
esp:
JNB TI,esp ; verificao da flag TI.
CLR TI
RET

4 Escrever uma rotina que envie uma string terminada com um caractere nulo
pela porta srie. O endereo de incio da string fornecido pelo registrador
DTPR.

put_string:
MOVX A,@DPTR ; leitura do caractere.
JZ exit ; teste do fim da string.
LCALL put_char ; envia caractere.
INC DPTR ; prximo caractere.
AJMP put_string
exit:
RET

5 Escrever uma sub-rotina que receba uma string atravs da porta srie. O
endereo da posio de memria onde a string deve ser armazenada dado pelo
registrador DPTR. A string terminada pelo caractere carriage return (CR).

CR EQU 0DH ; cdigo ASCII do caractere CR.


get_string:
LCALL get_char ; recebe caractere
CJNE A,#CR,go ; teste do fim da string?
MOV A,#0 ; termina a string com
MOVX @DPTR,A ; o caractere null.
RET
go:
MOVX @DPTR,A ;guarda o caractere recebido.
INC DPTR
AJMP get_string

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II
O mtodo de polling s deve ser usado quando o microcontrolador no tem outras
tarefas para executar. A outra abordagem possvel utiliza interrupes e ser
analisada posteriormente.

13.4.3- Aplicao dos modos 2 e 3


Estes modos utilizam-se para comunicao entre vrios microcontroladores. Nestes
sistemas um dos microcontroladores funciona como unidade de controle e
designado master, os restantes designam-se slaves. O master comanda o
funcionamento de todo o sistema. Cada slave possui um endereo nico normalmente
de 8 bits. O endereamento e a informao so enviados pelo mesmo canal de
comunicao e torna-se necessrio distinguir cada um dos casos. A distino faz-
se recorrendo ao nono bit de dados da trama enviada para a porta srie. Se esse
bit for igual a 1 o caractere deve ser considerado como um endereo, se for
igual a 0 o caractere deve ser considerado como informao. A comunicao entre
processadores deve seguir um protocolo bem definido.
Consideremos um sistema multiprocessador em que o master pretende enviar
informao para um dos vrios processadores slave. O algoritmo a seguir segue os
seguintes passos:

Para o master:

1- Primeiro enviado um byte de endereamento que identifica um dos vrios


slaves.
2- De seguida enviada a informao.

Para os slaves:

1- Quando enviado um byte de endereamento gera-se uma interrupo em cada um


dos slaves que analisam o byte de endereo.
2- Se o endereo recebido corresponde ao endereo do slave, esse slave coloca
SM2 a 0 e prepara-se para receber a informao que se segue.
3- Os slaves no endereados no alteram o valor de SM2 e ignoram os dados
seguintes.

14- Interrupes
Entende-se por interrupes acontecimentos que necessitam que o processador
interrompa o fluxo normal do programa e execute determinado servio em resposta
ao acontecimento.
As interrupes podem classificar-se quanto sua origem: internas ou externas,
e quanto possibilidade de poderem ser ignoradas: mascarveis ou no
mascarveis.
As interrupes internas so geradas dentro do circuito integrado, por exemplo,
uma interrupo por ocorrncia de overflow num temporizador. Por contraponto as
interrupes externas so geradas fora do circuito integrado e sinalizadas
atravs de um sinal ligado a um pino especfico do microcontrolador.
As interrupes dizem-se mascarveis quando podem ser ignoradas pelo
processador. Neste caso possvel fazer a programao, atravs do valor de bits
especficos contidos num registrador prprio, de quais as interrupes que devem
(ou no) ser mascaradas.
As interrupes que no podem ser ignoradas pelo processador so designadas
interrupes no mascarveis. As interrupes utilizam-se para coordenao de
atividades E/S e em aplicaes crticas em termos temporais. O servio
interrupo prestado atravs da execuo de uma rotina especfica designada
rotina de servio da interrupo. Essa rotina deve ser colocada num endereo
especfico designado vetor de interrupo. A cada interrupo pode ser atribudo
um nvel de prioridade que, no caso de ocorrer mais do que uma interrupo
simultaneamente serve para decidir qual das interrupes atendido primeiro.
Normalmente a prioridades mais elevadas corresponde um servio mais rpido.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II
A programao de um sistema utilizando interrupes implica, alm da escrita do
programa principal, a escrita da rotina de servio interrupo, a
inicializao da tabela de vetores de interrupo, que no caso dos vetores serem
fixos no necessria e a ativao do servio da interrupo atravs do bit de
enable correspondente no registrador prprio. importante referir que o servio
de interrupes implica algum overhead devido ao processo de comutao entre a
operao normal e o servio da interrupo.

14.1- Interrupes do MCS51


O microcontrolador 8051 possui cinco fontes de interrupo distintas: duas
interrupes externas, associadas aos sinais dos pinos INT0 e INT1, duas
interrupes por overflow dos temporizadores/contadores, associadas s flags TF0
e TF1 e uma interrupo associada porta srie. As fontes de interrupo
referidas so apresentadas na figura 38.

Figura 38- Fontes de interrupo do 8051.

Na famlia MCS-51 todas as interrupes so mascarveis. As interrupes podem


ser individualmente ativadas/desativadas recorrendo programao do registrador
IE. Este registrador enderevel bit a bit. Qualquer um dos bits do
registrador IE, quando igual a 1, implica a ativao da interrupo respectiva.
Se o bit estiver a 0 a interrupo associada est desativada.

Figura 39- Registrador IE (endereo A8H).

O bit EA desativa todas as interrupes. Se este bit estiver ativo, a ativao


de cada uma das interrupes depende do seu bit de ativao individual. O bit EA
utiliza-se para fazer a desativao global das interrupes. O bit ES controla
a interrupo da porta srie. Os bits ET1 e ET0 controlam as interrupes do
Timer 1 e 0, respectivamente e os bits EX1 e EX0 controlam as interrupes
externas 1 e 0, respectivamente. A famlia MCS-51 permite definir dois nveis de
prioridade, que podem ser atribudos individualmente a cada uma das interrupes
atravs do registrador IP. Este registrador enderevel bit a bit. A colocao
de um destes bits a 1 implica a atribuio do nvel de prioridade alta, enquanto
que a sua colocao a 0 implica a atribuio do nvel de prioridade baixo.

Figura 40- Registrador IP (endereo B8H).

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II
PS o bit de prioridade da interrupo da porta srie. PT1 e PT0 so os bits de
prioridade das interrupes dos Timers 1 e 0, respectivamente. PX1 e PX0 so os
bits de prioridade das interrupes externas 1 e 0. A estrutura de interrupes
da famlia MCS-51 permite que todas as flags que geram interrupes possam ser
colocadas a 1 ou a 0 por software, gerando a interrupo respectiva ou
cancelando-a.

14.1.1- Interrupes externas


As interrupes externas associadas aos pinos /INT0 e /INT1 podem ser sensveis
ao nvel do sinal (nvel baixo), ou sua transio (flanco descendente). A
programao do tipo de acontecimento que provoca a interrupo feita no
registrador TCON cuja composio se repete na figura 41.

Figura 41- Registrador TCON.

Apenas sero referidos neste captulo os bits associados s interrupes. Os


bits associados ao controle dos Timers 0 e 1 j foram referidos anteriormente.
TF1 e TF0 so as flags de overflow do Timer 1 e 0, respectivamente. Estas flags
so ativadas por hardware e so tambm desativadas por hardware quando o
processador salta para a rotina de servio de interrupo respectiva. No caso de
no estarem sendo utilizada a interrupo as flags no so desativadas
automaticamente sendo necessrio faz-lo por software. IE1 e IE0 so as flags de
flanco das interrupes externas 1 e 0, respectivamente. Estas flags so
ativadas por hardware quando detectado um flanco descendente no sinal
correspondente. IE1 e IE0 so desativadas quando a interrupo respectiva
processada. IT1 e IT0 so os bits de controle do tipo das interrupes externas
1 e 0. Estes bits so programados por software para especificar que a
interrupo externa ativa no flanco negativo (1) ou no nvel baixo do sinal
(0). No caso da interrupo ser sensvel ocorrncia de um flanco, a flag
associada desativado por hardware quando a interrupo processada. Caso a
interrupo seja sensvel ao nvel do sinal a fonte de sinal que controla a
flag. Como os pinos associados s interrupes externas so amostrados uma vez
em cada ciclo mquina, uma entrada baixa ou alta deve manter-se pelo menos por
12 perodos do oscilador para garantir que detectada. Se a interrupo for
ativada por um flanco, o sinal externo tem manter o nvel alto durante pelo
menos um ciclo mquina e depois manter o nvel baixo pelo menos durante um ciclo
mquina para garantir que a transio detectada. No caso de a interrupo ser
ativado por nvel, o sinal externo tem que manter o nvel baixo at que o pedido
de interrupo seja gerado. Depois esse sinal tem que ser desativado antes que a
rotina de servio interrupo termine para que no seja gerado um novo pedido
de interrupo.

14.1.2- Interrupes associadas aos Timers 0 e 1


As interrupes associadas aos Timers 0 e 1 so geradas pelas flags TF0 e TF1
que so ativadas quando ocorre overflow nos Timers 0 e 1, respectivamente.
A flag que gerou a interrupo desativada por hardware quando a interrupo
servida.

14.1.3- Interrupo da porta srie


Esta interrupo resulta do OR lgico das flags RI e TI, o que significa que a
rotina de servio interrupo tem que determinar qual das flags deu origem

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II

interrupo. Nenhuma das flags desativada por hardware quando a interrupo


servida e por isso necessrio proceder sua desativao por software dentro
da rotina de servio interrupo.

14.1.4- Estrutura de prioridades


Como j foi referido existem dois nveis de prioridade: nvel alto e nvel
baixo. Uma interrupo de baixa prioridade s pode ser interrompida por uma
interrupo de alta prioridade. Uma interrupo de alta prioridade no pode ser
interrompida por nenhuma outra. Se dois pedidos de interrupo forem recebidos
simultaneamente, o pedido de prioridade mais elevada servido primeiro. Se
forem recebidos simultaneamente pedidos de interrupo com o mesmo nvel de
prioridade, a interrupo servida depende da seqncia de polling interna pr-
definida, de acordo com a tabela 22.

Tabela 22- Seqncia de polling.

14.1.5- Tratamento das interrupes


As flags de interrupo so amostradas no estado S5P2 de cada ciclo mquina. O
processo de polling executado no ciclo mquina seguinte e o sistema de
interrupes gera uma instruo de salto para a rotina de servio interrupo
apropriada. O pedido de interrupo servido atravs da execuo da instruo
de salto, gerada por hardware. Essa instruo coloca o contedo do registrador
Program Counter (mas no o do registrador Program Status Word) na stack e
carrega no registrador Program Counter o vetor da interrupo a ser atendida. A
instruo de salto gerada por hardware pode ser bloqueada por uma destas
condies: estar sendo atendido corrente no ser o ciclo final na execuo da
instruo em curso (para assegurar a instruo em curso ser executada at ao
fim) ou a instruo em progresso ser RETI ou qualquer ciclo de escrita para o
registrador IE e IP. Os vetores de interrupo so fixos e os seus valores so
apresentados na tabela 23.

Tabela 23- Endereos dos vetores de interrupo.

Depois de executado o salto para o vetor de interrupo, a execuo prossegue


at ser encontrada a instruo RETI. Esta instruo informa o processador do fim
da rotina de servio interrupo e procede ao pop dos dois bytes do topo da
stack que so recarregados no registrador Program Counter. A execuo do
programa principal continua a partir do ponto em que tinha sido interrompida. O
fato de uma flag de interrupo ter estado ativa, mas no ter sido servida no
memorizado, ou seja, cada ciclo de polling independente do anterior.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II

14.1.6- Tempo de resposta


No caso de uma interrupo externa a latncia mnima de trs ciclos mquina
desde a ativao da interrupo at a execuo da primeira instruo da rotina
de servio interrupo, sendo um ciclo para polling e dois para execuo da
chamada da rotina de servio interrupo. O tempo de resposta ser mais lento
se o pedido for bloqueado por alguma das condies j referidas. O tempo mximo
de espera depende das interrupes ativas e do tamanho das suas rotinas de
servio interrupo.

14.1.7- Operao passo-a-passo


A estrutura de interrupes do MCS-51 permite a execuo passo-a-passo do
programa, recorrendo caracterstica de um pedido de interrupo no ser
atendido at que pelo menos uma instruo do programa principal seja executada a
seguir execuo de RETI. De seguida apresentado um exemplo deste tipo de
aplicao.

Exemplo:

Programa-se a interrupo externa 0 para ser ativada no flanco negativo do


sinal. Utiliza-se a rotina de servio interrupo seguinte:

INT0 EQU P3.2

JNB INT0,$ ; espera que o sinal no pino INT0 esteja no nvel lgico
; alto.
JB INT0,$ ; espera que o sinal no pino INT0 esteja no nvel lgico
; baixo.
RETI ; volta ao programa principal e executa uma instruo.

Se o sinal ligado ao pino INT0 estiver normalmente no nvel lgico baixo, o


processador executa a rotina de servio interrupo at que o valor de INT0
seja levado ao nvel lgico alto e devolvido ao nvel lgico baixo novamente.
Nesse momento executada a instruo RETI e executada uma instruo do
programa principal. Em seguida gerado um novo pedido de interrupo
executada novamente a rotina de servio interrupo externa INT0.
A programao descrita permite que seja executado um passo do programa principal
cada vez que o sinal no pino INT0 ativado atravs de um pulso.

14.1.8- Programao de interrupes no MCS51


A arquitetura da famlia MCS-51 atribui apenas oito bytes a cada rotina de
servio interrupo. Quando 8 bytes no so suficientes para a rotina
desejada, utiliza-se uma instruo de JUMP no vetor de interrupo e coloca-se o
cdigo da rotina de servio interrupo noutra posio de memria.
A programao de interrupes implica a escrita da rotina de servio
interrupo, seguindo o modelo da figura 42, e a ativao os bits de enable das
interrupes desejadas.

nome_rotina: ...
...
...
RETI

Figura 42- Estrutura da rotina de servio interrupo.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II

14.1.9- Aplicao das interrupes


Como foram referidas na introduo deste captulo as interrupes so utilizadas
para a coordenao de atividades I/O e em aplicaes crticas em termos
temporais. Na parte final deste captulo so apresentados alguns exemplos de
aplicao.

Exemplos:

1 Escreva uma seqncia de instrues que programe a interrupo externa 1 com


prioridade alta e todas as outras interrupes com prioridade baixa.

MOV IP,#04H

2 Escrever uma seqncia de instrues que ative a interrupo externa INT1


com prioridade alta, inicialize a varivel int_cnt com o valor 100 e escreva a
rotina de servio interrupo para INT1. A rotina de servio interrupo
decrementa a varivel int_cnt e retorna. O programa principal fica em ciclo
fechado at que int_cnt seja igual a 0 e desativa a interrupo INT1.

int_cnt SET R2

ORG 00H ; endereo de incio do programa principal


LJMP inic
ORG 0013H ; endereo de incio de rotina de servio
; interrupo INT1.
int1:
DEC int_cnt
RETI
inic:
MOV int_cnt, #100 ; inicialize int_cnt.
MOV IP, #04H ; programa as prioridades.
MOV IE, #84H ; ativa a interrupo INT1.
ciclo:
MOV A, int_cnt
JNZ ciclo ; espera que int_cnt = 0.
MOV IE,#80H ; desativa a interrupo INT1.

3 Escrever uma rotina para envio e recepo de caracteres pela porta srie
utilizando a interrupo adequada.

Algoritmo da rotina de servio interrupo:

1- Verifica a causa da interrupo.


2- Se for por transmisso, transmite o byte seguinte.
3- Se for por recepo, guarda o byte recebido.

Rotina de servio interrupo:

ORG 23H ; endereo de incio da rotina de servio


; interrupo da porta srie.
LJUMP int_serie
ORG 0040H
int_serie:
JNB TI, ver_RI ; pode transmitir?
MOV SBUF, A ; transmite.
CLR TI
ver_RI:
JNB RI, sair ; byte para receber?
MOV A,SBUF ; recebe.
CLR RI

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II
sair:
RETI

4 Escrever uma rotina que leia ou escreva uma string atravs da porta srie,
utilizando interrupes. O fim de string recebida dado pelo caractere CR e a
string a enviar termina com o caractere nulo. A rotina anterior tem que ser
alterada para permitir o armazenamento dos caracteres em endereos consecutivo.
Assume-se que a memria externa utilizada para guardar as strings (recebidas
ou a enviar). Considera-se que o endereo da posio inicial onde deve ser
colocada a string recebida est guardado nos registradores R6 e R7 (sendo R6 o
byte mais significativo) e que o endereo inicial da string a enviar est
contido no registrador DPTR. necessrio incrementar o ponteiro de cada uma dos
strings depois da recepo/envio de cada caractere.

Rotina de servio interrupo:


ORG 0023H
LJMP ser_ISR
ORG 0040H
ser_ISR:
JNB TI, ver_RI
CLR TI
MOV SBUF, A ; envia caractere em A.
MOV A, R7
ADD A, #1 ; adiciona 1 ao ponteiro da string a enviar.
MOV R7, A
MOV A, R6
ADDC A, #0 ; adio com carry, para atualizao
; do ponteiro.
MOV R6, A
ver_RI:
JNB RI, sair
CLR RI
MOV A,SBUF ; recebe caractere.
MOVX @DPTR, A
INC DPTR ; atualizao do ponteiro para a string recebida
sair:
RETI

Programa principal para proceder recepo de uma string:

CR EQU 0DH ; cdigo ASCII do caractere CR.


recstr:
MOV DPTR,#in_buf ; inicialize DPTR com o valor do endereo a
; partir do qual deve ser colocada a string.
ORL IE, #90H ; enable da interrupo da porta srie.
CLR A
rd:
CJNE A, #CR, rd ; espera que seja recebido o caractere CR.
MOVX @DPTR,#0 ; termina a string.
END

Programa principal para proceder ao envio de uma string:

envstr:
PUSH DPH ; guarda o valor atual do registrador DPTR,
PUSH DPL ; parte alta e parte baixa.
ORL IE, #90H ; enable interrupo da porta srie.
es:
MOV DPH, R6 ; copia o valor do endereo da string
MOV DPL, R7 ; para o registrador DPTR.
MOVX A, @DPTR ; copia o caractere a enviar para A.
TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51
Colgio Tcnico de Campinas Cotuca Disciplina - TDM II
JZ sair ; continua se caractere 0.
SJMP es
Sair:
POP DPL ; restitui o valor inicial do registrador DPTR.
POP DPH
END

15- Modos de poupana de energia da famlia MCS-51


Os modos de poupana de energia utilizam-se em aplicaes em que o consumo de
potncia crtico. Existem dois modos de poupana de energia: o modo idle e o
modo power down. No modo idle o oscilador no desligado e os blocos de servio
de interrupes, porta srie e temporizadores continuam a receber o sinal de
relgio. O sinal de relgio desligado do processador. No modo power down o
oscilador parado. A figura 42 apresenta os circuitos associados aos modos de
poupana de energia.

Figura 42- Circuitos associados aos modos de poupana de energia.

A ativao dos modos de poupana de energia faz-se atravs dos bits IDL e PD do
registrador PCON. A colocao do bit a 1 implica a ativao do modo de poupana
de energia respectivo. A figura 43 apresenta o esquema do registrador PCON. Este
registrador no enderevel bit a bit.

Figura 43- Registrador PCON (endereo 87H).

SMOD o bit de duplicao da taxa de transmisso. Este bit ativo a 1 e


utiliza-se em conjunto com o Timer 1 para gerar a taxa de transmisso da porta
srie, quando esta utilizada nos modos 1, 2 ou 3. GF1 e GF0 so flags de uso
genrico. PD e IDL so os bits de programao dos modos power down e idle,
respectivamente. Estes bits so ativos a 1. No caso de os bits PD e IDL serem
colocado simultaneamente a 1, o microcontrolador entra no modo power down porque
este modo tem precedncia sobre o modo idle.

15.1- Modo Idle


Quando o bit IDL colocado a 1, a instruo que estiver a ser executada
terminada e o microcontrolador entra no modo idle. Neste modo o sinal de relgio
desligado do CPU, mas no dos blocos de servio de interrupes, dos
temporizadores e da porta srie. O estado do CPU mantido na sua totalidade
mantendo todos os registradores o valor que tinham quando da entrada no modo

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II
idle. Os pinos das portas mantm os valores lgicos que tinham quando o modo
idle foi ativado. O sinal ALE e PSEN ficam no valor lgico alto.
O modo idle pode ser abortado de dois modos: atravs da ativao de qualquer uma
das interrupes habilitadas ou atravs de um reset por hardware.
A ativao atravs de uma interrupo fora a limpeza o bit IDL. A interrupo
servida e depois da execuo da instruo RETI executada a instruo a seguir
ltima instruo executada antes da entrada no modo idle.
Na ativao por reset por hardware, o sinal RST fora a limpeza do bit IDL de
modo assncrono e direto. O CPU continua a execuo a partir do ponto em que
tinha terminado quando da entrada no modo idle. Para que no ocorram valores de
sada inesperados nas portas de I/O, a instruo a seguinte que evoca o modo
idle no deve escrever nas portas nem na memria de dados externa.

15.2- Modo power down


A instruo que ativa o modo power down a ltima a ser executada antes da
entrada no modo selecionado. Neste modo o oscilador parado e consequentemente
todas as funes do microcontrolador so paradas. O estado da RAM interna e dos
registradores com funes especiais mantido. Os pinos de sada das portas
mantm o valor contido nos registradores respectivos. O sinal ALE e PSEN so
colocados no valor lgico baixo. S se pode sair deste modo atravs de reset por
hardware. O reset afeta todos os registradores com funes especiais, mas mantm
o contedo da memria de dados interna. Neste modo Vcc pode ser reduzido at 2V.
A reduo s pode ser efetuada depois de o microcontrolador estar no modo power
down.

16- Ferramentas para desenvolvimento e debugging de aplicaes desenvolvidas em assembly


O projeto de aplicaes em assembly faz-se recorrendo a programas que permitem
tanto o desenvolvimento da aplicao como o debugging da mesma, numa fase mais
avanada do projeto.

16.1- Ferramentas de desenvolvimento


Na fase de desenvolvimento utilizam-se programas como assemblers, linkers,
librarians e loaders cujas funes so descritas nos pontos seguintes.

16.1.1- Assembler
Um assembler um programa que converte cdigo fonte, escrito em linguagem
assembly, em cdigo mquina. No mercado existem vrios assemblers disponveis
sendo muitas vezes referidos de modo a salientar alguma das suas caractersticas
particulares, assim passa a descrever-se o significado de algumas das
caractersticas mais referidas. Designa se por macro assembler um programa
assembler que permite a utilizao de macros. Um assembler diz-se de duas
passagens se permitirem a utilizao de smbolos antes destes terem sido
definidos. Um cross assembler um programa assembler que executado num
processador diferente daquele em que o cdigo vai ser utilizado e designa-se por
native assembler um assembler que executado no processador alvo.
O momento em que o cdigo processado pelo programa assembler designa-se
assembly time. Os programas assembler podem dividir-se em dois tipos: absoluto e
relocatable. Num assembler absoluto o cdigo fonte est contido num s ficheiro.
Como resultado da execuo do assembler produzido um ficheiro executvel, que
pode ser carregado no sistema alvo recorrendo a um programa designado loader. A
figura 44 apresenta o diagrama de blocos do modo de operao de um assembler
absoluto.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II

Figura 44. Operao de um assembler absoluto.

Num assembler relocatable o cdigo fonte pode estar espalhado por vrios mdulos
que podem corresponder a ficheiros diferentes. Como resultado da execuo deste
tipo de assembler produzido um ficheiro num formato designado formato objeto
que posteriormente tem que ser processado por um programa chamado linker ou
locator. A figura 45 apresenta o diagrama de blocos da operao de um assembler
relocatable. O programa assembler produz os seguintes ficheiros de sada: um
ficheiro executvel ou um ficheiro objeto (dependendo do tipo de assembler), uma
listagem, uma tabela de smbolos e a cross-reference. O ficheiro executvel,
produzido se o assembler for absoluto, um ficheiro em cdigo mquina que pode
ser carregado diretamente para o sistema alvo. O ficheiro objeto, produzido se o
assembler for relocatable, precisa ser processado por um linker antes de poder
ser carregado para o sistema alvo. A listagem assembler apresenta o cdigo fonte
(cdigo em linguagem assembly) e o resultado do processo de assembler, ou seja,
o cdigo mquina correspondente. No caso de existirem erros de sintaxe no
programa inicial eles so reportados neste ficheiro. A tabela de smbolos mostra
onde e como esto definidos os smbolos usados no cdigo fonte. A cross-
reference uma lista com todos os smbolos e etiquetas por ordem alfabtica e
refere o stio em que eles so utilizados no programa.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II

Figura 45- Operao de um assembler relocatable.

16.1.2- Linker
O linker um programa que faz a ligao entre os vrios ficheiros objeto,
correspondentes a diferentes mdulos, e localiza todos os endereos. Este
programa produz como sada um ficheiro em cdigo mquina (ficheiro executvel)
que pode ser carregado para o sistema alvo. Este programa utilizado em
conjunto com assemblers do tipo relocatable. Designa-se por link time o momento
em que o cdigo processado pelo linker.

16.1.3- Librarian
Este programa transforma mdulos de cdigo fonte em elementos de uma biblioteca.
Os elementos contidos na biblioteca encontram-se no formato objeto. Os elementos
da biblioteca correspondem a blocos de cdigo com funes genricas que podem
ser reutilizados noutros mdulos. O librarian utilizado em conjunto com
assemblers do tipo relocatable.

16.1.4- Loader
Designa-se por loader o programa que carrega o ficheiro executvel na memria do
microcontrolador. O momento em que o cdigo executado no microcontrolador
designa-se run rime.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II

16.2- Ferramentas de Debugging


Na fase de debugging procede-se anlise dos problemas encontrados na execuo
do cdigo ou quando do teste do programa. A utilizao deste tipo de programas
permite que o tempo de desenvolvimento do projeto seja consideravelmente
reduzido. As principais ferramentas de debugging disponveis so os simuladores,
os monitores e os emuladores. Todas estas ferramentas permitem o recurso a duas
tcnicas muito utilizadas no debugging de programas designadas de program trace
e breakpoints. A tcnica de program trace permite a execuo de uma instruo de
cada vez, sendo possvel analisar os dados passo a passo. Esta tcnica tem a
desvantagem de ser bastante lenta. Os breakpoints permitem a execuo de uma
seqncia de instrues at ao aparecimento de um breakpoint. O breakpoint pra
a execuo do programa permitindo a anlise do contedo dos registradores
relevantes. A combinao destas duas tcnicas permite detectar de modo mais
rpido eventual de erros no projeto.

16.2.1- Simuladores
Os simuladores so programas que correm normalmente num PC e simulam a operao
do microcontrolador, permitindo a anlise da execuo do programa. Os
simuladores permitem a visualizao do contedo dos registradores mais
importantes da arquitetura e o contedo das posies de memria de dados
interna. Estes programas so indicados para o teste das partes do programa
relacionadas com clculos e condies de salto. Por outro lado os simuladores
no so indicados quando necessrio testar o funcionamento de blocos de
hardware como os temporizadores, portas E/S ou porta srie, pois esses blocos
interagem com sinais externos que, quando muito, podem ser simulados por
software no tendo em conta as especificaes temporais a eles associadas. Pelas
razes enunciadas os simuladores no so indicados para o teste de situaes de
E/S nem de interrupes. Nestes programas o cdigo a testar no executado a
uma velocidade igual do sistema real. Os simuladores so as ferramentas de
debugging menos dispendiosas, mas so tambm as mais limitadas.

16.2.2- Monitores
Os programas monitores utilizam o sistema alvo como ferramenta de debugging,
associado ao PC que utilizado para a visualizao do processo. A ligao entre
o sistema alvo e o PC normalmente feita atravs de uma porta srie, dedicada a
esta funo. O programa monitor carregado no sistema alvo e permite a carga, a
execuo e a monitorizao do programa a testar. Esta tcnica utiliza alguns dos
recursos do sistema alvo. O modo como os monitores funcionam implica que o
espao de memria de dados e o espao de memria de cdigo sejam sobrepostos
para permitir que o monitor escreva na memria de cdigo quando feita a carga
do programa a testar para o sistema alvo. Por outro lado o cdigo a testar no
fica colocado no endereo de start-up (0000H), o que pode levar necessidade de
alterar o programa a testar de modo a adaptar-se s circunstncias de teste, o
que no vai corresponder situao de execuo normal do programa final.
Como vantagens os programas monitores apresentam a caracterstica de promover a
anlise do sistema enquanto o programa executado velocidade real e o fato de
ser possvel testar todo o tipo de situaes uma vez que o teste feito no
sistema alvo permitindo a interao com o hardware circundante. Em termos de
custo os monitores so mais dispendiosos do que os simuladores, mas menos
dispendiosos do que os emuladores.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II

16.2.3- Emuladores
Um emulador um bloco de hardware que colocado no sistema alvo e permite a
execuo e monitorizao da operao do programa a testar. Estes sistemas
permitem o desenvolvimento de cdigo com capacidade de debugging que corre no
hardware do sistema alvo. Para o teste utilizado o ambiente real do sistema
alvo. Esta ferramenta no utiliza as capacidades do sistema alvo podendo o
programa a testar ser executado normalmente. O programa executado velocidade
normal. Os emuladores utilizam as capacidades de E/S do sistema real podendo
testar todo o tipo de situaes. No necessrio proceder a alteraes do
cdigo para efeito de teste. Existem vrios tipos de emuladores no mercado. A
nica desvantagem da utilizao destes sistemas prende-se com o seu custo que
extremamente elevado.

17- Desenvolvimentos de programas em assembly


Genericamente no projeto de software recomenda-se uma abordagem top-down em que
o desenvolvimento se faz por fases, comeando pela compreenso do problema,
seguida da diviso do projeto em blocos distintos, depois o projeto de cada
bloco, subdividindo-o em diferentes nveis, tendo sempre em conta que se devem
adiar os detalhes para nveis mais baixos do desenvolvimento e que necessrio
assegurar a correo de cada nvel.
O processo de desenvolvimento de software em assembly apresenta as suas
particularidades sendo recomendadas as seguintes fases: concepo, codificao e
teste. Na fase de concepo efetua-se o estudo do problema e elabora-se a
proposta de soluo modular, tendo em conta que o mdulo ideal executa uma nica
funo. Na fase de codificao procede-se escrita do cdigo em assembly. A
fase de teste inicia-se com o teste de cada mdulo individualmente e depois do
teste do sistema global.
Em todas as fases particularmente importante a documentao do projeto de modo
a que o trabalho desenvolvido possa ser facilmente analisado.
Como mtodo para o desenvolvimento dos programas prope-se a utilizao da
tcnica de programao estruturada segundo a qual qualquer programa pode ser
descrito recorrendo a trs estruturas base: seqncia, deciso e repetio.
Essas estruturas bsicas pode ser representadas em pseudo-cdigo do modo
seguinte:

Seqncia:

BEGIN:
...
...
END
Deciso:
IF (condio)
THEN
...
ELSE
...
Repetio:
WHILE (condio) DO
...
ou
DO
...
WHILE (condio)

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II

Estas estruturas podem ser utilizadas para descrever o algoritmo do programa ou


mdulo antes da sua codificao em assembly. Do mesmo modo podem utilizar-se
fluxogramas com o mesmo objetivo. Os fluxogramas apresentam a vantagem de ser
uma tcnica grfica que permite a rpida apreenso do fluxo do programa. Na
figura 46 so apresentados os smbolos correspondentes s estruturas base
propostas, que se utilizam na construo de um fluxograma.

Figura 46- Smbolos usados na construo de fluxogramas.

Para finalizar apresenta-se um exemplo de aplicao.

1- Escreva um programa que calcule 1+2+3+...+N, em que N=20, e guarde o


resultado no endereo 40H. O fluxograma do programa a desenvolver
encontra-se representado na figura 47. Como se pode ver na figura o fluxo
do programa e as operaes a efetuar so facilmente perceptveis.

Figura 47- Fluxograma do programa do exemplo 1.

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51


Colgio Tcnico de Campinas Cotuca Disciplina - TDM II

Codificao do programa:

N EQU 20 ; limite de contagem


i SET R0 ; utilizar R0 como contador i
MOV i,#0 ; inicializar i
CLR A ; inicializar sum
repetir:
INC i
ADD A,i
CJNE i,#N,repetir ; saltar se i no for igual a N
MOV 40H,A ; guardar soma em memria
END

Bibliografia
[1] MCS51 Microcontroller Family Users Guide, Intel, 1994.
[2] Using the MCS-51 Microcontroller, Han-Way Huang, Oxford University Press,
2000.
[3] Design with Microcontrollers, John B. Peatman, McGraw-Hill, 1988.
[4] C and the 8051, Thomas W. Schultz, Prentice Hall, 1998.

Anexos: Set de Instrues e demais informaes para a famlia MCS51

Prof. Corradi

TDMII www.corradi.junior.nom.br - Introduo aos Microcontroladores MCS51

Вам также может понравиться