搜索
bottom↓
回复: 2

PIC24F 电平变化中断求助

[复制链接]

出0入0汤圆

发表于 2010-5-11 15:23:33 | 显示全部楼层 |阅读模式
为什么我的程序一直进不了中断,自我感觉很简单的程序没什么问题,麻烦大虾帮我看看,谢谢



   单片机采用PIC24FJ128GA010 ,用信号发生器产生方波信号至RD13,   程序如下:



void __attribute__((interrupt, auto_psv)) _CNInterrupt(void)      //各种电平变化中断     
{
  unsigned char temp=0;
  
  Delay_ms(10);ClrWdt();
  if(_RD13 == 1)
  {
        temp =  1;
  }
  else

  {
         temp =  2;   
  }
  _RD13 = _RD13;
  _CNIF = 0;

}

void CN_Init()  //电平变化初始化
{

_TRISD13 = 1;
_CN19IE= 1;

_CN19PUE = 1;
_CNIF = 0;
_CNIP = 6;       
}



void main()      

{
      unsigned char temp;



      CN_Init();
      while(1);

}

输入信号变化时,_CNIF标志能正常置位,就是不能进入中断服务程序,我想请教一下,到底是怎么回事?不胜感激。

出0入0汤圆

发表于 2010-5-12 15:49:52 | 显示全部楼层
看看Microchip官方的程序就知道错在哪里了。
呵呵,中断没打开。
void CN_init(void)
{
        /* RD6/CN15 is S3 */
        TRISDbits.TRISD6 = 1;        // make the port as input
        CNEN1bits.CN15IE = 1;        // enable interrupt
        CNPU1bits.CN15PUE = 0;        // disable pull-up resistor
        IFS1bits.CNIF = 0;                // clear IF
        IPC4bits.CNIP = 7;                // set IP as 7
        IEC1bits.CNIE = 1;                // enable CN
}

void __attribute__((interrupt, no_auto_psv)) _CNInterrupt(void)
{
        __builtin_btg((unsigned int *)&LATA, 1);        // toggle the LED
        IFS1bits.CNIF = 0;                // clear IF
        _temp16 = PORTD;                // read for next interrupt
}

出0入0汤圆

发表于 2010-5-13 08:52:47 | 显示全部楼层
总的CNIE要开,另外,中断服务程序记得读一下相应的口。在中断中延时10个MS,写写测试程序就随意了,实际中不要这么搞
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-9 16:50

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表