Prática laboratorial com o
80C51
• Organização:
–
–
–
–
Requisitos e modelo funcional de um sistema mínimo
Da especificação à prática de projecto
Comunicação com o PC
Um gerador de formas de onda
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 1
Requisitos de um sistema
mínimo
• Considerando que o sistema mínimo pretendido tem
por objectivo principal dar apoio à prática laboratorial,
os requisitos de partida foram os seguintes:
– Simplicidade, para permitir uma compreensão em
pormenor de todos os aspectos
– Disponibilidade de entradas e de saídas, para permitir
alguma variedade nos trabalhos práticos a realizar
– Empregar componentes acessíveis e com baixo custo
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 2
Modelo funcional
• Carga do programa a executar: via RS 232C, a partir
de um PC onde é gerado o código objecto
• Entrada / Saída:
– Analógica, entre -5 V e +5 V, a que correspondem a
escrita de 00 e FFH, respectivamente, no conversor D/A
(relação linear entre os códigos escritos no D/A e o valor
da saída)
– Quatro entradas digitais e quatro saídas digitais
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 3
Modelo funcional (cont.)
• A memória externa resume-se a uma NVRAM (MP –
para o código recebido via RS 232C – e MD),
estando o “monitor residente” na MP interna do C
• Alocação de endereços:
/PSEN /RD
/WR
A15
Acesso seleccionado
0
1
1
1
Memória externa (leitura: código de instrução)
1
0
1
1
Memória externa (leitura: dados)
1
1
0
1
Memória externa (escrita)
1
1
0
0
Saída analógica
(ender. 90H, linhas P1.0 a P1.3)
Saídas digitais (porto 1)
(ender. 90H, linhas P1.4 a P1.7)
Entradas digitais (porto 1)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 4
Modelo funcional (cont.)
• Repare-se que o modelo funcional descrito nos
permite desde já a escrita de código:
inicio
ciclo
.org
8000h
mov
clr
movx
inc
sjmp
dptr,#0
a
@dptr,a
a
ciclo
;
;
;
;
DP com endereco D/A
carrega ACC com 0
envia ACC para D/A
proximo valor
(qual o efeito deste segmento de código?)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 5
Da especificação à prática
de projecto
• A passagem à prática de projecto faz-se através do
seguinte conjunto de passos:
–
–
–
–
Definição do diagrama de blocos da solução global
Realização do bloco descodificador do sistema
Criação do diagrama esquemático
Realização da carta de circuito impresso
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 6
Diagrama de blocos
D[0:7]
Conversão de nível
87C51
Comunicação
via RS-232C
Porto
série
AD[0:7]
P1
A[8:15]
Entrada / saída digital
(4 entradas e 4 saídas)
Registo e
conv. D/A
AmpOps
Saída
analógica
Registo
A[0:7]
NVRAM
ALE
/mem_rd
/PSEN
/RD
/WR
da_cs
Bloco do conversor D/A
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 7
A[15]
Descodificador
/mem_cs
Descodificador do sistema
• Sinais gerados pelo descodificador:
– Para a NVRAM: /mem_rd e /mem_cs
– Para a escrita no conversor D/A: da_cs
• Especificação “tipo-PALASM”:
(/mem_rd) = (/psen)*(/rd) ; activo se /psen ou /rd estiverem em 0
(/mem_cs) = /(a15)
(da_cs)
; activo se a15 estiver em 1
= /(a15)*/(/wr) ; activo se a15 e /wr estiverem em 0
(seria desejável a sua implementação como uma PAL?)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 8
Diagrama esquemático
• (apresentado na transparência seguinte) Reparar em
particular nos seguintes aspectos:
–
–
–
–
–
Filtragem nas entradas digitais
Forma como está implementada a comunicação RS 232C
Implementação do bloco descodificador
Tratamento da saída do conversor D/A
Ligação das entradas digitais não usadas
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 9
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 10
Carta de circuito impresso
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 11
Comunicação com o PC
• Libertar-nos do ciclo “programar EPROM /
experimentar / corrigir / apagar EPROM / repetir”
• Os programas a executar são escritos em assembly
no PC, onde é produzido o código objecto, que é por
sua vez transferido via RS 232C para o sistema
• A transferência do código objecto pode por exemplo
ser efectuada através da aplicação HyperTerminal
(acessórios do Windows 95)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 12
O monitor residente e a
comunicação com o PC
• Permite transferir o código objecto para execução na
NVRAM (cujo sinal de /OE resulta do AND entre os
sinais /PSEN e /RD do 87C51)
• O código objecto deve estar em formato Intel Hex e o
porto série do PC configurado para 9600 bps, 8 bits,
sem paridade e com um stop bit
• São apenas necessárias as ligações (RxD-TxD),
(TxD-RxD) e (Gnd-Gnd)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 13
O monitor residente:
Protocolo de transferência
• Ao ser reinicializado, o 87C51 envia “=“ para o PC
• O PC pode então enviar:
– O código de “Escape” (1BH), se pretender reinicializar o
sistema (que nesse caso responderá com “=“)
– O código do programa a executar
• No final da transferência, o 87C51 envia “:” para o
PC, a que se segue uma indicação do tipo de erro, se
algum tiver ocorrido
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 14
Protocolo de transferência:
Tipos de erros
• Códigos de erro (em hexadecimal):
–
–
–
–
–
–
01: Caracteres não hexadecimais
02: Erro de formatação
04: Código de verificação incorrecto
08: Não foram recebidos dados
10: Excedeu-se a capacidade de memória
20: Erro na verificação dos dados em memória
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 15
Protocolo de transferência:
Execução do programa
• Após a recepção correcta, o 87C51 envia ao PC um
checksum que resulta da soma de todos os bytes de
dados que foram recebidos, truncada para 16 bits
• O PC poderá então dar a ordem para execução do
código, enviando a seguinte sequência de caracteres:
“/<endereço>” (e.g. “/8000” para começar em 8000H)
• Se o endereço for aceite, o 87C51 enviará um “@” ao
PC e iniciará a execução do programa como indicado
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 16
Uso da aplicação
HyperTerminal
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 17
Uso da aplicação
HyperTerminal (cont.)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 18
Uso da aplicação
HyperTerminal (cont.)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 19
Geração do código objecto
• A geração do código objecto é feita por um crossassembler, que lê um ficheiro com o código fonte
(escrito em assembly) e produz o ficheiro com o
código objecto (por exemplo, à instrução assembly
mov 2,#5AH corresponde o código objecto 74, 5A)
• O TASM é um cross-assembler do tipo shareware
que ilustra bem as funções associadas a uma
aplicação deste tipo
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 20
Fluxo de dados no TASM
• O TASM é um table-driven cross assembler:
.ASM
Ficheiro de entrada
em assembly (ASCII)
.TAB
Correspondência
entre mnemónicas e
código objecto (ASCII)
TASM
Ficheiro com o código objecto
(Intel Hex, binário, etc.)
.OBJ
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 21
.LST
Instruções em
assembly e código
objecto (ASCII)
Formato Intel Hex (ASCII)
• :LLAAAATTDD...CC (conteúdo de cada linha)
– “:” representa o início da sequência
– “LL” indica o número de bytes de dados presentes
– “AAAA” representa o endereço de 16 bits que deve ser
usado para iniciar o armazenamento do código objecto
– “TT” representa o tipo de sequência (00: Dados; 01: Fim)
– “DD...” são os bytes de dados
– “CC” é um código de verificação (checksum)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 22
Geração de uma onda em
dente de serra
• Retomando o gerador de dente de serra, e invocando
o TASM (tasm -51 serra.asm), obtemos:
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
8000
8000
8000
8003
8004
8005
8006
8008
8008
8008
90 00 00
E4
F0
04
80 FC
inicio
ciclo
tasm: Number of errors = 0
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 23
.org
8000h
mov
clr
movx
inc
sjmp
dptr,#0
a
@dptr,a
a
ciclo
.end
Geração de uma onda em
dente de serra (cont.)
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 24
8000
8000
8000
8003
8004
8005
8006
8008
8008
8008
90 00 00
E4
F0
04
80 FC
Geração de uma onda em
dente de serra (cont.)
• A forma de onda gerada produz o efeito esperado:
(considerado que o relógio
do 87C51 é de 11,0592
MHz, qual seria o valor
esperado para a
frequência da onda em
dente de serra?)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 25
Um gerador de formas de
onda
• A consideração de um exemplo mais complexo irá
permitir-nos:
– Consolidar os conhecimento adquiridos acerca do
microcontrolador 80C51
– Discutir as questões relacionadas com a metodologia de
desenvolvimento de aplicações
– Ilustrar algumas questões associadas com o projecto de
circuitos mistos (analógicos e digitais)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 26
Caracterização funcional
• Pretende-se a seguinte funcionalidade:
– Forma de onda seleccionável (triangular, dente de serra
ascendente e dente de serra descendente)
– Deve estar prevista a possibilidade de se acrescentarem
posteriormente mais formas de onda
– Frequência ajustável
– Valores máximo e mínimo ajustáveis de forma
independente dentro da excursão máxima possível
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 27
Interface com o utilizador
• Pretende-se um interface com 3 teclas e 4 leds:
– A tecla “Função”
Forma
Valor
Valor
de Onda Frequência Máximo
Mínimo
desloca de forma
circular a função
(teclas)
seleccionada (o led
Função
+
aceso)
– As teclas “+” e “-” permitem incrementar / decrementar o
parâmetro associado à função seleccionada (se for a
forma de onda, significa passar à seguinte / anterior)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 28
Condições iniciais
• Após a (re)inicialização, o gerador de formas de onda
pretendido deve passar ao seguinte modo:
– A função activa deve ser a de selecção de forma de onda
(aceso o led da esquerda)
– A forma de onda na saída deve ser a triangular
– A frequência deve estar no meio da escala
– O valor máximo deve ser de +2,5 V
– O valor mínimo deve ser de -2,5 V
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 29
Exemplo de uso
Forma
de Onda
Valor
Frequência Máximo
Valor
Mínimo
(teclas)
Função
+
-
• Serra ascendente, mantendo a frequência inicial e
com limites de +5 V e 0 (após ligar a alimentação):
– Carregar em “+” até aparecer a serra ascendente
– Carregar em “Função” duas vezes, para seleccionar o
ajuste do valor máximo (aceso o led “Valor máximo”)
– Carregar em “+” até que o valor máximo seja de +5 V
– Carregar em “Função” uma vez (passa ao valor mínimo)
– Carregar em “+” até que o valor mínimo seja de 0 V
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 30
Atribuição de recursos
• Analisando os recursos disponíveis no nosso sistema
mínimo, podemos fazer a seguinte atribuição:
– (saídas digitais e respectivos leds) P1.0: Forma de onda;
P1.1: Frequência; P1.2: Valor máximo; P1.3: Valor mínimo
– (entradas digitais e respectivas teclas) P1.4: Tecla
Função; P1.5: Tecla +; P1.6: Tecla – Havendo apenas uma saída analógica, a atribuição deste
recurso está feita por natureza
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 31
Atribuição de recursos
(cont.)
• Resulta deste
modo a seguinte
disposição:
Saída analógica
Alimentação
Registo
Conv.
D/A
AmpOps
Registo
cristal
NV
RAM
87C51
Portas Portas
E
NÃO
Teclas
leds
Frequência Valor Mínimo
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 32
Forma
Valor Máximo
de onda
“+”
“Função”
“-“
Organização das rotinas a
desenvolver
• Modelo de
organização:
Inicialização
Forma
de onda
triangular
Atraso
Gestão
Forma
de onda
em serra
ascendente
Forma
de onda
em serra
descendente
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 33
Atraso
Gestão
Atraso
Gestão
Organização da subrotina
de gestão do sistema
Inicialização
Forma
de onda
triangular
Leitura
do
teclado
Retorna
N
Forma
de onda
em serra
descendente
S
S
Acções
da tecla
“Função”
Retorna
N
Acções
da
tecla “-”
Retorna
N
Retorna
Acções
da
tecla “+”
S
Tecla
“+”?
Gestão
Forma
de onda
em serra
ascendente
Tecla
premida?
Tecla
“Função”?
Atraso
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 34
Atraso
Gestão
Atraso
Gestão
Exemplo de funcionamento
• Inicialização e passagem à forma de onda seguinte:
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 35
Gerador de formas de onda:
Implementação alternativa
• Nesta implementação alternativa, introduziremos as
seguintes diferenças:
– Pretende-se o menor número possível de componentes
– Controlo remoto (via RS-232C, em vez de ser através de
um painel frontal)
– Usaremos as interrupções do T/C 0 para determinar o
ritmo de actualização da saída do conversor D/A (e por
conseguinte a frequência das formas de onda geradas)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 36
1
3
100nF
+
4
C2-
8
13
14
TxD
RxD
GND
100nF
C1C2+
Diagrama
esquemático
R2IN
10
C+
7
5
R1IN
T1OUT
V-
R2O UT
+
V+
1
2
3
6
+
cabo RS 232C
2
+
100nF
9
100nF
T1IN
R1OUT
T2O UT
11
12
T2IN
MA X232
+5V
-12V
AT 89C51
18
3
VVREF+
LSB /B 0
B1
B2
B3
B4
B5
B6
MS B/B7
VREF/IOUT
9
31
2K5
14
+5V
15
2
4K7
2K5
+12V
CO MP
12
11
10
9
8
7
6
5
1/2 T L082
IOUT
4
2
3
1
8
13
V+
1
2
3
4
5
6
7
8
5
6
7
1
-
+5V
1/2 T L082
100nF
+5V
saída analóg ica
+
2
EA /V PP
DA C08
4
RS T
100nF
16
XTA L1
XTA L2
PS EN
ALE /P ROG
100nF
VLC
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
39
38
37
36
35
34
33
32
1
P3.0/RXD
P3.1/TXD
P3.2/INTO
P3.3/INT1
P3.4/TO
P3.5/T1
P3.6/WR
P3.7/RD
19
29
30
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
+
10
11
12
13
14
15
16
17
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
-
21
22
23
24
25
26
27
28
0K1
-12V
-12V
+5V
+
10K
1uF
10K
botão de reset
11,0592MHz
1N4 148
33pF
33 pF
10K
Ti tl e
JMF - gerador p rogramável de formas de onda (Nov. 2001)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 37
Si ze
A
Date:
Doc umen t Number
<Do c>
Tue sday, November 20, 2001
Rev
1.0
She et
1
of
1
Código do novo gerador de
formas de onda
• Uma vez que o controlo de funcionamento tem agora
lugar via RS-232C e a actualização da saída do
conversor D/A é cadenciada pelo T/C 0, temos as
seguintes rotinas para escrever:
– Inicialização do sistema
– Atendimento das interrupções da porta série
– Atendimento das interrupções do T/C 0
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 38
Rotina de inicialização do
sistema
Inicialização de parâmetros:
- Valor máximo: 75%
- Valor mínimo: 25%
- Forma de onda: triangular
- Declive inicial: ascendente
Inicialização do microcontrolador:
- Periférico série: modo 1, recepção habilitada
- T/C 0 e T/C 1: T/C 0 – modo 2, ints habilitadas, TH0 a meio
da escala; T/C 1 – modo 2, ints inibidas, TH1 para 9.600 bps
- Interrupções: Habilita PS e T/C 0, com prioridade mais
elevada para a PS
- Activa dos dois T/C
Espera pelos pedidos de interrupção
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 39
Interrupções da porta série
(chegou um carácter)
0023H
Limpa RI
Inc. código da
forma de onda
RETI
S
Carácter S
“+”?
Inc. valor de
TH0
RETI
S
Inc. valor
máximo
RETI
S
Acção “Forma
de onda”? N
N
Acção
“Frequência”?
Acção “Valor
máximo”? N
Acção “Forma
de onda”? N
N
Acção
“Frequência”?
Acção “Valor
máximo”? N
N
Carácter S
“-”?
N
S
S
Guarda código
Dec. código da
Dec. valor de
ASCII em R6
forma de onda
TH0
RETI
RETI Digitais e Microcontroladores
RETI
Introdução ao Projecto com Sistemas
Prática laboratorial com o 80C51 - 40
Inc. valor
mínimo
RETI
S
Acção “Valor
mínimo”?
N
RETI
N
Acção “Valor
mínimo”?
S
S
Dec. valor
máximo
RETI
Dec. valor
mínimo
RETI
000BH
Interrupções do T/C 0
(actualiza a saída do D/A)
Forma de onda
triangular?
N
S
N
Forma de onda
serra ascendente?
N
Forma de onda
serra descendente?
S
Se não atingiu o máximo,
incrementa; caso contrário, passa
para o valor mínimo
RETI
Declive
ascendente? N
S
S
Se não atingiu o mínimo,
decrementa; caso contrário, passa
para o valor máximo
RETI
Aplica nível DC a meio da escala
RETI
Se não atingiu o máximo,
Se não atingiu o mínimo,
incrementa; caso contrário, passa
decrementa; caso contrário, passa
para descendente e decrementa
para ascendente e incrementa
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
RETI
RETI
Prática laboratorial com o 80C51 - 41
Configuração do
HyperTerminal
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 42
Controlo de uma plataforma
móvel
• Pretende-se neste caso implementar um interpretador
para a linguagem (pseudo-) LOGO que foi descrita no
capítulo 6 do livro recomendado
– No cap. 6 é apresentado um microprocessador dedicado
para implementar esta linguagem, mas agora queremos
usar um AT89C51
– A escrita do código LOGO deve ser feita no PC e o
respectivo código objecto enviado via RS232C
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 43
A plataforma móvel
RS232C
+ Bateria (roda)
(roda)
motor
AT89C51
+
...
Detecção de
obstáculos
Sinalização de
problemas
(roda
giratória)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 44
motor
O accionamento com
motores passo-a-passo
Formas de onda nas
A
quatro fases
(movimento para a B
frente):
C
D
Tabela em memória
para o movimento
para a frente:
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 45
0 1
1 0
0 0
1 0 …
0 1 …
1 1 …
1 1
0 0 …
P2.7 …
0
1
1
0
1
0
0
1
P2.0
0
0
1
1
1
1
0
0
0
1
1
0
1
0
0
1
0
0
1
1
1
1
0
0
Controlo do
movimento
• As instruções existentes
dividem-se por quatro
grupos principais:
–
–
–
–
Movimento
Actuação das saídas
Salto
Paragem
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 46
; opcode das instruções LOGO:
front
equ
66h
;f
back
equ
62h
;b
left
equ
6Ch
;l
right
equ
72h
;r
setout0 equ
20h
; espaço
setout1 equ
21h
;!
setout2 equ
22h
;"
setout3 equ
23h
;#
rstout0 equ
30h
;0
rstout1 equ
31h
;1
rstout2 equ
32h
;2
rstout3 equ
33h
;3
jpin0 equ
70h
;p
jpin1 equ
71h
;q
jpin2 equ
72h
;r
jpin3 equ
73h
;s
jp
equ
6Ah
;j
halt1 equ
68h
;h
halt2 equ
68h
;h
Rotinas existentes
• Existem quatro rotinas principais:
– Inicialização do sistema – inicio.a51
– Interpretador que executa o código LOGO – interpr.a51
– Atendimento das interrupções pedidas pela porta série –
int_ps.a51
– Atendimento das interrupções pedidas pelo T/C 0 –
int_tc0.a51 (neste caso o atendimento não é automático,
sendo monitorizado o valor da flag TF0 e executada a
rotina de atendimento através de uma instrução CALL)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 47
Rotina inicio.a51
(inicialização do sistema)
• Após a inicialização dos registos, dos contadores, da
porta e do sistema de interrupções, limita-se a
esperar que cheguem caracteres via RS232C
; Uso dos registos:
; > R0- apontador para a tabela LOGO na recepção RS232C (armazenar)
; > R1- apontador para a tabela LOGO no execução (para ler a instrução)
; > R2- não é usado nesta implementação
; > R3- Unidades de deslocamento (UD) requeridas para o movimento
; > R4- factor multiplicativo (factm) entre cada UD e o número de passos
; > R5- não é usado nesta implementação
; > R6- usado na leitura das tabelas de passo (contém o offset)
Projecto com na
Sistemas
Digitais e Microcontroladores
; Introdução
> R7-ao usado
leitura
das tabelas de passo (contém o índice)
Prática laboratorial com o 80C51 - 48
Rotina interpr.a51
(interpretador LOGO)
• O código LOGO (designado por “tabela LOGO”) está
armazenado entre 30H (ENDINI) e 7FH (ENDFIN)
• A execução deve ser suspensa se for atingido o
endereço final
• Qualquer código ilegal deve ser tratado como NOP
(“no operation”)
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 49
Rotina int_ps.a51
(atendimento int. porta série)
• Recebe o código LOGO e a ordem para o executar
• HALT ocupa dois bytes que só surgem neste caso
(serve também para marcar o fim da recepção)
• À chegada de HALT, deve acontecer o seguinte:
– Reinicializa R0 (apontador para a tab. LOGO na recepção)
e R1 (apontador para a tab. LOGO na execução)
– Inicia a interpretação (execução) do código LOGO recebido
• Se atingir o ENDFIN deixa de incrementar R0
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 50
Rotina int_tc0.a51
(atendimento int. T/C 0)
• Esta rotina é executada em resultado de uma
instrução CALL, quando se detecta que TF0 = 1
• O T/C 0 é que permite cadenciar a sequência de
passos (os motores são controlados pela porta 2)
• As combinações de passo estão armazenadas nas
“tabelas de passo” (existe uma tabela para cada tipo
de movimento: frente, trás, esquerda, direita)
• Ao terminar o movimento o T/C 0 é desactivado
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 51
KEIL: Resultado produzido
L51 LINKER/LOCATOR V3.62
06/12/01
22:52:02
PAGE 1
(...)
INPUT MODULES INCLUDED:
C:\JMF\PUBLIC~1\MP\DIVERSOS\LOGO\INICIO.OBJ (INICIO)
C:\JMF\PUBLIC~1\MP\DIVERSOS\LOGO\INT_TC0.OBJ (INT_TC0)
C:\JMF\PUBLIC~1\MP\DIVERSOS\LOGO\INT_PS.OBJ (INT_PS)
C:\JMF\PUBLIC~1\MP\DIVERSOS\LOGO\INTERPR.OBJ (INTERPR)
LINK MAP OF MODULE:
C:\JMF\PUBLIC~1\MP\DIVERSOS\LOGO\LOGO (INICIO)
TYPE
BASE
LENGTH
RELOCATION
SEGMENT NAME
----------------------------------------------------* * * * * * *
D A T A
M E M O R Y
* * * * * * *
REG
0000H
0008H
ABSOLUTE
"REG BANK 0"
* * * * * * *
CODE
0000H
0003H
CODE
000BH
000EH
CODE
0023H
0047H
CODE
0050H
0074H
CODE
0100H
0121H
CODE
0140H
C O D E
0003H
0008H
0003H
0015H
0024H
0009H
0024H
008CH
0021H
001FH
0115H
M E M O R Y
ABSOLUTE
ABSOLUTE
ABSOLUTE
ABSOLUTE
ABSOLUTE
ABSOLUTE
* * * * * * *
*** GAP ***
*** GAP ***
*** GAP ***
*** GAP ***
*** GAP ***
(JMP INICIO)
(JMP INT_TC0)
INT_PS.A51
INT_TC0.A51
INICIO.A51
INTERPR.A51
******************************************************************************
>>
* RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT; USED: 0184H BYTE (18%) *
>>
******************************************************************************
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
>>
Prática laboratorial com
o 80C51
- 52
LINK/LOCATE
RUN
COMPLETE.
0 WARNING(S), 0 ERROR(S)
Conclusão
• Objectivo principal do capítulo: Proporcionar os
recursos mínimos que facilitem a passagem à prática
laboratorial com o 87C51
• Pistas para a continuação do estudo:
– Aprofundar o conceito de monitor residente
– Sistemas de desenvolvimento
Introdução ao Projecto com Sistemas Digitais e Microcontroladores
Prática laboratorial com o 80C51 - 53
Download

Prática Laboratorial com o 80C51