完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
unsigned char Ds1302Read(unsigned char addr)
{ unsigned char n,dat,dat1; SCLK=0;//先将SCLK置低电平。 _nop_(); RST=1;//然后将RST(CE)置高电平。 _nop_(); for(n=0;n<8;n++)//开始传送八位地址命令 { DSIO=addr&0x01;//数据从低位开始传送 addr>>=1; SCLK=1;//数据在上升沿时,DS1302读取数据 _nop_(); SCLK=0;//DS1302下降沿时,放置数据 _nop_(); } _nop_(); for(n=0;n<8;n++)//读取8位数据 { dat1=DSIO;//从最低位开始接收 dat=(dat>>1)|(dat1<<7); SCLK =1; _nop_(); SCLK=0;//DS1302下降沿时,放置数据 _nop_(); } RST=0; _nop_();//以下为DS1302复位的稳定时间,必须的。 SCLK=1; _nop_(); DSIO=0; _nop_(); DSIO=1; _nop_(); return dat; } DSIO = addr& 0x01 ;//数据从低位开始传送 这句话为什么要加&0x01,不加有什么后果,举例说明下 dat = (dat>>1) | (dat1<<7); 这语句不懂,举例说明下,谢谢了 |
|
相关推荐
6个回答
|
|
1.DSIO=addr&0x01;//数据从低位开始传送
addr>>=1; 这两句需要一起看,而且还需要清楚他们是在一个8次for循环中。说明:将addr的每一位都赋值给DSIO一次,起到通信的作用,若各没有&x01,DSIO输出就乱了也没有意义了。 2.dat = (dat>>1) | (dat1<<7);这句话,仍需要结合dat1=DSIO;和清楚起处在8次for循环中。 可以理解为:你需要读取8位数据,每次读取一位,但是单片机的变量是8位的,所以每次读的数据都处在中间变量dat1 8位中的最低位,所以当处理中间变量dat1时先把最低位的数据(就是读出来的数)先向左以7位让它处于最高位然后给到向右移一位的dat,经过8次,dat就是所读8位数据(从低位开始)可以拆分如下 dat1 = dat1 << 7; dat = dat >> 1; dat = dat1 | dat; 仍有问题可以微信交流(头像是我的二维码):WM13804014772 都是电子爱好者,真心希望能帮到你
最佳答案
|
|
|
|
DSIO = addr& 0x01 ;//数据从低位开始传送
因为你的DSIO是一位的数据,,你需要发送的数据addr是八位的数据,八位数据不能直接发送,所以需要把它拆开成八个一位的数据发送 dat = (dat>>1) | (dat1<<7); 这个就是把dat中原数据右移后将新数据填补到空缺位,八次后得到的数据就是你接收到的数据 |
|
|
|
例如你的dat是1011 1101,接收到的数据是1,那经过移动后就是0101 1110在与上dat1左移七位就是1101 1110,这样七次后就能将接收到的八位数替换到dat中
|
|
|
|
移位的时候要用到的数据
|
|
|
|
MENGXIN91 发表于 2017-1-12 13:33 你有QQ吗? |
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
515 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
515 浏览 0 评论
780 浏览 0 评论
如何用OpenCV的相机捕捉视频进行人脸检测--基于米尔NXP i.MX93开发板
1360 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十章 YOLO2人手检测实验
572 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11760 浏览 31 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 03:34 , Processed in 0.468624 second(s), Total 51, Slave 44 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号