终端仿真器中的随机字符

时间:2014-02-04 23:14:33

标签: c pic hyperterminal c18 usart

我目前正在开发一个项目,根据笔记本电脑通过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();
    }

2 个答案:

答案 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);

注意:“我已经检查过我使用正确的波特率”可能不对。在您收到有效数据之前,我对此不会过于自信。