Documente Academic
Documente Profesional
Documente Cultură
1. Na tabela a seguir, escolha as instruções que melhor correspondem à descrição das tarefas da coluna 1.Valor: 3,0
2. Analise o programa mostrado na tabela a seguir, escrito em assembly do microcontrolador 8051. Valor: 2,0
Parte 2:
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica e de Computação – Universidade Federal de Goiás
Goiânia, 22 de junho de 2010 Prof. José Wilson Lima Nerys
Nesse trecho de programa o DPTR é redefinido (MOV DPTR,#TEXTO) para a leitura do TEXTO.
A instrução MOVC A,@A+DPTR armazena em A o caractere ASCII de cada letra do TEXTO
Antes desse trecho de programa o DPTR usado para o dispositivo externo e o acumulador usado como
contador para o TEXTO são guardados na pilha. O DPTR é guardado porque, para a leitura do TEXTO, ele
tem que ser redefinido. O acumulador é guardado porque ele é usado como contador e também para receber os
dados do TEXTO.
Depois de recuperar o valor original de DPTR a instrução MOVX @DPTR,A é usada para transferir o
conteúdo do TEXTO para o dispositivo externo.
O último caractere do TEXTO é FFH. Quando esse valor for alcançado o programa volta para o início e repete
todo o processamento anterior de forma indefinida. Antes de chegar a FFH o programa é desviado para V2.
Parte 3:
O DPTR do dispositivo externo e o contador para leitura do TEXTO são incrementados para a leitura e
transferência do próximo caractere.
3. Faça o fluxograma (valor: 1,0) e um programa (valor: 2,0), em assembly do 8051, com as seguintes
características:
(a) Duas chaves (tipo Push-Button) são conectadas dos pinos P1.0 e P1.1 para o Terra;
(b) Um motor de corrente contínua é acionado através dos pinos P2.0 e P2.1 (ver tabela 4);
(c) LEDs são conectados aos pinos P2.3, P2.4 e P2.5;
(d) A chave em P1.0 é usada para habilitar o funcionamento do motor e a chave P1.1 é usada para desligar;
(e) Ao ser pressionada a chave P1.0, o LED em P2.3 é ligado e o programa fica aguardando um comando de
ligação do motor via serial;
(f) Quando for recebida a letra “L” ( 4CH) o motor é ligado no sentido direto. O LED em P2.4 é ligado,
mantendo aceso o LED em P2.3. A recepção serial deverá ser no modo 1 com baud rate de 4800 bps;
(g) Após a inicialização o sentido de rotação do motor é invertido a cada 10 s. O LED em P2.5 indica rotação no
sentido reverso e a chave em P1.1 é usada para desligar o motor e sair do modo de habilitação;
(h) Usar o temporizador zero no modo 1 como base para uma subrotina de atraso de 1 s, a partir da qual é contado
o tempo de 10 s. Supondo um cristal oscilador de 12 MHz.
Solução:
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica e de Computação – Universidade Federal de Goiás
Goiânia, 22 de junho de 2010 Prof. José Wilson Lima Nerys
ORG 00H
LJMP INICIO
ORG 30H
INICIO: MOV SP,#2FH
MOV TMOD,#21H ; TEMP0 NO MODO 1 E TEMP1 NO MODO 2
MOV SCON,#40H ; SERIAL NO MODO 1
MOV TH1,#0FAH ; BAUD RATE DE 4800 bps COM CRISTAL OSCILADOR DE
MOV TL1,#0FAH 11,0592 MHz
MOV P2,#00H
V2: JB P1.0,$ ; AGUARDA HABILITACAO
SETB LED_HABILITA ; LIGA LED DE HABILITACAO
SETB TR1 ; DISPARA TEMP1
SETB REN ; HABILITA RECEPCAO SERIAL
V1: JNB RI,$ ; AGUARDA DADO VIA SERIAL
CLR RI ; LIMPA FLAG DA SERIAL
MOV A,SBUF ; CARREGA NO ACUMULADOR DADO RECEBIDO VIA SERIAL
END
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica e de Computação – Universidade Federal de Goiás
Goiânia, 22 de junho de 2010 Prof. José Wilson Lima Nerys
Maga e sua filha moram à beira do Rio Tejo e faz parte de suas malévolas bruxarias domésticas o fato de mentirem de
maneira programada. Maga sempre mente às sextas, aos sábados e domingos, dizendo a verdade nos outros dias da
semana. A filha mente sempre às segundas, terças e quartas, fazendo questão de falar a verdade nos outros dias da
semana.
Com base nas afirmações das duas, determine em que dia da semana essa conversa ocorreu.
Solução:
Supondo que Maga tenha dito a verdade, o dia é Segunda-feira. Se ela mentiu, Sexta.
A frase da Filha só pode ter sido dita na Quinta, Sexta ou no Sábado. Se essa frase fosse dita no domingo,
seria uma mentira, mas no domingo ela sempre fala a verdade. Se fosse dita de segunda a quarta, seria uma
verdade, mas nesses dias ela sempre mente.
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica e de Computação – Universidade Federal de Goiás
Goiânia, 07 de dezembro de 2010 Prof. José Wilson Lima Nerys
Obs.: Todas as questões têm valor 2,0. Boa prova e Feliz Natal e Ano Novo!!!!
1. Escreva um pequeno programa, em assembly do 8051, onde o temporizador zero, no modo 1 (16 bits), é usado,
com interrupção, para complementar o pino 0 da porta P2, a cada final de contagem (contagem a partir de 0). A
interrupção externa zero deve ser usada, por transição, para disparar e parar o temporizador zero. Qual o período
da onda quadrada formada no pino P2.0, para um cristal oscilador de 12 MHz?
Solução:
RÓTULO MNEMÔNICO COMENTÁRIO
$mod51
LJMP ALFA DESVIA PARA O INÍCIO DO PROGRAMA
ORG 03H
CPL TR0 COMPLEMENTA O BIT TR0 PARA DISPARAR/PARAR O TEMPORIZADOR
RETI ZERO A CADA INTERRUPÇÃO ZERO
ORG 0BH
CPL P2.0 COMPLEMENTA O BIT 0 DA PORTA P2 A CADA FINAL DE CONTAGEM DO
RETI TEMPORIZADOR ZERO
2. Interprete o trecho de programa mostrado na tabela a seguir, feito em assembly do 8051. Há um conjunto de LEDs
conectado à porta P2 e um conjunto de chaves do tipo push-button conectando a porta P1 ao terra.
Solução:
Primeiro Quadro:
1. O programa verifica o estado de cada uma das chaves: P1.0, P1.1 e P1.2
2. Se a chave P1.0 estiver em estado lógico baixo, desvia para V1. Caso contrário, verifica a chave P1.1.
3. Se a chave P1.1 estiver em estado lógico alto, desvia para V2. Caso contrário, verifica a chave P1.2.
4. Se a chave P1.2 estiver em estado lógico baixo, desvia para V3. Caso contrário, verifica novamente V1.
Segundo Quadro:
O programa liga o LED conectado a P2.0 e desliga os LEDs em P2.1 e P2.2. A seguir retorna para o LOOP
principal.
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica e de Computação – Universidade Federal de Goiás
Goiânia, 07 de dezembro de 2010 Prof. José Wilson Lima Nerys
Terceiro Quadro:
O programa desliga os LEDs conectados a P2.0 e P2.1 e liga o LED em P2.2. A seguir retorna para o LOOP
principal.
Quarto Quadro:
O programa desliga todos LEDs e retorna para o LOOP principal.
3. Faça um programa, em assembly do 8051, para transferir via serial para um computador, a uma taxa de transmissão
de 1200 bps, o TEXTO a seguir. O cristal oscilador é de 11,0592 MHz.
TEXTO:
DB „PROVA 2 DE MICROPROCESSADORES – 2010‟, 0FFH
Solução:
RÓTULO MNEMÔNICO COMENTÁRIO
$mod51
ORG 00H
LJMP ALFA DESVIA PARA O INÍCIO DO PROGRAMA
ORG 30H
ALFA: MOV SP,#2FH
MOV SCON,#40H CONFIGURA SERIAL PARA O MODO 1 ASSÍNCRONO
MOV TMOD,#20H CONFIGURA TEMPORIZADOR 1 NO MODO 2 (RECARGA AUTOMÁTICA)
MOV TH1,#0E8H FAZ TH1 = E8H, O QUE DEFINE BAUD RATE DE 1200 bps
SETB TR1 DISPARA TEMPORIZADOR
MOV DPTR,#TEXTO DPTR ASSUME O ENDEREÇO INICIAL DO “TEXTO”
END
4. A figura a seguir mostra uma caixa d´água com controle automático do nível de água e com saída manual de água.
Um sistema com o microcontrolador 8051 é usado para o acionamento das válvulas e da bomba. Faça um programa
em assembly do 8051 com as seguintes características:
1. Quando o nível da água fica abaixo do sensor SV (sensor passa para nível lógico alto – pino P1.0), a bomba é
acionada juntamente com as válvulas V1 (pino P2.1) e V2 (pino P2.2).
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica e de Computação – Universidade Federal de Goiás
Goiânia, 07 de dezembro de 2010 Prof. José Wilson Lima Nerys
2. A bomba e as válvulas V1 e V2 permanecem ligadas até o nível da água alcançar o sensor SC (sensor passa
para nível lógico baixo – pino P1.1).
3. Uma chave tipo push-button é usada o pino P3.2 ligando ao terra. Essa chave é usada para solicitar uma
interrupção, por transição (interrupção zero) e acionar a bomba (pino P2.0) e as válvulas V2 (pino P2.2) e V3
(pino P2.3), para filtragem da água presente na caixa. Essa operação deve durar por um tempo pré-estabelecido
pelo programador. Faça uma subrotina de atraso de tempo qualquer para simbolizar o tempo de filtragem.
Solução
RÓTULO MNEMÔNICO COMENTÁRIO
$mod51
SV EQU P1.1 ; SENSOR DE VAZIO
SC EQU P1.0 ; SENSOR DE CHEIO
ORG 00H
LJMP INICIO ; DESVIA PARA INICIO DO PROGRAMA
ORG 03H
LJMP LIMPEZA ; DESVIA PARA SUBROTINA DA INTERRUPÇÃO ZERO
ORG 30H
INICIO: MOV SP,#2FH
MOV IE,#81H
; HABILITA INTER. EXTERNA 0 POR TRANSIÇÃO
MOV TCON,#01H
MOV P2,#00H ; DESLIGA A BOMBA E TODAS AS VÁLVULAS
END
Siga as dicas fornecidas para determinar quem mora em cada casa (João, Paulo ou José), a cor da casa (Branca, Azul ou
Amarela), o animal de estimação (Cachorro, Gato ou Cavalo) e o esporte praticado (Futebol, Voleibol ou Tênis).
Dicas:
1. João não mora na segunda casa;
2. Quem cria cachorro gosta de jogar futebol;
3. Tem uma casa entre o jogador de tênis e a casa amarela, que fica à direita;
4. O homem que tem o cavalo como animal de estimação mora exatamente do lado esquerdo do que gosta de
gatos;
5. O homem que cria cachorro mora exatamente do lado direito da casa branca;
6. Paulo mora na terceira casa.
Solução:
1. A partir das dicas 1 e 6 conclui-se que Paulo mora na Casa 3, João na Casa 1 e José na Casa 2.
2. A partir da dica 3 conclui-se que a Casa 3 é amarela e que o jogador de tênis mora na Casa 1.
3. A partir da dica 2 conclui-se que quem cria cachorro e gosta de futebol mora na Casa 2 OU na Casa 3.
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica e de Computação – Universidade Federal de Goiás
Goiânia, 07 de dezembro de 2010 Prof. José Wilson Lima Nerys
4. A partir da dica 4 conclui-se que o homem que cria cavalo mora na Casa 1. Ele não pode morar na Casa 2
porque, senão, o criador de Gato moraria na Casa 3, o que faria com que o criador de cachorro morasse na
Casa 1; e isso é incompatível com a dica 3, uma vez que ele gosta de futebol e na Casa 1 já foi definido, pela
dica 3, que o esporte é Tênis.
5. Uma vez que o animal da Casa 1 é o cavalo e o da Casa 2 é o Gato, conclui-se que o Cachorro está na Casa 3,
onde o esporte é o futebol. Conclui-se ainda que o esporte da Casa 2 é o Voleibol.
6. A partir da dica 5 conclui-se que a Casa 2 é Branca e a Casa 1 é Azul.
----------------------------------------------------------------------------------------------------------------------------- --------------
Tabela 1: Informações sobre registradores especiais do 8051
TMOD G1\ C1/T1\ M1.1 M1.0 G0\ C0/T0\ M1.0 M0.0
SCON SM0 SM1 SM2 REN TB8 RB8 TI RI
IE EA x x ES ET1 EX1 ET0 EX0
TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
IP x x x PS PT1 PX1 PT0 PX0
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica e de Computação – Universidade Federal de Goiás
Goiânia, 09 de junho de 2011. Prof. José Wilson Lima Nerys
MICROPROCESSADORES E MICROCONTROLADORES
1. Escreva as instruções necessárias para configurar o temporizador zero para operar no modo 1, o
temporizador 1 para operar no modo 2, ambos usando interrupção e, ainda a interrupção externa zero
para operar por transição. O valor de recarga para o temporizador 1 deve ser de 3FH e a contagem
inicial do temporizador 0 deve ser de 40.000 pulsos. Valor: 2,0
As questões a seguir referem-se à Fig. 1, onde um microcontrolador da família 8051 é usado com
mapeamento de memória. A memória EEPROM AT28C16 é de 2 K e tem endereço inicial 0800H.
O endereço de acesso aos LEDs é 1000H.
2. Indique as entradas para as portas NAND A e B, da Fig. 1, de modo que a memória EEPROM tenha
endereço inicial 0800H e os LEDs sejam alocados na região que começa no endereço 1000H. Mostre o
procedimento de escolha dessas entradas a partir da divisão da região de 64 K em regiões de 2K. Não é
necessário eliminar as sombras de memória. Valor: 2,0.
Como indicado na Fig. 1, a memória EEPROM tem 11 linhas de endereço (de A0 a A10), o que permite
o acesso a 2K de memória: 211 = 2048 = 2Kbytes. Os endereços internos da memória são, portanto:
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica e de Computação – Universidade Federal de Goiás
Goiânia, 09 de junho de 2011. Prof. José Wilson Lima Nerys
A partir do mapa anterior, faz-se uma tabela-resumo para seleção das 4 primeiras regiões. As regiões de
interesse são as regiões 1 (EEPROM) e 2 (LEDs). As entradas das portas NAND são mostradas a seguir.
A12 A11 Região selecionada Endereço Inicial Endereço Final
0 0 0 0000H 07FFH
0 1 1 0800H 0FFFH
1 0 2 1000H 17FFH
1 1 3 1800H 1FFFH
ORG 00H
LJMP INICIO
ORG 30H
INICIO: MOV SP,#2FH ; O endereço inicial da pilha é 2Fh
MOV DPTR,#1000H ; DPTR recebe o valor inicial da região dos LEDs
V4: MOV A,#00H ; Se a variável CHAVE for 1 (CH aberta), faz A=00
V2: JNB CHAVE,V1 ; Se a variável CHAVE for zero (CH fechada), desvia para V1
MOVX @DPTR,A ; Se CHAVE=1 (CH aberta), envia o conteúdo de A para os LEDs
LCALL ATRASO ; Chama subrotina de atraso
CPL A ; Complementa conteúdo de A. Alterna entre 00h e FFH
SJMP V2 ; Volta para V2
V1: MOV A,#01H ; Se a variável CHAVE for zero (CH fechada), faz A = 01h
V3: MOVX @DPTR,A ; Envia o conteúdo de A para os LEDs
LCALL ATRASO ; Chama subrotina de atraso de tempo
RL A ; Rotaciona o conteúdo de A para a esquerda
CJNE A,#01H,V3 ; Verifica se A = 01h. Enquanto A for diferente de 01h, desvia para V3.
SJMP V4 ; Quando A = 01h (rotação completa dos LEDs), volta para V2.
O programa verifica o estado da variável CHAVE, que indica o nível lógico do pino P1.7.
Situação 1 (chave CH pressionada): O pino P1.7 está com tensão zero (nível lógico baixo) e, portanto, a
variável CHAVE é zero. Assim, os LEDs alocados no endereço 1000H (no mapeamento de
memória) são rotacionados para a esquerda (rotação completa do LED 0 ao LED 7).
Situação 2 (chave CH livre): O pino P1.7 está com tensão 5 V (nível lógico alto) e, portanto, a variável
CHAVE é 1. Assim, os valores 00H e FFH são enviados alternadamente para os LEDs, ou seja, os
LEDs são ligados e desligados alternadamente.
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica e de Computação – Universidade Federal de Goiás
Goiânia, 09 de junho de 2011. Prof. José Wilson Lima Nerys
4. Faça um programa onde o teclado de 4 teclas, conectado à porta P1 (Fig. 1), seja lido por varredura. Ao
ser digitada a tecla 1 os LEDs são rotacionados para a esquerda de forma ininterrupta (mesmo ao ser
liberada a tecla 1). Ao ser digitada a tecla 2 os LEDs são rotacionados para a direita de forma
ininterrupta (mesmo ao ser liberada a tecla 2). Ao serem digitadas as teclas 3 ou 4 o processo de rotação
dos LEDs é interrompido. Valor: 3,0
ORG 00H
LJMP INICIO
ORG 30H
INICIO: MOV SP,#2FH ; ENDEREÇO INICIAL DA PILHA = 2FH
MOV DPTR,#1000H ; DPTR RECEBE O ENDERECO DOS LEDS
MOV R0,#00H ; VALOR INICIAL DE R0=0 (R0 GUARDA VALOR LIDO)
MOV A,#01H ; ACUMULADOR RECEBE VALOR 01 P/ ROTACIONAR LEDS
RET
5. Faça um programa onde o microcontrolador da Fig. 1 recebe dados de um computador, através da porta
serial, a uma taxa (baud rate) de 4800 bps, no modo 1 (assíncrono de 8 bits). Se o caractere recebido for
a letra “M” (4DH) o microcontrolador envia para a memória EEPROM a frase „ DADOS
ARMAZENADOS NA EEPROM: ‟. Se o caractere recebido for a letra “C” (43H), o microcontrolador
envia para o computador a frase „ PREPARANDO PARA RECEBER DADOS: ‟. O cristal oscilador é
de 11,0592 MHz. Valor: 3,0
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica e de Computação – Universidade Federal de Goiás
Goiânia, 09 de junho de 2011. Prof. José Wilson Lima Nerys
ORG 30H
INICIO: MOV SP,#2FH ; ENDEREÇO INICIAL DA PILHA = 2FH
MOV SCON,#40H ; SERIAL NO MODO 1
MOV TMOD,#20H ; TEMP 1 NO MODO 2
MOV TH1,#0FAH ; BAUD RATE: 4800 bps
MOV TL1,#0FAH
SETB TR1 ; DISPARA O TEMPORIZADOR 1 GERA BAUD RATE
END
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica e de Computação – Universidade Federal de Goiás
Goiânia, 22 de novembro de 2011. Prof. José Wilson Lima Nerys
MICROPROCESSADORES E MICROCONTROLADORES
1. Escreva as instruções necessárias para atender a cada uma das configurações solicitadas. Valor: 2,0
(a) Interrupção externa zero por nível e interrupção externa 1 por transição.
MOV IE,#85H IE = 1000 0101 EA=1; EX1=1; EX0=1
MOV TCON,#04H IT1 = 1; IT0 = 0
(c) Temporizador 0 configurado para operar no modo 2 com recarga igual a 90H.
MOV TMOD,#02H Temp 0 no modo 2
MOV TH0,#90H Recarga de 90H
MOV TL0,#90H Contagem começa em 90H
(d) Comunicação serial operando no modo 1 (assíncrono de 8 bits) com taxa de transferência de 2400
bps, com um cristal oscilador é de 11,0592 MHz.
MOV SCON,#40H SCON = 0100 0000 SM1=0; SM2=1
MOV TMOD,#20H Temp 1 no modo 2
MOV TH1,#0F4H Recarga para baud rate de 2400 bps
MOV TL1,#0F4H Começa contagem a partir de F4H
2. Foi montado um sistema com mapeamento de memória, onde uma pastilha de memória de 1 Kbyte, um
conjunto de 8 LEDs e um LCD são endereçados com o auxílio de um decodificador 74LS138, mostrado
na figura a seguir. Indique (e mostre o procedimento) quais as linhas de endereço deverão ser
conectadas às entradas A2 A1 e A0, de forma que a memória seja acionada através da saída 0 do
decodificador, os LEDs através da saída 4 e o LCD através da saída 7. E indique também a faixa de
endereços correspondente a cada região. Cada região deve ser de 1 K. Obs.: O endereço inicial da região
da memória é 0000H e os endereços das regiões seguintes são subsequentes. Valor: 2,0.
Um vez que as regiões são de 1 K de memória (210 = 1024 = 1 Kbytes), são necessárias 10 linhas de
endereço (de A0 a A9). Assim, as regiões de 0 a 7 são mapeadas como segue:
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica e de Computação – Universidade Federal de Goiás
Goiânia, 22 de novembro de 2011. Prof. José Wilson Lima Nerys
3. Na figura a seguir os sensores de presença S0, S1 e S2 estão conectados respectivamente aos pinos P1.0,
P1.1 e P1.2. Na presença de obstáculo esses pinos passam para o nível lógico 0. Os motores são
acionados conforme as tabelas mostradas a seguir. Comente cada linha do trecho de programa a seguir
(valor 1,0) e descreva o funcionamento desse trecho do programa (valor 1,0).
Motor M2 Motor M1
P2.3 P2.2 Estado do motor P2.1 P2.0 Estado do motor
0 0 Motor desligado 0 0 Motor desligado
0 1 Sentido horário 0 1 Sentido horário
1 0 Sentido anti-horário 1 0 Sentiodo anti-horário
1 1 Motor desligado 1 1 Motor desligado
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica e de Computação – Universidade Federal de Goiás
Goiânia, 22 de novembro de 2011. Prof. José Wilson Lima Nerys
Comentário:
Rótulo Mnemônico Comentário
ORG 30H Programa inicia no endereço 30H da ROM
V1: JNB S0,V2 O estado do sensor S0 é verificado. Se S0=0, desvia para V2; se S0=1, próxima linha
JNB S1,V3 O estado do sensor S1 é verificado. Se S1=0, desvia para V3; se S1=1, próxima linha
JNB S2,V4 O estado do sensor S2 é verificado. Se S2=0, desvia para V4; se S2=1, próxima linha
SETB P2.0
Seta o bit P2.0 e limpa o bit P2.1. Assim, o motor 1 gira no sentido horário
CLR P2.1
CLR P2.2 Limpa o bit P2.2 e seta o bit P2.3. Assim, o motor 2 gira no sentido anti-horário
SETB P2.3 O resultado é que o carro se desloca para a frente. Não tem obstáculo
SJMP V1
Trecho V2: O processamento é desviado para esse trecho quando o sensor S0 detecta um obstáculo. O
sentido de rotação de ambos os motores é invertido, ou seja, o carro se desloca para trás.
Trecho V3: O processamento é desviado para esse trecho quando o sensor S1 detecta um obstáculo. O
motor M1 é mantido no sentido horário, enquanto o motor M2 tem o sentido invertido.
Assim, o carro gira para a esquerda (obstáculo à direita).
Trecho V4: O processamento é desviado para esse trecho quando o sensor S2 detecta um obstáculo. O
motor M2 é mantido no sentido anti-horário, enquanto o motor M1 tem o sentido invertido.
Assim, o carro gira para a direita (obstáculo à esquerda).
Após a atualização do estado dos motores o processamento retorna para o inicio, para verificação do
estado dos sensores.
4. Faça um programa onde uma contagem decimal de dois dígitos é mostrada em dois displays de 7
segmentos. Um dos displays está conectado ao nibble inferior da porta P2 e o outro está conectado ao
nibble superior dessa mesma porta (cada um com seu decodificador). A interrupção zero é usada para
iniciar e parar a contagem e a interrupção um é usada para definir se a contagem é crescente ou
decrescente. As interrupções são por transição. Use uma subrotina de atraso de tempo definida com dois
registradores, cada um com um valor inicial igual a 250 decimal. Valor: 2,0
ORG 03H
CPL CONTROLE
RETI
ORG 13H
CPL ORDEM
RETI
ORG 30H
INICIO: MOV SP,#2FH ; O endereço inicial da pilha é 2Fh
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica e de Computação – Universidade Federal de Goiás
Goiânia, 22 de novembro de 2011. Prof. José Wilson Lima Nerys
5. Faça um programa onde uma comunicação serial é estabelecida entre um microcontrolador da família
8051 e um computador, a uma taxa (baud rate) de 1200 bps, no modo 1 (assíncrono de 8 bits). Uma
variável de controle do tipo bit é usada para estabelecer o sentido do fluxo de dados. Se a variável de
controle estiver em nível lógico zero, o microcontrolador é configurado para receber dados do
computador e transferir esses dados para uma memória EEPROM de 4 K, cujo endereço inicial é
0000H. Se a variável de controle estiver em nível lógico alto, o microcontrolador é configurado para
transferir os dados da memória (a partir do endereço 0000H) para o computador. O cristal oscilador é de
11,0592 MHz. Use a interrupção externa zero para complementar a variável de controle, cujo valor
inicial deve ser zero. Valor: 2,0
ORG 30H
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica e de Computação – Universidade Federal de Goiás
Goiânia, 22 de novembro de 2011. Prof. José Wilson Lima Nerys
END
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica e de Computação – Universidade Federal de Goiás
Goiânia, 22 de novembro de 2011. Prof. José Wilson Lima Nerys
Timer 1
Baud Rate (bits/seg) Freq. Osc. (MHz) SMOD C/Tbarra Modo Valor Recar.
Modo 0 Máx: 1MHz 12 X X X X
Modo 2 Máx: 375K 12 1 X X X
Modo 1, 3: 62,5K 12 1 0 2 FFh
19,2K 11,059 1 0 2 FDh
9,6K 11,059 0 0 2 FDh
4,8K 11,059 0 0 2 FAh
2,4K 11,059 0 0 2 F4h
1.2K 11,059 0 0 2 E8h
137,5 11,059 0 0 2 1Dh
110 6 0 0 2 72h
110 12 0 0 1 FEEBh
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica e de Computação – Universidade Federal de Goiás
Goiânia, 10 de maio de 2012. Prof. José Wilson Lima Nerys
MICROPROCESSADORES E MICROCONTROLADORES
O que ocorre quando as chaves CH1 e CH2 estão abertas? Valor: 0,5
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 10 de maio de 2012. Prof. José Wilson Lima Nerys
Solução:
Assim, quando as chaves CH1 e CH2 estão abertas, a instrução JNB P3.0,V1 faz o processamento ir
para a linha seguinte (se P3.0 estivesse em nível lógico baixo desviaria para V1). Na linha seguinte a
instrução JNB P3.1,V2 também faz o processamento ir para a linha seguinte (se P3.1 estivesse em nível
lógico baixo desviaria para V2). Na linha seguinte a instrução SJMP V3 desvia o processamento para a
instrução JNB P3.0,V1. Em resumo: o programa fica em um laço de espera aguardando uma das duas chaves
(CH1 ou CH2) ser ligada.
O que ocorre quando o programa inicia com as duas chaves CH1 e CH2 fechadas? Valor: 0,5
Solução:
Com as chaves CH1 e CH2 fechadas (ligadas), os pinos P3.0 e P3.1 ficam em nível lógico baixo. A
primeira instrução a ser testada é JNB P3.0,V1, que faz o processamento desviar para V1 (CH1
permanecendo fechada a chave CH2 nunca será testada). Em V1 os valores 01H, 02H, 04H e 08H (resultado
da rotação para a esquerda com “RL A” são enviados para o motor de passo (conectado à porta P0). Assim, o
motor de passo gira para um lado (lado 1). Quando a rotação chegar ao valor 10H (logo após 08H), o
processamento retorna para o laço das chaves CH1 e CH2. Enquanto a chave CH1 permanecer fechada o
motor continua girando para o lado 1.
O que ocorre quando a chave CH1 está fechada e a chave CH2 aberta? Valor: 1,0
Solução:
A situação aqui é idêntica à anterior. Enquanto a chave CH1 permanecer fechada a chave CH2 nunca
será testada e, portanto, seu estado é indiferente. Assim, o motor gira para o lado 1, como no item anterior.
O que ocorre quando a chave CH1 está aberta e a chave CH2 fechada? Valor: 1,0
Solução:
Se a chave CH1 estiver aberta o nível lógico em P3.0 é alto e, portanto, a instrução JNB P3.0,V1 faz
o processamento ir para a próxima linha. Estando a CH2 fechada, o nível lógico de P3.1 é baixo e, portanto,
a instrução JNB P3.1,V2 faz o processamento desviar para V2. Em V2 os valores 08H, 04H, 02H e 01H
(resultado da rotação para a direita com “RR A” são enviados para o motor de passo (conectado à porta P0).
Assim, o motor de passo gira para o lado 2, contrário ao do item anterior. Quando a rotação chegar ao valor
80H (logo após 01H), o processamento retorna para o laço das chaves CH1 e CH2. Enquanto a chave CH1
permanecer aberta e a chave CH2 fechada, o motor continua girando para o lado 2.
2. Faça um programa que mostre uma contagem decimal decrescente nos displays de 7-segmentos da
figura, a partir de um valor definido pelo usuário, através da interrupção externa 0. Valor: 3,5
(a) O programa mostra, inicialmente, o valor 00 nos displays de 7-segmentos e fica aguardando a
interrupção externa 0. Inicialmente a interrupção 1 não está habilitada;
(b) A interrupção externa 0 é usada, por transição, para ajustar o valor de início da contagem. Esse valor
deve ser mostrado nos displays. Ao atender a interrupção 0 a interrupção 1 é habilitada.
(c) A interrupção externa 1, por nível, é usada para fazer a contagem decrescente. Enquanto houver
pedido de interrupção a contagem continua até 00. Ao chegar no valor 00 a interrupção externa 1 é
desabilitada. Ela só será habilitada novamente através da interrupção 0.
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 10 de maio de 2012. Prof. José Wilson Lima Nerys
SOLUÇÃO:
Obs.: Pela figura, os displays de 7 segmentos estão conectados à porta P2
Rótulo Instruções Comentário
$mod51
ORG 00H
LJMP INICIO ; Desvia para o início do programa
ORG 30H
INICIO: MOV SP,#2FH ; Apontador de pilha SP = 2FH
MOV IE,#81H ; Interrupção zero habilitada. EA=1; EX0 = 1
MOV TCON,#01H ; Interrupção zero por transição
MOV A,#00H ; Acumulador começa com valor 00H
MOV P2,A ; Os displays recebem o conteúdo de A, ou seja, 00H.
SJMP $ ; Laço infinito esperando interrupção.
END
3. Tendo como base a figura mostrada, faça um programa com as seguintes características: Valor: 3,5
(a) O programa deve habilitar as interrupções externas 0 e 1 por transição e aguardar em um laço
infinito.
(b) Ao ser solicitada a interrupção externa 1, uma contagem decimal crescente de 00 a 99 deve ser
mostrada nos displays.
(c) Ao ser solicitada a interrupção externa 0, todos os LEDs devem piscar 10 vezes;
(d) A interrupção externa 0 deve ser atendida a qualquer momento, mesmo durante a execução da
interrupção externa 1. Nesse caso, ao retornar para a subrotina da interrupção externa 1, a contagem
deve ser retomada da posição em que estava antes de atender a interrupção 0;
(e) Ao final das subrotinas de interrupção o processamento deve voltar para o laço infinito.
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 10 de maio de 2012. Prof. José Wilson Lima Nerys
SOLUÇÃO:
Obs.: Pela figura, os displays de 7 segmentos estão conectados à porta P2 e os LEDs à porta P1
Rótulo Instruções Comentário
$mod51
ORG 00H
LJMP INICIO ; Desvia para o início do programa
ORG 30H
INICIO: MOV SP,#2FH ; Apontador de pilha SP = 2FH
MOV IE,#85H ; Interrupções externas 0 e 1 habilitadas. IE = 1000 0101
MOV TCON,#05H ; Interrupções INT0 e INT1 por transição
MOV IP,#01H ; Interrupção externa 0 com prioridade 1 (para ser atendida a qq momento)
SJMP $ ; Laço infinito esperando interrupções.
ZERO: PUSH ACC ; Guarda na pilha conteúdo do acumulador. Preserva valor anterior de A.
MOV R0,#10 ; Contador R0 recebe valor 10 decimal (para piscar 10 vezes)
V1: MOV P1,#00H ; O valor 00H é enviado para os LEDs. Eles apagam.
LCALL ATRASO ; Chama subrotina de atraso de tempo
MOV P1,#0FFH ; O valor FFH é enviado para os LEDs. Eles acendem.
LCALL ATRASO ; Chama subrotina de atraso de tempo
DJNZ R0,V1 ; Decrementa R0. Enquanto R0 ≠ 0, desvia para V1
POP ACC ; Recupera da pilha valor de A. Recupera valor de A antes da subrotina.
RETI ; Retorna da interrupção zero
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 10 de maio de 2012. Prof. José Wilson Lima Nerys
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
MICROPROCESSADORES E MICROCONTROLADORES
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:
MOV TMOD,#10H
MOV TH1,#3CH
MOV TL1,#0AFH
MOV IE,#88H
MOV R1,#20
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
Parte 2
SJMP V11
JB CH1,V2
SJMP OPERA1 ATRASO: CLR TF0
MOV TH0,#63H
V2: JB CH2,V1 MOV TL0,#0BFH
Parte 5
SETB TR0
JNB TF0,$
DJNZ R0,ATRASO
MOV R0,#10
CLR TR0
RET
END
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.
onamento da Parte 5. Qual o tempo de atraso gerado por essa subrotina? Qual
b) Explique o funcionamento o
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)
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.
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 queue 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
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.
ORG 03H ; A próxima instrução está no endereço 03H (Interrupção externa zero)
LJMP DIREITA ; Desvia para o endereço DIREITA
ORG 13H ; A próxima instrução está no endereço 13H (interrupção externa um)
LJMP ESQUERDA ; Desvia para o endereço ESQUERDA
ORG 30H
PROB2: MOV SP,#2FH ; Pilha inicia no endereço 2FH
MOV IE,#85H ; Habilita as interrupções externas 0 e 1
MOV TCON,#01H ; Interrupção externa zero por transição
MOV R7,#8 ; Contador do deslocamento para a direita
MOV LINHA1,#88H
HA1,#88H ; Valor inicial da Linha 1
MOV LINHA2,#55H ; Valor inicial da Linha 2
MOV LINHA3,#22H ; Valor inicial da Linha 3
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
DJNZ R7,DIREITA ; Decrementa o contador R7. Enquanto R7 não for zero, volta para DIREITA
MOV R7,#8 ; Recarrega R7 com o valor 8
RETI ; Sai da subrotina de interrupção
END
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 10 de julho de 2013. Prof. José Wilson Lima Nerys
MICROPROCESSADORES E MICROCONTROLADORES
1. Analise o programa a seguir, escrito em assembly do 8051, e responda às questões. Valor: 4,0
d) Suponha que o processamento está no Bloco 1 e a interrupção externa 1 é solicitada. O que ocorre?
Solução:
A interrupção externa 1 tem prioridade alta. Assim, ao ser solicitada, mesmo durante a execução do Bloco 1,
ela é atendida, executando o Bloco 2. Se o processamento estava no Bloco 1, ele volta para o Bloco 1, ao final da
execução do Bloco 2.
2. A figura a seguir representa um sistema onde um motor de passo é livre para se deslocar lateralmente
(esquerda/direita). Cada 4 passos do motor corresponde a um deslocamento de 1 cm. Em cada extremidade existe
uma chave (sensor) que, pressionada, leva o pino correspondente ao nível lógico zero. Faça um programa, usando
o assembly do 8051, onde o motor de passo é acionado em dois modos diferentes. Uma chave ligada da pino P3.0
é usada para escolher o modo de operação. Valor: 6,0
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 10 de julho de 2013. Prof. José Wilson Lima Nerys
Solução:
Rótulo Mnemônico Comentários
MODO EQU P3.0 ; Variável para escolha entre os modos 1 e 2
ORG 00H
LJMP PASSO
ORG 03H
CPL F0 ; Qdo a chave S1 é pressionada, complementa F0
RETI
ORG 13H
CPL F0 ; Qdo a chave S1 é pressionada, complementa F0
RETI
ORG 30H
PASSO: MOV SP,#2FH
MOV IE,#85H ; Interrupções externas habilitadas
MOV TCON,#05H ; INT0 e INT1 por transição
MOV R0,#5 ; Contador de deslocamento
MOV R1,#0 ; Offset para leitura das tabelas
V3: JB P3.0,MODO2
,MODO2 ; Se P3.0 = 1, vai para o MODO 2
; Se P3.0 = 0, executa o MODO 1
MODO1: JNB F0,V1 ; Verifica o nível lógico de F0
MOV DPTR,#ESQUERDA
PTR,#ESQUERDA ; Se F0 = 1, então DPTR = ESQUERDA
SJMP V2
V1: MOV DPTR,#DIREITA ; Se F0 = 0, então DPTR = DIREITA
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica,, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 10 de julho de 2013. Prof. José Wilson Lima Nerys
DIREITA: DB 01H
DB 02H
DB 04H
DB 08H
ESQUERDA: DB 08H
DB 04H
DB 02H
DB 01H
END
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 18 de junho de 2013. Prof. José Wilson Lima Nerys
MICROPROCESSADORES E MICROCONTROLADORES
a) Habilita interrupção externa zero por nível e interrupção externa 1 por transição e com prioridade
alta.
Solução:
IE EA X X ES ET1 EX1 ET0 EX0
1 0 0 0 0 1 0 1
Solução:
Interrupção 1: ORG 13H
CPL P1.0 ; Complementa P1.0 toda vez que INT1 é acionada
RETI
Uma vez que INT1 é por nível, não há necessidade de definir um valor para TCON. Ele é zero.
Solução:
IE EA X X ES ET1 EX1 ET0 EX0
1 0 0 0 0 0 0 1
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 18 de junho de 2013. Prof. José Wilson Lima Nerys
2. No programa a seguir, escrito em assembly do 8051, um motor de passo é acionado através da porta P1.
Cada passo corresponde a 7,5o. Analise o programa e responda às questões. Valor: 3,0
RÓTULO MNEMÔNICO RÓTULO MNEMÔNICO
ORG 00H INC R7
LJMP PASSO CJNE R7,#04H,V3
MOV R7,#00
ORG 30H DJNZ R0,V2
PASSO: MOV SP,#2FH SJMP V4
MOV R7,#00
V4: JB P3.0,V4 ESQUERDA: DB 01H
MOV R0,#3 DB 02H
V3: JNB P3.1,V1 DB 04H
MOV DPTR,#DIREITA DB 08H
SJMP V2
V1: MOV DPTR,#ESQUERDA DIREITA: DB 08H
V2: MOV A,R7 DB 04H
MOVC A,@A+DPTR DB 02H
MOV P1,A DB 01H
END
a) Explique a função da linha "V4: JB P3.0,V4".
Solução:
Enquanto o pino P3.0 estiver em nível lógico alto (P3.0 = 1), o processamento fica aguardando nesta
linha. Quando P3.0 é levado ao nível lógico zero (P3.0 = 0), o processamento passa para a linha
seguinte. É o pino usado para ligar/desligar o motor de passo.
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 18 de junho de 2013. Prof. José Wilson Lima Nerys
O motor de passo pode girar para a esquerda (DPTR = endereço da Tabela ESQUERDA) ou para a
direita (DPTR = endereço da Tabela DIREITA). A tabela lida define o sentido de rotação do motor. A
tabela é lida através do comando "MOVC A,@A+DPTR" e o valor lido é enviado para a porta P1, onde
está conectado o motor de passo. Assim, se P3.1 = 1, o motor de passo gira 90o para a direita. Se P3.1 =
0, o motor gira 90o para a esquerda. A cada 90o de rotação o processamento volta para V4 e verifica o
nível lógico de P3.0. Se P3.0 = 1, o motor é desligado. O processamento fica aguardando em um laço
infinito. Fazendo P3.0 = 1, o motor volta a funcionar.
3. Pensando na segurança das pessoas que frequentam sua boate, o proprietário decidiu implantar um
sistema de monitoramento da quantidade de pessoas no ambiente. Nesse sistema, desenvolvido com o
microcontrolador 8051, um sensor, na entrada, incrementa um contador que registra o número de
pessoas que entram no recinto e outro sensor na saída decrementa esse mesmo contador. Faça um
programa que usa a interrupção externa zero, por transição, ligada ao sensor de entrada e a interrupção
externa 1, por transição, ligada ao sensor de saída. O programa deve mostrar em um conjunto de 4
displays de 7-segmentos a quantidade de pessoas presentes e deve acionar um alarme quando a
quantidade de pessoas ultrapassar 1200. Valor: 4,0
Dados complementares:
Os displays estão conectados às portas P2 (byte superior) e P0 (byte inferior) através de decodificadores.
O alarme está conectado ao pino P3.7.
Os registradores usados para a contagem são R1 (byte superior) e R0 (byte inferior)
ORG 00H
LJMP BOATE
ORG 03H
LJMP ENTRADA ; Desvia para a subrotina ENTRADA
ORG 13H
LJMP SAIDA ; Desvia para a subrotina SAIDA
ORG 30H
BOATE: MOV SP,#2FH
MOV IE,#85H ; Habilita as interrupções externas 0 e 1
MOV TCON,#05H ; Interrupções 0 e 1 por transição
MOV R1,#00H ; Valor inicial dos registradores usados na contagem
MOV R2,#00H
CLR ALARME ; Desliga o Alarme
V1: CJNE R1,#12H,MOSTRA ; Verifica se R1 = 12H. Se não for, apenas mostra contagem
CJNE R0,#00H,ALARME ; Se R1 = 12H, verifica se R0 = 00H. Se R0 ≠ 00H, liga alarme
MOSTRA: MOV P2,R1 ; Mostra em P2 os dois dígitos superiores da contagem
MOV P1,R0 ; Mostra em P1 os dois dígitos inferiores da contagem
SJMP V1 ; Volta para verificar se a contagem ultrapassou 1200
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 18 de junho de 2013. Prof. José Wilson Lima Nerys
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 5 de junho de 2014. Prof. José Wilson Lima Nerys
MICROPROCESSADORES E MICROCONTROLADORES
PROVA 2 - Uma Solução Possível
1. Suponha um sistema com um conjunto de 8 LEDs conectados à porta P1 e duas chaves do tipo push-
button conectadas aos pinos P3.2 e P3.3. Analise o programa da Tabela 1, escrito em linguagem
assembly do 8051 e responda às questões. Valor: 3,0
Tabela 1: Programa em assembly do 8051
RÓTULO MNEMÔNICO RÓTULO MNEMÔNICO
ORG 00H V1: MOV R0,#10
LJMP INICIO MOV A,#03H
V3: MOV P1,A
Parte 2
ORG 03H LCALL ATRASO
LJMP V1 RL A
DJNZ R0,V3
ORG 13H RETI
LJMP V2
Parte 1 V2: MOV P1,#0FH
INICIO: MOV SP,#2FH LCALL ATRASO
Parte 3
MOV IE,#85H MOV P1,#0F0H
MOV TCON,#01H LCALL ATRASO
MOV IP,#01H RETI
SJMP $
ATRASO: MOV R7,#200
V4: MOV R6,#200
DJNZ R6,$
DJNZ R7,V4
RET
END
Questões (Valor de cada questão: 1,0):
a) Explique a finalidade da Parte 1. Qual configuração final das interrupções externas após execução da
Parte 1?
Solução:
A Parte 1 tem duas partes: a primeira parte contém os endereços das interrupções externas zero e 1,
com o endereço de desvio para as rotinas a serem executadas quando as duas forem solicitadas. Na
segunda parte as interrupções externas zero e 1 são habilitadas; a interrupção externa zero é por
transição e a 1 por nível. A interrupção externa zero tem prioridade alta. Ao final das configurações o
programa entra em um laço infinito, aguardando a chamada das interrupções.
c) Como funciona a Parte 3? O que ocorre se a chave do pino P3.2 for pressionado durante a execução
da Parte 3?
Solução:
Na Parte 3 os nibbles inferior (0000 1111) e superior (1111 0000) são alternados, enquanto a chave
P3.3 permanecer em nível lógico baixo (interrupção por nível). Se a chave P3.2 for pressionada
durante a execução da Parte 3, o processamento desvia para a Parte 2, que é executada normalmente
(10 vezes) e, depois, o processamento volta para a Parte 3.
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 5 de junho de 2014. Prof. José Wilson Lima Nerys
IN1 EQU P0.1 ; Atribui-se o nome IN1 ao pino P0.1 de acionamento do motor
IN2 EQU P0.0 ; Atribui-se o nome IN2 ao pino P0.0 de acionamento do motor
ORG 00H
LJMP INICIO
ORG 30H
INICIO: MOV SP,#2FH
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 5 de junho de 2014. Prof. José Wilson Lima Nerys
V3: JB CH0, V1 ; Enquanto CH0 estiver aberta (CH0 = 1), o motor fica desligado
SETB Verde ; Liga LED Verde quando CH0 = 0. Motor habilitado para acionamento
V2: JB CH2,V3 ; Se CH2=1, verificar CH0 (ainda está habilitado?). Se CH2=0, liga motor
SETB IN1
; Motor no sentido reverso (de acordo com a Tabela 2)
CLR IN2
CLR Amarelo ; Desliga LED Amarelo
SETB Vermelho ; Liga LED Vermelho
SJMP V3 ; Volta para verificar chave CH0
END
3. A Figura 2 mostra um sistema onde um êmbolo é usado para deslocar um determinado volume de água
de uma seringa. O êmbolo é deslocado para a direita e para a esquerda usando um motor de passo
conectado ao nibble inferior da porta P0. A cada 10 passos do motor de passo, o êmbolo desloca 1 ml de
água. Faça um programa em assembly do 8051 onde a interrupção externa zero, por transição, faz o
êmbolo deslocar 10 ml de água (para a direita). Ao ser acionada, a interrupção externa 1, por transição,
o êmbolo desloca 20 ml de água (para a direita). Ao final de cada 20 ml o êmbolo retorna à posição
original, com a rotação do motor de passo no sentido reverso. Valor: 4,0
ORG 30H
INICIO: MOV SP,#2FH
MOV IE,#85H ; Habilita as interrupções externas INT0 e INT1
MOV TCON,#05H ; INT0 e INT1 por transição
MOV A,#01H ; Conteúdo de A a ser usado para rotacionar o motor de passo
MOV R1,#0 ; Contador de deslocamentos. Incrementa 1 a cada 10 ml deslocados
SJMP $ ; Aguarda uma das interrupções em um laço infinito
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 5 de junho de 2014. Prof. José Wilson Lima Nerys
RETORNA: MOV R0,#200 ; R0 = 200, para girar 200 passos para a direita
V2R: MOV P1,A ; Transfere conteúdo de A para o motor de passo (na porta P1)
LCALL ATRASO
RL A ; Rotaciona conteúdo de A para a esquerda
CJNE A,#10H,V1R ; Verifica de o conteúdo de A está fora do nibble inferior
MOV A,#01H ; A = 01H, se A estiver fora do nibble inferior
V1R: DJNZ R0,V2R ; Verifica se já foram executados 200 passos.
RETI
Questões Optativas
Temporizadores:
4. Suponha um sistema com 8 LEDs conectados à porta P1 e uma chave tipo push-button conectando o
pino P3.2 ao Terra. Faça um programa em assembly do 8051 com as seguintes características:
Valor: 3,0
a) Enquanto o pino permanecer em nível lógico alto o programa aguarda em um laço infinito;
b) Quando o nível lógico de P3.2 muda para nível baixo o temporizador zero, no modo 1, inicia uma
contagem de 50.000 pulsos, com cristal de 12 MHz, com interrupção.
c) A cada final de contagem do temporizador o conteúdo do acumulador, inicialmente em zero, é
incrementado em 1;
d) Os LEDs da porta P1 são ligados de acordo com conteúdo do acumulador, conforme a tabela a seguir.
A (H) 00 01 a 1F 20 a 3F 40 a 5F 60 a 7F 80 a 9F A0 a BF C0 a DF E0 a FF
LEDs nenhum 0 0e1 0a2 0a3 0a4 0a5 0a6 todos
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 5 de junho de 2014. Prof. José Wilson Lima Nerys
Solução:
Rótulo Mnemônicos Comentários
ORG 00H
LJMP INICIO
ORG 30H
INICIO: MOV SP,#2FH
MOV IE,#82H ; Habilita interrupção do temporizador zero
MOV TMOD,#01H ; Temporizador zero no modo 1
MOV TH0,#3CH ; Valor inicial da contagem do temporizador zero para contar 50.000
MOV TL0,#0AFH pulsos. Com um cristal de 12 MHz resulta em 50 ms
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 5 de junho de 2014. Prof. José Wilson Lima Nerys
Dizem que as famílias Bellini e Cellini, fabricantes de porta-joias da Itália renascentista, tinham uma característica
peculiar: os membros da família Bellini sempre escreviam frases verdadeiras nos porta-joias que eles fabricavam; e os
membros da família Cellini sempre escreviam frases falsas nos porta-joias que fabricavam. Um dia um comprador se
deparou com um conjunto com dois porta-joias com as seguintes inscrições:
Quem fabricou cada um dos porta-joias (Bellini pai, Bellini filho, Cellini pai ou Cellini filho)? (0,0)
Descreva o raciocínio lógico usado para chegar à resposta apresentada. (0,5)
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 27 de novembro de 2014. Prof. José Wilson Lima Nerys
MICROPROCESSADORES E MICROCONTROLADORES
PROVA 2 - RESPOSTA ESPERADA
1. A Fig. 1 mostra um conjunto de 16 Leds, sendo 8 conectados à porta P1 e 8 à porta P2. Eles foram
montados na forma de um círculo. Valor: 2,5
Fazer um programa em assembly do 8051 para rotacionar os Leds usando interrupções, da seguinte
forma:
A interrupção externa zero, ao ser acionada por nível, e com prioridade alta, faz os Leds girarem no
sentido anti-horário, começando do Led conectado ao pino P1.0.
A interrupção externa externa 1, ao ser acionada por transição, faz os Leds girarem no sentido horário,
começando do Led conectado à porta P1.7. A cada pedido de interrupção os Leds completam 5 voltas
antes de retornarem da interrupção.
Solução:
Rótulo Mnemônico Rótulo Mnemônico
ORG 00H ITEMA: MOV P1,A
LJMP INICIO LCALL ATRASO
RL A
ORG 03H CJNE A,#01H,ITEMA
LJMP ITEMA MOV P1,#00H
V1: MOV P2,A
13H LCALL ATRASO
LJMP ITEMB RL A
CJNE A,#01H,V1
ORG 30H MOV P2,#00H
INICIO: MOV SP,#2FH RETI
MOV IE,#85H
MOV TCON,#04H ITEMB: MOV R0,#5
MOV IP,#01H V4: MOV A,#01H
MOV A,#01H V2: RR A
MOV P1,#00H MOV P1,A
MOV P2,#00H LCALL ATRASO
SJMP $ CJNE A,#01H,V2
MOV P1,#00H
V3: RR A
MOV P2,A
ATRASO: MOV R7,#200 LCALL ATRASO
V5: MOV R6,#200 CJNE A,#01H,V3
DJNZ R6,$ MOV P2,#00H
DJNZ R7,V5 DJNZ R0,V4
RETI RETI
END
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 27 de novembro de 2014. Prof. José Wilson Lima Nerys
2. A Figura 1 mostra um sistema de acionamento de dois motor de corrente contínua, M1 e M2; a Tabela 1
mostra o sentido de rotação dos motores M1e M2, de acordo com o nível lógico dos pinos M11, M12,
M21 e M22 e a Tabela 2 mostra o nível lógico das chaves CH1 e CH2 para quatro situações diferentes
de acionamento desses motores. Valor: 2,5
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 27 de novembro de 2014. Prof. José Wilson Lima Nerys
3. Faça um programa em assembly do 8051 para gerar uma onda quadrada no pino P1.0 com período de 20
ms. O tempo de atraso para a geração do período deve ser feito com o temporizador 0 no modo 1. O
cristal oscilador é de 12 MHz. A Tabela 3 mostra os valores de TH0 e TL0 para alguns valores de início
de contagem do temporizador. Valor: 2,5
Tabela 3: Recarga do temporizador-modo 1
Início da Contagem TH0 TL0
5.535 15H 9FH
15.535 3CH AFH
25.535 63H BFH
35.535 8AH CFH
45.535 B1H DFH
55.535 D8H EFH
Solução:
Se o tempo de um período é 20 ms, então o tempo de meio período é 10 ms e a contagem deve ser de
10.000 pulsos, ou seja, de 55.535 até 65.535. Assim, da Tabela 3, TH0 = D8H e TL0 = EFH.
Rótulo Mnemônico Rótulo Mnemônico
ORG 00H ORG 30H
LJMP INICIO INICIO: MOV SP,#2FH
MOV IE,#82H
ORG 0BH MOV TMOD,#01H
CPL P1.0 MOV TH0,#0D8H
MOV TH0,#0D8H MOV TL0,#0EFH
MOV TL0,#0EFH SETB TR0
RETI SJMP $
END
Parte 1
CJNE A,#01H,V2 ATRASO: MOV R7,#200
V3: RR A V7: MOV R6,#200
MOVX @DPTR,A DJNZ R6,$
LCALL ATRASO DJNZ R7,V7
CJNE A,#01H,V3 RET
SJMP V4 END
A partir do programa da Tabela 4 e da Fig. 2, responder às questões:
(a) O que ocorre na parte 1? Qual a condição para execução da parte 1?
Solução:
A parte 1 é executada quando o pino P1.7 encontra-se em nível lógico baixo. Como DPTR = 6000H,
então o componente ativado é o conjunto de Leds. Assim, os Leds são rotacionados para a esquerda e,
em seguida para direita, antes de retornar para verificar novamente o estado do pino P1.7. Se o pino
P1.7 estiver em nível lógico alto, então desvia para verificar o estado do pino P1.6.
5. Faça um programa onde o microcontrolador recebe comandos de um computador via serial (no modo 1),
com interrupção, a uma taxa de 9600 bps, com cristal oscilador de 11,0592 MHz. A Tabela 5 a seguir
mostra os caracteres digitados no hyperterminal e o efeito no microcontrolador. Valor: 2,5
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 27 de novembro de 2014. Prof. José Wilson Lima Nerys
Solução:
Rótulo Mnemônico Rótulo Mnemônico
LAMPADA EQU P2.4 V2: CJNE R0,#43H,V3 ; LETRA C
M11 EQU P2.6 CLR M11 ; Liga motor CC
M12 EQU P2.7 SETB M12
MOV R0,#00H ; Faz R0 = 0 (entra 1 vez)
ORG 00H SJMP VARRE
LJMP INICIO
V3: CJNE R0,#52H,V4 ; LETRA R
ORG 23H CLR M11 ; Desliga motor CC
MOV R0,SBUF CLR M12
CLR RI MOV R0,#00H
RETI SJMP VARRE
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 18 de junho de 2015. Prof. José Wilson Lima Nerys
MICROPROCESSADORES E MICROCONTROLADORES
PROVA 2 – Resposta Esperada
Aluno: Matrícula:
1. Na figura a seguir 8 Leds são conectados à porta P1 e 8 à porta P2. Valor: 2,5
Faça um programa em assembly do 8051 em que as interrupções externas INT0 e INT1 são usadas para a
rotação dos Leds da figura, conforme mostrado na Tabela 1 a seguir. Use uma subrotina de atraso de
tempo baseada em registradores.
Resposta Esperada
ORG 03H
SJMP EFEITO1 ; Desvia para “Efeito1” quando a INT0 for solicitada
ORG 13H
SJMP EFEITO2 ; Desvia para “Efeito2” quando a INT1 for solicitada
ORG 30H
INICIO: MOV SP,#2FH ; Pilha na posição inicial 2F
MOV IE,#85H ; IE = 1000 0101 – Interrupções 0 e 1 habilitadas
MOV TCON,#01H ; Interrupção 0 por transição. Int. 1 por nível
MOV R0,#00H ; Valor inicial de R0 para o efeito 2
MOV R1,#00H ; Valor inicial de R1 para o efeito 2
SJMP $ ; Loop infinito aguardando interrupção
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 18 de junho de 2015. Prof. José Wilson Lima Nerys
Parte 2
CLR F0 45.535 B1H DFH
ORG 0BH SJMP V2
LJMP V1
V1: MOV TH0,#63H
INICIO: MOV SP,#2FH MOV TL0,#0BFH
MOV IE,#82H DJNZ R0,V3
Parte 3
MOV TMOD,#01H Parte 1 SETB F0
MOV TH0,#63H MOV R0,#10
MOV TL0,#0BFH V3: NOP
SETB TR0 RETI
MOV R0,#10 END
(a) O que ocorre na parte 1? Como é configurado o temporizador zero? (Valor: 0,5)
Resposta Esperada
A interrupção do temporizador zero é habilitada (IE = 82h) e o temporizador zero é configurado para
operar no modo 1 (16 bits). A contagem inicial do temporizador zero é 63BFh (25.535), ou seja, a
contagem é de 40.000 pulsos (65.535 – 25.535). Como o cristal é de 12 MHz, cada pulso é de 1 µs, ou
seja, cada contagem corresponde a 40.000 µs = 40 ms. R0 assume o valor 10, para ser usado na Parte 3.
(b) O que ocorre na parte 2? Qual a função da flag F0? (Valor: 0,5)
Resposta Esperada
Enquanto a flag F0 for zero, o processamento fica aguardando em um loop. Quando F0 se tornar 1 (o
que ocorre na Parte 3) o pino P1.0 é complementado e a flag F0 limpada. Em outras palavras, a cada vez
que a flag F0 é setada, o pino P1.0 é complementado, resultando em uma onda quadrada nesse pino.
3. Suponha que uma lâmpada é acionada através do pino P1.0 de um microcontrolador 8051. Faça um
programa em assembly do 8051 para ligar/desligar a lâmpada via porta serial. A taxa de comunicação
deve ser de 1200 bps. Cristal oscilador de 11,0592 MHz. O caractere L (4Ch) é usado para ligar a
lâmpada. O caractere D (44h) é usado para desligar. Valor: 2,5
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 18 de junho de 2015. Prof. José Wilson Lima Nerys
Resposta Esperada
ORG 00H
LJMP INICIO Desvia para INICIO, no endereço 30h
ORG 30H
INICIO: MOV SP,#2FH ; Pilha na posição inicial 2F
MOV SCON,#40H ; SCON = 0100 0000 – Serial no modo 1
MOV TMOD,#20H ; Temporizador 1 no modo 2 (recarga automática)
MOV TH1,#0E8H ; Recarga para gerar Baud rate de 1200 bps
MOV TL1,#0E8H ; Valor inicial de contagem do temporizador
CLR LAMP ; Lâmpada começa apagada
SETB TR1 ; Dispara temporizador 1, para começar geração de baud rate
SETB REN ; Habilita recepção serial
V2: CJNE A,#44H,V1 ; Se A ≠ 44h (D), desvia para V1 (loop de espera de caractere).
CLR LAMP ; Se A = 44h, então a lâmpada em P1.0 é desligada
SJMP V1 ; Volta para loop de espera de dados via serial
END
4. A figura a seguir é parte de um sistema com mapeamento de memória. O decodificador é usado para
selecionar o componente que se deseja acionar. São mostrados apenas os pinos que acionam um
conjunto de 8 Leds e um motor de passo (conectado no nibble inferior). Valor: 2,5
A15 LEDS
A14
A13
RD\ PASSO
WR\
Supondo que o sistema também contém duas chaves liga/desliga conectando os pinos P1.0 e P1.1 ao
nível lógico zero, faça um programa com as seguintes características:
(a) Enquanto P1.0 = 0, os Leds devem girar para a esquerda; se P1.0 = 1, não há rotação de Leds.
(b) Enquanto P1.1 = 0, o motor de passo deve girar para a direita; se P1.1 = 1, o motor de passo
permanece parado.
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 18 de junho de 2015. Prof. José Wilson Lima Nerys
Resposta Esperada
A partir da figura, verifica-se que os pinos A15, A14 e A13 foram usados para a seleção das regiões da
memória, o que significa regiões de 8K, como mostrado na tabela a seguir:
Assim, os 8 Leds estão na região que começa no endereço 0000H e termina no endereço 1FFFH e o
motor de passo está na região que começa no endereço 8000H e termina no endereço 9FFFH.
ORG 30H
INICIO: MOV SP,#2FH
MOV R0,#01H ; Valor inicial para os Leds
MOV R1,#11H ; Valor inicial para o motor de passo
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 18 de junho de 2015. Prof. José Wilson Lima Nerys
----------------------------------------------------------------------------------------------------------------------
Tabela 4: Lógica de operação do motor CC Tabela 5: Endereços das interrupções
IN1 IN2 Operação do motor Interrupção Endereço de
0 0 Motor parado Solicitada desvio
0 1 Rotação sentido direto Reset 0000h
INT0\ 0003h
1 0 Rotação sentido reverso
Timer/counter 0 000Bh
1 1 Motor parado INT1\ 0013h
Timer/counter 1 001Bh
Canal Serial 0023h
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 28 de janeiro de 2016. Prof. José Wilson Lima Nerys
MICROPROCESSADORES E MICROCONTROLADORES
PROVA 2 (Tema: Microcontrolador 8051) – Resposta Esperada
A Tabela 1 mostra um programa, em linguagem assembly do 8051, onde duas chaves tipo liga/desliga
(conectando os pinos P3.4 e P3.5 ao Terra) são usadas para acionar um conjunto de 8 Leds, conectados
à Porta P1. Analise o programa mostrado e responda às questões que seguem.
Tabela 1: Programa em linguagem assembly do 8051
Rótulo Mnemônico Rótulo Mnemônico Rótulo Mnemônico
CHAVE1 EQU P3.4 V1: JB CHAVE1,V2 V3: MOV LEDS,A
CHAVE2 EQU P3.5 JB CHAVE2,V3 LCALL ATRASO
LEDS EQU P1 MOV LEDS,#00H RL A
SJMP V1 SJMP V1
ORG 00H
LJMP INICIO V2: JB CHAVE2,V4 V4: MOV LEDS,#0FFH
MOV LEDS,A SJMP V1
ORG 30H LCALL ATRASO
INICIO: MOV SP,#2FH RR A ATRASO: .....
MOV A,#01H SJMP V1 RET
END
(a) Qual o efeito sobre os Leds quando as duas chaves estão desligadas (nível lógico alto)?
Resposta:
Em V1, se CHAVE1 = 1, desvia para V2. Em V2, se CHAVE2 = 1, desvia para V4. Em V4, os
Leds recebem o valor FFH, ou seja, permanecem acesos.
(b) Qual o efeito sobre os Leds quando as duas chaves estão ligadas (nível lógico baixo)?
Resposta:
Em V1, se CHAVE1 = 0, segue para a próxima linha, onde a CHAVE2 é verificada; se CHAVE2 =
0, segue para a próxima linha, onde os Leds recebem o valor 00H, ou seja, permanecem apagados.
(c) Qual o efeito sobre os Leds quando somente a chave em P3.4 estiver ligada?
Resposta:
Em V1, se CHAVE1 = 0 (ligada), segue para a próxima linha, onde a CHAVE2 é verificada; se
CHAVE2 = 1 (desligada), desvia para V3. Em V3, os Leds recebem o conteúdo A, que em seguida
é rotacionado para a esquerda (RL A). Mantendo essa condição, os Leds permanecem
rotacionando para a esquerda.
(d) Qual o efeito sobre os Leds quando somente a chave em P3.5 estiver ligada?
Resposta:
Em V1, se CHAVE1 = 1 (desligada), desvia para V2. Em V2, se a CHAVE2 = 0 (ligada), segue
para a próxima linha, onde os Leds recebem o conteúdo de A, que em seguida é rotacionado para a
direita (RR A). Mantendo essa condição, os Leds permanecem rotacionando para a direita.
Faça um programa, em linguagem assembly do 8051, onde a interrupção externa 0, por transição, é
usada para ligar/desligar um motor CC no sentido direto e a interrupção externa 1, por transição, é usada
para ligar/desligar o mesmo motor no sentido reverso. Os pinos e a lógica de acionamento do motor são
mostrados na Tabela 2.
Tabela 2: Pinos e lógica de acionamento do motor CC
Pino P0.0 Pino P0.1 Efeito
0 0 Motor parado
0 1 Motor no sentido direto
1 0 Motor no sentido reverso
1 1 Motor parado
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 28 de janeiro de 2016. Prof. José Wilson Lima Nerys
Resposta Esperada:
M0 EQU P0.0
M1 EQU P0.1
ORG 00H
LJMP INICIO
ORG 30H
INICIO: MOV SP,#2FH
MOV IE,#85H ; Habilita INT0 e INT1
MOV TCON,#05H ; Ambas por transição
SJMP $ ; Laço infinito aguardando uma das interrupções
END
Faça um programa, em assembly do 8051, onde o temporizador zero, no modo 1, é usado para gerar
uma onda quadrada no pino P2.0, com período de 20 ms. O cristal oscilador é de 12 MHz. Se desejar,
pode usar a interrupção do temporizador zero. Indique o valor decimal para os registradores de
contagem do temporizador (não há necessidade de fazer a conversão para hexadecimal).
Resposta Esperada:
ORG 00H
LJMP INICIO
ORG 0BH
CPL P2.0
MOV TH0,#0D8H ; decimal = 55.536 (65.536 - 10.000)
MOV TL0,#0F0H
RETI
ORG 30H
INICIO: MOV SP,#2FH
MOV IE,#82H ; Habilita interrupção do Timer 0
MOV TMOD,#01H ; Timer 0 no modo 1
MOV TH0,#0D8H ; decimal = 55.536 (65.536 - 10.000)
MOV TL0,#0F0H
SETB TR0 ; Dispara Timer 0
SJMP $ ; Laço infinito esperando interrupção do Timer 0
END
4. Tema: Serial do microcontrolador 8051. (Escolher apenas uma das duas questões) Valor: 2,5
Resposta Esperada:
ORG 00H
LJMP INICIO
ORG 30H
INICIO: MOV SP,#2FH
MOV SCON,#40H ; Assincrona de 8 bits
MOV TMOD,#20H ; Timer 1 no modo 2 (recarga automática)
MOV TH1,#0FDH ; Baud rate = 9600 bps (fclock = 11.0592 MHz)
MOV TL1,#0FDH
SETB TR1 ; Dispara o timer 1
MOV DPTR,#MSG ; Endereço inicial do TEXTO
V0: JB SENSOR,V1
SJMP V0
Resposta Esperada:
ORG 00H
LJMP INICIO
ORG 23H
MOV R0,SBUF
CLR RI
RETI
ORG 30H
INICIO: MOV SP,#2FH
MOV IE,#90H ; Habilita interrupção da serial
MOV SCON,#40H ; Assincrona de 8 bits
MOV TMOD,#20H ; Timer 1 no modo 2 (recarga automática)
MOV TH1,#0F4H ; Baud rate = 9600 bps (fclock = 11.0592 MHz)
MOV TL1,#0F4H
SETB TR1 ; Dispara o timer 1
SETB REN ; Habilita recepção serial
MOV A,#11H ; Valor inicial de A (para motor de passo)
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 28 de janeiro de 2016. Prof. José Wilson Lima Nerys
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 28 de janeiro de 2016. Prof. José Wilson Lima Nerys
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 30 de junho de 2016. Prof. José Wilson Lima Nerys
MICROPROCESSADORES E MICROCONTROLADORES
PROVA 2 (Tema: Microcontrolador 8051)
A Figura a seguir mostra um carro com quatro sensores de obstáculos (nível baixo na presença de
obstáculo) e dois motores de corrente contínua. Faça um programa (livremente), em assembly do 8051,
para acionar os motores de forma que o carro se desloque desviando dos obstáculos. Quando não há
obstáculo, o carro deve se deslocar para a frente (sensor S0 localizado na parte da frente). Explique a
lógica desenvolvida. Todos os sensores devem ser considerados.
S0
Tabela 1: Pinos do Microcontrolador
S0 S1 S2 S3
Sensores
(P1.0) (P1.1) (P1.2) (P1.3)
Motor M1 Motor M2 Situação do motor
Sistema de controle P3.4 P3.5 P3.0 P3.1
(M11) (M12) (M21) (M22)
S3
S1
M2 M1
0 0 0 0 Motor parado
Bateria
0 1 0 1 Rotação horária
1 0 1 0 Rotação anti-horária
1 1 1 1 Motor parado
S2
INÍCIO
Configurações
básicas
S
N Para direita
S0 = 1? M1 (anti-horário) S0 = 0?
M2 (anti-horário)
N
S
S
N Para direita
S1 = 1? M1 (anti-horário) S1 = 0?
M2 (anti-horário)
S N
N Para Frente
S2 = 1? M1 (horário)
M2 (anti-horário)
S
S
N Para esquerda
S3 = 1? M1 (horário) S3 = 0?
M2 (horário)
S N
Para Frente
M1 (horário)
M2 (anti-horário)
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 30 de junho de 2016. Prof. José Wilson Lima Nerys
Faça um programa, em linguagem assembly do 8051, onde as interrupções externas 0 e 1 são utilizadas,
por transição, para acionar um motor de passo. Quando a interrupção externa 0 é solicitada, o motor de
passo gira 180º no sentido horário (direita); quando a interrupção externa 1 é solicitada o motor gira
duas voltas completas no sentido anti-horário (esquerda). Cada passo do motor corresponde a 5º. O
motor está conectado ao nibble inferior da porta P2.
Resposta esperada:
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 30 de junho de 2016. Prof. José Wilson Lima Nerys
Resposta esperada:
O temporizador 0 está configurado para operar no modo 1 (16 bits) e o temporizador 2, no modo 0
(13 bits). A interrupção do temporizador 0 está habilitada.
(b) Qual o tempo resultante de cada contagem do temporizador, com a recarga indicada em (II)? (0,6)
Resposta esperada:
A recarga de TH0/TL0 é D8EFH, que corresponde ao valor decimal 55.535, de acordo com a
Tabela 7. Portanto, a contagem do temporizador 1 será de 55.535 a 65.535, que corresponde a
10.000 pulsos. Sendo cada pulso de 1 µs (clock de 12 MHz frequência do temporizador = 1
MHz), então cada contagem do temporizador corresponde a 10.000 µs = 10 ms.
(c) Qual o efeito, sobre os Leds, da execução das instruções indicadas em (III)? (0,7)
Resposta esperada:
O valor inicial de A é A = 0000 0000b. Assim, na primeira passagem por (III), o valor de A torna-
se 0000 0001b. Então ocorre uma rotação à esquerda de A, que passa para A = 0000 0010b. Assim,
na segunda operação OU (ORL A,#01H), o valor de A torna-se A = 0000 0011b. Novamente há
uma rotação à esquerda de A e outra operação OU, fazendo A = 0000 0111. Ao final de 8
operações OU/rotação, tem-se A = 1111 1111b. Portanto, os Leds acendem, um a um, até ficarem
todos acesos. Depois de todos acesos, a operação CJNE A,#0FFH,V2 faz o processamento ir para a
linha seguinte. Então começa tudo de novo.
(d) De quanto em quanto tempo as instruções indicadas em (III) são executadas? (0,7)
Resposta esperada:
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 30 de junho de 2016. Prof. José Wilson Lima Nerys
Faça um programa, em assembly do 8051, onde caracteres recebidos via serial do microcontrolador (no
modo 1) são usados para acionar uma lâmpada (pino P1.7). Escolha, na Tabela 8, um caractere qualquer
para ligar a lâmpada e outro para apagar. A taxa de comunicação deve ser de 4800 bps e o cristal
oscilador, 11,0592 MHz. Use interrupção da recepção serial.
Uma mulher chamada Portia (personagem de Shakespeare), resolveu que se casaria com o primeiro
homem que passasse por dois testes. O segundo teste é dado a seguir: havia três caixas em uma sala e
em uma delas estava o retrato de Portia. O candidato a esposo deveria acertar em qual das caixas estava
o retrato, seguindo as frases que estavam escritas em cada uma delas. Portia explicou que em uma das
caixas as duas frases eram verdadeiras; em outra as duas frases eram falsas e na terceira uma frase era
falsa e outra verdadeira.
Caixa A Caixa B Caixa C
Resposta esperada:
Uma das maneiras de resolver é supondo que esteja em A, depois em B, depois em C e, para cada suposição,
verificar as frases de cada caixa.
Frases da Caixa A: F e F
Frases da Caixa B: F e F
Frases da Caixa C: V e V
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 30 de junho de 2016. Prof. José Wilson Lima Nerys
Se o retrato estivesse na caixa A, então todas as frases das caixas A e B seriam falsas, o que contraria a
afirmação de Portia. Conclusão: não está na Caixa A.
Frases da Caixa A: V e V
Frases da Caixa B: V e F
Frases da Caixa C: V e F
Se o retrato estivesse na caixa B, então as frases das caixas B e C seriam, respectivamente, V e F, o que
contraria a afirmação de Portia. Conclusão: não está na Caixa B.
Frases da Caixa A: V e F
Frases da Caixa B: V e V
Frases da Caixa C: F e F
Há uma caixa com ambas as frases verdadeiras (B); uma com ambas falsas (C) e uma com uma verdadeira e
outra falsa (A), conforme a afirmação de Portia. Conclusão: o retrato está na Caixa C.
Informações Complementares
Tabela 4: End. interrupções
Tabela 3: Alguns Registradores Especiais
Interrupção Endereço
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
Solicitada de desvio
TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
Reset 0000h
IE EA X X ES ET1 EX1 ET0 EX0 INT0\ 0003h
IP X X X PS PT1 PX1 PT0 PX0 Timer/counter 0 000Bh
PSW CY AC F0 RS1 RS0 OV X P INT1\ 0013h
TMOD G1 C/T\ M1.1 M0.1 G0 C/T\ M1.0 M0.0 Timer/counter 1 001Bh
SCON SM0 SM1 SM2 REN TB8 RB8 TI RI Canal Serial 0023h
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 30 de junho de 2016. Prof. José Wilson Lima Nerys
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 08 de junho de 2017. Prof. José Wilson Lima Nerys
MICROPROCESSADORES E MICROCONTROLADORES
PROVA 2 (Tema: Microcontrolador 8051)
A Figura a seguir mostra um sistema no qual um motor de passo é usado para o transporte vertical de
objetos a serem colocados nas posições 1, 2 ou 3, separadas por alturas de 20 cm. Cada passo do motor
corresponde a 6º e cada volta completa corresponde a 10 cm de deslocamento vertical. O motor
encontra-se, originalmente, na posição 1. Faça um programa, em assembly do 8051, para acionar o
motor de passo com a seguinte lógica:
(a) O programa fica inicialmente em um loop monitorando os pinos P2.1, P2.2 e P2.3 (originalmente
em estado alto).
(b) A cada pino acionado (pressionado e liberado), o programa verifica a posição em que a base se
encontra e compara com a posição desejada; e desloca-se, para cima ou para baixo a distância
correspondente. Exemplo: Se a base está na posição 1 e o pino P2.2 for acionado, o objeto é
deslocado 20 cm para cima; e o programa retorna para o loop; se o pino pressionado for P2.3, o
objeto é deslocado 40 cm, da posição 1 até a posição 3.
(c) R0 guarda o número da posição em que a base se encontra.
(d) O motor está conectado ao nibble inferior da porta P1.
Resposta Esperada:
Considerações iniciais: Cada passo do motor corresponde a 6º; assim, são necessários 60 passos (360/6)
para completar uma volta. Cada volta corresponde a um deslocamento vertical de 10 cm; assim, são
necessários 120 (2 x 60) passos para percorrer 20 cm e 240 (4 x 60) passos para deslocar 40 cm.
Se a base estiver na posição 1, ela subirá 20 cm para alcançar a posição 2 e 40 cm para a posição 3.
Se a base estiver na posição 2, ela subirá 20 cm para alcançar a posição 3 e descerá 20 cm para alcançar a
posição 1.
Se a base estiver na posição 3, ela descerá 20 cm para alcançar a posição 2 e 40 cm para a posição 1.
O fluxograma a seguir ilustra melhor todo o processo. Após cada escolha, a primeira é ação é verificar se
a base já se encontra na posição desejada. Se estiver, o processamento volta para o laço principal.
Para manter coerência com a Figura inicial, o motor gira no sentido anti-horário (RL A) para subir a base
e no sentido horário (RR A) para descer.
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 08 de junho de 2017. Prof. José Wilson Lima Nerys
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 08 de junho de 2017. Prof. José Wilson Lima Nerys
Faça um programa, em linguagem assembly do 8051, onde as interrupções externas 0 e 1 são utilizadas
para acionar Leds na porta P1. A interrupção externa zero é por nível e, quando solicitada, os Leds da
porta P1 devem piscar, todos juntos, enquanto houver solicitação. A interrupção externa 1 é por
transição, com prioridade alta e, quando solicitada, os Leds devem rotacionar para a esquerda, 3 voltas
completas (3 voltas de 8 rotações). Na subrotina de atraso de tempo para os dois casos deve-se usar R0
= 100 e R1 = 200.
Resposta Esperada:
O programa mostrado na Tabela 2 foi escrito em assembly do 8051. É um programa usado para acionar
alguns dispositivos via canal serial do 8051. Analise o programa e responda às questões pedidas. O
cristal oscilador é de 11,0592 MHz.
Observações:
(i) Há um Led verde acionado através do pino P2.7 (liga com nível alto); e um Led vermelho acionado
através do pino P2.6 (liga com nível alto).
(ii) Há um motor CC acionado através dos pinos P2.0 e P2.1, seguindo a seguinte lógica:
(iii)
Tabela 1: lógica de acionamento do motor cc
P2.0 P2.1 Comportamento do Motor
0 0 Motor parado
0 1 Motor gira no sentido horário
1 0 Motor gira no sentido anti-horário
1 1 Motor parado
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 08 de junho de 2017. Prof. José Wilson Lima Nerys
(a) Qual a configuração resultante das instruções da linha 11 à linha 18? (0,5)
Resposta Esperada:
O canal serial foi configurado para operar no modo 1 (assíncrono de 8 bits) com baud rate de 1200
bps (ver tabela 5) e com interrupção (IE = 90h = 1001 0000b).
(b) O que acontece com a execução das instruções da linha 21 à linha 26? (0,5)
Resposta Esperada:
O conteúdo de A (recebido via serial) é comparado com 31H (código ASCII do número 1, de
acordo com a Tabela 7). Se A ≠ 31H, desvia para V2; se A = 31H, aciona o motor cc no sentido
anti-horário (SETB P2.0 e CLR P2.1) e liga o Led verde (SETB P2.7). A seguir, através da
instrução RETI, retorna para o laço infinito SJMP $ (linha 19).
(c) O que acontece com a execução das instruções da linha 27 à linha 32? (0,5)
Resposta Esperada:
O conteúdo de A (recebido via serial) é comparado com 32H (código ASCII do número 2, de
acordo com a Tabela 7). Se A ≠ 32H, desvia para V3; se A = 32H, aciona o motor cc no sentido
horário (CLR P2.0 e SETB P2.1) e liga o Led vermelho (SETB P2.6). A seguir, através da
instrução RETI, retorna para o laço infinito SJMP $ (linha 19).
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 08 de junho de 2017. Prof. José Wilson Lima Nerys
Faça um programa, em assembly do 8051, usando o temporizador zero no modo 1, com interrupção,
para gerar uma onda quadrada no pino P1.0, com meio período correspondente a 4 segundos. Use uma
base de tempo de 40 ms, para um cristal oscilador de 12 MHz.
Resposta Esperada:
Considerações iniciais: para utilizar uma base de 40 ms, com cristal de 12 MHz, é necessário gerar
40.000 pulsos de 1 µs no modo 1 do temporizador zero. Assim, a contagem deve começar de 25535
(65535-40000), que corresponde a 63BFH, de acordo com a Tabela 6. Para gera 4 segundos com base
de 40 ms, são necessárias 100 contagens do temporizador, antes de cada complemento do pino P1.0.
============================
Questão opcional (Explique sua conclusão) Valor: 0,5
Há muito tempo, num misterioso e longínquo país do Oriente, havia um oráculo bastante visitado por
pessoas de todas as partes da nação e até mesmo de países vizinhos. Nesse oráculo apareciam três
deuses, sentados lado a lado: o deus da Verdade, o deus da Falsidade e o deus da Diplomacia, que
atendiam os fiéis respondendo às suas súplicas. Naturalmente, as respostas do deus da Verdade eram
sempre verdadeiras, as do deus da Falsidade eram sempre falsas e as do deus da Diplomacia tanto
poderiam ser verdadeiras quanto falsas. Mas havia algo que afligia muito os pobres peregrinos: eles não
sabiam se as respostas que ouviam eram verdadeiras ou não pois, como os três deuses eram idênticos,
ficava impossível reconhecer qual dos deuses estava falando. Certo dia, um fiel mais ousado decidiu
colocar a situação em pratos limpos.
Raciocínio lógico:
Como o primeiro deus afirma que o deus ao lado é o da Verdade, ele não pode ser o da Verdade, pois só
existe um deus da Verdade. Portanto, ele é o deus da Falsidade ou da Diplomacia.
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 08 de junho de 2017. Prof. José Wilson Lima Nerys
Raciocínio lógico:
Como o segundo deus afirmou ser o da Diplomacia, ele não pode ser o deus da Verdade. Senão ele diria
ser o da Verdade, e não o da Diplomacia. Portanto, ele é o deus da Falsidade ou da Diplomacia.
Raciocínio lógico:
A partir das respostas dos dois primeiros deuses, já se conclui que nenhum deles é o deus da Verdade e,
portanto, o da Verdade é o terceiro. Daí, conclui-se que:
Informações Complementares
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 31 de outubro de 2017. Prof. José Wilson Lima Nerys
MICROPROCESSADORES E MICROCONTROLADORES
Resposta Esperada:
No microcontrolador da família 8051 (arquitetura CISC) códigos e dados compartilham o mesmo
barramento; assim, no processo de execução de uma instrução, o código é buscado na memória ROM,
decodificado e, depois, executado. Como o barramento é único, a busca de uma nova instrução ocorre
somente após a execução da atual.
Faça um programa, em linguagem assembly do 8051, onde as interrupções externas 0 e 1 são utilizadas
para acionar uma lâmpada no pino P1.7 e um motor de passo no nibble inferior da porta P2. A
interrupção externa zero, por transição, e com prioridade alta, aciona (liga/desliga) a lâmpada. A
interrupção externa 1, por transição, resulta na rotação do motor de passo no sentido anti-horário, três
voltas completas. Cada passo do motor corresponde a 5o.
Resposta Esperada:
27
28 ATRASO: MOV R1,#100 ; Subrotina de atraso de tempo
29 V2: MOV R2,#250
30 DJNZ R2,$
31 DJNZ R1,V2
32 RET
33
34 END
Uma vez que 1 passo do motor corresponde a 5º, são necessários 72 passos para completar 1 volta e
216 passos para 3 voltas completas. Assim, R0 = 216, na rotina da interrupção externa 1.
1 (RST) (VCC) 20
330 Ω
2(RxD/P3.0) (P1.7)19
12 MHz
3(TxD/P3.1) (P1.6)18 LED3
330 Ω
4 (XTAL2) (P1.5)17
330 Ω
5 (XTAL1) 16 LED2
LED1
33 pF 33 pF 6(INT0/P3.2) 15
7(INT1/P3.3) (P1.2)14
8(T0/P3.4) (P1.1) 13
CH1 9(T1/P3.4) (P1.0) 12
CH2
10(GND) (P3.7) 11
CH3
Resposta Esperada:
20
21 V0: CLR F0 ; Limpa F0 F0 =1 indica final da contagem desejada
22 JB CH1,F10HZ ; Se CH1 = 1, desvia para F10HZ. Se CH1 = 0, próxima linha
23 MOV R0,#50 ; Faz R0 = 50 para gerar meio período de 50 * 10 ms = 0,5 s
24 SETB TR0 ; Dispara temporizador zero
25 JNB F0,$ ; Aguarda F0 = 1 (que ocorre a cada 0,5 s)
26 CPL LED1 ; Complementa Led1
27 CLR TR0 ; Para temporizador zero
28 SJMP V0 ; Volta para início da verificação das chaves
29
30 F10HZ: JB CH2,F50HZ ; Se CH2 = 1, desvia para F50HZ. Se CH2 = 0, próxima linha
31 MOV R0,#5 ; Faz R0 = 5 para gerar meio período de 5 * 10 ms = 50 ms
32 SETB TR0 ; Dispara temporizador zero
33 JNB F0,$ ; Aguarda F0 = 1 (que ocorre a cada 50 ms)
34 CPL LED2 ; Complementa Led2
35 CLR TR0 ; Para temporizador zero
36 SJMP V0 ; Volta para início da verificação das chaves
37
38 F50HZ: JB CH3,V0 ; Se CH3 = 1, volta para V0. Se CH2 = 0, próxima linha
39 MOV R0,#1 ; Faz R0 = 1 para gerar meio período de 1 * 10 ms = 10 ms
40 SETB TR0 ; Dispara temporizador zero
41 JNB F0,$ ; Aguarda F0 = 1 (que ocorre a cada 10 ms)
42 CPL LED3 ; Complementa Led3
43 CLR TR0 ; Para temporizador zero
44 SJMP V0 ; Volta para início da verificação das chaves
45
46 ONDAS: MOV TH0,#HIGH(55535) ; Recarrega TH0 com valor para gerar 10 ms
47 MOV TL0,#LOW(55535) ; Recarrega TL0 com valor para gerar 10 ms
48 DJNZ R0,SAI ; Decrementa R0 (50, 5 ou 1). Se R0 ≠ 0, retorna da subrotina
49 SETB F0 ; Seta F0 ao final da contagem desejada (500ms, 50ms ou 10ms)
50 SAI: NOP
51 RETI
52 END
Obs.:
(a) Para gerar as ondas quadradas é necessário gerar um tempo que corresponde a meio período
de cada onda, porque a cada meio período o estado do pino de saída da onda deve mudar
(nível baixo nível alto). Assim,
(b) Para a onda de 1 Hz, o período é de 1 s e, portanto, o meio-período corresponde a 500 ms.
(c) O período da onda de 10 Hz é 100 ms e, portanto, deve-se gerar um meio período de 50 ms.
(d) O período da onda de 50 Hz é 20 ms e, portanto, deve-se gerar um meio período de 10 ms.
O programa mostrado na Tabela 1 foi escrito em assembly do 8051. É um programa para acionar uma
lâmpada via canal serial do 8051. Analise o programa e responda às questões pedidas. O cristal
oscilador é de 11,0592 MHz. A interface serial usada para enviar os comandos envia sempre dois
caracteres em sequência.
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 31 de outubro de 2017. Prof. José Wilson Lima Nerys
O primeiro caractere é recebido com F0 = 0. Se esse caractere for a letra ‘A’, F0 é setado,
preparando para receber o segundo caractere.
Se o segundo caractere for ‘3’, liga lâmpada (SETB LAMP), chama uma subrotina de atraso de
tempo de 30 s e, depois, desliga a lâmpada (CLR LAMP).
A comunicação serial do 8051 é habilitada para receber dados a uma taxa de 9600 bps, usando
interrupção. São verificados sempre 2 caracteres; se o primeiro for a letra ‘A’, são verificadas 3
possibilidades para o segundo caractere: 1, 2 ou 3. Se o segundo caractere for ‘1’, liga a lâmpada;
se for for ‘2’, desliga; se for ‘3’, liga a lâmpada com temporização, desligando a mesma após 30
segundos.
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)
Goiânia, 31 de outubro de 2017. Prof. José Wilson Lima Nerys
Ana, Beatriz e Carolina são professoras de Teatro, Dança e Ginástica, mas não necessariamente nessa
ordem. A professora de Ginástica é a menor de todas e é a melhor amiga de Beatriz. A professora de
Dança é menor que a professora Carolina. Preencha a tabela com a profissão a seguir de cada uma
delas.
Raciocínio:
2. Sendo a professora de Dança menor que Carolina, então Carolina não é a menor de todas e sua
modalidade não é Dança e nem Ginástica (menor de todas). Assim, Carolina é professora de
Teatro.
3. A partir de 1 e 2, conclui-se que a professora de Ginástica é Ana (a menor de todas) e a
professora de Dança é Beatriz.
Informações Complementares
6 36 54 G 47 71 g 67 103
Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação (EMC) – Universidade Federal de Goiás (UFG)