Microcontrolador 8031
Microcontrolador 8031
Microcontrolador 8031
031/1
(PESUMO)
Antnio M, S, Fruncisco
Microcontrolador 8031/51
Antnio Francisco 1
DESCRIO dos PINOS do MICROCONTOLADOR 8031
V
CC
Alimentao (+5V)
Vss Massa (0V)
P0 Porto0 de E/S bidireccional, que nas operaes de acesso memria externa suporta os 8 bits menos
significativos de endereo (A0 a A7) e os dados multiplexados no tempo (D0 a D7).
P1 Porto1 de E/S bidireccional.
P2 Porto2 de E/S bidireccional. Nas operaes de acesso memria externa suporta os 8 bits mais
significativos do endereo (A9 a A15).
P3 Porto3 de E/S bidireccional. Os pinos deste porto so multifuncionais.
ALE Adress Latch Enable Sada de controlo da latch de endereos, que se destina a separar os 8 bits
menos significativos dos endereos (A0 a A7), que esto multiplexados no tempo, dos dados (D0 a D7),
quando se usa memria externa.
PSEN\ Program Store Enable usado para suportar o sinal que permite activar o acesso memria externa de
programa.
EA\ Entrada de seleco da memria de programa interna/externa. Com o valor 1 selecciona a memria de
programa interna, com o valor 0 selecciona a memria de programa externa (8031-EA=0).
RST Reset, aplicao dum 1 durante 2 ou mais ciclos de mquina.
RxD Entrada para a comunicao srie. (UART- Unidade Transmissora / Receptora Srie)
TxD Sada para a comunicao srie.
INT0\ Interrupo externa nmero 0.
INT1\ Interrupo externa nmero 1.
T0 Entrada externa para T/C 0.
T1 Entrada externa para T/C 1.
WR\ Controlo para operaes de escrita na memria de dados externa.
RD\ Controlo para operaes de leitura na memria de dados externa.
XTAL1 Sada do amplificador do oscilador
XTAL2 Entrada do amplificador do oscilador
PORTOS
leitura desse pino. Se o porto for configurado como sada, o dado mantm-se porque cada sada tem
associado um flip-flop tipo D (latch) de 1 bit.
Quando se utiliza memria externa de programa no se podem utilizar os pinos dos portos 0 e 2 como I/O.
Caso os pinos do porto3 estejam a ser utilizados em funes especiais, no se pode utilizar este porto como
I/O para bytes, apenas se pode utilizar para bits endereveis.
Os portos 1, 2 e 3 tm pull-ups internos, com resistncias de 3K ligadas a Vcc, o que faz com que os pinos
tenham valor definido (1).
O porto 0 no possui pull-ups internos da, quando configurado como entrada, o seu nvel tem que ser fixado,
caso contrrio flutua.
INTERRUPES
Interrupo um sinal que pede CPU para parar o processo corrente e efectuar outro referente interrupo
solicitada, ou seja, a interrupo desvia o programa para um endereo pr-determinado, no qual comea a
rotina da interrupo.
No 8051 existem 5 fontes de interrupo: 2 externas, 2 internas e canal srie.
No 8051, cada interrupo pode ser individualmente habilitada ou no e podemos tambm desabilitar todas de
uma s vez (ver registo EA).
Neste micro as interrupes tm dois nveis de prioridade (ver registo IP). Contudo, e caso duas interrupes
da mesma prioridade sejam solicitadas ao mesmo tempo, o micro possui ainda um processo de prioridade
interno (polling) de acordo com a seguinte ordem de atendimento:
1. Interrupo externa (INT\ 0) IE0 (Endereo de inicio da interrupo 03H)
2. Timer / counter 0 TF0 (Endereo de inicio da interrupo 0BH)
3. Interrupo externa (INT\ 1) IE1 (Endereo de inicio da interrupo 13H)
4. Timer / counter 1 TF1 (Endereo de inicio da interrupo 1BH)
5. Canal srie RI + TI (Endereo de inicio da interrupo 23H)
RESET
O reset para ser activo tem que permanecer a 1 dois ou mais ciclos de mquina e faz com que o programa
comece a rodar a partir do endereo 0000
H
da memria de programa.
Sendo as interrupo desviadas para endereos fixos, nos quais tm inicio as rotinas de interrupo (se
usarmos todas as interrupes, apenas esto disponveis 3 bytes at interrupo IE0 e depois 8 bytes entre
interrupes), devemos desviar o inicio do programa para um endereo acima de 23H.
Se necessrio, o software ter de escreve nos registos da RAM na inicializao, os valores desejados uma
vez que a RAM no afectada pelo Reset do micro.
Microcontrolador 8031/51
Antnio Francisco 2
PROGRAMAO em LINGUAGEM ASSEMBLER
O formato de uma linha de um programa em assembler distinguem-se quatro campos:
ETIQUETA: OPERAO OPERANDO ;COMENTRIO
Etiqueta Referncia que se coloca sempre a partir da esquerda e que termina obrigatoriamente com :. Uma
etiqueta serve como ponto de referncia para se poder voltar de novo mediante uma instruo de
salto.
Operao Palavra em mnemnica (abreviaturas da palavra que designa a instruo) que prpria da
linguagem do micro utilizado.
Operando A sua necessidade depende da instruo uma vez que existem instrues onde apenas
referida a operao
Comentrio - Referncia no obrigatria que permite tornar mais clara a funo da instruo no programa.
Deve ser sempre procedido de ;.
ASSEMBLADOR (Compilador Assembler ASM51)
Transforma o programa escrito atravs de mnemnicas em cdigo mquina. Para utilizar:
Criar em C, por ex., a directoria 8031 e copiar para esta directoria os ficheiros do Assemblador e
Simulador.
Entrar no DOS, posicionar-se dentro da directoria 8031. Abrir o EDIT.
Escrever o programa em linguagem assembler (cdigo fonte) com as mnemnicas prprio do micro e gravar
o ficheiro. Cria-se assim um ficheiro: <nome>.ASM (ASM = Assembler). Criado o ficheiro <nome>.ASM e
sempre dentro da directoria 8031, proceder do seguinte modo:
1. Escrever ASM51 <nome> + Enter.
So criados os ficheiros; <nome>.LST (LST=Lista) e <nome>.OBJ (OBJ=Objecto) e fornecida
informao sobre os erros de assemblagem.
2. Escrever OBJHEX <nome (sem extenso) > + Enter.
criado o ficheiro <nome>.HEX (HEX=Hexadecimal) em cdigo mquina. Est concluda a
assemblagem.
SIMULADOR (AVSIM51)
Simula o funcionamento do microcontrolador, permitindo testar os diferentes comandos. Para entrar:
1. Dentro da directoria 8031 executar o comando: AVSIM51
2. Seleccionar a verso do micro (p/ 8031): C
3. Teclas: Space + L (Load)
4. Tecla: P (Program)
5. Escrever o nome do ficheiro: <nome>.HEX + Enter
6. Teclas: Space + S (Set)
7. Tecla: M (Memory-map)
8. Seleccionar (RAM externa ou outro perifrico): A (random-Access)
9. Escrever o 1 endereo do perifrico utilizado: X:0000H + Enter
10. Escrever o ltimo endereo do perifrico utilizado: X:FFFFH + Enter + Esc
Para sair do simulador:
Entrar no menu e seleccionar Q (Quit) + E (Exit)
Teclas de comandos:
F1 Executar / parar o programa em modo contnuo
F10 Execuo do programa passo a passo
F9 Operao Undo de F10
Esc Para entrar no menu
Space Para mudar de menu
Ctrl + C Para abortar um comando
Data Space Endereos dos registos da RAM interna de 00H a FFH (255)
00H a 1FH Endereos dos registos R0 a R7 do banco 0, 1, 2 e 3
20H a 2FH Endereos dos registos com bits e bytes endereveis
30H a 7FH Endereos dos registos s com bytes endereveis
80H a FFH Endereos dos registos de funes especiais (SFR)
08 Registo que guarda o endereo (FF) de regresso da instruo LCALL
0A e 0B Registos que guardam o endereo (>FF) de regresso da instruo LCALL
Para percorrer os registos, posicionar o cursor em qualquer um e, utilizar as
teclas Page Up e Page Down.
Microcontrolador 8031/51
Antnio Francisco 3
Memria de dados (RAM interna)
127 7FH
FFH 255 FFFFH 65535
c)
SFR 48 30H
7FH 127 128 e RAM
47 2FH
RAM externa b)
RD 32 20H
00H interna 0 WR
31 1FH
a)
0 00H
Memria de programa (ROM / EPROM)
FFFF 65535
ROM
65535
externa ROM
0FFF 4096 PSEN ou externa PSEN
4095
ROM d) 64Kbytes
interna EA=1 EA=0
0 4Kbytes 0
Nos 128 bytes de memria de dados (RAM interna) salientam-se 3 segmentos:
a) 32 bytes (00H a 1FH), rea acessvel por endereamento directo e indirecto
4 bancos de registos (B0 - B3), com 8 registos cada (R0 - R7)
b) 16 bytes (20H a 2FH), rea enderevel de modo directo a nvel de bit
c) 80 bytes (30H a 7FH), rea geralmente reservada para o stack FFH
d) O 8031 no possui ROM interna
80H
Bits endereveis da RAM 7FH
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
7FH 7EH 7DH 7CH 7BH 7AH 79H 78H 2FH 30H
77H 76H 75H 74H 73H 72H 71H 70H 2EH 2FH
6FH 6EH 6DH 6CH 6BH 6AH 69H 68H 2DH
67H 66H 65H 64H 63H 62H 61H 60H 2CH 20H
5EH 5EH 5DH 5CH 5BH 5AH 59H 58H 2BH 1FH
57H 56H 55H 54H 53H 52H 51H 50H 2AH
4FH 4EH 4DH 4CH 4BH 4AH 49H 48H 29H 18H
47H 46H 45H 44H 43H 42H 41H 40H 28H 17H
3FH 3EH 3DH 3CH 3BH 3AH 39H 38H 27H
37H 36H 35H 34H 33H 32H 31H 30H 26H 10H
2FH 2EH 2DH 2CH 2BH 2AH 29H 28H 25H 0FH
27H 26H 25H 24H 23H 22H 21H 20H 24H
1FH 1EH 1DH 1CH 1BH 1AH 19H 18H 23H 08H
17H 16H 15H 14H 13H 12H 11H 10H 22H 07H
0FH 0EH 0DH 0CH 0BH 0AH 09H 08H 21H
07H 06H 05H 04H 03H 02H 01H 00H 20H 00H
Endereos dos registos
Endereos individuais
dos bits
R0
R7
Banco 0
R0
Banco 2
R0
Bytes
endereveis
Bits e bytes
Banco 3
R0
Banco 1
RAM
00H
00H
00H
00H
R7
SFR
0XXXXXXXB
R7
Indeterminado
XXX00000B
0XX00000B
00H
00H
endereveis
R7
00H
0XXX0000B
SBUF
PCONHMOS
PCONHCMOS
Valor
0000H
00H
00H
07H
0000H
FFH
TL0
TH1
TL1
SCON
IE
TMOD
TCON
TH0
SP
DPTR
P0-P3
IP
ORGANIZAO da MEMRIA do 8031/51 Contedo dos SFR
aps um Reset
00H
SFR
PC
A
B
PSW
Microcontrolador 8031/51
Antnio Francisco 4
INSTRUES do MICROCONTROLADOR 8031/51