求 程序注释 最好逐句注释。。。希望今天下午能够注释完成
发布网友
发布时间:2022-05-23 21:07
我来回答
共1个回答
热心网友
时间:2024-03-09 03:56
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV 70H, #0 ;显示缓冲区70H~73H清零.
MOV 71H, #0
MOV 72H, #0
MOV 73H, #0
MOV 74H, #00H ;计数单元清零.
MOV 75H, #80H ;都是 BCD 码.
;-------------------------------
M_LOOP:
LCALL DISP ;调用显示
JNB P3.2, JIA_YI ;P3.2按键有效转JIA_YI
JNB P3.3, QING_L ;P3.3按键有效转QING_L
AJMP M_LOOP ;转M_LOOP
;-------------------------------
JIA_YI: ;加1程序段
LCALL DISP ;调用显示
JB P3.2, M_LOOP ;如果P3.2按键无效转M_LOOP
MOV A, 75H ;数据低位送A
ADD A, #1 ;加1
DA A ;十进制调整
MOV 75H, A ;回送到75H
MOV A, 74H ;高位送A
ADDC A, #0 ;带进位加0
DA A ;十进制调整
MOV 74H, A ;回送74H
J_L:
LCALL DISP ;显示
JNB P3.2, J_L ;按键P3.2任然有效转J_L等待抬起
AJMP M_LOOP ;转M_LOOP
;-------------------------------
QING_L:
LCALL DISP ;调用显示
JB P3.3, M_LOOP ;按键P3.3无效转M_LOOP
MOV 74H, #0 ;数据低位清零
MOV 75H, #0 ;数据高位清零
AJMP M_LOOP ;转M_LOOP
;-------------------------------
DISP:
MOV R0, #70H ;R0赋显示缓冲首地址
MOV A, 74H ;数据高位送A
SWAP A ;高四位和低四位交换
ANL A, #0FH ;保留低四位
MOV @R0, A ;送给70H
INC R0 ;R0加1(变成71H)
MOV A, 74H ;数据高位送A
ANL A, #0FH ;保留低四位
MOV @R0, A ;数据送71H
INC R0 ;R0加1(变成72H)
MOV A, 75H ;数据低位送A
SWAP A ;高低四位交换
ANL A, #0FH ;保留低四位
MOV @R0, A ;数据送72H
INC R0 ;R0加1(变成73H)
MOV A, 75H ;数据低位送A
ANL A, #0FH ;保留低四位
MOV @R0, A ;数据送73H
;---------------------------下面是消除无效的0
MOV R0, #70H ;R0=70H
LL:
CJNE @R0, #0, QQ ;如果该地址的值不为0转QQ
MOV @R0, #16 ;否则赋值为16
PP:
INC R0 ;R0加1
CJNE R0, #73H, LL ;未到末地址转LL
QQ:
;---------------------------下面是显示部分
MOV DPTR, #D_TAB ;表首地址送DPTR
MOV R2, #254 ;R2=254
MOV R0, #70H ;R0=70H
D_LOOP:
MOV A, @R0 ;将显示值送A
MOVC A, @A+DPTR ;查表得对应段码
MOV P2, #255 ;消隐.
MOV P0, A ;输出段码.
MOV P2, R2 ;输出位码.
LCALL DL_1MS ;延时
MOV A, R2 ;A=R2
RL A ;循环左移一位
MOV R2, A ;回送R2
INC R0 ;R0加1
CJNE R0, #74H, D_LOOP ;R0不等于74H转D_LOOP
RET
D_TAB:
DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H
DB 80H, 90H, 88H, 83H, 86H, 0A1H, 86H, 8EH, 0FFH ;FF是空白的代码
;-------------------------------
DL_1MS:
DJNZ R7, $ ;R7减1不为0继续
DJNZ R7, $ ;R7减1不为0继续
RET
;-------------------------------
END