“DS1302子程序”的版本间的差异
(目 的: 建立DS1302操作库
目标系统: 基于AVR单片机
应用软件: ICCAVR) |
小 (文本替换 - 替换“www.waveshare.net”为“{{SERVERNAME}}”) |
||
第3行: | 第3行: | ||
/********************************************************************* | /********************************************************************* | ||
− | 微 雪 电 子 WaveShare <a class="Blue_2_12px_" href="http:// | + | 微 雪 电 子 WaveShare <a class="Blue_2_12px_" href="http://{{SERVERNAME}}/" style="color: rgb(7, 66, 184);">http://www.waveShare.net |
目 的: 建立DS1302操作库 | 目 的: 建立DS1302操作库 |
2019年11月19日 (二) 09:21的版本
/********************************************************************* 微 雪 电 子 WaveShare <a class="Blue_2_12px_" href="http://wiki.diustou.com/" style="color: rgb(7, 66, 184);">http://www.waveShare.net 目 的: 建立DS1302操作库 目标系统: 基于AVR单片机 应用软件: ICCAVR 版 本: Version 1.0 圆版时间: 2005-06-25 开发人员: SEE 说 明: 若用于商业用途,请保留此段文字或注明代码来源 深 圳 市 微 雪 电 子 有 限 公 司 保 留 所 有 的 版 权
/*01010101010101010101010101010101010101010101010101010101010101010101 版本更新记录: 入口参数说明:
待定参数说明:
对外变量说明: 对外函数说明: 10101010101010101010101010101010101010101010101010101010101010101010*/
//uint8 DS1302Second; //uint8 DS1302Minute; //uint8 DS1302Hour; //uint8 DS1302Day; //uint8 DS1302Month; //uint8 DS1302Year; //uint8 DS1302SecLow; //uint8 DS1302MinLow; //uint8 DS1302HourLow; //uint8 DS1302DayLow; //uint8 DS1302MonLow; //uint8 DS1302YearLow; //uint8 DS1302SecHi; //uint8 DS1302MinHi; //uint8 DS1302HourHi; //uint8 DS1302DayHi; //uint8 DS1302MonHi; //uint8 DS1302YearHi; uint8 operData;
//#define data7 (bool)operData&0x80 /*-------------------------------------------------------------------- 函数名称:DS1302写一个字节 函数功能: 注意事项:无 提示说明:无 输 入:无 返 回:无 */ void writeByte(void) { uint8 i; OUT_SIO; DELAY(); for(i=0;i<8;i++) { CLR_SCK; if(data0) SET_SIO; else CLR_SIO; SET_SCK; operData = operData>>1; } } /*-------------------------------------------------------------------- 函数名称:DS1302读一个字节 函数功能: 注意事项:无 提示说明:无 输 入:无 返 回:无 */ void readByte(void) { uint8 i; IN_SIO; SET_SCK; for(i=0;i<8;i++) { operData = operData>>1; CLR_SCK; DELAY(); //delay50us(1); if(GET_SIO) operData |= 0x80; SET_SCK; } } /*-------------------------------------------------------------------- 函数名称:DS1302充电参数 函数功能: 注意事项:无 提示说明:无 输 入:无 返 回:无 */ void setChargePrmt(void) { CLR_SCK; SET_RST; operData=0X90; writeByte(); operData=0XA4; writeByte(); /* the following sentence here is not indispensable, but insert this sentence here can prevent ariseing error! because when start operating,RST must keep low level! */ CLR_RST; } /*-------------------------------------------------------------------- 函数名称:DS1302关写保护 函数功能: 注意事项:无 提示说明:无 输 入:无 返 回:无 */ void closeWP(void) { CLR_RST; CLR_SCK; SET_RST; operData=0X8E; writeByte(); operData=0X80; CLR_SIO; writeByte(); /* the following sentence here is not indispensable, but insert this sentence here can prevent ariseing error! because when start operating,RST must keep low level! */ CLR_RST; } /*-------------------------------------------------------------------- 函数名称:DS1302开写保护 函数功能: 注意事项:无 提示说明:无 输 入:无 返 回:无 */ void openWP(void) { CLR_RST; CLR_SCK; SET_RST; operData=0X8E; writeByte(); operData=0X00; CLR_SIO; writeByte(); /* the following sentence here is not indispensable, but insert this sentence here can prevent ariseing error! because when start operating,RST must keep low level! */ CLR_RST; } /*-------------------------------------------------------------------- 函数名称:DS1302的一个完整写操作 函数功能: 注意事项:无 提示说明:无 输 入: 返 回:无 */ void write(uint8 addr,uint8 dat) { CLR_RST; //before SCL change to low level, RST must keep low level CLR_SCK; SET_RST; //CLR_SCK; //also ok!!! //CLR_RST; //SET_RST; //CLR_RST; //error //SET_RST; //CLR_SCK; operData=0X80|(addr<<1); writeByte(); operData=dat; writeByte(); /* the following sentence here is not indispensable, but insert this sentence here can prevent ariseing error! because when start operating,RST must keep low level! */ CLR_RST; } /*-------------------------------------------------------------------- 函数名称:DS1302的一个完整读操作 函数功能: 注意事项:无 提示说明:无 输 入: 返 回:无 */ uint8 read(uint8 cmd) { //CLR_RST; CLR_SCK; SET_RST; operData=(cmd<<1)|0x81; writeByte(); readByte(); /* the following sentence here is not indispensable, but insert this sentence here can prevent ariseing error! because when start operating,RST must keep low level! */ CLR_RST; return(operData); } /*-------------------------------------------------------------------- 函数名称:DS1302读时间 函数功能: 注意事项:无 提示说明:无 输 入: 返 回:无 */ void DS1302_getTime(uint8 *buf) { uint8 hourAdr=2,minuteAdr=1,secondAdr=0; buf[0]=read(secondAdr); buf[0]=changeHexToInt(buf[0]); buf[1]=read(minuteAdr); buf[1]=changeHexToInt(buf[1]); buf[2]=read(hourAdr); buf[2]=changeHexToInt(buf[2]); //DS1302_speaTime(); } /*-------------------------------------------------------------------- 函数名称:DS1302读日期 函数功能: 注意事项:无 提示说明:无 输 入:无 返 回:无 */ //void DS1302_getDate(void) //{ // //} /*-------------------------------------------------------------------- 函数名称:DS1302拆时间 函数功能: 注意事项:无 提示说明:低层将时间拆好,方便上层调用 输 入:无 返 回:无 */ //void DS1302_speaTime(void) //{ // speaData(DS1302Second,2); // DS1302SecHi=dataElem[1]; // DS1302SecLow=dataElem[0]; // // speaData(DS1302Minute,2); // DS1302MinHi=dataElem[1]; // DS1302MinLow=dataElem[0]; // // speaData(DS1302Hour,2); // DS1302HourHi=dataElem[1]; // DS1302HourLow=dataElem[0]; //} /*-------------------------------------------------------------------- 函数名称:DS1302拆日期 函数功能: 注意事项:无 提示说明:无 输 入:无 返 回:无 */ //void DS1302_speaDate(void) //{ // //} /*-------------------------------------------------------------------- 函数名称:DS1302设置时间 函数功能: 注意事项:无 提示说明:无 输 入: 返 回:无 */ void DS1302_setTime(uint8 hour,uint8 minute,uint8 second) { uint8 hourAdr=2,minuteAdr=1,secondAdr=0; hour=changeIntToHex(hour); minute=changeIntToHex(minute); second=changeIntToHex(second); openWP(); write(hourAdr,hour); write(minuteAdr,minute); write(secondAdr,second); closeWP(); } /*-------------------------------------------------------------------- 函数名称:DS1302设置日期 函数功能: 注意事项:无 提示说明:无 输 入: 返 回:无 */ //void DS1302_setDate(uint8 year,uint8 month,uint8 day) //{ // //} /*-------------------------------------------------------------------- 函数名称:DS1302初始化 函数功能: 注意事项:无 提示说明:无 输 入:无 返 回:无 */ void DS1302_init(void) { OUT_SCK; OUT_SIO; OUT_RST; openWP(); setChargePrmt(); closeWP(); }
|
---|