ORG 0000H
AJMP MAIN
ORG 000BH
AJMP TT0
ORG 001BH
AJMP TT1
ORG 0030H
MAIN: MOV 20H,#00H;初始化程序
MOV 21H,#00H
MOV 22H,#00H
MOV 23H,#00H
MOV 24H,#00H
MOV 25H,#00H
MOV 26H,#10;
MOV 27H,#10;熄灭最高两位
MOV 30H,#00H
MOV 31H,#00H
MOV 32H,#00H
MOV 33H,#00H
MOV 34H,#00H
MOV 35H,#00H
MOV 36H,#10;
MOV 37H,#10;熄灭最高两位
MOV SP,#50H
MOV TMOD,#11H;定时器初始化
MOV TH0,#3CH
MOV TL0,#0B0H
MOV TH1,#0D8H
MOV TL1,#0F0H
MOV IE,#8AH;中断允许
SETB TR0;启动定时器0;启动到时器1
MOV R5,#20
MOV R1,#30H
MOV R2,#0E0H
CLR 2FH.7 ;设置表示位
SFJ1: JNB 2FH.7,SFJ2;功能切换键标志位
LCALL SFJ24 ;调用秒表键盘程序
LCALL DISPLAY1;调用秒表显示程序
SJMP SFJ25
SFJ2:LCALL DISPLAY;调用时钟显示子程序
SFJ25: LCALL KEY;调用时钟键盘子程序
SJMP SFJ1
/*定时器0中断*/
TT0: PUSH ACC;保护现场
PUSH PSW
DJNZ R5,SFJ5
MOV R5,#20
INC 20H;秒加一
MOV A,20H
CJNE A,#10,SFJ5
MOV 20H,#00H
INC 21H
MOV A,21H
CJNE A,#6,SFJ5;判断秒是否加到60
MOV 21H,#00H;清零计数单元
INC 22H;分加一
MOV A,22H
CJNE A,#10,SFJ5
MOV 22H,#00H
INC 23H
MOV A,23H
CJNE A,#6,SFJ5;判断分是否加到60
MOV 23H,#00H;清零计数单元
INC 24H
MOV A,25H
CJNE A,#2,SFJ3;每到24小时就清零
MOV A,24H;计数单元
CJNE A,#4,SFJ5;
SJMP SFJ4;
SFJ3: MOV A,24H;
CJNE A,#10,SFJ5;
SFJ4: MOV 24H,#00H
INC 25H
MOV A,25H
CJNE A,#3,SFJ5
MOV 25H,#00H
SFJ5: MOV TH0,#3CH;定时器赋初值
MOV TL0,#0B0H
POP PSW;恢复现场
POP ACC
RETI
/*定时器1中断*/
TT1: PUSH ACC;保护现场
PUSH PSW
INC 30H;1/100秒加一
MOV A,30H
CJNE A,#10,SFJ6
MOV 30H,#00H
INC 31H
MOV A,31H
CJNE A,#10,SFJ6
MOV 31H,#00H;清零计数单元
INC 32H;秒加一
MOV A,32H
CJNE A,#10,SFJ6
MOV 32H,#00H
INC 33H
MOV A,33H
CJNE A,#6,SFJ6
MOV 33H,#00H;清零计数单元
INC 34H;分加一
MOV A,34H
CJNE A,#10,SFJ6
MOV 34H,#00H
INC 35H
MOV A,35H
CJNE A,#6,SFJ6
MOV 35H,#00H
SFJ6: MOV TH1