Y_G_G 发表于 2021-5-6 00:31 找到原因了,单片机有个引脚是开发板上的EEPROM输入和DS1302输出共用的,需要先把连接DS1302复位端的P2^5引脚置0,使得DS1302不输出,即不对EEPROM的输入产生干扰 |
T990820 发表于 2021-5-6 08:37 谢谢 ![]() |
mkkop 发表于 2021-5-6 03:45 源码用的是AT89S52,我用的是STC89C52,两款芯片的引脚定义都是一样的,所以应该不是芯片型号的问题 |
P0、P1、P2三组端口没有任何特殊功能,之所以对 SDA 和 SCL 两条线的引脚定义只能分别是 P2^0 和 P2^1是因为AT24C02的 SDA 和 SCL的端口分别连到了P2^0 和 P2^1上,详见你开发板的原理图 |
![]() |
你的问题应该是使用单片机型号的问题,程序与单片机型号不搭配,主要区别是老款51单片机引脚都是准双向弱上拉I/O口,新单片机有引脚配置功能,如果源程序是基于老款51单片机,那应该没问题,如果源程序是基于新款单片机编写的,而你用旧款单片机测试可能就会出错,主要是引脚配置问题,你看一下程序初始化过程有没有配置引脚方面的代码,IIC通讯在写前有没有配置SDA为输出,读前有没有配置SDA为输入, 所以学习单片机时要注意,旧款单片机的代码可用用在新款单片机上,但新款单片机的代码不一定能用在老款单片机上, |
它就是个IO而已,就一个正常的IO,可以读写数据,你操作IIC用哪个IO都可以,只要有能读写数据的能力就可以,不用什么特殊说明之类的 而你这个问题是出现在IIC器件(从机)上的,你要看的是IIC器件的数据手册,这RST和CS是IIC器件要求的 |