DS1302
来源:互联网 发布:java.util.*是什么包 编辑:程序博客网 时间:2024/05/18 18:14
#include "ds1302.h"unsigned char time_buf1[8] = {20,10,6,5,12,55,00,6};//空年月日时分秒周unsigned char time_buf[8] ; //空年月日时分秒周void Ds1302_Write_Byte(unsigned char addr, unsigned char d){unsigned char i;RST_SET;//写入目标地址:addraddr = addr & 0xFE; //最低位置零for (i = 0; i < 8; i ++) { if (addr & 0x01) {IO_SET;}else {IO_CLR;}SCK_SET;SCK_CLR;addr = addr >> 1;}//写入数据:dfor (i = 0; i < 8; i ++) {if (d & 0x01) {IO_SET;}else {IO_CLR;}SCK_SET;SCK_CLR;d = d >> 1;}RST_CLR;//停止DS1302总线}unsigned char Ds1302_Read_Byte(unsigned char addr) {unsigned char i;unsigned char temp;RST_SET;//写入目标地址:addraddr = addr | 0x01;//最低位置高for (i = 0; i < 8; i ++) { if (addr & 0x01) {IO_SET;}else {IO_CLR;}SCK_SET;SCK_CLR;addr = addr >> 1;}//输出数据:tempfor (i = 0; i < 8; i ++) {temp = temp >> 1;if (IO_R) {temp |= 0x80;}else {temp &= 0x7F;}SCK_SET;SCK_CLR;}RST_CLR;//停止DS1302总线return temp;}void Ds1302_Write_Time(void) { unsigned char i,tmp;for(i=0;i<8;i++) { //BCD处理tmp=time_buf1[i]/10;time_buf[i]=time_buf1[i]%10;time_buf[i]=time_buf[i]+tmp*16; }Ds1302_Write_Byte(ds1302_control_add,0x00);//关闭写保护 Ds1302_Write_Byte(ds1302_sec_add,0x80);//暂停 //Ds1302_Write_Byte(ds1302_charger_add,0xa9);//涓流充电 Ds1302_Write_Byte(ds1302_year_add,time_buf[1]);//年 Ds1302_Write_Byte(ds1302_month_add,time_buf[2]);//月 Ds1302_Write_Byte(ds1302_date_add,time_buf[3]);//日 Ds1302_Write_Byte(ds1302_day_add,time_buf[7]);//周 Ds1302_Write_Byte(ds1302_hr_add,time_buf[4]);//时 Ds1302_Write_Byte(ds1302_min_add,time_buf[5]);//分Ds1302_Write_Byte(ds1302_sec_add,time_buf[6]);//秒Ds1302_Write_Byte(ds1302_day_add,time_buf[7]);//周 Ds1302_Write_Byte(ds1302_control_add,0x80);//打开写保护 }void Ds1302_Read_Time(void) { unsigned char i,tmp;time_buf[1]=Ds1302_Read_Byte(ds1302_year_add);//年 time_buf[2]=Ds1302_Read_Byte(ds1302_month_add);//月 time_buf[3]=Ds1302_Read_Byte(ds1302_date_add);//日 time_buf[4]=Ds1302_Read_Byte(ds1302_hr_add);//时 time_buf[5]=Ds1302_Read_Byte(ds1302_min_add);//分 time_buf[6]=(Ds1302_Read_Byte(ds1302_sec_add))&0x7F;//秒 time_buf[7]=Ds1302_Read_Byte(ds1302_day_add);//周 for(i=0;i<8;i++) { //BCD处理tmp=time_buf[i]/16;time_buf1[i]=time_buf[i]%16;time_buf1[i]=time_buf1[i]+tmp*10; }}void Ds1302_Init(void){RST_CLR;//RST脚置低SCK_CLR;//SCK脚置低 Ds1302_Write_Byte(ds1302_sec_add,0x00); }
0 0
- ds1302
- DS1302
- DS1302
- Ds1302
- DS1302
- ds1302
- DS1302
- DS1302
- DS1302程序
- DS1302 万年历
- DS1302读写
- DS1302组件
- 单片机--ds1302
- 【单片机】DS1302
- ds1302通信
- DS1302地址
- DS1302时钟
- ds1302的应用问题
- 【java】拓扑排序
- STL标准库中的list接口
- Spark SQL和DataFrames支持的数据格式
- LeetCode链表操作常见面试题汇总
- Unsupported major.minor version (jdk版本错误)解决方案
- DS1302
- jupyter安装过程错误记录
- Implement Stack using Queues
- [Freemark]freemark常用语法
- 八皇后问题
- 最长上升子序列
- 盒子模型
- 子查询
- Ford-Fulkerson算法模板(最大流)