今天傍晚,终于把自己数字电子时钟系统程序调试出来了!心里美滋滋的,经过这个系统的开发,我学会了
单片机系统的开发。其实,这个时钟系统花了我一个礼拜的时间。从刚开始的显示模块,到键盘模块,我都一步一步
实现。当然,这其中,也遇到了很多困难,麻烦!刚开始,数码管部分一点不显示,键盘也没用,很烦人,很恼火。
但是,我还是把程序调试出来了,并且在硬件上运行达到效果。本以为这几部分实现了后,联合在一块,偶的时钟系统就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 LCALL DISP 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 LCALL DISP 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