0

我目前正在开展一个项目,以根据笔记本电脑通过 USB 输入的文本选择不同的输出。

我目前正在尝试做的是将一个字符从我的 PIC18F1320 发送到超级终端,我尝试使用变量,但正在接收 rnadom 字符,例如笑脸等。我简化了我的代码以简单地打印一个 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();
    }
4

2 回答 2

0

将您的数据放入 RAM 并发送。见哈佛建筑

char buf[10];
strcpy(buf, "Hello\n");  // This should cal special ROM to RAM strcpy();
putrsUSART(buf);

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

于 2014-02-05T01:24:15.913 回答
0

PIC 上的内部 RC 振荡器不够精确,无法以所需的速度运行 USART - 它可能与预期频率相差 ±2%,这可能远远足以导致您看到的错误。您需要连接和配置外部晶体以获得正确的结果。

于 2014-02-04T23:26:37.443 回答