我用pic18f452单片机进行uart中断,但是不知道是哪里错了就是进不去中断,求大神指点。是不是初始化的时候错误了
void Uart_Init(void)
{
RCSTAbits.SPEN = 1; // 串口使能
PIR1bits.RCIF =0; //初始化,接受后产生中断
TRISCbits.TRISC7 = 0; // 异步串行接收数据输入
TRISCbits.TRISC6 = 0;// 异步和同步主模式,TRISC<6> 零(= 0)
// TXSTA:发送状态和控制寄存器
TXSTAbits.SYNC = 0; // 异步模式
TXSTAbits.TX9 = 0; // 选择8 位发送
TXSTAbits.TXEN = 1; // 禁止发送
TXSTAbits.BRGH = 1; // 高速
// TXSTAbits.TXEN = 1; // 使能发送
// RCSTA:接收状态和控制寄存器
RCSTAbits.RX9 = 0; // 选择8 位接收
RCSTAbits.CREN = 1; // 使能接收器
// BAUDCON1:波特率控制寄存器
// BAUDCON1bits.BRG16 = 0; // 8位波特率发生器——SPBRGHx 和SPBRGx
SPBRG = 25; //波特率为9600
// 外设中断允许寄存器1
INTCONbits.GIE = 1;
INTCONbits.PEIE = 1; // 中断控制寄存器
PIE1bits.RCIE = 1; // 允许EUSART 接收中断
}
void InterruptHandlerHigh(void);
//高优先级中断向量
#pragma code InterruptVectorHigh=0x08
void InterruptVectorHigh (void)
{
_asm
goto InterruptHandlerHigh //跳到中断程序
_endasm
}
//高优先级中断服务程序
#pragma code
#pragma interrupt InterruptHandlerHigh
//中断函数
//功能:接收数据时点亮小灯
void InterruptHandlerHigh ()
{
uchar ch;
int num = 0;
PORTCbits.RC0=0; //点亮小灯
// PIR1bits.RCIF=0;
INTCONbits.GIE = INTCONbits.PEIE = 1;
} |