如果您知道正在使用内部时钟,那么在汇编器中,至少(我假设在C中)您可以读取OSCCON位,并且(知道问题的MCU*)确定Fosc。从那里您可以通过循环遍历各种波特率生成器控制位来寻找最小的错误。我在汇编宏中完成了这项工作,而且它运行良好(它在汇编时完成,所以运行时成本为零)。我只是用期望的波特率调用宏,它在“设置”符号中设置波特率发生器控制位。宏的参数是Fosc、波特率和容限(以允许宏失败)。*给定MCU的数量,从OSCCON位上确定Fosc是不实际的。我总是将Finst设置为一个符号,所以我不会面临确定Fosc的问题——对于我使用的MCU,它总是4XFinst。免责声明:我听说过这种新奇的东西叫做C,但是我从来没有在PIC中使用过。——如果你不知道你正在使用内部时钟,那么我同意Dario。我不知道如何准确地确定FoSC来设定波特率。例如,WDT容忍度太大而无法使用。
如果您知道正在使用内部时钟,那么在汇编器中,至少(我假设在C中)您可以读取OSCCON位,并且(知道问题的MCU*)确定Fosc。从那里您可以通过循环遍历各种波特率生成器控制位来寻找最小的错误。我在汇编宏中完成了这项工作,而且它运行良好(它在汇编时完成,所以运行时成本为零)。我只是用期望的波特率调用宏,它在“设置”符号中设置波特率发生器控制位。宏的参数是Fosc、波特率和容限(以允许宏失败)。*给定MCU的数量,从OSCCON位上确定Fosc是不实际的。我总是将Finst设置为一个符号,所以我不会面临确定Fosc的问题——对于我使用的MCU,它总是4XFinst。免责声明:我听说过这种新奇的东西叫做C,但是我从来没有在PIC中使用过。——如果你不知道你正在使用内部时钟,那么我同意Dario。我不知道如何准确地确定FoSC来设定波特率。例如,WDT容忍度太大而无法使用。
举报