PIC16f877a USART中断处理

时间:2015-01-27 15:00:23

标签: interrupt-handling

我正在尝试编写一个简单的代码来使用usart接收和重新发送数据,但代码无效。有人可以就代码中可能存在的缺陷提出建议。请注意,我使用的是USART,波特率为9600,时钟频率为4MHz。

#include<pic.h>
void main()
{   TRISB=0X00;
    TXEN=1;
    SYNC=0;
    BRGH=1;
    SPEN=1;
    CREN=1;
   //RCEN=1;
    SPBRG=0X19;
    INTCON=0X80;
    TRISC7=1;
    TRISC6=0;
    RCIE=1;
    TXIE=1;
    while(1);
}

void interrupt rectrans()
{
    if(RCIF==1)
    {
     TXREG=RCREG;
     while(!TRMT);
     RCIF=0;
    }
    else if(TXIF==1)
    {TXIF=0;
    }
}

1 个答案:

答案 0 :(得分:1)

我认为您应该启用GIE位或全局中断enter image description here启用位以激活任何中断,如从带有该答案的附图中所见。启用全局中断...您可以看到,如果GIE位为高,与之相连的AND门将只有所有其他中断才会通过