资源描述:
《《单片机时钟程序》doc版》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、实验五:电子时钟;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AT89C52时钟程序;;;;libinrong2004/05/24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;定时器T0、T1溢出周期为50MS,T0为秒计数用,T1为调整时闪烁用,;P1.0为调整按钮,P1.1为调整时钟,P1.2为调整分钟,P1.3为调整秒钟;P0.0-7口为数码管段选,采用共阳显示管。;P2.1-6为数码管位选。;70-71H秒计时和显示单元;72-73H
2、分显示单元注意:72H放个位数73H放十位数;74-75H小时显示单元;76-77H分计时单元;78-79H小时计时单元;7AH放“熄灭符”数据0aH;位00h放分调整标志;位01h放小时调整标志;位02h放闪烁标志;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;中断入口程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ORG0000H;程序执行开始地址LJMPSTART;跳到标号START执行ORG0003H;外中断0中断程序入口RETI;外中
3、断0中断返回ORG000BH;定时器T0中断程序入口LJMPINTT0;跳至INTTO执行ORG0013H;外中断1中断程序入口RETI;外中断1中断返回ORG001BH;定时器T1中断程序入口LJMPINTT1;跳至INTT1执行ORG0023H;串行中断程序入口地址RETI;串行中断程序返回;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;主程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;START:MOVR0,#70H;清70H-7AH共11
4、个内存单元MOVR7,#0BH;CLEARDISP:MOV@R0,#00H;INCR0;DJNZR7,CLEARDISP;MOV20H,#00H;清20H(标志用)MOV7AH,#0AH;放入"熄灭符"数据MOVTMOD,#11H;设T0、T1为16位定时器;用11.0592M初值是4C00H;用12M初值是3CB0HMOVTL0,#00H;50MS定时初值(T0计时用)MOVTH0,#4cH;50MS定时初值MOVTL1,#00H;50MS定时初值(T1闪烁定时用)MOVTH1,#4cH;50MS定时初值SETBEA;总中
5、断开放SETBET0;允许T0中断SETBTR0;开启T0定时器MOVR4,#14H;1秒定时用初值(50MS×20)START1:LCALLDISPLAY;调用显示子程序jnbP1.1,set_h;此按键是小时加1jnbP1.2,set_M;此按键是分钟加1SJMPSTART1;P1.0口为1时跳回START1set_h:ljmpset_hhset_m:ljmpset_mm;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1秒计时程序;;;;;;;;;;;;;;;;;;;;;;;;;;
6、;;;;;;;;;;;;;;;;;;T0中断服务程序INTT0:PUSHACC;累加器入栈保护PUSHPSW;状态字入栈保护CLRET0;关T0中断允许CLRTR0;关闭定时器T0;用11.0592M初值是4C00H;用12M初值是3CB0HMOVA,#00H;中断响应时间同步修正,要精确调整在这里!!!ADDA,TL0;低8位初值修正MOVTL0,A;重装初值(低8位修正值)MOVA,#4CH;高8位初值修正ADDCA,TH0;MOVTH0,A;重装初值(高8位修正值)SETBTR0;开启定时器T0DJNZR4,OUTT0
7、;20次中断未到中断退出ADDSS:MOVR4,#014H;20次中断到(1秒)重赋初值14hMOVR0,#71H;指向秒计时单元(70H-71H)ACALLADD1;调用加1程序(加1秒操作)MOVA,R3;秒数据放入A(R3为2位十进制数组合)CLRC;清进位标志CJNEA,#60H,ADDMM;ADDMM:JCOUTT0;小于60秒时中断退出ACALLCLR0;大于或等于60秒时对秒计时单元清0MOVR0,#77H;指向分计时单元(76H-77H)ACALLADD1;分计时单元加1分钟MOVA,R3;分数据放入ACLR
8、C;清进位标志CJNEA,#60H,ADDHH;ADDHH:JCOUTT0;小于60分时中断退出ACALLCLR0;大于或等于60分时分计时单元清0MOVR0,#79H;指向小时计时单元(78H-79H)ACALLADD1;小时计时单元加1小时MOVA,R3;时数据放入ACLRC;清进位标