【发布时间】:2014-09-07 12:53:36
【问题描述】:
我一直在做一个项目,该项目需要与我的笔记本电脑和微芯片 Pic 16f877a 通信,但通信无法正常工作,但是 当我将这个示例放在 Proteus 8 上时工作正常。
我的笔记本电脑上没有 RS232(串口),但我买了 TTL 模块。我在板上使用了 8MHz 的外部振荡器,波特率为 9600 bps。
当我连接笔记本电脑并向 TTL 模块发送 A 符号时,没有任何反应,当我发送几次 A 时,我很快收到了奇怪的符号,例如“?”或“#”返回。
这是图片的代码:
char x;
void main(){
TRISB = 0x00;
PORTB = 0x00;
UART1_Init(9600);
delay_ms(10);
while(1){
if(UART1_Data_Ready())
{
x = UART1_Read();
if(x == 'A')
{
PORTB = 0xFF;
UART1_Write(13);
UART1_Write_Text("A");
UART1_Write(13);
}
else
{
PORTB = 0x00;
}
}
x= '\0';
}
}
有人可以帮助我吗?有什么问题?
【问题讨论】:
-
你可能会发生很多事情......比如硬件流控制错误的奇偶校验位等,不知道
UART1_Write(13);是什么......真的很难得到这个无需逻辑分析仪或 O-Scope 即可工作的东西……尤其是您的第一次…… -
同意 Grady,在使用微控制器时投资示波器。如果你有一台 PC,你基本上已经有一个可用的范围来调试串行 I/O,例如 UART - 你的声卡。谷歌在线了解如何将声卡用作示波器。我自己在 Linux 上使用 xoscope。
-
@GradyPlayer UART1_Write(13);只是发送一个回车。
标签: microcontroller pic uart microchip