下面这个是IIC硬件通讯程序,单片机与877A通讯,先写个字节00000011,然后读出来从PORTB显示,程序实现不了,B口最后没有反应(照理说B0,B1上的LED灯应该亮的);下面是调试过程出现的情况:(1)程序本身都检查了N遍,看来看去看不出问题,程序也查阅了网上用C语言写的IIC程序 基本上感觉是一致的;(2)程序初始化里面,对SSPSTAT,SSPCON,SSPCON2也更改了一些配置位,反复试验结果也无济于事(比如SMP位改1,CKP改1,事实上我感觉在主模式通讯对这几个位好像没有意义);(3)各个子程序、数据发送、数据接收也看不出哪里有问题,对bank的设定都没有问题;(4)用软件模拟IIC在同一个硬件电路能实现功能,就是用硬件IIC不行,我认为电路没有问题;(5)从机SDA\SCL 都接了上拉电阻5.1K,硬件24C02跟单片机连接都检查了N遍,确定没有接错;(6)我发现故意用一个错误的寻址命令(正常的是10100000,我随便弄个10110000),程序居然 也没有报错(因为程序里有报错功能的),但是用软件模拟的时候就能实现这个报错功能;实在找不出毛病所在,老师能不能帮我分析下,附上程序代码:这个程序困扰我好长时间了,虽然软件模拟是成功的,但硬件也得会啊,或者老师能指导下哪个地方可能有问题,因为靠我自己实在找不出问题所在了。 |