四位秒表程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
重赏之下心有勇夫^_^
;汇编时钟程序。4位共阳管。P0口段码,P2.0~P2.3位码。显示毫秒和秒。三个按键一个控制时钟开始走,一个控制暂停和继续。。。一个按键清0
;12M晶振 2011 04 20 调试完成
STRT EQU P3.2
STP EQU P3.3
CLRR EQU P3.5
ORG 00H
SJMP MAIN
ORG 0BH
AJMP T0INT
ORG 30H
MAIN: MOV SP,#60H
MOV R3,#10
MOV R4,#20
MOV TMOD,#01H ;定时器T0工作方式1
MOV TH0,#0D8H ;10MS定时初值
MOV TL0,#0F0H
SETB ET0
SETB EA
k1: LCALL DISP
JB STRT,K2
LCALL DISP
JNB STRT,$-3
AJMP START
k2: LCALL DISP
JB STP,K3
LCALL DISP
JNB STP,$-3
AJMP SS
K3: LCALL DISP
JB CLRR,K1
LCALL DISP
JNB CLRR,$-3
AJMP CLEAR
START: SETB TR0
CLR F0 ;如无此条,暂停后,不是按继续键,而是按开始键继续走时,下次按暂停键时,不能暂停
AJMP K1
SS: CPL F0
JNB F0,START
STOP: CLR TR0
AJMP K2
CLEAR: CLR TR0
MOV A,#0
MOV 20H,A
MOV 21H,A
MOV 22H,A
MOV 23H,A
MOV 24H,A
MOV 25H,A
AJMP K3
DISP: MOV A,24H
MOV B,#10
DIV AB
MOV 20H,B ;余数(MS个位数)
MOV 21H,A ;商(MS十位数)
MOV A,25H
MOV B,#10
DIV AB
MOV 22H,B ;余数(S个位数)
MOV 23H,A ;商(S十位数)
MOV A,20H ;MS个位
ACALL SEG7
MOV P0,A
SETB P2.4
ACALL DLY
CLR P2.4
MOV A,21H ;MS十位
ACALL SEG7
MOV P0,A
SETB P2.5
ACALL DLY
CLR P2.5
MOV A,22H ;S个位
ACALL SEG7
MOV P0,A
CLR P0.7
SETB P2.6
ACALL DLY
CLR P2.6
MOV A,23H ;S十位
ACALL SEG7
MOV P0,A
SETB P2.7
ACALL DLY
CLR P2.7
RET
T0INT: MOV TH0,#0D8H MOV TL0,#0F0H
INC 24H
MOV A,24H
CJNE A,#99,T0INTR
MOV 24H,#0
INC 25H
MOV A,25H
CJNE A,#60,T0INTR
MOV 25H,#0
T0INTR: RETI
DLY: MOV R7,#10
D1: MOV R6,#50
DJNZ R6,$
DJNZ R7,D1
RET
SEG7: INC A
MOVC A,@A+PC
RET
DB 0C0H;0
DB 0F9H;1
DB 0A4H;2 DB 0B0H;3 DB 099H;4 DB 092H;5 DB 082H;6 DB 0F8H;7 DB 080H;8 DB 090H;9 END
2
STRT EQU P1.0
CLRR EQU P1.1
ORG 00H
AJMP MAIN
ORG 0BH
AJMP T0INT0
ORG 30H
MAIN:
MOV SP,#60H
MOV R4,#20
MOV TMOD,#01H
MOV TH0,#3CH;12M晶振时定时初值取#3CB0H,还可细调如TL=#0B7H,可以更准MOV TL0,#0B0H
SETB ET0
SETB EA
k1:
ACALL DISP ;开始/暂停键
JB STRT,K2
ACALL DISP
JNB STRT,$-2
AJMP K1
K2:
JB CLRR,K1
ACALL DISP
JNB CLRR,$-2
MOV A,#0
CLR TR0
MOV 26H,A
MOV 27H,A
MOV 28H,A
AJMP K2
DISP:
MOV A,26H
MOV B,#10
DIV AB
MOV 20H,B ;余数(百分秒位数)MOV 21H,A ;商(十分秒位数)MOV A,27H
MOV B,#10
DIV AB
MOV 22H,B ;余数(秒个位数)MOV 23H,A ;商(秒十位数)MOV A,28H
MOV B,#10
DIV AB
MOV 24H,B ;余数(分个位数)MOV 25H,A ;商(分十位数)
MOV A,20H ;百分秒?
ACALL SEG7
MOV P0,A
CLR P2.3
ACALL DLY
SETB P2.3
MOV A,21H ;十分秒
ACALL SEG7
MOV P0,A