DS1302操作模块.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DS1302操作模块

·C /* DS1302时钟芯片驱动函数 DS1302是产品中最常用的时钟芯片,此文件中的代码可以嵌入项目中使用。 */ #include avr/io.h #include avr/delay.h /*复位脚*/ #define RST_CLR PORTD = ~(1 PD7)/*电平置低*/ #define RST_SET PORTD |= (1 PD7)/*电平置高*/ #define RST_IN DDRD = ~(1 PD7)/*方向输入*/ #define RST_OUT DDRD |= (1 PD7)/*方向输出*/ /*双向数据*/ #define IO_CLR PORTD = ~(1 PD6)/*电平置低*/ #define IO_SET PORTD |= (1 PD6)/*电平置高*/ #define IO_R PIND (1 PD6)/*电平读取*/ #define IO_IN DDRD = ~(1 PD6)/*方向输入*/ #define IO_OUT DDRD |= (1 PD6)/*方向输出*/ /*时钟信号*/ #define SCK_CLR PORTD = ~(1 PD5)/*时钟信号*/ #define SCK_SET PORTD |= (1 PD5)/*电平置高*/ #define SCK_IN DDRD = ~(1 PD5)/*方向输入*/ #define SCK_OUT DDRD |= (1 PD5)/*方向输出*/ #define ds1302_sec_add 0x80 //秒数据地址 #define ds1302_min_add 0x82 //分数据地址 #define ds1302_hr_add 0x84 //时数据地址 #define ds1302_date_add 0x86 //日数据地址 #define ds1302_month_add 0x88 //月数据地址 #define ds1302_day_add 0x8a //星期数据地址 #define ds1302_year_add 0x8c //年数据地址 #define ds1302_control_add 0x8e //控制数据地址 #define ds1302_charger_add 0x90 #define ds1302_clkburst_add 0xbe Unsigned char time_buf[8]= {0x20,0x12,0x03,0x21,0x10,0x20,0x55,0x03}; /*向DS1302写入一字节数据*/ void ds1302_write_byte(unsigned char addr, unsigned char d) { unsigned char i; RST_SET; /*启动DS1302总线*/ /*写入目标地址:addr*/ IO_OUT; addr = addr 0xFE;/*最低位置零*/ for (i = 0; i 8; i ++) { if (addr 0x01) { IO_SET; } else { IO_CLR; } SCK_SET; SCK_CLR; addr = addr 1; } /*写入数据:d*/ IO_OUT; for (i = 0; i 8; i ++) { if (d 0x01) { IO_SET; } else { IO_CLR; } SCK_SET; SCK_CLR; d = d 1; } RST_CLR; /*停止DS1302总线*/ } /*从DS1302读出一字节数据*/ unsigned char ds1302_read_byte(unsigned char addr) { unsigned char i; unsigned char temp; RST_SET; /*启动DS1302总线*/ /*写入目标地址:addr*/ IO_OUT; addr = addr | 0x01;/*最低位置高*/ for (i = 0; i 8; i ++) { if (addr 0x01) { IO_SET; } else { IO_CLR; } SCK_SET; SCK_CLR; addr = addr 1; } /*输出数据:temp*/ IO_IN; for (i = 0; i 8; i ++) { temp = temp

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档