DS1302 读取数据时老为0,读取数据故障

发布于2022-01-11 19:11:53
8个回答
admin
网友回答2022-01-11
你说的很对;继续努力。移动8位就出去了呀!!char从0到7一共八位移动7下就到头了
admin
网友回答2022-01-11
你在DS1302的6脚(IO)加个10K的上拉电阻就搞定了.
admin
网友回答2022-01-11
硬件问题 送维修站吧,非技术人员不好解决
admin
网友回答2022-01-11
你这个程序也说明不了什么问题,读写DS1302不正确首先应该查查硬件连接有无错误,如果无错误,查查单片机晶振频率有多高,是否合适DS1302的读写时序和频率。如果没问题,还得查查引脚的配置是否正确,是否需要上拉电阻等。 希望能帮助你吧。
admin
网友回答2022-01-11
BCD 码本身就是十六进制的。得按十六进制转10进制的方法转换。

如AB转10进制就是10*16+11=171.
admin
网友回答2022-01-11
if(a&0x01==1) DS1302_IO=P1;
else DS1302_IO=0;
DS1302_SCLK=1;
DS1302_SCLK=0;
a=a1;

应该是上面段中 a=a1 和第一句中a&0x01==1 出现矛盾。
admin
网友回答2022-01-11
第一个红框:相与是保证最低位不变其他位为0,每次发送最低位然后在右移一位,循环8次就把一个数据发出去了;第二个红框:dat右移一位同时最高位或上(dat17)这样循环8次就收到一个数据,
admin
网友回答2022-01-11
DS1302里面多出来的数据时BCD码
例如小时多出来的数据时0x12,分钟多出来的数据时0x30.这两个数据表示的时间是12点30分。

回到
顶部