Microchip
直播中

李桂珍

7年用户 235经验值
私信 关注
[问答]

如何使用引脚RC3和RC4的SCL和SDA

我一直用IN C在端口C使用引脚RC3和RC4的SCL和SDA。就我所知,这不应该与波尔图有关。我已经管理好了我的演示,直到我把I2C端口设置为Master的地方,并在演示问题之前和之后把所有的1都写到PORTB。我使用两个无限循环来停止一切(中断没有启用,所以我在某些无限循环中停止)。如果在设置I2C端口之前停止,我可以通过向端口写入0xff来演示对PORTB的所有位的控制,在这种情况下,端口上的所有LED都点亮了。如果我注释掉这个循环并允许初始化I2C端口,那么我就会丢失PORTB的位4,现在这个特定的LED仍然是暗的。这表明设置I2C端口对PORTB的Bit4有所帮助,但是我在数据表中找不到任何东西来证明我所看到的。有人知道这里发生了什么事吗?以下是我的演示代码:movlw 0xff movwf PORTB;goto$;<——如果我取消注释这一行,PIC挂起,PORTB上的所有LED都点亮了movlw 0x28;启用MSSP作为SSPCON1 movlw 0xff movwf PORTB goto$的主移动;其他LED亮起来,为什么写一个0x28到SSPCON1导致失去一点在Purb????-GT--

回帖(19)

tijing忽忽

2020-5-11 06:17:21
哪一个特定的图片?这个信息可以帮助我们。
举报

李阳

2020-5-11 06:32:21
对不起,我忘了。它的PIC18LF24J11
举报

丁亚念

2020-5-11 06:41:26
PIC有PPS。你在PPS控制寄存器中写什么吗?
举报

李阳

2020-5-11 06:59:36
不,我不是。但问题是,我发布的代码给我一个正确的路径,直到所有的端口引脚,直到我写0x28 toSPCON1。如果我使用PPS控制寄存器来混淆引脚,为什么在我写SSPCON1之前它会很好?话虽如此,我注意到,如果我要改变0x28到0x08,那么我不会在POTB上失去这个。2vs 0是数据表中描述的SSPEN位:SSPEN=1“启用串行端口,并将SDAx和SCLx管脚配置为串行端口管脚”,它确实做到了,SDA和SCL确实出现了,它们确实有效,我可以在这些管脚上成功地完成I2C工作,但是这些管脚都是管脚在港口…我不知道这有什么与波特尔有关。无论如何,我在任何事件中都没有接触PPS。还有其他想法吗?-GT--
举报

更多回帖

发帖
×
20
完善资料,
赚取积分