完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
如何让DS1302启动起来,让它开始计时?我的程序如下:
void write_byte(uchar add) {uchar i; for(i=0;i<8;i++) {SCLK=0; SDA=(bit)add&0x01; add>>=1; SCLK=1; } } uchar read_byte() {uchar i; uchar value; for(i=0;i<8;i++) {value>>=1; SDA=1; if(SDA) {value=value|0x80;} SCLK=1; _nop_(); } SCLK=0; RST=0; _nop_(); return value; } void write_1302(uchar DS_add,uchar DS_dat) //DS1302写数据 {RST=0; //拉低RST,芯片禁止读写 _nop_(); SCLK=0;//SCLK为低电平时,才能把RST为高电平,时钟下降沿读取 _nop_(); RST=1; //芯片开启读写 _nop_(); write_byte(DS_add); write_byte(DS_dat); RST=0; _nop_(); SDA=1; SCLK=1; } uchar read_1302(uchar DS_add) {uchar timedata; RST=0; SCLK=0; RST=1; write_byte(DS_add); timedata=read_byte(); RST=0 ; _nop_(); SCLK=1; _nop_(); SDA=1; return timedata; } void set_time() {uchar i,j,k; for(i=0;i<7;i++) {j=TIME/10; k=TIME%10; TIME=k+j*16; //将数组转化成BCD码 } write_1302(0x8e,0x00); for(i=0;i<7;i++) {write_1302(write_add,TIME); //将转化后的值写入芯片 } write_1302(0x8e,0x80); } void read_time() { miao=read_1302(0x81); //秒寄存器 fen=read_1302(0x83); //读分 shi=read_1302(0x85); //读时 week=read_1302(0x8B); //读星期 ri=read_1302(0x87); //日 yue=read_1302(0x89); //月 nian=read_1302(0x8d); //年 } |
|
相关推荐
5 个讨论
|
|
|
没看见主函数吗?
|
|
|
|
|
|
|
|
你正在撰写讨论
如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。
646 浏览 0 评论
RT-Thread与英飞凌(infineon)合作得板子PSOC 6 板子学习
637 浏览 0 评论
有人有STM8H1K08T连接TM1650的源码吗,可以直接使用的那种,我的代码在烧录之后数码管一直处于熄灭状态
926 浏览 0 评论
【瑞萨RA6E2】瑞萨E2S软件安装过程,等待过程玩下97_e2 studio_ZGZZ
745 浏览 0 评论
824 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16951 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-8 11:15 , Processed in 0.834734 second(s), Total 53, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1402