我今晚开始工作了。我实际上最终使用了中断服务程序。我将发布它,希望它可以帮助其他人。
void interrupt ISR()
{
if (PIR1bits.RCIF) // see if interrupt caused by incoming data
{
UART_Read_Text(Output,16); //replace "Output" with the array that you want populated.
PIR1bits.RCIF = 0; // clear interrupt flag
}
}
此外,这些版本的功能似乎工作得很好。虽然有一些清理工作要做,但这应该让某人开始。
char UART_Read()
{
while(!RCIF);
return RCREG;
}
void UART_Read_Text(char *Output, unsigned int length)
{
unsigned int i;
for(int i=0;i<length;i++)
Output[i] = UART_Read();
}
我在以下链接中感谢作者。我在这段代码中找到了有用的信息。确保设置所有控制中断的位。它们也可以在以下链接中找到。
https://gist.github.com/gshrikant/8549474
但他们在这里:
RCIF=0; // make sure receive interrupt flag is clear
RCIE=1; // enable UART Receive interrupt, 1 to enable
PEIE = 1; // Enable Peripheral interrupts //WAS ORIGINALLY 1
GIE = 1; // Enable global interrupts
再次感谢所有试图提供帮助的人。它总是受到赞赏。