标题: 关于STC89C52单片机引脚功能存在疑惑 [打印本页]

作者: NIMITIZ    时间: 2021-5-5 20:17
标题: 关于STC89C52单片机引脚功能存在疑惑
前几天在网上找到一个通过STC89C52软件模拟IIC协议读写片外EEPROM的源码,在尝试修改的过程中,对以下的引脚定义存在疑惑:




其中,我觉得 RST 像是复位功能的,而 CS 应该是片选功能的,这两个引脚只在IIC初始化的时候用到,但当我尝试将RST和CS这两个定义修改为其他引脚后,都将变得无法进行IIC通信,所以我觉得STC89C52当中的 P2^4 和 P2^5 这两个引脚是有特殊作用的;并且,我还发现,89C52软件模拟IIC中对 SDA 和 SCL 两条线的引脚定义只能分别是 P2^0 和 P2^1,修改为其他引脚后,同样无法进行IIC通信

但无论是源码本身还是STC官方的数据手册均没有对P2^0、P2^1、P2^4、P2^5这四个引脚的特殊说明,所以才来求助论坛里的大佬。

Snipaste_2021-05-05_20-16-00.png (31.51 KB, 下载次数: 96)

IIC初始化

IIC初始化

作者: Y_G_G    时间: 2021-5-6 00:31
它就是个IO而已,就一个正常的IO,可以读写数据,你操作IIC用哪个IO都可以,只要有能读写数据的能力就可以,不用什么特殊说明之类的
而你这个问题是出现在IIC器件(从机)上的,你要看的是IIC器件的数据手册,这RST和CS是IIC器件要求的
作者: mkkop    时间: 2021-5-6 03:45
你的问题应该是使用单片机型号的问题,程序与单片机型号不搭配,主要区别是老款51单片机引脚都是准双向弱上拉I/O口,新单片机有引脚配置功能,如果源程序是基于老款51单片机,那应该没问题,如果源程序是基于新款单片机编写的,而你用旧款单片机测试可能就会出错,主要是引脚配置问题,你看一下程序初始化过程有没有配置引脚方面的代码,IIC通讯在写前有没有配置SDA为输出,读前有没有配置SDA为输入,
所以学习单片机时要注意,旧款单片机的代码可用用在新款单片机上,但新款单片机的代码不一定能用在老款单片机上,
作者: 人人学会单片机    时间: 2021-5-6 07:53


作者: T990820    时间: 2021-5-6 08:37
P0、P1、P2三组端口没有任何特殊功能,之所以对 SDA 和 SCL 两条线的引脚定义只能分别是 P2^0 和 P2^1是因为AT24C02的 SDA 和 SCL的端口分别连到了P2^0 和 P2^1上,详见你开发板的原理图
作者: NIMITIZ    时间: 2021-5-6 12:01
mkkop 发表于 2021-5-6 03:45
你的问题应该是使用单片机型号的问题,程序与单片机型号不搭配,主要区别是老款51单片机引脚都是准双向弱上拉 ...

源码用的是AT89S52,我用的是STC89C52,两款芯片的引脚定义都是一样的,所以应该不是芯片型号的问题
作者: NIMITIZ    时间: 2021-5-6 12:03
T990820 发表于 2021-5-6 08:37
P0、P1、P2三组端口没有任何特殊功能,之所以对 SDA 和 SCL 两条线的引脚定义只能分别是 P2^0 和 P2^1是因 ...

谢谢,找到原因了,之前忽略了开发板上EEPROM的SDA和SCL的接线引脚
作者: NIMITIZ    时间: 2021-5-8 20:55
Y_G_G 发表于 2021-5-6 00:31
它就是个IO而已,就一个正常的IO,可以读写数据,你操作IIC用哪个IO都可以,只要有能读写数据的能力就可以,不用 ...

找到原因了,单片机有个引脚是开发板上的EEPROM输入和DS1302输出共用的,需要先把连接DS1302复位端的P2^5引脚置0,使得DS1302不输出,即不对EEPROM的输入产生干扰




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1