MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 Aluno: Matrícula: UMA SOLUÇÃO POSSÍVEL Obs.: Todas as questões têm valor 2,0. Boa prova e Feliz Natal e Ano Novo!!!! 1. Escreva um pequeno, 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? LJMP ALFA DESVIA PARA O INÍCIO DO PROGRAMA ORG 03H CPL TR0 COMPLEMENTA O BIT TR0 PARA DISPARAR/PARAR O TEMPORIZADOR ZERO A CADA INTERRUPÇÃO ZERO ORG 0BH CPL P2.0 COMPLEMENTA O BIT 0 DA PORTA P2 A CADA FINAL DE CONTAGEM DO TEMPORIZADOR ZERO ALFA: MOV IE,#83H MOV TCON,#01H INICIO DO PROGRAMA NA POSIÇÃO 30H HABILITA AS INTERRUPÇÕES EXTERNA ZERO E DO TEMPORIZADOR ZERO. A EXTERNA ZERO É POR TRANSIÇÃO MOV TMOD,#01H CONFIGURA TEMPORIZADOR ZERO PARA OPERAR NO MODO 1 SJMP $ AGUARDA EM UM LOOP INFINITO OS PEDIDOS DE INTERRUPÇÃO O temporizador zero no modo 1 conta de 0 a 65.535. Sendo a frequência do cristal igual a 12 MHz, cada passo da contagem é feito em 1 µs. Assim, meio período da onda quadrada em P2.0 corresponde a 65.535 µs e o período corresponde a 131.070 µs, ou seja, T = 131,07 ms. 2. Interprete o trecho de 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. Rótulo LOOP: Trecho do JNB P1.0, V1 JB P1.1, V2 JNB P1.2, V3 V1: SETB P2.0 CLR P2.2 V2: CLR P2.0 SETB P2.2 V3: CLR P2.0 CLR P2.2 Primeiro Quadro: 1. O 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 liga o LED conectado a P2.0 e desliga os LEDs em P2.1 e P2.2. A seguir retorna para o LOOP principal.
Terceiro Quadro: O 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 desliga todos LEDs e retorna para o LOOP principal. 3. Faça um, 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 ORG 00H LJMP ALFA DESVIA PARA O INÍCIO DO PROGRAMA ALFA: MOV SCON,#40H MOV TMOD,#20H MOV TH1,#0E8H SETB TR1 MOV DPTR,#TEXTO CONFIGURA SERIAL PARA O MODO 1 ASSÍNCRONO CONFIGURA TEMPORIZADOR 1 NO MODO 2 (RECARGA AUTOMÁTICA) FAZ TH1 = E8H, O QUE DEFINE BAUD RATE DE 1200 bps DISPARA TEMPORIZADOR DPTR ASSUME O EREÇO INICIAL DO TEXTO V1: MOV R7,#00H O CONTADOR R7 INICIA COM VALOR 0 ENVIA: MOV A,R7 ACUMULADOR RECEBE O VALOR ATUAL DO CONTADOR MOVC A,@A+DPTR ACUMULADOR RECEBE O O CARACTERE DA POSIÇÃO A+DPTR CJNE A,#0FFH,V2 SE O CARACTERE RECEBIDO FOR DIFERENTE DE FFH, VAI PARA V2 SJMP V1 SE O CARACTERE FOR IGUAL A FFH, VOLTA PRO INICIO DO TEXTO V2: MOV SBUF,A INICIA TRANSMISSÃO SERIAL DO CONTEÚDO DO ACUMULADOR JNB TI,$ AGUARDA FIM DA TRANSMISSÃO DE CADA CARACTERE CLR TI LIMPA A FLAG DE FINAL DE TRANSMISSÃO INC R7 INCREMENTA O CONTADOR R7 LCALL ATRASO CHAMA SUBROTINA DE ATRASO DE TEMPO SJMP ENVIA RETORNA PARA ENVIAR O PRÓXIMO CARACTERE ATRASO: MOV R6,#255 SUBROTINA DE ATRASO DE TEMPO V3: MOV R5,#255 DJNZ R5,$ DJNZ R6,V3 RET TEXTO: DB ' PROVA 2 DE MICROPROCESSADORES - 2010 ', 0FFH 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 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).
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 dor. Faça uma subrotina de atraso de tempo qualquer para simbolizar o tempo de filtragem. Resumo das operações Sensor SV (P1.1) Sensor SC (P1.0) Estado da Bomba (P2.0) e das Válvulas V1 (P2.1) e V2 (P2.2) 0 0 Desliga 0 1 Mantém estado atual (ligado ou desligado) 1 1 Liga 1 0 Situação inexistente Solução SV EQU P1.1 ; SENSOR DE VAZIO SC EQU P1.0 ; SENSOR DE CHEIO BOMBA EQU P2.0 ; BOMBA DE ÁGUA V1 EQU P2.1 ; VÁLVULA V1 V2 EQU P2.2 ; VÁLVULA V2 V3 EQU P2.3 ; VÁLVULA V3 ORG 00H LJMP INICIO ; DESVIA PARA INICIO DO PROGRAMA ORG 03H LJMP LIMPEZA ; DESVIA PARA SUBROTINA DA INTERRUPÇÃO ZERO INICIO: MOV IE,#81H MOV TCON,#01H MOV P2,#00H ; HABILITA INTER. EXTERNA 0 POR TRANSIÇÃO ; DESLIGA A BOMBA E TODAS AS VÁLVULAS VER_SENS: JNB SV,VER_SC ; SE SV = 0, VERIFICAR SC JB SC,LIGA ; SE SV = 1 E SC = 1 LIGA ; SV=1 E SC=0 INEXISTENTE VER_SC: JNB SC,DESLIGA ; SE SV = 0 E SC = 0 DESLIGA
; SV=0 E SC=1 MANTÉM ESTADO LIGA: SETB BOMBA ; LIGA A BOMBA SETB V1 ; LIGA A VALVULA V1 SETB V2 ; LIGA A VALVULA V2 ; VOLTA PARA LOOP DE VERIFICAÇÃO DOS SENSORES DESLIGA: CLR BOMBA ; DESLIGA BOMBA CLR V1 ; DESLIGA VALVULA V1 CLR V2 ; DESLIGA VALVULA V2 LIMPEZA: SETB BOMBA ; LIGA BOMBA CLR V1 ; DESLIGA VALVULA V1 SETB V2 ; LIGA VALVULA V2 SETB V3 ; LIGA VALVULA V3 LCALL ATRASO ; CHAMA SUBROTINA DE ATRASO CLR BOMBA ; DESLIGA BOMBA CLR V2 ; DESLIGA VALVULA V2 CLR V3 ; DESLIGA VALVULA V3 ; SAI DA SUBROTINA DA INTERRUPÇÃO ZERO ATRASO: MOV R6,#255 SUBROTINA DE ATRASO DE TEMPO V4: MOV R5,#255 DJNZ R5,$ DJNZ R6,V4 RET 5. Uma questão de lógica... (baseada em um problema do site: http://rachacuca.com.br) 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). Casa 1 Casa 2 Casa 3 Morador João José Paulo Cor Azul Branca Amarela Animal Cavalo Gato Cachorro Esporte Tênis Voleibol Futebol 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. 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.
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 Tabela 2: Mnemônicos das instruções do 8051 ACALL ADD ADDC AJMP ANL CJNE CLR CPL DA A DEC DIV DJNZ INC JB JBC JC JMP JNB JNC JNZ JZ LCALL LJMP MOV MOVC MOVX MUL NOP ORL POP PUSH RET RL RLC RR RRC SETB SJMP SUBB SWAP XCH XCHD XRL Baud rate (bps) Tabela 3: Frequências para comunicação serial do 8051 (tabela simplificada) Frequência do Cristal (MHz) SMOD Recarga Temporizador 1 (modo 2) 9600 11,0592 0 FD H 4800 11,0592 0 FA H 2400 11,0592 0 F4 H 1200 11,0592 0 E8 H Tabela 4: Endereços das interrupções do 8051 Interrupção Solicitada Endereço de desvio Externa Zero (INT0) 0003 H Temporizador 0 (TEMP0) 000B H Externa 1 (INT1) 0013 H Temporizador 1 (TEMP1) 001B H Serial 0023 H