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

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 4780|回复: 1
打印 上一主题 下一主题

PIC12F1822 I/O边沿中断进不了

[复制链接]
跳转到指定楼层
1#
发表于 2012-8-20 16:26:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//定义配置位
__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);*/
}
  
  
}


不能进入中断,请问是哪里出现的问题。
2#
发表于 2012-8-20 16:27:19 | 只看该作者
你使能内部弱上拉看看,还有单步调试是不支持响应外部中断的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|公司首页|Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 ( 粤ICP备09008620号 )

GMT+8, 2024-11-27 20:05 , Processed in 0.051995 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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