📄 text1.asm
字号:
ORG 0000H
lJMP MAIN ;转主程序
ORG 0013H
LJMP INT11 ;转中断服务程序
ORG 0100H
MAIN: MOV P1,#0FFH ;P1口初始化
MOV R0,#30H
MOV R1,#02H
SETB IT1
SETB EA
SETB EX1
MOV DPTR,#7FF8H
NEXT1:SETB PSW.5
MOVX @DPTR,A
JB PSW.5,$
DJNZ R1,NEXT1 ;两次采样结17束
MOV A,30H
SUBB A,31H ;环境初始化,差异存放于A处
MOV R5,A
CAIJI:MOV R0,#30H
MOV R1,#02H
mov 40h,30h
MOV DPTR,#7FF8H
NEXT: SETB PSW.5
MOVX @DPTR,A
JB PSW.5,$
DJNZ R1,NEXT
COMP: mov a,40h
cjne a,30h,jixu ;如果数据有变化则跳转,否则重新采样
MOV P1,#00H
acall delay
ajmp caiji
jixu: jnc ahead ;比原数据小则前进
MOV A,30H
subb A,R5 ;加上初始状态的差异
CJNE A,31H,TURN
ajmp caiji
ahead:MOV P1,#18H
acall delay
ajmp caiji
TURN: JC LEFTT
MOV P1,#05H
acall delay
MOV P1,#05H
acall delay1
MOV P1,#05H
acall delay1
aJMP CAIJI
LEFTT:MOV P1,#03H
acall delay
MOV P1,#03H
acall delay1
MOV P1,#03H
acall delay1
aJMP CAIJI
SJMP $
DELAY:mov r4,#05h
l3:mov r2,#25h
l1:mov r3,#25h
l2:nop
djnz r3,l2
djnz r2,l1
djnz r4,l3
ret
DELAY1:mov r4,#50h
l31:mov r2,#25h
l11:mov r3,#25h
l21:nop
djnz r3,l21
djnz r2,l11
djnz r4,l31
ret
ORG 0300H
INT11:MOVX A,@DPTR
MOV @R0,A
INC DPTR
INC R0
CLR PSW.5
RETI
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -