pic18f2480,mcc18。
void HandlerHigh () { //HLVD中断-------------------------------- if(PIR2bits.HLVDIF == 1 && hlvd_intFlag == 0) { PIR2bits.HLVDIF = 0; hlvd_intFlag = 1; } }
void init_hlvd(void) { TRISAbits.TRISA5 = 1; //设定RA5为输入
HLVDCONbits.HLVDEN = 0;//高低电压检测使能关闭
HLVDCONbits.HLVDL3 = 1;//高低电压检测门限值 HLVDCONbits.HLVDL2 = 1;// HLVDCONbits.HLVDL1 = 1;// HLVDCONbits.HLVDL0 = 0;//
HLVDCONbits.VDIRMAG = 0;//电压跌落时,事件发生
HLVDCONbits.HLVDEN = 1;//高低电压检测使能打开
INTCONbits.GIE = 1;//全局中断打开 INTCONbits.PEIE = 1;//外围设备中断打开
IPR2bits.HLVDIP = 1;//HLVD使用高中断 PIE2bits.HLVDIE = 1;//HLVD中断打开, PIR2bits.HLVDIF = 0;//HLVD中断溢出标志位
}
void main(void) { init_hlvd(); for(;;) { if(hlvd_intFlag) { LATCbits.LATC2 = !LATCbits.LATC2; //LED2闪烁 while(!HLVDCONbits.IVRST); hlvd_intFlag = 0; delay(200);//约450ms } } }
程序过程: 初始化后,如果电压低于4.48-4.69V,进入中断,led2闪一次。 1.mcu电源电压5V,led2不闪。 2.mcu电源电压4.3v,led2不闪。 3.将HLVDL3:0=1111,mcu电源4.5V,RA5引脚5v,led2不闪,(RA5引脚3V,led2不闪)
弄了好久,咋都进不了中断,请教版主。 |