英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

标题: PIC12F1822 I/O边沿中断进不了 [打印本页]

作者: lucky    时间: 2012-8-20 16:26
标题: PIC12F1822 I/O边沿中断进不了
//定义配置位
__CONFIG (FCMEN_OFF &FOSC_INTOSC&WDTE_OFF&PWRTE_OFF &MCLRE_ON &CP_OFF&CPD_OFF );//配置字
__CONFIG (WRT_OFF &PLLEN_OFF);//配置字

void delay_ms(unsigned long ms)
{
unsigned long i;
for(i=0;i<=ms;i++)
;

}
volatile bit RA2InterruptStatus;//RA2中断标志
volatile bit RA4InterruptStatus;//RA4中断标志

void interrupt Edge(void)//  电平边沿中断
{
if(IOCIF)//判断电平变化中断
  {
   // IOCIF=1; //清除中断标志
   
   if (IOCAF&0x04)//判断RA2口中断
     {
      IOCAF&=~(1<<2);//清除电平变化标志寄存器
      RA2InterruptStatus=1;
      RA4InterruptStatus=0;
     }
    if(IOCAF&0x10)//判断RA4口中断
     {
      IOCAF&=~(1<<4);//清除电平变化标志寄存器
      RA2InterruptStatus=0;
      RA4InterruptStatus=1;
     }
   
   
  }
   
}


void main(void)
{
OSCCON=0x67;//内部4MHZ时钟
ANSELA=0;//
CM1CON0=0;//关闭比较器
TRISA&=~(1<<5);//蜂鸣器端口输出
PORTA|=1<<5;//关闭蜂鸣器
TRISA|=(1<<2)|(1<<4);//RA2、RA4设置输入
WPUA=0;//禁能上拉
OPTION_REG=0XA0;
    IOCIE=1;//允许电平变化中断
IOCAN2=1;//设置RA2为下降沿中断
IOCAP4=1;//设置RA4为上升沿中断
IOCAF=0;//清除中断标志
GIE=1;//开放总中断
while(1)
{

       if(RA2InterruptStatus)
   {
   PORTA|=1<<5;
   delay_ms(5000);
   delay_ms(5000);
   delay_ms(5000);
   delay_ms(5000);
   PORTA&=~(1<<5);
   delay_ms(5000);
   delay_ms(5000);
   delay_ms(5000);
   delay_ms(5000);
   }
  if(RA4InterruptStatus)
   {
   
    PORTA|=1<<5;
   
   }
     /* PORTA|=1<<5;
   delay_ms(5000);
   delay_ms(5000);
   delay_ms(5000);
   delay_ms(5000);
   PORTA&=~(1<<5);
   delay_ms(5000);
   delay_ms(5000);
   delay_ms(5000);
   delay_ms(5000);*/
}
  
  
}


不能进入中断,请问是哪里出现的问题。

作者: eva    时间: 2012-8-20 16:27
你使能内部弱上拉看看,还有单步调试是不支持响应外部中断的





欢迎光临 英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 (http://www.enroobbs.com/) Powered by Discuz! X3.2