man1234567 发表于 2023-7-24 11:13 谢谢指导,之前写的程序确实有忽疏 ![]() |
liixaofei5 发表于 2023-7-23 16:42 谢谢指导,问题解决了 ![]() |
先找个任意的IIC器件,调试成功后再上这个东东。 目前,标准的IIC驱动是通用的,RTC也就是读写而已,没多复杂,好像3231和1307的通用。 实验证明很多器件用STC准双向I/O无需加上拉什么的也可以用。 也可以找厂家要DEMO,国产可参考“国芯”,说明书写的是理想也可能是现实。 包括记得有些厂家宣传可以免费给样片,然而联系过结果呵呵呵。 如果自己玩且对体积没要求的话用8025的,几毛钱的货就非常好用。 还有就是,目前常见的8025、3231又大又蠢,甚至还有更过的内置了电池,这个小体积的有“核心技术”了 ? 建议仔细查一遍,厂家不给例程自己还调不过就过了罢。 |
if(Sys_Time.second==1)P0=0;else P0=1; 恰好能读到1吗?如果0秒后延时,2秒时才把时间读回来,是不是就没有反应了?这个看你的延时多长时间,按照12MHz1T估算你的延时,应该还是很多时候能进入的,但是也容易出现非预期的情况。 这条语句的第二个问题,如果延时不影响,当且仅当second==1时点亮/熄灭,也就是60秒钟点亮/灭1秒,这个是你预期的效果?我觉得不确定能不能看清楚这个闪烁 关于调试的方法,你是怎么感觉进入死循环的,是测试出来的吗?如果不是必须定位,找到出错点,因为不能在线调试,可以注释现在点亮指示灯的位置,在你觉得可疑的程序后面点亮指示灯,如果能点亮继续找前面的程序。 |
Y_G_G 发表于 2023-7-22 17:13 好的,我试试 |
gqzjl 发表于 2023-7-22 12:03 已经告诉你了,你上传的代码中,你的端口设置是对的,就不要再去找端口的毛病了 SDA和SCL都要加上拉10K电阻!!!!!!! IIC可以驱动其它的IIC器件也不一定是对的!!!!! 为什么要叫你用24c01,这个器件是标准的IIC,不支持高速IIC的,在它上面运行正常了,在SD3078就能正常了 不要duang!duang!duang!先写一堆几千行的代码,然后就进行验证,那么多代码,问题出在哪里你都不一定知道 "先验证IIC从机地址对不对,先不管数据读写,先写一个验证代码,向从机发送地址,看一下有没有响应,可以用一个LED或者某个端口的电平来进行验证" 1,什么其它的代码都不要,只要端口设置和IIC写入一个字节函数,外加一个延时函数,延时可以设定为1秒2,P0^1=0;//LED这个端口先灭灯 3,写入从机地址 0x64 4,等待IIC从机应答,如果不应答就是死循环 5,P0^1 = 1;// while(1); 6,烧录验证,不要仿真!!!!!!!!! 以上6步,从P.01端口的电平信号就可以知道从机是否能响应主机的IIC信号了 低电平:说明从机没有应答 高电平:说明从机已经应答,写字节的IIC代码是对的 再不行,把你的所有代码,原理图上传 还是不行,那就放弃吧 |
够长,把if判断的值改成<20也一样![]() ![]() ![]() |
看代码,P0需要至少1分钟才会有变化,测试时间够长吗 |
设置成开漏输出,SDA接了上拉电阻后还是没反应![]() 是我写的驱动有问题吗 |
可以看看数据手册多试试 |
gqzjl 发表于 2023-7-21 12:56 看手册是有上拉电阻的,你可以接个上拉电阻试试。 像DS1302的IO口必须接上拉电阻,准双向IO口不行。 |
gqzjl 发表于 2023-7-21 12:56 时钟和数据线必须要加10K的上拉电阻!!!!! 端口设置为标准双向模式,也就是传统的8051模式 |
lkc8210 发表于 2023-7-21 14:54 时序按照数据手册写的,为400k,我把它调到200k后也没反应 ![]() |
注意电平转换时间![]() |
Y_G_G 发表于 2023-7-21 12:32 单片机引脚设置为准双向输出,可以吗 |
1,先验证IIC代码对不对,可能用24C01的IIC代码和功能来进行验证 2,先验证IIC从机地址对不对,先不管数据读写,先写一个验证代码,向从机发送地址,看一下有没有响应,可以用一个LED或者某个端口的电平来进行验证 3,如果单片机没有内置上拉电阻,你就得在时钟和数据端口上增加上拉电阻 |