C UART仅接收FF和FE

C UART仅接收FF和FE,c,uart,pic18,C,Uart,Pic18,我目前正在通过FT232从PIC18F4620传输到CoolTerm。我目前只收到来自PIC的FF和FE。我想知道为什么会这样。Rx-TX开关正确,连接它们的电缆看起来很安全。我能想到的唯一问题是波特率是不正确的,但看看数据表,我不相信它是正确的。如有任何见解,将不胜感激。(我任意选择了51作为我的测试号码。任何数字或字母都可以) 常量无符号字符MSG0[]=“正在传输…”; 常量无符号字符MSG1[]=“已发送:”; 常量无符号字符MSG2[]=“测试:”; //子程序声明sb #包括 /

我目前正在通过FT232从PIC18F4620传输到CoolTerm。我目前只收到来自PIC的FF和FE。我想知道为什么会这样。Rx-TX开关正确,连接它们的电缆看起来很安全。我能想到的唯一问题是波特率是不正确的,但看看数据表,我不相信它是正确的。如有任何见解,将不胜感激。(我任意选择了51作为我的测试号码。任何数字或字母都可以)


常量无符号字符MSG0[]=“正在传输…”;
常量无符号字符MSG1[]=“已发送:”;
常量无符号字符MSG2[]=“测试:”;
//子程序声明sb
#包括
//子程序
#包括“液晶显示器端口D.c”
#包括
#包括
#包括
无效UART\U TX\U初始化(无效)
{
BRG16=0;
BRGH=1;//设置为高速波特率
SPBRG=64;//将波特率设置为9600 bps
//--[启用A同步串行端口]--
SYNC=0;
SPEN=1;
//--[将RX-TX引脚设置为UART模式(非io)]--
TRISC6=1;//如数据表中所述
TRISC7=1;//如数据表中所述
TXEN=1;//启用UART传输
}
无效UART_写入(uint8_t数据)
{
而(!TRMT);
TXREG=数据;
}
//主要程序
真空总管(真空)
{
UART_TX_Init();
无符号整数结果=0;
无符号整数i;
uint8_t数据=51;
TRISA=0;
TRISC=0;
TRISB=0;
TRISD=0;
TRISE=0;
TRISA=0;
TRISB=0x00;
PORTC=0;
PORTD=0;
端口=0;
ADCON1=0x0F;
LCD_Init();//初始化LCD

LCD_Move(0,0);for(i=0;i你的时钟频率是多少?你是如何配置你的晶体振荡器设置的?请分享你的时钟设置和配置

如果时钟设置正常,则计算正确的波特率并重试

void UART_Writes(uint8_t data)
{

while(!TRMT)
{
  //put Nop() and try
}
    TXREG = data;
}

与您的问题无关,但请尝试重新格式化代码以使缩进一致。不一致的缩进使代码更难阅读和理解。例如:
UART_写入
函数,快速一看,它看起来像
TXREG=data;
在循环中。与您的问题更相关的是起始位,停止位、奇偶校验、波特率等。两侧完全相同?是否有范围跟踪以确认电线上的波形是否如预期的那样?“接收FF和FE”表示接收端使用了不正确的波特率或某些不正确的设置。请正确缩进您的代码。事实上,这并不能回答问题。您的意思是发表评论吗?我已经在上面的帖子中发布了电路。@忙碌的人,垃圾背后的原因很可能是晶体设置或波特率不稳定,而不是物理设置接线问题,或者可能是UART配置错误。当然可以,但您没有发布回答说这里就是这种情况。您正在询问OP,它位于问题下方的注释中,以便OP可以反应并扩展问题。--您显示的源代码与OP的源代码相同,只是您替换了分色这也不是问题的答案,因为它不会改变任何东西。
void UART_Writes(uint8_t data)
{

while(!TRMT)
{
  //put Nop() and try
}
    TXREG = data;
}