Академический Документы
Профессиональный Документы
Культура Документы
EXERCCIOS RESOLVIDOS
Modos de endereamento direto
LABEL
INSTR OPERANDO
$include(REG51.inc)
COMENTRIOS
; inclui no programa assembly o arquivo (REG51.inc)
ORG
0000H
MOV
A,#01010101B
MOV
A,#HIGH (0FH)
MOV
B,#LOW(0FH)
MOV
B,#HIGH(65535
MOV
A,#LOW(65535)
MOV
A,#(255-250)
MOV
MOV
MOV
A,#'B'
MOV
A,#'C'
MOV
A,#0FFH
MOV
A,#00H
MOV
B,#0F0H
MOV
R0,#0F0H
MOV
A,#192
SJMP
END
INSTR OPERANDO
$include(REG51.inc)
COMENTRIOS
; inclui no programa assembly o arquivo (REG51.inc)
ORG
0000H
MOV
A,#0FFH
; decrementa A
MOV
P2,A
SJMP
SALTO
SALTO: DEC
END
INSTR OPERANDO
$include(REG51.inc)
ORG
COMENTRIOS
; inclui no programa assembly o arquivo (REG51.inc)
0000H
; inicia em 0000H
DPTR,#0050H
MOV
A,#00H
JMP
@A+DPTR
ORG
0050H
MOV
DPH,#00H
MOV
DPL,#30H
JMP
@A+DPTR
ORG
0030H
LJMP
INICIO
INICIO: MOV
END
INSTR OPERANDO
$include(REG51.inc)
SW3
COMENTRIOS
; inclui no programa assembly o arquivo (REG51.inc)
EQU
P3.2
ORG
0000H
LJMP
INICIO
ORG
0003H
LJMP
INT_0
ORG
0100H
A,#00000001B
CLR
MOV
P2,A
SETB
EX0
SETB
EA
LJMP
INICIO: MOV
RLC
MOV
P2,A
SW3,TECLA
TECLA: JNB
RETI
; retorno de interrupo
END
Esquema eltrico
Fluxograma
incio
P2 = 0
apaga o led L1
sub-rotina de
tempo 1
incio da subrotina
Rotina de tempo
de 1
Retorno da
sub-rotina
P2.0 = 1
acende o led L1
sub-rotina de
tempo 1
P2.0 = 0
apaga o led L1
sub-rotina de
tempo 1
Programa
LABEL
INSTR OPERANDO
$include(REG51.inc)
TEMPO
COMENTRIOS
; inclui no programa assembly o arquivo (REG51.inc)
EQU
19702
ORG
0000H
MOV
P2,#00H
P2.0
LCALL TEMPO_1S
CLR
P2.0
LCALL TEMPO_1S
LJMP
PRINCIPAL
R0,#20H
CLR
TR0
; desliga timer 0
CLR
TF0
MOV
MOV
SETB
TR0
; liga timer 0
JNB
TF0,$
CLR
TR0
; desliga timer 0
DJNZ
R0,CONT
RET
; retorno da sub-rotina
END
; fim do programa
importante analisar o esquema eltrico para fazer um programa que seja compatvel com o
hardware onde ele vai ser utilizado.
Esquema eltrico
Fluxograma
incio da subrotina
incio
P2 = 0
apaga o led L1
Rotina de tempo
de 1 segundo
A = 01H
Valor que ser rodado
Retorno da
sub-rotina
Boto
P3.0 = 0?
Sim
No
Boto
P3.1 = 0?
sub-rotina de 1
Roda o contedo do
Reg. A a direita
Sim
No
P2.0 = A
Acende leds da porta P2
com contedo de A
sub-rotina de 1
Roda o contedo do
Reg. A a esquerda
Programa
LABEL
INSTR OPERANDO
$include(REG51.inc)
TEMPO
DIREITA:
COMENTRIOS
; inclui no programa assembly o arquivo
; (REG51.inc)
EQU
19702
ORG
0000H
MOV
P2,#00H
MOV
A,#01H
JNB
P3.0,ESQUERDA
MOV
P2,A
LCALL TEMPO_1S
RR
LJMP
DIREITA
P3.1,DIREITA
P2,A
ESQUERDA: JNB
MOV
LCALL TEMPO_1S
RL
JMP
ESQUERDA
R0,#20H
CLR
TR0
; desliga timer 0
CLR
TF0
MOV
MOV
SETB TR0
; liga timer 0
JNB
TF0,$
CLR
TR0
; desliga timer 0
DJNZ
R0,CONT
RET
; retorno da sub-rotina
END
; fim do programa
INSTR OPERANDO
$include(REG51.inc)
BOTAO:
COMENTRIOS
; inclui no programa assembly o arquivo
; (REG51.inc)
ORG
0000H
JB
P0.0,BOTAO
CPL
P2.0
JNB
P0.0,BOTAO
LJMP
BOTAO
END
; fim do programa
10