Você está na página 1de 6

EXERCCIOS DE MICROPROCESSADORES E MICROCONTROLADORES Parte 1 Preencher a segunda coluna com as instrues necessrias para realizar a tarefa indica na primeira

a coluna
TAREFA Habilita as Interrupes externas 0 (por transio) e 1 (por nvel). INSTRUES MOV IE,#85H MOV TCON,#01H MOV IE,#17H MOV TCON,#04H MOV IE,#85H MOV TCON,#01H MOV IP,#01H MOV IE,#91H MOV TCON,#01H MOV IP,#01H MOV SP,#2FH MOV IE,#85H MOV TCON,#05H SJMP $ MOV TMOD,#01H MOV IE,#82H SETB TR0 MOV TMOD,#20H MOV IE,#8CH MOV IP,#04H SETB TR1

Habilita Interrupo Externa 0 por nvel e externa 1 por transio. E a interrupo do temporizador 0.

Habilita Interrupo Externa 0 por transio e com prioridade 1. Habilita Interrupo Externa 1 por nvel e com prioridade 0.

Habilita interrupo da serial e interrupo externa 0, por transio e com prioridade 1

Configura pilha para posio 2FH Habilita interrupes externas 0 e 1, ambas por transio Espera em um lao infinito Configura temporizador 0 no modo 1 e temporizador 1 no modo 0. Habilita interrupo do temporizador 0 Dispara temporizador 0 Habilita Temporizador 1 no modo 2 Habilita interrupo Externa 1 e do temporizador 1 Estabelece prioridade 1 para a interrupo Externa 1 Dispara temporizador 1

Habilita Comunicao Serial no Modo 1 Habilita Temporizador 1 no modo 2 (recarga automtica) Carrega TH1 para uma taxa de transmisso de 4.800 bps Dispara temporizador 1 Habilita Comunicao Serial no Modo 1 Habilita Interrupo da Serial Habilita Temporizador 1 no modo 2 (recarga automtica) Carrega TH1 para uma taxa de transmisso de 9.600 bps Dispara temporizador 1

MOV SCON,#40H MOV TMOD,#20H MOV TH1,#0FAH SETB TR1

Habilita Comunicao Serial no Modo 3 Habilita Interrupo da Serial Habilita Temporizador 1 no modo 2 (recarga automtica) Carrega TH1 para taxa de transmisso de 19.200 bps Dispara temporizador 1 Habilita Comunicao Serial no Modo 1 Habilita Interrupo da Serial Habilita Temporizador 1 no modo 2 (recarga automtica) Carrega TH1 para uma taxa de transmisso de 9.600 bps Dispara temporizador 1 Habilita Recepo Serial

MOV SCON,#40H MOV IE,#90H MOV TMOD,#20H MOV TH1,#0FDH SETB TR1 MOV SCON,#0C0H MOV IE,#90H MOV TMOD,#20H MOV TH1,#0FDH SETB SMOD SETB TR1 MOV SCON,#40H MOV IE,#90H MOV TMOD,#20H MOV TH1,#0FDH SETB SMOD SETB TR1 SETB REN

Parte 2 Faa os projetos a seguir e, se possvel, grave no microcontrolador 8051 e verifique funcionamento na plataforma de desenvolvimento do laboratrio H6. 1. O dono de um estabelecimento comercial resolveu adotar um sistema microcontrolado com o objetivo de monitorar a quantidade de pessoas presentes na loja a cada instante. O sistema montado tem as seguintes caractersticas: (a) A interrupo 0 (INT0), juntamente com um sensor de presena, usada para registrar a quantidade de pessoas que entram na loja e atualizar a quantidade de pessoas presentes; esses valores so guardados em dois registradores; (b) A interrupo 1 (INT1), juntamente com um outro sensor de presena, usada para atualiza a quantidade de pessoas presentes; (c) A quantidade de pessoas que entraram mostrada continuamente na porta P1 e a quantidade de pessoas presentes mostrada continuamente na porta P2; (d) Quando o nmero de pessoas presentes for maior que 10, uma lmpada de alerta ligada. A lmpada acionada atravs do pino P0.0. Faa o fluxograma e o programa de monitoramento. Se possvel, grave no microcontrolador e verifique o funcionamento na plataforma de desenvolvimento.

$mod51 ENTRAM PRESENTES LAMPADA ORG 00H LJMP INICIO ORG 03H EQU EQU EQU 00H 01H P0.0 ; GUARDA NUM. DE PESSOAS QUE ENTRAM NA LOJA ; GUARDA NUM. DE PESSOAS PRESENTES ; ACIONAMENTO DA LAMPADA

LJMP ATENDE_ZERO ORG 13H LJMP ATENDE_UM ORG 30H INICIO: MOV SP,#2FH MOV IE,#85H MOV TCON,#05H MOV ENTRAM,#00H MOV PRESENTES,#00H APAGA: CLR LAMPADA MOSTRA: SETB EA MOV P1,ENTRAM MOV P2,PRESENTES CLR EA CLR C MOV A,PRESENTES SUBB A,#10H JC APAGA JZ APAGA SETB LAMPADA SJMP MOSTRA

; Habilita interrupes externas 0 e 1 ; Interrupes 0 e 1 por transio ; Zera nmero de pessoas que entram ; Zera nmero de pessoas presentes

; A lmpada apagada sempre que Presentes =< 10 ; Habilita as interrupes ; Elas s ficam habilitadas nesse intervalo ; Desabilita as interrupes ; a flag de Carry limpa antes das operaes aritmticas ; Compara Nmero de Presentes com 10 ; Se Presentes < 10 apaga lmpada e continua ; Se Presentes = 10 apaga lmpada e continua ; Se Presentes > 10 acende lmpada e continua

;======================================== ; Esta sub-rotina atualiza o nmero de pessoas que entram e o nmero de presentes ; Adiciona 1 a ambos os valores e faz o ajuste para decimal ;========================================= ATENDE_ZERO: CLR C ; a flag de Carry limpa antes das operaes aritmticas MOV A,ENTRAM ADD A,#01H DA A MOV ENTRAM,A CLR C ; a flag de Carry limpa antes das operaes aritmticas MOV A,PRESENTES ADD A,#01H DA A MOV PRESENTES,A RETI ;========================================== ; Esta sub-rotina atualiza o nmero de presentes subtraindo 1 do valor atual ; A subtrao feita com o complemento de 10 do nmero atual ; Adiciona-se 99 (nmero de 2 dgitos) ao valor atual e faz-se o ajuste decimal ; Se o nmero de presentes j zero, no h subtrao do valor atual ;========================================== ATENDE_UM: CLR C ; a flag de Carry limpa antes das operaes aritmticas MOV A,PRESENTES ; Antes de subtrair verifica se Presentes = 0 JZ SAI ; Se Presentes = 0 sai da subrotina sem subtrair ADD A,#99H DA A MOV PRESENTES,A SAI: NOP RETI END

2. Faa o fluxograma e o programa e, se possvel, grave no microcontrolador e verifique o funcionamento na plataforma, para acender uma lmpada a atravs de uma senha de 4 dgitos. O cristal oscilador de 12 MHz. Obs.: A senha est guardada numa tabela na memria. (a) Quando se digita a senha correta a lmpada acende e permanece acesa durante cerca de 5 segundos. Ao se digitar a senha errada lmpada pisca 3 vezes, em intervalos de 1 s. A lmpada est ligado ao pino P2.0. (b) As subrotinas de atraso de tempo de 1s e de 5 s devem ser feitas usando o temporizador zero no modo 1. (c) O teclado est conectado ao nibble superior da porta P3 e deve ser lido usando interrupo. O pedido de interrupo do teclado atravs da interrupo INT1, por transio.

Obs.: O programa a seguir funcionou corretamente usando o simulador AVSIM51, mas no funcionou usando o PEQui. D erro na chamada de interrupo do teclado. $mod51 CONTADOR LAMPADA DIGITO1 DIGITO2 DIGITO3 DIGITO4 ORG 00H LJMP INICIO ORG 13H LJMP TECLADO EQU EQU BIT BIT BIT BIT 02H P2.0 00H 01H 02H 03H

ORG 30H INICIO: MOV SP,#2FH MOV IE,#84H MOV TCON,#04H MOV TMOD,#01H MOV DPTR,#SENHA MOV P2,#00H CLR DIGITO1 CLR DIGITO2 CLR DIGITO3 CLR DIGITO4 ENTRADA_DE_SENHA: JNB DIGITO1,$ MOV R1,A JB DIGITO2,$ SWAP A ORL A,R1 MOV R1,A JNB DIGITO3,$ MOV R0,A JB DIGITO4,$ SWAP A ORL A,R0 MOV R0,A COMPARA_SENHAS: MOV A,#00H MOVC A,@A+DPTR CLR C SUBB A,R1 JNZ SENHA_ERRADA MOV A,#01H MOVC A,@A+DPTR CLR C SUBB A,R0 JNZ SENHA_ERRADA SENHA_CORRETA: SETB LAMPADA MOV CONTADOR,#05H ESPERA: LCALL ATRASO_1 DJNZ CONTADOR,ESPERA CLR LAMPADA LJMP INICIO SENHA_ERRADA: MOV CONTADOR,#05H PISCA: CPL LAMPADA LCALL ATRASO_1 DJNZ CONTADOR,PISCA LJMP INICIO TECLADO:MOV A,P3 ANL A,#0F0H CPL DIGITO1 CPL DIGITO2

; Chama a sub-rotina de 1s 5 vezes

; Acende a lmpada 3 vezes

CPL DIGITO3 CPL DIGITO4 RETI ATRASO_1: MOV R0,#20 VOLTA:MOV TH0,#3CH MOV TL0,#0AFH SETB TR0 JNB TF0,$ CLR TF0 DJNZ R0,VOLTA CLR TR0 RET SENHA: DB 12H DB 34H END 3. Faa um programa para mandar a mensagem MICROPROCESSADORES 2008 NOME DO ALUNO, previamente guardada numa tabela, via serial, para o computador. Use baud rate de 9600 bps, modo assncrono de 8 bits. O cristal oscilador de 11,059 MHz. 4. Fazer um programa, em linguagem Assembly do 8051, com as seguintes caractersticas: (a) O programa principal habilita as interrupes 0 e 1 por transio, configura o temporizador 0 no modo 1, carrega TH0 e TL0 com os quatro ltimos dgitos da matrcula do aluno, dispara o temporizador e fica aguardando uma interrupo num loop infinito; (b) A subrotina da interrupo 0 faz uma contagem crescente decimal na porta P1 de 0 a 99 e volta para o loop infinito; (c) A subrotina da interrupo 1 faz uma rotao esquerda de um bit na porta P2, desde 0000 0001 at 1000 0000 e volta para o loop infinito; (d) A subrotina de atraso de tempo feita com o temporizador 0, onde a contagem do tempo sempre comea no valor de TH0 e TL0 correspondente aos quatro ltimos dgitos da matrcula (recarregar a cada fim de contagem).