1、单片机定时器实时时钟程序单片机定时器实时时钟程序#include typedef unsigned int uint;typedef unsigned char uchar;sbit RS = P10;sbit RW = P11;sbit EN = P25;sbit wela = P27;sbit dula = P26;sbit BUSY = P07;sbit FM = P23;uchar counter,tshi, tfen, tmiao;uchar sshi, sge, fshi, fge, mshi, mge;uint nian;uchar yue, ri;uchar nqian, nb
2、ai, nshi, nge, yshi, yge, rshi, rge;uchar code time = Time:;uchar code date = Date:;/delay:xmsvoid delay(uint xms)uchar i, j;for(i = 0; i xms; i+)for(j = 0; j = 24) tshi = 0; break;case 0xde: tfen+; if(tfen = 60) tfen = 0; break;case 0xbe: nian+; if(nian = 10000) nian = 0; break;case 0x7e: yue+; if(
3、yue = 13) yue = 1; break;while(temp != 0xf0)temp = P3;temp &= 0xf0;delay(2);while(temp != 0xf0)temp = P3;temp &= 0xf0;FM = 1;P3 = 0xfd;temp = P3;temp &= 0xf0;if(temp != 0xf0)delay(5);temp = P3;temp &= 0xf0;if(temp != 0xf0)FM = 0;temp = P3;switch(temp)case 0xed: ri+; if(yue = 1 | yue = 3 | yue = 5 |
4、yue = 7 | yue = 8 | yue = 10 | yue = 12 )if(ri = 32)ri = 1;if(yue = 4 | yue = 6 | yue = 9 | yue = 11)if(ri = 31)ri = 1;if(yue = 2)if(nian % 4 = 0) & (nian % 100) != 0) | (nian % 400 = 0)if(ri = 30)ri = 1; elseif(ri = 29)ri = 1;break;case 0xdd: tshi-; if(tshi = 0) tshi = 23; break;case 0xbd: tfen-; i
5、f(tfen = 0) tfen = 59; break;case 0x7d: nian-; if(nian = 0) nian = 10000; break;while(temp != 0xf0)temp = P3;temp &= 0xf0;delay(2);while(temp != 0xf0)temp = P3;temp &= 0xf0;FM = 1;P3 = 0xfb;temp = P3;temp &= 0xf0;if(temp != 0xf0)delay(5);temp = P3;temp &= 0xf0;if(temp != 0xf0)FM = 0;temp = P3;switch
6、(temp)case 0xeb:ri-;if(yue = 1 | yue = 3 | yue = 5 | yue = 7 | yue = 8 | yue = 10 | yue = 12 )if(ri = 0)ri = 31;if(yue = 4 | yue = 6 | yue = 9 | yue = 11)if(ri = 0)ri = 30;if(yue = 2)if(nian % 4 = 0) & (nian % 100) != 0) | (nian % 400 = 0)if(ri = 0)ri = 29; elseif(ri = 60)tmiao = 0;tfen+;if(tfen = 6
7、0)tfen = 0;tshi+;if(tshi = 24)tshi = 0;ri+;switch(yue)case 1:case 3:case 5:case 7:case 8:case 10:case 12: if(ri = 32)ri = 1;yue+;break;case 4:case 6:case 9:case 11: if(ri = 31)ri = 1;yue+;break;case 2: if(nian % 4 ) = 0 & (nian % 100) != 0) | (nian % 400 = 0)if(ri = 30)ri = 1;yue+;elseif(ri = 29)ri = 1;yue+;break;default: break;if(yue = 13)yue = 1;nian+;if(nian = 10000)nian = 0; /timr1:intvoid timer1_int() interrupt 3TH1 = 0xB8;TL1 = 0x00;counter+;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1