英锐恩单片机论坛,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://enroobbs.com/)
Powered by Discuz! X3.2