DS1302+Stc12c5a60s2+按鍵
0.png (16.87 KB, 下載次數: 35)
下載附件
2018-11-26 22:06 上傳
單片機源程序如下:
- #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); //年
-
- }
復制代碼
51hei.png (4.91 KB, 下載次數: 46)
下載附件
2020-3-31 00:50 上傳
資料不全,缺源碼,求大家補全程序啊:
protues.zip
(38.21 KB, 下載次數: 65)
2018-11-26 19:22 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|