我遇到了一个奇怪的问题:我只想通过向SPBRGH
和SPBRGL
写入一些值来在MPLABX中设置PIC16F1823上的UART波特率。在看到UART通信确实不起作用之后,我检查了调试器,寄存器在写入后没有改变值(它们相应地保持在152和48)。我进行了很多实验并发现,实际GETS设置为SP1BRGH
和SP1BRGL
注册,但命名错误 - 该图片仅配备了一个UART,除数据表中的命名为SPBRGH
和SPBRGL
。另一个症状是,在 watch 窗口中,SPBRG*
变量旁边的菱形图标里面有 P ,而下一个至SP1BRG*
否 - 我无法找到P
的含义。你觉得这是某种bug吗?代码是如此简单,以至于我无法让自己思考。如果是这样,那么神秘的 152 和 48 值会是什么?
答案 0 :(得分:1)
愚蠢的错误,浪费了很多时间(这种问题必须得到一些名字,我投票给SMMTL)。我没有注意到我使用的特定PIC上的引脚具有可设置的备用功能,而且默认的功能分配不是我使用的那个。我错误地估计了原因并且
APFCONbits.RXDTSEL = 1; //RA1
APFCONbits.TXCKSEL = 1; //RA0
解决了这个问题。 ALTHOUGH 这仍然无法解决调试器中不可更改的SPBRGH
和SPBRGL
以及 P 图标的错误,但这是一个主题其他问题。