📄 单片机电子钟.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0041)http://www.8951.com/test/test/clockok.htm -->
<HTML><HEAD><TITLE>单片机电子钟</TITLE><LINK href="单片机电子钟.files/gpszx.css"
type=text/css rel=stylesheet><LINK href="../index.files/gpszx.css" type=text/css
rel=stylesheet>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2900.2523" name=GENERATOR>
<META content=FrontPage.Editor.Document name=ProgId></HEAD>
<BODY>
<DIV align=center>
<CENTER>
<TABLE height=356 cellSpacing=0 cellPadding=0 width=769 bgColor=#66ccff
borderColorLight=#000000 border=0>
<TBODY>
<TR>
<TD align=middle width=752 bgColor=#ffffff colSpan=5 height=356><FONT
font><FONT color=#ff0000>单片机提高</FONT><FONT color=#ff0000><IMG height=11
src="单片机电子钟.files/gif091.gif" width=28 border=0></FONT><FONT
color=#454545>WWW.51C51.COM
自学单片机的网站:作中国单片机编程技术普及推广第一站!倚天一出宝刀屠龙</FONT></FONT><IMG height=100
src="单片机电子钟.files/titou2.jpg" width=760 border=0> <FONT color=#454545
font><A href="http://www.8951.com/index.htm">返回主页 给我留言</A> <A
href="http://www.8951.com/jiaoxue.htm">单片机教学</A> <A
href="http://www.8951.com/tigao.htm">单片机提高</A> <A
href="http://www.8951.com/pinzhi.htm">品质技术</A> <A
href="http://www.8951.com/1000/WANGZHI.HTM">单片机网址</A> <A
href="http://www.8951.com/down/down.htm">软件下载</A> <A
href="http://www.8951.com/yejin/yejin.htm">学液晶显示</A> <A
href="http://www.8951.com/chanpin.htm">产品介绍</A> <A
href="http://www.8951.com/10/huikan.htm">如何购买</A></FONT>
<P><FONT
size=2>;***************************************************************************<BR>;*
(程序转载请著明出处
,未声明可适应本站腾龙/isp开发套件/倚天版开发套件
*<BR>;* E-mail:sxj1974@163.com (51c51 test web)
51单片机学习网,自学单片机的网站
*<BR>;* Create by :石学军 <A
href="http://www.51c51.com/">http://www.51c51.com/</A>
www.8951.com
更多例程请登陆网站
*<BR>;***************************************************************************</FONT></P>
<CENTER></CENTER>
<P align=left><FONT color=#454545 font>;为
六位数码管时钟程序倚天版直接使用,p3.2,p3.3,p3.4,p3.5
四键控制!转载自<BR>无线电杂志2003年第10期。强烈推荐,实测24小时误差5秒。详细说明见无线电杂志<BR>2003年第10期(注意,有少许改动)</FONT></P><FONT
size=2>
<P align=left>;实用单片机电子钟的制作<BR>;主程序(MAIN),如下:<BR>ORG 0000H<BR>AJMP
MAIN<BR>ORG 000BH<BR>AJMP TIME<BR><BR>ORG 0300H<BR>MAIN: <BR>mov
20h,#00h <BR>MOV 21H,#00H<BR>MOV 22H,#00H<BR>MOV 23H,#00H<BR>MOV
IP,#02H ;IP,IE初始化<BR>MOV IE,#82H<BR>MOV TMOD,#01H ;设定定时器工作方式?<BR>MOV
TL0,#0B0H<BR>MOV TH0,#3CH<BR>SETB TR0 ;启动定时?<BR>MOV SP,#40H
;重设堆栈指针<BR>NEXT: LCALL DISP ;调用显示子程序?<BR>LCALL KEY ;调用按键检测子程序<BR>JZ NEXT
;<BR>LCALL ANKEY ;调用按键处理子程序<BR>SJMP NEXT
;重新循环<BR>NOP<BR>NOP<BR>NOP<BR>;定时中断处理程序:<BR>TIME: PUSH ACC ;保护现场<BR>PUSH
PSW<BR>MOV TL0,#0B4H ;赋定时初值<BR>MOV TH0,#3CH<BR>INC 20H ;<BR>MOV
A,20H<BR>CJNE A,#20,RETI1<BR>MOV 20H,#00H ;一秒钟时间到<BR>MOV A,21H<BR>ADD
A,#01H<BR>DA A<BR>MOV 21H,A<BR>CJNE A,#60H,RETI1<BR>MOV 21H,#00H
;一分钟时间到<BR>MOV A,22H<BR>ADD A,#01H<BR>DA A<BR>MOV 22H,A<BR>CJNE
A,#60H,RETI1<BR>MOV 22H,#00H ;一小时时间到<BR>MOV A,23H<BR>ADD A,#01H<BR>DA
A<BR>MOV 23H,A<BR>CJNE A,#24H,RETI1<BR>MOV 23H,#00H
;到时间达到24小时,清零.<BR>RETI1: POP PSW ;恢复现场<BR>POP ACC<BR>RETI
;中断返回?<BR>NOP<BR>NOP<BR><BR>;显示子程序<BR>DISP: ANL 2FH,#10H ;处理小数点<BR>MOV
A,21H ;处理秒21H-->2DH,2EH<BR>ANL A,#0FH<BR>ORL A,2FH<BR>MOV 2FH,A<BR>MOV
A,21H <BR>ANL A,#0F0H<BR>SWAP A<BR>MOV 2EH,A<BR>ANL 2DH,#10H<BR>MOV
A,22H ;处理分钟22H-->2CH,2DH<BR>ANL A,#0FH<BR>ORL A,2DH<BR>MOV 2DH,A<BR>MOV
A,22H<BR>ANL A,#0F0H<BR>SWAP A<BR>MOV 2CH,A<BR>ANL 2BH,#10H<BR>MOV A,23H
;处理小时23H-->2AH,2BH<BR>ANL A,#0FH<BR>ORL A,2BH<BR>MOV 2BH,A<BR>MOV
A,23H<BR>ANL A,#0F0H<BR>SWAP A<BR>MOV 2AH,A<BR>MOV R0,#2FH ;显示偏移量<BR>MOV
R3,#06H<BR>MOV DPTR,#TABLE<BR>MOV A,#0BFH<BR>LOOP1: MOV B,A ;<BR>MOV
P2,a<BR>MOV A,@R0<BR>MOVC A,@A+DPTR<BR>MOV P0,a ;送显示<BR>MOV R2,#80H
;延时<BR>DJNZ R2,$<BR>DEC R0<BR>MOV A,B<BR>RR A<BR>DJNZ R3,LOOP1
;循环显示<BR>RET<BR><BR>TABLE: db 28h,7eh,0a2h,62h,74h,61h,21h ;不带小数点<BR>DB
7ah,20h,60h,00,00,00,00,00,00<BR>DB 8H,5eH,82H,42H,54H,41H,1H,5aH
;带小数点<BR>DB 00H,40H,00,00,00,00,00,00<BR>NOP<BR>NOP<BR>;按键判断程序<BR>KEY: MOV
P3,#0FFH ;<BR>MOV A,P3<BR>CPL A<BR>ANL A,#3CH<BR>JZ RETX ;无键按下则返回<BR>LCALL
DISP ;<BR>LCALL DISP<BR>MOV A,P3<BR>CPL A<BR>ANL A,#3CH<BR>JZ RETX
;键盘去抖动。<BR>MOV R6,A ;将键值存入R6。<BR>LOOP2: LCALL DISP ;<BR>MOV A,P3<BR>CPL
A<BR>ANL A,#3CH<BR>JNZ LOOP2 ;等待键释放<BR>MOV A,R6<BR>RETX:
RET<BR>NOP<BR>NOP<BR>;按键处理子程序<BR>ANKEY: CLR EA ;关中断<BR>LX: MOV A,R6<BR>JB
ACC.2,L1 ;是功能键转L1<BR>JB ACC.3,L2 ;是确认键转L2<BR>JB ACC.4,L3 ;是减1键转L3<BR>JNB
ACC.5,L12 ;不是增1键,转L12<BR>JB 2BH.4,L6 ;判断使哪一位(时、分、秒)的值加1<BR>JB
2DH.4,L8<BR>JB 2FH.4,L9<BR><BR>L12: LCALL DISP <BR>LCALL
DISP<BR>LCALL KEY ;判断有无键按下。<BR>JZ L12<BR>LJMP LX<BR><BR>L2: MOV 25H,#00H
;确认键处理程序<BR>CLR 2BH.4<BR>CLR 2DH.4<BR>CLR 2FH.4<BR>SETB
EA<BR>RET<BR><BR>L3: JB 2BH.4,L61 ;增一键处理程序<BR>JB 2DH.4,L81<BR>JB
2FH.4,L91<BR>AJMP L12<BR><BR>L1: MOV A,25H ;功能键处理程序<BR>JZ LB1<BR>JB
ACC.0,LB2<BR>JB ACC.1,LB3<BR>JNB ACC.2,L12<BR>LB1: MOV 25H,#01H
;25H单元是标志位,(25H)=01H调节时单元的值<BR>SETB 2BH.4 <BR>CLR 2DH.4<BR>CLR
2FH.4<BR>AJMP L12<BR><BR>LB3: MOV 25H,#04H
;25H单元是标志位,(25H)=01H调节秒单元的值<BR>SETB 2FH.4<BR>CLR 2DH.4<BR>CLR
2BH.4<BR>AJMP L12<BR><BR>LB2: MOV 25H,#02H
;25H单元是标志位,(25H)=01H调节分单元的值<BR>SETB 2DH.4<BR>CLR 2BH.4<BR>CLR
2FH.4<BR>AJMP L12<BR><BR>L61: AJMP L611 ; <BR>L81: AJMP L811
;<BR>L91: AJMP L911<BR>L6: MOV A,23H ;时加一<BR>ADD A,#01H<BR>DA A<BR>MOV
23H,A<BR>CJNE A,#24H,L15<BR>L15: JC L112<BR>MOV 23H,#00H<BR>L112: AJMP
L12<BR><BR>L8: MOV A,22H ;分加一<BR>ADD A,#01H<BR>DA A<BR>MOV 22H,A<BR>CJNE
A,#60H,L16<BR>L16: JC L112<BR>MOV 22H,#00H<BR>AJMP L12<BR><BR>L9: MOV
A,21H ;秒加一<BR>ADD A,#01H<BR>DA A<BR>MOV 21H,A<BR>CJNE A,#60H,L17<BR>L17:
JC L112<BR>MOV 21H,#00H<BR>AJMP L12<BR><BR>L611: MOV A,23H ;时减一<BR>ADD
A,#99H<BR>DA A<BR>MOV 23H,A<BR>CJNE A,#99H,L112<BR>MOV 23H,#23H<BR>AJMP
L12<BR><BR>L811: MOV A,22H ;分减一<BR>ADD A,#99H<BR>DA A<BR>MOV 22H,A<BR>CJNE
A,#99H,L112<BR>MOV 22H,#59H<BR>AJMP L12<BR><BR>L911: MOV A,21H ;秒减一<BR>ADD
A,#99H<BR>DA A<BR>MOV 21H,A<BR>CJNE A,#99H,L112<BR>MOV 21H,#59H<BR>AJMP
L12<BR>NOP<BR>NOP <BR>END<BR><BR>
<P align=left></FONT></P></TD></TR></TBODY></TABLE></DIV></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -