打印
[其他产品]

关于pic18f452单片机串口中断的问题

[复制链接]
84|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
powerantone|  楼主 | 2025-2-8 10:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用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;        

}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

580

主题

2932

帖子

4

粉丝