我不明白我在这里做错了什么。
我用9600波特率打开UART如下,我正在使用带有PIC18F87J11的MPLAB XC8编译器。
#include <usart.h>
#define FOSC (8000000UL)
#define FCYC (FOSC/4UL)
#define BAUD 9600UL
#define SPBRG_INIT (FOSC/(16UL*BAUD) - 1)
Open1USART(USART_TX_INT_OFF & USART_RX_INT_OFF & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH, SPBRG_INIT);
这就是我回应我在终端上键入的内容
while ( 1)
{
while(PIR1bits.RCIF == 0 );
{
message = Read1USART();
Write1USART(message);
while (!TXSTA1bits.TRMT);
}
}
但以下情况不起作用。如果消息等于12,我想将12打印到终端,但它永远不会是真的。它只能读取一个字符。
while ( 1)
{
while(PIR1bits.RCIF == 0 );
{
message = Read1USART();
if (message == 12)
{
Write1USART(message);
while (!TXSTA1bits.TRMT);
}
}
}
如何修复它以便接受多个字符(如12)?然后输出到终端?谢谢!
答案 0 :(得分:1)
我认为您需要了解ASCII code。字节数只是0到255之间的数字,ASCII定义这些数字如何映射到可打印(或不可打印)字符。数字91,数字0x61和字符'a'
在C中都是相同的。
当您在终端程序中键入“1”时,它将其编码为ASCII格式为字节49(0x31)并将其发送到PIC。然后,当您在终端输入“2”时,它将其编码为字节50(0x32)并将其发送给您的PIC。
如果您希望PIC查找某个字符,请尝试使用C语言提供的字符文字:
if (message == 'a')