单片机数字电子时钟系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机数字电子时钟系统
今天傍晚,终于把自己数字电子时钟系统程序调试出来了!心里美滋滋的,经过这个系统的开发,我学会了
单片机系统的开发。
其实,这个时钟系统花了我一个礼拜的时间。
从刚开始的显示模块,到键盘模块,我都一步一步
实现。
当然,这其中,也遇到了很多困难,麻烦!刚开始,数码管部分一点不显示,键盘也没用,很烦人,很恼火。
但是,我还是把程序调试出来了,并且在硬件上运行达到效果。
本以为这几部分实现了后,联合在一块,偶的时钟系统就OK 了。
然而,我错了,一个模块运行成功并不意味着模块组成的系统就能按照预想的一样达到目的,实现功能!当我将几个模块结合在一块时候,问题有接踵而至!哎呀!烦人啊!我只能重新设计方案,重新检查,重新写程序,源代码写了
一遍又一遍,程序调了又调,程序一遍又一遍地下载到单片机中运行,观察现象,分析出错原因,找出解决办法!最终,
在我的不断努力下,我的单片机数字电子时钟系统成
功的实现了所有的功能,达到了预期的效果!!先把我写了好多遍,
调试了好多遍的源代码上传,来和大家一起分享一下!!
ORG 0000H
SJMP START
ORG 0003H
LJMP INTT0
ORG 000BH
LJMP TIME0
ORG 001BH
LJMP TIME1
ORG 0045H
START:MOV SP,#60H
SETB EA
SETB ET0
SETB ET1
MOV TMOD,#11H
MOV TL0,#0B0H
MOV TH0,#3CH
MOV TL1,#80H
MOV TH1,#0C1H SETB EX0
CLR IT0
SETB PX0
MOV R0,#20
MOV 40H,#0
MOV 41H,#0
MOV 42H,#0
MOV 30H,#0
MOV 31H,#0
MOV 32H,#0
MOV 33H,#0
MOV 34H,#0
MOV 35H,#0
MOV P2,#0FFH SETB TR0
SETB TR1
SJMP $
INTT0:CLR TR0 CLR TR1
PUSH ACC
PUSH PSW
MOV P1,#0FFH
KEY1:JNB P1.0,ST LCALL DISP
JNB P1.1,MT
LCALL DISP
JNB P1.2,HT
LCALL DISP
JNB P1.3,COMN
LCALL DISP
SJMP KEY1
COMN:LCALL CONT ST:LCALL DELAY2
JB P1.0,KEY1
JNB P1.0,$
INC 40H
MOV A,40H
MOV B,#10
DIV AB
MOV 31H,A
MOV A,B
MOV 30H,A
MOV A,40H
CJNE A,#60,KEY1 MOV 30H,#0
MOV 31H,#0
MOV 40H,#0
LJMP KEY1
MT:LCALL DELAY2 JB P1.1,KEY1
JNB P1.1,$
INC 41H
MOV A,41H
MOV B,#10
DIV AB
MOV 33H,A
MOV A,B
MOV 32H,A
LCALL DISP
MOV A,41H
CJNE A,#60,KEY1 MOV 32H,#0
MOV 33H,#0
MOV 41H,#0
LJMP KEY1
HT:LCALL DELAY2
JB P1.2,KEY1
JNB P1.2,$
INC 42H
MOV A,42H
MOV B,#10
DIV AB
MOV 35H,A
MOV A,B
MOV 34H,A
LCALL DISP
MOV A,42H
CJNE A,#24,KEYPRESS MOV 34H,#0
MOV 35H,#0
MOV 42H,#0
LJMP KEY1
KEYPRESS:LCALL KEY1 CONT:LCALL DELAY2 JB P1.3,KEYPRESS
JNB P1.3,$
SETB TR0
SETB TR1
POP PSW
POP ACC
RETI
TIME0:PUSH ACC PUSH PSW
MOV TL0,#0B0H MOV TH0,#3CH
DJNZ R0,BACK
MOV R0,#20
INC 40H
MOV A,40H
MOV B,#10
DIV AB
MOV 31H,A
MOV A,B
MOV 30H,A
MOV A,40H
CJNE A,#60,BACK MOV 30H,#0
MOV 31H,#0
MOV 40H,#0
INC 41H
MOV A,41H
MOV B,#10
DIV AB
MOV 33H,A
MOV A,B
MOV 32H,A
MOV A,41H
CJNE A,#60,BACK MOV 32H,#0
MOV 33H,#0
MOV 41H,#0
INC 42H
MOV A,42H
MOV B,#10
DIV AB
MOV 35H,A
MOV A,B
MOV 34H,A
MOV A,42H
CJNE A,#24,BACK
MOV 42H,#0
MOV 34H,#0
MOV 35H,#0
MOV 30H,#0
MOV 31H,#0
MOV 32H,#0
MOV 33H,#0
BACK:POP PSW
POP ACC
RETI
TIME1:PUSH ACC
PUSH PSW
MOV TL1,#80H
MOV TH1,#0C1H
LCALL DISP
POP PSW
POP ACC
RETI
DISP:MOV DPTR,#TAB1 MOV A,30H
MOVC A,@A+DPTR
MOV P0,A
SETB P2.0
CLR P2.5
LCALL DELAY1 SETB P2.5
MOV A,31H
MOVC A,@A+DPTR MOV P0,A
SETB P2.0
CLR P2.4
LCALL DELAY1 MOV DPTR,#TAB2 MOV A,32H
MOVC A,@A+DPTR SETB P2.4
MOV P0,A
SETB P2.0
CLR P2.3
LCALL DELAY1 MOV DPTR,#TAB1 MOV A,33H
MOVC A,@A+DPTR
SETB P2.3
MOV P0,A
SETB P2.0
CLR P2.2
LCALL DELAY1
MOV DPTR,#TAB2
MOV A,34H
MOVC A,@A+DPTR
SETB P2.2
MOV P0,A
SETB P2.0
CLR P2.1
LCALL DELAY1
MOV DPTR,#TAB1
MOV A,35H
MOVC A,@A+DPTR
SETB P2.1
MOV P0,A
CLR P2.0
LCALL DELAY1
RET
DELAY1:MOV R7,#02H
DL:MOV R6,#0FFH
DL1:DJNZ R6,DL1
DJNZ R7,DL
RET
DELAY2:MOV R7,#10H
TS1:MOV R6,#0FFH
TS2:DJNZ R6,TS2
DJNZ R7,TS1
RET
TAB1:DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90H
TAB2:DB 40H,79H,24H,30H,19H
DB 12H,02H,78H,00H,10H
END。