MOV P0,A MOV A,R1 MOV P2,AORG 00HSTART:JB P1.7,DIR1MOV DPTR,#TABLE1SJMP DIRDIR1:MOV DPTR,#TABLE2DIR:MOV R0,#00HMOV R1,#01HNEXT:MOV A,R0MOVC A,@A+DPTRMOV P0,AMOV A,R1MOV P2,ALCALL DAYINC R0RL AMOV R1,ACJNE R1,#0DFH,NEXTSJMP STARTDAY:MOV R6,#4D1:MOV R7
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/09 10:36:04
MOV P0,A MOV A,R1 MOV P2,AORG 00HSTART:JB P1.7,DIR1MOV DPTR,#TABLE1SJMP DIRDIR1:MOV DPTR,#TABLE2DIR:MOV R0,#00HMOV R1,#01HNEXT:MOV A,R0MOVC A,@A+DPTRMOV P0,AMOV A,R1MOV P2,ALCALL DAYINC R0RL AMOV R1,ACJNE R1,#0DFH,NEXTSJMP STARTDAY:MOV R6,#4D1:MOV R7
MOV P0,A MOV A,R1 MOV P2,A
ORG 00H
START:JB P1.7,DIR1
MOV DPTR,#TABLE1
SJMP DIR
DIR1:MOV DPTR,#TABLE2
DIR:MOV R0,#00H
MOV R1,#01H
NEXT:MOV A,R0
MOVC A,@A+DPTR
MOV P0,A
MOV A,R1
MOV P2,A
LCALL DAY
INC R0
RL A
MOV R1,A
CJNE R1,#0DFH,NEXT
SJMP START
DAY:MOV R6,#4
D1:MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
RET
TABLE1:DB 06H,5BH,4FH,66H,6DH
TABLE2:DB 78H,79H,38H,38H,3FH
程序中的INC R0
RL A
MOV R1,A
CJNE R1,#0DFH,NEXT
SJMP START怎么解释?
MOV P0,A MOV A,R1 MOV P2,AORG 00HSTART:JB P1.7,DIR1MOV DPTR,#TABLE1SJMP DIRDIR1:MOV DPTR,#TABLE2DIR:MOV R0,#00HMOV R1,#01HNEXT:MOV A,R0MOVC A,@A+DPTRMOV P0,AMOV A,R1MOV P2,ALCALL DAYINC R0RL AMOV R1,ACJNE R1,#0DFH,NEXTSJMP STARTDAY:MOV R6,#4D1:MOV R7
首先你的程序写的就不符合规格
ORG 00H
SJMP START
ORG 0030H
START:JB P1.7,DIR1
……
INC R0;R0自加1
RL A;累加器A循环左移一位
MOV R1,A;累加器A的值给寄存器R1
CJNE R1,#0DFH,NEXT;判断R1是否等于0DFH,若不想等则跳至NEXT,相等则执行SJMP START
SJMP START;SJMP无条件转移至START处……
你这个应该是数码管的显示程序吧……#0DFH这个有问题……就像楼上说的01H循环左移永远也变不到0DFH去……根据你要显示几位和硬件的要求改改……
至于为什么要将01H循环左移,这是作为数码管的选通用的……
程序最后要以END结尾,说明程序到此处结束……不然程序编译时会出现警告或报错的情况……