单片机 我有一篇从99到0倒计时的汇编语言的程序, 求大家帮我加入3个开关, 如下图

一个开关用来按下后 开始执行倒计时程序,其他两个用来暂停计时和停止计时(停止计时就显示00吧),求大神帮忙

ORG 0000HSTART: MOV R0,#20 MOV R4,#15LP0: MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H MOV DPTR,#TABLE SETB TR0LP1: JBC TF0,LP2 ACALL DISP AJMP LP1LP2: DJNZ R0,LP0

CLR TR0 MOV R0,#20 MOV A,R4 CJNE A,#0,DEC1 MOV R4,#15 AJMP JP1DEC1: DEC A
MOV R4,AJP1: ACALL DISP
AJMP LP0DISP: MOV A,R4
MOV B,#10
DIV AB MOV 20H,A MOV 21H,B MOV A,20H MOVC A,@A+DPTR MOV P2,A SETB P3.1 LCALL DELAY CLR P3.1 MOV A,21H MOVC A,@A+DPTR
MOV P2,A
SETB P3.0
LCALL DELAY
CLR P3.0
RET
DELAY: MOV R6,#10
DL0: MOV R5,#50 DJNZ R5,$ DJNZ R6,DL0 RET
TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90H END

程序写的可以,但是在硬软件资源使用上不科学。
1.位寻址寄存器20H~2FH应专做为寻址用,平时的字节寄存器应从30H开始不较好。
2.P3口各个引脚都有第二功能,能不用尽量不用。比如这次的电路:数码管a~g用P2口,位选用P1.0~P1.1,按键用P1.2~P1.4,完全够用。
3.汇编编程要适当添加注释,提高程序可读性!

我是在你的程序基础上改的,用注释标注了!

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-14
ORG 0000H
START:
MOV P3, #0
MOV DPTR, #TABLE
MOV TMOD, #01H
SETB TR0

LP0:MOV R4, #100
LP1:MOV R5, #20
LP2:MOV TH0, #3CH
MOV TL0, #0B0H
LP3:CALL DISP
JNB P1.0, K1
JNB P1.1, K2
JNB P1.2, K3
JNB TF0, LP3
CLR TF0
DJNZ R5, LP2
DJNZ R4, LP1
JMP LP0
K1: CALL DISP
JB P1.0, LP3
SETB TR0
JMP LP3
K2: CALL DISP
JB P1.1, LP3
CLR TR0
JMP LP3
K3: CALL DISP
JB P1.2, LP3
CLR TR0
MOV R4, #1
JMP LP3
;---------------------------
DISP:
MOV A, R4
DEC A
MOV B, #10
DIV AB
MOVC A, @A+DPTR
MOV P2, A
SETB P3.1
DJNZ R7, $
DJNZ R7, $
CLR P3.1
MOV A, B
MOVC A, @A+DPTR
MOV P2, A
SETB P3.0
DJNZ R7, $
DJNZ R7, $
CLR P3.0
RET
TABLE:
DB 0C0H, 0F9H, 0A4H, 0B0H, 99H
DB 92H, 82H, 0F8H, 80H, 90H
END追问

0

本回答被提问者和网友采纳
相似回答