资源描述:
《DS1302芯片C语言程序.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#include//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#includesbitSCK=P3^6;//时钟sbitSDA=P3^4;//数据sbitRST=P3^5;//DS1302复位sbitLS138A=P2^2;sbitLS138B=P2^3;sbitLS138C=P2^4;bitReadRTC_Flag;//定义读DS1302标志unsignedcharl_tmpdate[7]={0,0,12,15,5,3,8};//秒分时日月周年08-05-1512:00:00unsignedcharl_tmpdis
2、play[8];codeunsignedcharwrite_rtc_address[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c};//秒分时日月周年最低位读写位codeunsignedcharread_rtc_address[7]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d};codeunsignedchartable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//共阴数码管0-9'-''熄灭‘表/*********************
3、*********************************************//*函数声明*//******************************************************************/voidWrite_Ds1302_byte(unsignedchartemp);voidWrite_Ds1302(unsignedcharaddress,unsignedchardat);unsignedcharRead_Ds1302(unsignedcharaddress);voidRead_RTC(void);//readRTCvo
4、idSet_RTC(void);//setRTCvoidInitTIMER0(void);//initaltimer0/******************************************************************//*主函数*//******************************************************************/voidmain(void){InitTIMER0();//初始化定时器0Set_RTC();//写入时钟值,如果使用备用电池时候,不需要没每次上电写入,此程序应该屏蔽while
5、(1){if(ReadRTC_Flag){ReadRTC_Flag=0;Read_RTC();l_tmpdisplay[0]=l_tmpdate[2]/16;//数据的转换,因我们采用数码管0~9的显示,将数据分开l_tmpdisplay[1]=l_tmpdate[2]&0x0f;l_tmpdisplay[2]=10;//加入"-"l_tmpdisplay[3]=l_tmpdate[1]/16;l_tmpdisplay[4]=l_tmpdate[1]&0x0f;l_tmpdisplay[5]=10;l_tmpdisplay[6]=l_tmpdate[0]/16;l_tmpdi
6、splay[7]=l_tmpdate[0]&0x0f;}}}/******************************************************************//*定时器0初始化*//******************************************************************/voidInitTIMER0(void){TMOD
7、=0x01;//定时器设置16位TH0=0xef;//初始化值TL0=0xf0;ET0=1;TR0=1;EA=1;}/*****************************
8、*************************************//*写一个字节*//******************************************************************/voidWrite_Ds1302_Byte(unsignedchartemp){unsignedchari;for(i=0;i<8;i++)//循环8次写入数据{SCK=0;SDA=temp&0x01;//每次传输低字节temp>>=1;//右移一位SCK=1;}}/*****