51单片机数字钟汇编程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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,#0D8H;定时器1赋初值MOV TL1,#0F0H
POP PSW;恢复现场
POP ACC
RETI
/*键盘子程序*/
KEY: JB P3.1,SFJ7
LCALL DELAY1
JB P3.1,SFJ7
CPL 2FH.7
JNB 2FH.7,SFJ32
MOV TH0,#3CH
MOV TL0,#0B0H
MOV TH1,#0D8H
MOV TL1,#0F0H
SETB TR1
CLR TR0
MOV R1,#30H
MOV R2,#0E0H
RET;启动/停止时钟
SFJ7: MOV P1,#0F7H
MOV A,P1
ANL A,#0F0H
CJNE A,#0F0H,SFJ8
SJMP SFJ15
SFJ32:MOV TH0,#3CH
MOV TL0,#0B0H
MOV TH1,#0D8H
MOV TL1,#0F0H
SETB TR0
CLR TR1
MOV R1,#20H
MOV R2,#0E0H
RET
SFJ8: LCALL DELAY1
MOV A,P1
ANL A,#0F0H
CJNE A,#0F0H,SFJ9;扫描第一行
SJMP SFJ15
SFJ9: CJNE A,#70H,SFJ10;扫描秒加一键INC 20H
MOV A,20H
CJNE A,#10,SFJ31
MOV 20H,#00H
INC 21H
MOV A,21H
CJNE A,#6,SFJ31
MOV 21H,#00H
SJMP SFJ15
SFJ10: MOV A,P1;扫描分加一键ANL A,#0F0H
CJNE A,#0B0H,SFJ11
INC 22H
MOV A,22H
CJNE A,#10,SFJ31
MOV 22H,#00H
INC 23H
MOV A,23H
CJNE A,#6,SFJ31
MOV 23H,#00H
SJMP SFJ31
SFJ11: MOV A,P1;扫描小时加一键ANL A,#0F0H
CJNE A,#0D0H,SFJ31
INC24H
MOV A,25H
CJNE A,#2,SFJ12
MOV A,24H
CJNE A,#4,SFJ31
SJMP SFJ13
SFJ12: MOV A,24H
CJNE A,#10,SFJ31
SFJ13: MOV 24H,#00H
INC 25H
MOV A,25H
CJNE A,#3,SFJ31
MOV 25H,#00H
SFJ31:RET
/*减法*/
SFJ15: MOV P1,#0FBH;扫描第二行MOV A,P1
ANL A,#0F0H
CJNE A,#0F0H,SFJ16
SJMP SFJ23
SFJ16: LCALL DELAY1
MOV A,P1
ANL A,#0F0H
CJNE A,#0F0H,SFJ17
SJMP SFJ23
SFJ17:CJNE A,#70H,SFJ18;扫描秒减一键
DEC 20H
MOV A,20H
CJNE A,#0FFH,SFJ23
MOV20H,#09H
DEC 21H
MOV A,21H
CJNE A,#0FFH,SFJ23
MOV 21H,#05H
SJMP SFJ23
SFJ18:MOV A,P1;扫描分减一键ANL A,#0F0H
CJNE A,#0B0H,SFJ19
DEC 22H
MOV A,22H
CJNE A,#0FFH,SFJ23
MOV 22H,#09H
DEC 23H
MOV A,23H
CJNE A,#0FFH,SFJ23
MOV 23H,#05H
SFJ19:MOV A,P1;扫描小时减一ANL A,#0F0H
CJNE A,#0D0H,SFJ23
DEC 24H
MOV A,24H
CJNE A,#0FFH,SFJ23
DEC 25H
MOV A,25H
CJNE A,#0FFH,SFJ20
MOV 24H,#03H
MOV 25H,#02H
SJMP SFJ23
SFJ20: MOV 24H,#09H
SFJ23: RET
/*秒表键盘子程序*/
SFJ24: JB P3.3,SFJ26
LCALL DELAY1
JB P3.3,SFJ26
CPL T R1 ;启动/停止秒表
SFJ26: JB P3.2,SFJ27
LCALL DELAY1
JB P3.2,SFJ27 ;清零并停止秒表
CLR TR1
MOV 30H,#00H
MOV 31H,#00H;清零计数单元
MOV 32H,#00H
MOV 33H,#00H
MOV 34H,#00H
MOV 35H,#00H
MOV 36H,#10H;熄灭最高两位
MOV 37H,#10H;
SFJ27: RET
/*时钟显示子程序*/
DISPLAY:PUSH ACC
PUSH PSW
SFJ50:MOV P2,R2
MOV A,@R1
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A
ACALL DELAY
MOV P0,#0FFH
INC R1
MOV A,R2
CLR C
SUBB A,#20H
MOV R2,A
CJNE R1,#28H,SFJ50
MOV R1,#20H
POP PSW
POP ACC
RET
/*秒表显示子程序*/
DISPLAY1:PUSH ACC
PUSH PSW
SFJ51:MOV P2,R2
MOV A,@R1
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A
ACALL DELAY
MOV P0,#0FFH;消隐
INC R1
MOV A,R2
CLR C
SUBB A,#20H
MOV R2,A
CJNE R1,#38H,SFJ51
MOV R1,#30H
POP PSW
POP ACC
RET
DELAY:MOV R6,#20
D4:MOV R7,#250
D3:DJNZ R7,D3
DJNZ R6,D4
RET
/*键盘扫描延迟程序*/
DELAY1: MOV R6,#20
D2:MOV R7,#250
D1:DJNZ R7,D1
DJNZ R6,D2
RET
TAB: DB 3FH,06H,5BH,4FH
DB 66H,6DH,7DH,07H,7FH
DB 6FH,40H
END。

相关文档
最新文档