resposta esperada - EMC

Propaganda
Goiânia, 14 de novembro de 2013.
Prof. José Wilson Lima Nerys
MICROPROCESSADORES E MICROCONTROLADORES
PROVA 2 - RESPOSTA ESPERADA
Valor: 2,0
1. Escreva as instruções para as configurações pedidas.
a) Habilita as interrupções externas zero e um e a interrupção do temporizador 0. As interrupções
externas são por transição. A interrupção zero tem prioridade alta.
Resposta Esperada:
IE
EA
1
X
0
X
0
ES
0
ET1
0
EX1
1
ET0
1
EX0
1
TCON
TF1
0
TR1
0
TF0
0
TR0
0
IE1
0
IT1
1
IE0
0
IT0
1
IP
X
0
X
0
X
0
PS
0
PT1
0
PX1
0
PT0
0
PX0
1
MOV IE,#87H
MOV TCON,#05H
MOV IP,#01
b) Configura o temporizador 1 para operar no modo 1 com início de contagem em 3CAFH. Habilita a
interrupção do temporizador 1.
Resposta Esperada:
TMOD
G1
0
C/T\
0
M1.1
0
M0.1
1
G0
0
C/T\
0
M1.0
0
M0.0
0
IE
EA
1
X
0
X
0
ES
0
ET1
1
EX1
0
ET0
0
EX0
0
MOV TMOD,#10H
MOV TH1,#3CH
MOV TL1,#0AFH
MOV IE,#88H
Parte
4
Parte 1
Tabela 1: Programa para acionamento de motor de corrente contínua
RÓTULO MNEMÔNICO
RÓTULO MNEMÔNICO
CH1
EQU
P3.5
OPERA2: CLR P1.2
CH2
EQU
P3.2
SETB P1.3
SETB P1.6
ORG 00H
MOV R1,#10
LJMP PROB2
V4: LCALL ATRASO
DJNZ R1,V4
ORG 30H
SJMP V1
PROB2: MOV SP,#2FH
MOV TMOD,#01H
OPERA1: SETB P1.2
MOV R0,#10
CLR P1.3
MOV R1,#20
Parte 3
2. A Figura 1 mostra um diagrama simplificado de acionamento de um motor de corrente contínua de 12 V
e está associada ao programa mostrado na Tabela 1. A Tabela 2 mostra a lógica de funcionamento do
motor CC e a Tabela 3 mostra o valor de recarga de um temporizador, no modo 1, para gerar diferentes
quantidades de pulsos. O cristal oscilador é de 12 MHz.
Valor: 4,0
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
CLR P1.2
CLR P1.3
CLR P1.6
JB CH1,V2
SJMP OPERA1
V2:
JB CH2,V1
V3:
Parte 2
V1:
Prof. José Wilson Lima Nerys
ATRASO:
CPL P1.6
LCALL ATRASO
DJNZ R1,V3
SJMP V11
CLR TF0
MOV TH0,#63H
MOV TL0,#0BFH
SETB TR0
JNB TF0,$
DJNZ R0,ATRASO
MOV R0,#10
CLR TR0
RET
END
Parte 5
Goiânia, 14 de novembro de 2013.
Figura 1: Circuito simplificado de acionamento
acionamento do motor de corrente contínua
Tabela 2: Lógica de operação
peração do motor
IN1 IN2
Operação do motor
0
0
Motor parado
0
1
Rotação sentido direto
1
0
Rotação sentido reverso
1
1
Motor parado
Tabela 3: Recarga do temporizador-modo
temporizador
1
TH0
TL0
Início da Contagem
5.535
15H
9FH
15.535
3CH
AFH
25.535
63H
BFH
35.535
8AH
CFH
45.535
B1H
DFH
55.535
D8H
EFH
Questões (Valor de cada questão: 1,0):
a) Como funciona a Parte 2? O que ocorre se as chaves CH1 e CH2 permanecerem livres e o que ocorre
quando cada uma delas é pressionada?
Resposta Esperada:
No início
ício da Parte 2, as instruções CLR P1.2,, CLR P1.3 e CLR P1.6 desligam o motor e o LED. A seguir o
estado da chave CH1 é verificado. Se estiver em nível lógico alto (chave CH1 aberta), pula para verificar o
estado da chave CH2. Se CH2 = 1 (chave CH2 aberta),
aberta), volta para o início da Parte 2.
Se CH1 = 0 (chave CH1 pressionada), o processamento desvia para o endereço OPERA1.
Se CH2 = 0 (chave CH2 pressionada), o processamento vai para próxima linha, onde começa a rotina chamada
de OPERA2.
onamento da Parte 5. Qual o tempo de atraso gerado por essa subrotina? Qual
b) Explique o funcionamento
papel do registrador R0?
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica,, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
o
Goiânia, 14 de novembro de 2013.
Prof. José Wilson Lima Nerys
Resposta Esperada:
A Parte 5 é uma subrotina de atraso de tempo baseada no temporizador 0, operando no modo 1. Cada
contagem começa em 63BFH, que corresponde
corresponde ao decimal 25.535. Isso significa que o temporizador
conta 40.000 pulsos (65.535 - 25.535). Como o cristal oscilador é de 12 MHz, cada pulso do
temporizador corresponde a 1 µs. Assim, o tempo de cada contagem resulta em 40 ms.
Durante cada contagem
em do temporizador, o processamento fica em um loop infinito (JNB TF0,$),
aguardando o fim da contagem. Após cada contagem, o registrador R0 é descrementado e verificado
se é zero (DJNZ R0,ATRASO); enquanto ele não for zero, o processamento volta para ATRASO,
ATR
para iniciar uma nova contagem do temporizador. Como R0 = 10, significa que são realizadas 10
contagem de 25.535 até 65. 535, ou seja, a subrotina ATRASO gera um tempo de atraso de 400 ms
(10 x 40 ms).
Quando R0 = 0, o processamento sai da subrotina.
subrotina. Porém, antes de sair, o registrador R0 é redefinido
com valor 10 e o temporizador é desligado.
c)) Explique o funcionamento da Parte 3. O que ocorre com o motor CC e com o LED? Qual o sentido
de rotação do motor? Por quanto tempo o motor funcionará?
Resposta Esperada:
A Parte 3 é executada quando a chave CH2 é pressionada. As instruções CLR P1.2 (IN2 = 0) e
SETB P1.3 (IN1 = 1) faz o motor CC girar no sentido reverso. A instrução SETB P1.6 liga o LED.
A seguir, o registrador R1 recebe o valor decimal
decimal 10, usado para chamar a subrotina de atraso de
tempo. Ou seja, a subrotina ATRASO é chamada 10 vezes, o que significa que o motor vai girar no
sentido reverso por um tempo de 10 x 400 ms = 4 s. Passado esse tempo, o processamento volta para
V1, onde o motor
otor e o LED são desligados.
d)) Explique o funcionamento da Parte 4. O que ocorre com o motor CC e com o LED? Qual o sentido
de rotação do motor? Por quanto tempo o motor funcionará?
Resposta Esperada:
A Parte 4 é executada quando a chave CH1 é pressionada.
pressionada. As instruções SETB P1.2 (IN2 = 1) e
CLR P1.3 (IN1 = 0) faz o motor CC girar no sentido direto. A seguir, o registrador R1 recebe o valor
decimal 20, usado para chamar a subrotina de atraso de tempo. Ou seja, a subrotina ATRASO é
chamada 20 vezes, o que
ue significa que o motor vai girar no sentido direto por um tempo de 20 x 400
ms = 8 s.
No entanto, o funcionamento do LED é diferente do item anterior. A instrução CPL P1.6 faz o LED
piscar a cada vez que o processamento volta da subrotina de atraso de tempo, ou seja, a cada 400 ms.
Ao final das 20 chamadas de subrotina, o processamento volta para V1, onde o motor e o LED são
desligados.
3. A Figura 2 mostra uma matriz de LEDs de 3 linhas e 8 colunas. As
A linhas, de baixo para cima, estão
conectadas, respectivamente
ctivamente às portas P0, P1 e P2. Cada LED está conectado a um dos pinos dessas
portas (0 a 7), conforme mostrado na Figura
F
2.. A Figura 3 mostra essa mesma matriz em 3 instantes
diferentes, onde pode-se
se ver o deslocamento de uma onda triangular. Faça um programa
pr
em assembly
do 8051 onde a interrupção externa zero, por transição, faz essa onda triangular se deslocar 8 passos
para a direita e a interrupção externa 1, por nível, faz a onda se deslocar para a esquerda, passo a passo,
enquanto houver pedido de interrupção.
i
Use uma subrotina de atraso de tempo baseada nos
registradores R0 e R1.
Valor: 4,0
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica,, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 14 de novembro de 2013.
Prof. José Wilson Lima Nerys
Figura 2: Matriz 3x8 de LEDs
Figura 3: Matriz 3x8 em diferentes instantes de acionamento
Resposta Esperada:
Para produzir o efeito de uma onda triangular se deslocando, observar que o valor enviado para as
portas mantém um padrão,, que pode se deslocar usando a instrução RL A ou RR A.
A No entanto, deve-se
lembrar que essas instruções só são usadas com o acumulador, ou seja, cada valor deve ser transferido
tran
para o
acumulador, rotacionado e devolvido para o registrador de origem. Os valores iniciais a serem enviados para
as portas P0, P1 e P2 são, respectivamente, 88H, 55H e 22H. Após a primeira rotação à direita esses valores
tornam-se: 44H, AAH e 11H e, depois, 22H, 55H e 88H.
Rótulo
PROB2:
DIREITA:
Mnemônico
LINHA1 EQU 10H
LINHA2 EQU 11H
Comentários
; Registrador 10H guarda os valores enviados para P0
; Registrador 11H
H guarda os valores enviados para P1
P
LINHA3 EQU 12H
; Registrador 12H guardaa os valores enviados para P2
P
ORG 00H
LJMP PROB2
; A próxima instrução está no endereço 00H
; Desvia o processamento para o endereço PROB2
ORG 03H
LJMP DIREITA
; A próxima instrução está no endereço 03H (Interrupção externa zero)
; Desvia para o endereço DIREITA
ORG 13H
LJMP ESQUERDA
; A próxima instrução está no endereço 13H (interrupção externa um)
; Desvia para o endereço ESQUERDA
ORG 30H
MOV SP,#2FH
MOV IE,#85H
MOV TCON,#01H
MOV R7,#8
MOV LINHA1,#88H
HA1,#88H
MOV LINHA2,#55H
MOV LINHA3,#22H
; Pilha inicia no endereço 2FH
; Habilita as interrupções externas 0 e 1
; Interrupção externa zero por transição
; Contador do deslocamento para a direita
; Valor inicial da Linha 1
; Valor inicial da Linha 2
; Valor inicial da Linha 3
SJMP $
; Loop infinito esperando interrupção
MOV P0,LINHA1
MOV P1,LINHA2
MOV P2,LINHA3
LCALL ATRASO
; Transfere para P0 o conteúdo da Liha 1
; Transfere para P1 o conteúdo da Liha 2
; Transfere para P2 o conteúdo da Liha 3
; Chama subrotina de atraso de tempo
MOV A,LINHA1
RR A
MOV LINHA1,A
; Transfere para A o conteúdo da Linha 1 (necessário para a rotação)
; Rotaciona conteúdo de A para a direita
; Devolve o conteúdo de A (rotacionado) para a Linha 1
MOV A,LINHA2
RR A
MOV LINHA2,A
; Transfere para A o conteúdo da Linha 2 (necessário para a rotação)
; Rotaciona conteúdo de A para a direita
; Devolve o conteúdo de A (rotacionado) para a Linha 2
MOV A,LINHA3
; Transfere para A o conteúdo da Linha 3 (necessário para a rotação)
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica,, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 14 de novembro de 2013.
ESQUERDA:
ATRASO:
V1:
Prof. José Wilson Lima Nerys
RR A
MOV LINHA3,A
; Rotaciona conteúdo de A para a direita
; Devolve o conteúdo de A (rotacionado) para a Linha 3
DJNZ R7,DIREITA
MOV R7,#8
RETI
; Decrementa o contador R7. Enquanto R7 não for zero, volta para DIREITA
; Recarrega R7 com o valor 8
; Sai da subrotina de interrupção
MOV P0,LINHA1
MOV P1,LINHA2
MOV P2,LINHA3
LCALL ATRASO
; Transfere para P0 o conteúdo da Liha 1
; Transfere para P1 o conteúdo da Liha 2
; Transfere para P2 o conteúdo da Liha 3
; Chama subrotina de atraso de tempo
MOV A,LINHA1
RL A
MOV LINHA1,A
; Transfere para A o conteúdo da Linha 1 (necessário para a rotação)
; Rotaciona conteúdo de A para a esquerda
; Devolve o conteúdo de A (rotacionado) para a Linha 1
MOV A,LINHA2
RL A
MOV LINHA2,A
; Transfere para A o conteúdo da Linha 2 (necessário para a rotação)
; Rotaciona conteúdo de A para a esquerda
; Devolve o conteúdo de A (rotacionado) para a Linha 2
MOV A,LINHA3
RL A
MOV LINHA3,A
RETI
; Transfere para A o conteúdo da Linha 3 (necessário para a rotação)
; Rotaciona conteúdo de A para a esquerda
; Devolve o conteúdo de A (rotacionado) para a Linha 3
; Sai da subrotina de atraso de tempo
MOV R0,#250
MOV R1,#250
DJNZ R1,$
DJNZ R0,V1
RET
; Subrotina de atraso de tempo baseada nos registradores R0 e R1
END
Tabela 4: Alguns Registradores Especiais
TCON
IE
IP
PSW
TMOD
Bit7
TF1
EA
X
CY
G1
Bit6
TR1
X
X
AC
C/T\
Bit5
TF0
X
X
F0
M1.1
Bit4
TR0
ES
PS
RS1
M0.1
Bit3
IE1
ET1
PT1
RS0
G0
Bit2
IT1
EX1
PX1
OV
C/T\
Tabela 5: Endereços das interrupções
Bit1
IE0
ET0
PT0
X
M1.0
Bit0
IT0
EX0
PX0
P
M0.0
Interrupção
Solicitada
Reset
INT0\
Timer/counter 0
INT1\
Timer/counter 1
Canal Serial
Endereço de
desvio
0000h
0003h
000Bh
0013h
001Bh
0023h
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Download