Anda di halaman 1dari 8

Questes Parte 2

1. Faa um programa onde uma chave do tipo push-button, conectando o pino P1.7 ao terra, usada para definir o sentido de rotao de 8 LEDs conectados porta P2. Com a chave desligada os LEDs so rotacionados para a esquerda; com a chave ligada os LEDs so rotacionados para a direita.
ORG 00H LJMP INICIO ORG 30H INICIO: ESQ: MOV A,#04H MOV P2,A RL A JB P1.7, ESQ SJMP DIR DIR: MOV P2,A RR A JNB P1.7, DIR SJMP ESQ END ;Carrega o acumulador com o valor 04h (poderia ser outro valor) ;Transfere o conteudo do acumulador para a porta P2 ;Rotaciona A para a esquerda ;Desvia para a subrotina ESQ caso o bit P1.7 esteja setado ;desvia para a subrotina DIR ;Transfere o conteudo do acumulador para a porta P2 ;Rotaciona A para a direita ;Desvia para a subrotina ESQ caso o bit P1.7 esteja zerado ;desvia para a subrotina ESQ ;Termina o programa ;Indica que a proxima instruo ser alocada no endereo 00h ;Desvia para o incio do programa

2. Faa um programa onde uma chave do tipo push-button, conectando o pino P1.7 ao terra, usada para iniciar/parar a rotao de 8 LEDs conectados porta P2. Outra chave conectando o pino P1.6 ao terra usada para definir o sentido de rotao. Com a chave P1.6 desligada os LEDs so rotacionados para a esquerda; com a chave ligada os LEDs so rotacionados para a direita.
ORG 00H LJMP INICIO ORG 30H MOV A,#04H ;Indica que a proxima instruo ser alocada no endereo 00h ;Desvia para o incio do programa

INICIO: GIRA:

;Carrega o acumulador com o valor 04h (poderia ser outro valor)

JB P1.6, ESQ JNB P1.6, DIR ESQ: MOV P2,A RL A JNB P1.7, PARA JB P1.6, ESQ SJMP DIR MOV P2,A RR A JNB P1.7, PARA JNB P1.6, DIR SJMP ESQ JNB P1.7, $ SJMP GIRA

;Desvia para a subrotina ESQ caso o bit P1.6 esteja setado ;Desvia para a subrotina DIR caso o bit P1.6 esteja zerado ;Transfere o conteudo do acumulador para a porta P2 ;Rotaciona A para a esquerda ;Desvia para a subrotina PARA caso o bit P1.7 esteja zerado ;Desvia para a subrotina ESQ caso o bit P1.6 esteja setado ;desvia para a subrotina DIR ;Transfere o conteudo do acumulador para a porta P2 ;Rotaciona A para a DIREITA ;Desvia para a subrotina PARA caso o bit P1.7 esteja zerado ;Desvia para a subrotina ESQ caso o bit P1.6 esteja setado ;desvia para a subrotina ESQ ;Loop infinito (para de rotacionar) ;desvia para a subrotina GIRA ;Termina o programa

DIR:

PARA:

END

3. Comente cada linha da sequncia de instrues a seguir.


V1: JNB P1.7,V2 RL A SJMP V1 RR A SJMP V1 ;Desvia para a subrotina V2 caso o bit P1.7 esteja zerado ;rotaciona o conteudo do acumulador para a esquerda ;desvia para a subrotina v1 ;rotaciona o conteudo do acumulador para a direita ;desvia para a subrotina v1

V2:

4. Comente o programa a seguir. O que ele faz?


ORG 00H LJMP INICIO ;define que a proxima instruao est no endereo 00h ;desvia para a subrotina INICIO

INICIO:

ORG 30H ;define que a proxima instruo est no endereo 30h MOV SP,#2FH ;define o endereo inicial da pilha como 2Fh MOV DPTR,#LISTA ;carrega DPTR com o endereo inicial da LISTA (#100h neste caso) MOV A,#0FFH INC A PUSH ACC MOVC A,@A+DPTR MOV P1,A POP ACC CJNE A,#03H,V1 SJMP V2 ORG 100H ;carrega o acumulador com o valor FFh ;incrementa o valor de A ;guarda o valor de A na pilha ;carrega o acumulador com o valor da posio A+DPTR ;transfere o valor de A para a porta P1 ;retira o valor de A da pilha ;compara A com o valor 03h. Se falso, pula para V1. Se verdadeiro, continua o programa ;desvia para a subrotina V2

V2: V1:

LISTA:

DB 01H DB 02H DB 04H DB 08H

;primeiro valor da lista de dados

END ;Este programa rotaciona para a esquerda um bit alto entre os pinos p1.0 e p1.3.

5. Nas instrues a seguir, identifique a interrupo habilitada e o tipo de disparo (nvel ou transio).
MOV IE,#81H MOV TCON,#01H SETB EA SETB EX1 SETB EX0 MOV TCON,#04H Interrupo externa 1. Disparo por transio Interrupo externa 0 por nvel e externa 1 por transio

6. Comente o programa a seguir. O que ele faz?


ALFA: MOV IE,#85H MOV TCON,#05H MOV A,#55H SJMP $ RET END ;Quando a interrupo externa 0 solicitada, o programa complementa o pino P1.0. ;Quando a interrupo externa 1 solicitada, o programa complementa o conteudo do acumulador ;e o transfere para a porta P1 ;habilita as interrupes externas 0 e 1 ;define que as interrupes externas 0 e 1 sao por transio ;carrega o acumulador com o valor 55h ;loop infinito

Quando a interrupo externa 0 solicitada, o programa complementa o pino P1.0. Quando a interrupo externa 1 solicitada, o programa complementa o contedo do acumulador e o transfere para a porta P1.

7. Faa um programa onde a interrupo externa 1, por transio, usada para rotacionar os LEDs da porta P2 para a esquerda. So executadas 10 rotaes para a esquerda antes do processamento retornar para um loop infinito.
ORG 00H LJMP INICIO ORG 13H LJMP GIRA INICIO: MOV SP, #2FH MOV IE, #84H MOV TCON, #04H MOV A, #01H MOV R7, #10 SJMP $ MOV P2, A RL A LCALL ATRASO CJNE A, #80H, GIRA DJNZ R7,GIRA MOV P2, A MOV A, #01H MOV R7, #10 RETI

GIRA:

ATRASO: MOV R0, #100 REPETE: MOV R1, #250 DJNZ R1, $ DJNZ R0, REPETE RET END

8. Faa um programa onde a interrupo externa 0, por transio, usada para rotacionar os LEDs da porta P2 para a esquerda e a interrupo externa 1, por transio, usada para rotacionar os LEDs para a direita. So executadas 10 rotaes antes de o processamento retornar para um loop infinito. A interrupo externa 1 tem prioridade alta.
ORG 00H LJMP INICIO ORG 03H LJMP ESQ ORG 13H LJMP DIR INICIO: MOV SP, #2FH MOV IE, #85H MOV TCON, #05H SETB PX1 SJMP $ MOV A, #01H MOV R7, #2 MOV P2, A RL A LCALL ATRASO CJNE A, #80H, V1 DJNZ R7,V1 MOV P2, A RETI MOV A, #80H MOV R6, #2 MOV P2, A RR A LCALL ATRASO CJNE A, #01H, V2 DJNZ R6,V2 MOV P2, A RETI

ESQ:

V1:

DIR:

V2:

ATRASO: MOV R0, #100 REPETE: MOV R1, #250 DJNZ R1, $ DJNZ R0, REPETE RET END

9. Comente o programa a seguir. O que ele faz?


ORG 00H LJMP INICIO ORG 0BH CPL P2.0 RETI ORG 1BH CPL P2.7 RETI INICIO: MOV SP,#2FH MOV IE,#10001010B MOV TMOD,#21H MOV TH1,#20H MOV TL1,#00H SETB TR0 SETB TR1 SJMP $ END ;define o inicio da pilha no endereo 2Fh ;habilita as interrupes dos temporizadores 0 e 1 ;define o modo 1 de operao para o temp0 e modo 2 para o temp1 ;valor de recarga do temporizador 1 (modo 2) ;valor inicial da contagem do temporizador 1 ;dispara o temporizador 0 ;dispara o temporizador 1 ;define que a diretiva da proxima instruo est no endereo 00h ;desvia para o inicio do programa ;endereo da interrupo do temporizador 0 ;complementa o pino p2.0 ;retorna da subrotina de interrupo ;endereo da interrupo do temporizador 1 ;complementa o pino p2.7

A cada trmino da contagem do temporizador 0, o pino P2.0 complementado. Da mesma forma que a cada trmino da contagem do temporizador 1, o pino P2.7 complementado. O programa faz os niveis lgicos dos pinos P2.0 e P2.7 alternarem entre 0 e 1, sendo que a frequncia de oscilao do pino 0 muito menor que a do pino 7, uma vez que a contagem do temporizador 0 leva muito mais tempo para ser terminada.

10. Faa um programa onde o temporizador 0 usado para contar 20.000 pulsos de forma ininterrupta. A cada pedido da interrupo externa zero, por transio, o temporizador para/reinicia e o valor atual da contagem mostrado nas portas P2 (contedo de TH0) e P0 (contedo de TL0).
ORG 00H LJMP INICIO ORG 03H CPL TR0 MOV P2, TH0 MOV P0, TL0 RETI ORG 30H INICIO: MOV SP, #2FH MOV IE, #81H MOV TCON, #01H MOV TMOD, #01H SETB TR0 MOV TH0, #0B1H MOV TL0, #0DFH JNB TF0, $ CLR TF0 SJMP CARREGA END

CARREGA:

11. Faa um programa onde o microcontrolador 8051 transmite uma contagem crescente via serial. O mdulo serial deve ser configurado para operar no modo 1 (assncrono de 8 bits) com taxa de transferncia (baud rate) de 2400 bps. A frequncia de clock 11,0592 MHz.
ORG 00H LJMP INICIO ORG 30H INICIO: MOV SP,#2FH MOV TMOD, #20H MOV TH1, #0F4H MOV TL1, #0F4H MOV SCON, #40H MOV A, #00H SETB TR1 V1: MOV SBUF, A INC A LCALL ATRASO SJMP V1 MOV R4, #100 MOV R5, #250 DJNZ R5, $ DJNZ R4, V2 RET

ATRASO: V2:

END

12. Faa um programa onde o microcontrolador 8051 recebe dados de um computador, via porta serial, e os envia para a porta P2, usando interrupo. O mdulo serial deve ser configurado para operar no modo 1 (assncrono de 8 bits) com baud rate de 4800 bps. A frequncia de clock 11,0592 MHz.
ORG 00H LJMP INICIO ORG 23H CLR RI MOV P2, SBUF RETI ORG 30H INICIO: MOV SP, #2FH MOV IE, #90H MOV SCON, #40H MOV TMOD, #20H MOV TH1, #0FAH MOV TL1, #0FAH CLR RI MOV P2, #00H SETB REN SETB TR1 SJMP $ END

13. Faa um programa onde o microcontrolador 8051 recebe dados de um computador, via porta serial (modo 1), e os envia para a memria EEPROM externa, a partir do endereo 1000H (A memria EEPROM de 8K, com endereo inicial 0000H). A taxa de comunicao (baud rate) de 9600 bps. A frequncia de clock 11,0592 MHz.
ORG 00H LJMP INICIO ORG 30H INICIO: MOV SP, #2FH MOV SCON, #40H MOV TMOD, #20H MOV TH1, #0FDH MOV TL1, #0FDH MOV DPTR, #1000H MOV A, #00H CLR RI SETB REN SETB TR1 JNB RI, $ MOV A, SBUF CLR RI MOVX @DPTR, A INC DPTR SJMP ESPERA END

ESPERA:

14. Faa um programa onde o microcontrolador 8051 recebe dados de um computador, via porta serial (modo 1), a uma taxa de comunicao (baud rate) de 4800 bps. Se o dado recebido for a letra A os LEDs, acessados atravs do endereo 2000H, so rotacionados para a esquerda; se o dado recebido for a letra B os LEDs so rotacionados para a direita. Qualquer outro caractere recebido ignorado. A frequncia de clock 11,0592 MHz. No mapeamento de memria os LEDs esto localizados na regio que comea no endereo 2000 e vai at o endereo 3FFFH.
ORG 00H LJMP INICIO ORG 30H INICIO: MOV SP, #2FH MOV TMOD, #20H MOV TH1, #0FAH MOV TL1, #0FAH MOV SCON, #40H MOV DPTR, #2000H SETB REN SETB TR1 CLR RI ESPERA: JNB RI, $ MOV A, SBUF CLR RI V2: CJNE A, #41H, V3 MOV A, #01H SJMP ESQUERDA CJNE A, #42H, ESPERA MOV A, #80H SJMP DIREITA

V3:

ESQUERDA: MOVX @DPTR, A RL A LCALL ATRASO CJNE A, #01H, ESQUERDA LJMP ESPERA DIREITA: MOVX @DPTR, A RR A LCALL ATRASO CJNE A, #80H, DIREITA LJMP ESPERA ATRASO: V1: MOV R0,#100 MOV R1,#250 DJNZ R1, $ DJNZ R0, V1 RET

END

Anda mungkin juga menyukai