这个单片机程序是什么意思?说的不具体的话就不用说了,程序每一步我能看懂,但整体看就不知道什么意思了

ORG 0000H
LJMP START
START:MOV 40,#01H
MOV 41H,#02H
MOV 42H,#03H
MOV 43H,#04H
MOV 44H,#05H
MOV 45H,#06H
NEXT: MOV R7,#200H

LOOP:
LCALL DISP
DJNZ R7 , LOOP
MOV A,#40H
MOV 40H,41H
MOV 41H,42H
MOV 42H,43H
MOV 43H,44H
MOV 44H,45H
MOV 45H,A
LJMP NEXT

TAB:DB 3FH,06H,5BH,4FH,5BH,6DH,7DH
MIMS:
MOV R4,#250
DJNZ R4,$
RET

DISP:MOV R0,#40H
MOV R2,#01H

DIS:MOV DPTR,#8002H
MOV A,#00H
MOVX @DPTR,A
MOV DPTR,#TAB
MOV A,@R0
MOVC A,@A+DPTR
MOV DPTR,#8004H
MOVX @DPTR,A
MOV A,R2
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL MIMS
RL A
MOV R2,A
INC R0
CJNE R2,#40H,DIS
RET
END

程序可能有几个小错误,能说出每一步大概意思就行了

第1个回答  推荐于2017-08-31
ORG 0000H ; 程序 为 显示 1 2 3 4 5 6 循环位移
LJMP START ; 主程序启动入口
START:MOV 40,#01H ; 主程序 初始化显示 数据
MOV 41H,#02H
MOV 42H,#03H
MOV 43H,#04H
MOV 44H,#05H
MOV 45H,#06H
NEXT: MOV R7,#200H ; 设置 200 次显示 循环

LOOP:
LCALL DISP ; 调用 显示子程序
DJNZ R7 , LOOP ; 循环
MOV A,#40H ; 这里 应该改为 MOV A,40H
MOV 40H,41H ; 显示 位置移动 1 2 3 4 5 6
MOV 41H,42H ; 位移1次后 为 2 3 4 5 6 1
MOV 42H,43H ; 位移2次后 为 3 4 5 6 1 2
MOV 43H,44H ; 位移3次后 为 4 5 6 1 2 3
MOV 44H,45H ; 位移4次后 为 5 6 1 2 3 4
MOV 45H,A ; 位移5次后 为 6 1 2 3 4 5
LJMP NEXT ; 转至地址 NEXT 循环显示

TAB:DB 3FH,06H,5BH,4FH,5BH,6DH,7DH ; 显示 段码表 为共阴码 0 - 6

MIMS:
MOV R4,#250 ; 延时程序
DJNZ R4,$
RET

DISP:MOV R0,#40H ; R0 指向显示 数据 存储器
MOV R2,#01H ; 从第一位开始 显示
DIS:MOV DPTR,#8002H ; 显示器位码地址
MOV A,#00H
MOVX @DPTR,A ; 作用 为 消隐
MOV DPTR,#TAB ; 显示段码数据表 地址
MOV A,@R0
MOVC A,@A+DPTR ; 取段码
MOV DPTR,#8004H ; 显示器段码地址
MOVX @DPTR,A ; 写段码
MOV A,R2 ; 取位码
MOV DPTR,#8002H ; 显示器位码地址
MOVX @DPTR,A ; 写位码
LCALL MIMS ; 延时
RL A ; 准备显示 下 一位 位码
MOV R2,A
INC R0 ; 准备显示 下 一位 数据
CJNE R2,#40H,DIS ; 循环显示 六位 ,显示完六位返回
RET
END本回答被提问者采纳
相似回答