搜索

[8/16位单片机] PIC18F25K80

[复制链接]
183|7
 楼主 | 2020-7-29 16:57 | 显示全部楼层 |阅读模式
使用PIC18F25K80的ECCP功能和Usart2功能  单独使用都正常  两个一起工作  Usart2就进入不了中断,两个的中断都设置为低优先级中断
void CCP_Init(void)
{
   
    T1GCON = 0x00;
    T1CON = 0x24;           // FOSC/4  TMR1关闭
    TMR1H = 0;
        TMR1L = 0;                                //定时器1清0

    TRISBbits.TRISB4 = 1;   // 设置RB4为输入,CCP1
    CCP1CON = 0x05;         //捕捉上升沿
    CCPTMRS = 0x00;         //TMR1
    PIR3bits.CCP1IF = 0;        //
    PIE3bits.CCP1IE = 1;       //使能CCP1中断
    IPR3bits.CCP1IP = 1;       //CCP1中断低优先
    TMR1ON = 0;
    TMR1ON = 1;            //开TMR1
}
void USART2_Init(void)
{
   BAUDCON2 = 0x08;
   SPBRG2 = 0x82;
   SPBRGH2 = 0x06;      
   TXSTA2 = 0x04;      
   RCSTA2 = 0x90;      
   PIE3bits.TX2IE = 0;
   PIE3bits.RC2IE = 1;
   IPR3bits.RC2IP = 0;  
}
上面是配置
下面是中断程序
void interrupt low_priority low_isr()
{  
unsigned char data2;
if(PIE3bits.RC2IE && PIR3bits.RC2IF)              
    {
        PIR3bits.RC2IF = 0;                       
        data2 = RCREG2;                       
        UsartCmd_** = Usart_Cmd(data2);
    }   

//    if(PIE3bits.CCP1IE && PIR3bits.CCP1IF)
//    {
//        PIR3bits.CCP1IF = 0;
//        if((CCP1CON & 0x01)==1)
//        {
//            CCP1CON = 0x04;
//            
//            TMR1ON = 0;
//            CP_HF = TMR1H;
//            CP_LF = TMR1L;
//            CP_H[CP_Sum] =   CP_HF *256 + CP_LF;
//            
//            TMR1H = 0;
//                TMR1L = 0;                                //定时器1清0
//            
//            TMR1ON = 1;      //开TMR1
//            
//            
//        }
//        else
//        {
//            CCP1CON = 0x05;
//            
//            TMR1ON = 0;
//             CP_HF = TMR1H;
//            CP_LF = TMR1L;
//           
//            CP_L[CP_Sum] = CP_HF *256 + CP_LF;           
//            TMR1H = 0;
//                TMR1L = 0;                                //定时器1清0
//            TMR1ON = 1;
//            
//            CP_Sum++;
//            if(CP_Sum>9)
//              CP_Sum = 0;
//        }
//    }  

希望大神能指点一下

使用特权

评论回复
| 2020-7-30 14:50 | 显示全部楼层
CCP和USART2有什么关联吗

使用特权

评论回复
| 2020-7-31 13:36 | 显示全部楼层
看起来你的初始化里面一个高优先级,一个低优先级嘛

使用特权

评论回复
| 2020-7-31 14:45 | 显示全部楼层
你CCP的中断频率多少?

如果太快的话, 恐怕连其他的普通主循环都干不了...

使用特权

评论回复
 楼主 | 2020-8-9 16:23 | 显示全部楼层
bellstudio 发表于 2020-7-31 13:36
看起来你的初始化里面一个高优先级,一个低优先级嘛

都是低优先级啊

使用特权

评论回复

评论

北辰极界 2020-8-10 11:42 回复TA
@bellstudio :这个可能是我搞错了 我复制过来的时候忘记改了 我中间尝试过将CCP1中断调整为高优先级 当时也不行 我再测试一下看看 
bellstudio 2020-8-9 19:14 回复TA
IPR3bits.CCP1IP = 1; //CCP1中断低优先 IPR3bits.RC2IP = 0; 
 楼主 | 2020-8-9 16:24 | 显示全部楼层
CoolSilicon 发表于 2020-7-31 14:45
你CCP的中断频率多少?

如果太快的话, 恐怕连其他的普通主循环都干不了...

CCP中断频率?

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表