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