DS1302+Stc12c5a60s2+按键
单片机源程序如下:
- #include "ds1302.h"
- unsigned char second,minute,hour,week,day,month,year; //秒、分、时、星期、日、月、年
- //---DS1302时钟初始化2016年5月7日星期六12点00分00秒。---//
- //---存储顺序是秒分时日月周年,存储格式是用BCD码---//
- unsigned char time[]={0x06,0x03,0x14,0x03,0x12,0x30,0x00}; //初始时间数组
- /*****************************************************************************
- 函数功能:向DS1302送一字节数据子程序
- 入口参数:
- 出口参数:
- *****************************************************************************/
- void InputByte(unsigned char byte1)
- {
- char i;
- for(i=8;i>0;i--)
- {
- DS1302_IO=(bit)(byte1&0x01);
- DS1302_CLK=1;
- _nop_();
- DS1302_CLK=0;
- byte1>>=1;
- }
- return;
- }
- /*****************************************************************************
- 函数功能:读DS1302一个字节子程序
- 入口参数:
- 出口参数:
- *****************************************************************************/
- unsigned char outputbyte(void)
- {
- unsigned char i;
- unsigned ucdat=0;
- for(i=8;i>0;i--)
- {
- DS1302_IO=1;
- ucdat>>=1;
- if(DS1302_IO)ucdat|=0x80;
- DS1302_CLK=1;
- _nop_();
- DS1302_CLK=0;
- }
- return(ucdat);
- }
- /*****************************************************************************
- 函数功能:向DS1302某地址写一字节数据子程序
- 入口参数:addr,TDat
- 出口参数:
- *****************************************************************************/
- void write_ds1302(unsigned char addr,unsigned char TDat)
- {
- DS1302_RST=0;
- _nop_();
- DS1302_CLK=0;
- _nop_();
- DS1302_RST=1;
- InputByte(addr);
- _nop_();
- InputByte(TDat);
- DS1302_CLK=1;
- _nop_();
- DS1302_RST=0;
- }
- /*****************************************************************************
- 函数功能:读DS1302地址子程序
- 入口参数:add
- 出口参数:timedata
- *****************************************************************************/
- unsigned char read_ds1302(unsigned char addr)
- {
- unsigned char timedata;
- DS1302_RST=0;
- _nop_();
- DS1302_CLK=0;
- _nop_();
- DS1302_RST=1;
- InputByte(addr);
- timedata=OutputByte();
- DS1302_CLK=1;
- _nop_();
- DS1302_RST=0;
- return(timedata);
- }
- /*****************************************************************************
- 函数功能:初始化DS1302子程序
- 入口参数:time[](全局变量)
- 出口参数:
- *****************************************************************************/
- void initial_ds1302()
- {
- write_ds1302(0x8e,0x00); //写保护寄存器,在对时钟或RAM写前WP一定要为0
- write_ds1302(0x8c,time[0]); //年
- write_ds1302(0x88,time[1]); //月
- write_ds1302(0x86,time[2]); //日
- write_ds1302(0x8A,time[3]); //星期
- write_ds1302(0x84,time[4]); //时
- write_ds1302(0x82,time[5]); //分
- write_ds1302(0x80,time[6]); //秒
- write_ds1302(0x8e,0x80); //写保护寄存器
- }
- /*****************************************************************************
- 函数功能:读DS1302时间子程序
- 入口参数:
- 出口参数:全局变量(second,minute,hour,week,day,month,year)
- *****************************************************************************/
- void read_time()
- {
- second=read_ds1302(0x81); //秒寄存器
- minute=read_ds1302(0x83); //分
- hour=read_ds1302(0x85); //时
- week=read_ds1302(0x8B); //星期
- day=read_ds1302(0x87); //日
- month=read_ds1302(0x89); //月
- year=read_ds1302(0x8d); //年
-
- }
复制代码
资料不全,缺源码,求大家补全程序啊:
protues.zip
(38.21 KB, 下载次数: 65)
|