[PIC®/AVR®/dsPIC®产品] 多个中断同时使用---pic18f4480

[复制链接]
4503|9
 楼主| hiramlee 发表于 2013-8-21 18:10 | 显示全部楼层 |阅读模式
本帖最后由 hiramlee 于 2013-8-21 18:19 编辑

我同时使用了一个UART中断 一个外部中断 两个定时器中断TIMR0 TIMR1,
当不使用TIMR1程序工作完好,
当加上TIMR1后TIMR0的中断ISR没有被执行。求指点

  1. static void interrupt rx_handler ()
  2. {   
  3.                 if(TMR1IF&&TMR1IE )
  4.         {
  5.         //        GIE =0;
  6.                 TMR1H =  DeltaT[nMode+1]>>8  ;
  7.                 TMR1L =  DeltaT[nMode+1]&0x00ff ;
  8.                 //asm("MOVLW  TL_TIMER0");
  9.         //asm("MOVWF TMROL,0");
  10.                 TMR1IF = 0;         

  11.                 switch(nMode)
  12.                 {

  13.                   
  14.                         case Mode1:
  15.                         case Mode2:
  16.                         case Mode3:
  17.                         case Mode5:
  18.                         {
  19.                                 PORTCbits.RC2=0;
  20.                                PORTCbits.RC2=1;
  21.                              _delay(9);                                       
  22.                             PORTCbits.RC2=0;
  23.                                 break;
  24.                         }
  25.                         case Mode4:
  26.                     {
  27.                                 PORTCbits.RC2=0;
  28.                                PORTCbits.RC2=1;
  29.                             _delay(119);                                
  30.                             PORTCbits.RC2=0;
  31.                                 break;
  32.                         }
  33.                         default:
  34.                         {

  35.                         }
  36.                 }        
  37.         //        GIE =1;
  38.         }
  39.     if(PIE1bits.RCIE & PIR1bits.RCIF)            //判断是否为串口接收中断
  40.     {
  41.            // INTCONbits.GIE = 0;
  42.           // PIR1bits.RCIF =0;
  43.                           //Delay1KTCYx(1);
  44.                          while(BusyUSART());
  45.              RCREG_NEW =  getcUSART();
  46.                  
  47.            
  48.                     //putcUSART(RCREG_R);
  49.               while(BusyUSART());
  50.                           
  51.             //INTCONbits.GIE = 1;
  52.                 //        Pulse = !Pulse;
  53.     }

  54.         if(INT0IF)
  55.         {
  56.                 INT0IF=0;
  57.                 KeyDetect();
  58.         }


  59.         if(TMR0IF&&TMR0IE )
  60.         {
  61.                         GIE =0;
  62.                 TMR0H =  DeltaT[nMode]>>8  ;
  63.                 TMR0L =  DeltaT[nMode]&0x00ff ;
  64.                 //asm("MOVLW  TL_TIMER0");
  65.         //asm("MOVWF TMROL,0");
  66.                 TMR0IF = 0;         

  67.                 switch(nMode)
  68.                 {

  69.                   
  70.                         case Mode1:
  71.                         case Mode2:
  72.                         case Mode3:
  73.                         case Mode5:
  74.                         {
  75.                                 PORTCbits.RC1=0;
  76.                                PORTCbits.RC1=1;
  77.                              _delay(9);                                       
  78.                             PORTCbits.RC1=0;
  79.                                 break;
  80.                         }
  81.                         case Mode4:
  82.                     {
  83.                                 PORTCbits.RC1=0;
  84.                                PORTCbits.RC1=1;
  85.                             _delay(119);                                
  86.                             PORTCbits.RC1=0;
  87.                                 break;
  88.                         }
  89.                         default:
  90.                         {

  91.                         }
  92.                 }
  93.                 GIE =1;        
  94.         }



  95.       
  96. }   
  97.   
doob 发表于 2013-8-21 18:17 | 显示全部楼层
你起码说一下哪个型号吧。。。。。
 楼主| hiramlee 发表于 2013-8-21 18:19 | 显示全部楼层
doob 发表于 2013-8-21 18:17
你起码说一下哪个型号吧。。。。。

-pic18f4480
shuidi_wangdan 发表于 2013-9-13 10:59 | 显示全部楼层
大哥,你用的什么编译器?为什么中断前边还用static?你可以给我一份你书写的中断格式吗?请你指点!
shuidi_wangdan 发表于 2013-9-13 15:07 | 显示全部楼层
你的初始化对吗?

zhengzhou86 发表于 2013-9-13 15:15 | 显示全部楼层
中断里面处理这么多程序,还有延时,这样做很不好,简化下吧,把程序处理都放在中断外处理,
你说不执行中断,1.外设相应中断没开启,2.中断里面延时影响
 楼主| hiramlee 发表于 2013-9-28 11:20 | 显示全部楼层
谢谢 各位 已经解决
Rain_King 发表于 2013-9-29 10:34 | 显示全部楼层
hiramlee 发表于 2013-9-28 11:20
谢谢 各位 已经解决

怎么解决的,说一下可以么,你这样后来的人也会找不到解决方法的......
zhengjs167 发表于 2015-3-18 10:13 来自手机 | 显示全部楼层
hiramlee 发表于 2013-9-28 11:20
谢谢 各位 已经解决

大神,怎么解决的,求详解?
jerryqww 发表于 2015-12-20 09:49 | 显示全部楼层
这样是不是不太好,有困难就发帖,自己解决了,或者在别人评论中找到了思路,不予别人分享。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:With men this is possible;With God all things are possible!

2

主题

83

帖子

3

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