PIC 18F46K22,MikroC:尝试实现USART中断

时间:2013-06-03 20:43:27

标签: c interrupt pic uart mikroc

我有两个18F PIC彼此相邻工作。一种是通过UART从另一个源请求数据,它们都接收(相同的)传入数据。

请求数据的第一个PIC(18F4450)工作正常,但在第二个PIC(18F46K22)上,接收到的字节在数组中前后“前进”,我需要它们。这使得它无用。 / p>

使用此代码发生这种情况:

loopVar = 0;

   do{
      while(UART1_Data_Ready() == 1){    // stay here until data buffer full

         uart_rd1[loopVar] = UART1_Read();    // read the received data,
               loopVar++;
             }
    }while((loopVar <= 38)); // exit control

为了清楚起见,这适用于请求/接收PIC,但不适用于仅接收PIC。

我做了一些研究,我发现可能UART中断程序可以正常工作。 所以我写了这个:

void interrupt()
{
if (RC1IF_bit) // If interrupt is generated by RCIF
{
uart_rd1[LoopVar] = UART1_Read(); // Read data and store it to array
LoopVar++; // Increment string index
if (LoopVar == 39) // If index = 39,
{
LoopVar = 0; // set it to zero
ready = 1; // Ready for parsing data
}
RC1IF_bit = 0; // Set RCIF to 0
}
}

用于中断init:

GIE_bit = 1; // Enable Global interrupt
RC1IE_bit = 1; // Enable USART Receiver interrupt
PEIE_bit = 1; // Enable Peripheral interrupt

但是数组中的不同字节根本不正确。

任何想法我在UART中断部分做错了什么?或者首先可能是UART接收问题的更好解决方案?

0 个答案:

没有答案