求AT89S52单片机做99秒码表汇编程序

如题所述

第1个回答  2020-05-25
我做的只要两个数码管显示
99
秒的,不用6个数码管,如果有需要帮你改下,
你那个设计的功能说的还不够明白。还有就是你那个数码管是怎么连的啊?共阴的还是共阳的,想当初做数码管显示时间,就花了3天的时间才把数码管点亮。
用AT89S52设计一个2位LED数码显示“秒表”,显示时间为00~99秒,每秒自动加一。另设计一个“开始”按键和一个“复位”按键,一个“暂停”按键和一个“快加”按键(每10ms快速加一)。
ORG
0000H
AJMP
MAIN
;主程序入口地址
ORG
0003H
AJMP
ZHONGDUAN0
;中断0入口地址
ORG
000BH
AJMP
DINGSHI
;定时器T0入口地址
ORG
0013H
AJMP
ZHONGDUAN1
;中断1入口地址
ORG
001BH
AJMP
DINGSHI1
;定时器T1入口地址
ORG
0030H
//主程序:
MAIN:
MOV
TCON,#05H
;主程序开始
外部中断跳变模式
MOV
TMOD,#11H
;定时器0,1模式1
MOV
IE
,#8FH
;开总中断,中断0,1,定时器0,1
MOV
DPTR,#TAB
MOV
R1
,#00H
MOV
R2
,#00H
MOV
R3
,#40
;循环次数40
MOV
TL0
,#2CH
;置初值,定时25MS
MOV
TH0
,#0CFH
MOV
TL1
,#78H
;置初值,定时10MS
MOV
TH1
,#0ECH
CLR
TR0
;关定时器
CLR
TR1
//暂停键K3,快加键K4程序
HERE:JB
P1.0,HERE
SHOW:CLR
TR1
CLR
TR0
ACALL
XIANSHI
KUAIJIA:JB
P1.2,KUAIJIA
;等待P1.2为0
快加
CLR
TR0
SETB
TR1
HERE3:
JNB
P1.2,HERE3
AJMP
HERE
//外部中断INT0子程序-----计时按键K1子程序
ZHONGDUAN0:
SETB
TR0
;计时按键
RETI
//外部中断INT1子程序----复位按键K2子程序
ZHONGDUAN1:CLR
TR0
;复位按键
CLR
TR1
MOV
12H,#00H
MOV
11H,#00H
ACALL
XIANSHI
;调用显示子程序
MOV
R1,#00H
MOV
R2,#00H
RETI
//加一子程序
JIA1:
INC
R1
;加1子程序
CJNE
R1,#0AH
,LOOP
;判断是否到表尾
MOV
R1,#00H
INC
R2
CJNE
R2,#0AH,LOOP
MOV
R2,#00H
LOOP:
MOV
12H,R1
;重新赋值
MOV
11H,R2
RET
//显示子程序
XIANSHI:MOV
R7,#02H
;2个数码管显示子程序
MOV
R0,#12H
LOOP5:
MOV
R6,#08H
;8位2进制数
MOV
A
,@R0
MOVC
A
,@A+DPTR
LOOP6:
RLC
A
;循环左移
CLR
P3.1
MOV
P3.0,C
SETB
P3.1
DJNZ
R6,LOOP6
DEC
R0
DJNZ
R7,LOOP5
RET
;定时器T0子程序
DINGSHI:MOV
TL0,#2CH
;定时子程序
MOV
TH0,#0CFH
DJNZ
R3,LOOP7
ACALL
JIA1
;调用加1子程序
ACALL
XIANSHI
;调用显示子程序
MOV
R3,#40
LOOP7:
RETI
;定时器T1子程序
DINGSHI1:MOV
TL1,#78H
;置初值,定时10MS
MOV
TH1,#0ECH
CLR
TR0
SETB
TR1
MOV
12H,R1
MOV
11H,R2
JNB
P1.0,SHOW
ACALL
JIA1
ACALL
XIANSHI
LOP7:
RETI
TAB:
DB
3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
大家正在搜