我目前正在开发一个项目,根据笔记本电脑通过USB输入的文本选择不同的输出。
我目前要做的是将PIC18F1320中的一个字符发送到HyperTerminal,我尝试过使用变量,但是接受了笑脸等人物角色等等。 我简化了我的代码以简单地打印1然而我仍然收到了笑脸符号。我已经检查过我使用了正确的波特率,并且我的笔记本电脑和PIC之间有明确的通信,但是此时我完全卡住了,因为我不知道为什么输出随机字符。
我对C知之甚少,任何帮助都会受到赞赏
#include <p18f1320.h>
#include <usart.h>
#include <stdio.h>
#include <stdlib.h>
void main()
{
OSCCON = 0x70; // 8MHz internal clock
// Configure USART
OpenUSART( USART_TX_INT_OFF &
USART_RX_INT_OFF &
USART_ASYNCH_MODE &
USART_EIGHT_BIT &
USART_CONT_RX &
USART_BRGH_LOW,
12);
while (1)
{
putrsUSART("1");
}
CloseUSART();
}
答案 0 :(得分:0)
PIC上的内部RC振荡器不够精确,无法以所需速度运行USART - 它可能与预期频率相差±2%,这可能远远超出您所看到的错误。您需要连接和配置外部晶体才能获得正确的结果。
答案 1 :(得分:0)
将您的数据放入RAM并发送。见Harvard Architecture
char buf[10];
strcpy(buf, "Hello\n"); // This should cal special ROM to RAM strcpy();
putrsUSART(buf);
注意:“我已经检查过我使用正确的波特率”可能不对。在您收到有效数据之前,我对此不会过于自信。