其實這個是可以很簡單的去實現的,你這個搞得看起來好恐怖方便的話,把硬件電路上傳一下,把涉及商業機密抹去就行如果是直接檢測充電電源的話,中斷是一定會有抖動的
那么,中斷被觸發之后,只作清除標志位和置位一個觸發標志位,用來告訴主程序:充電線插入或者拔出了,并清除定時器控制的某個變量
主函數再通過定時器變量和觸發標志位來進行操作
這是我一個8051的充電檢測,只有高電平充電檢測,沒有拔出檢測,但原理是差不多的,你參考一下就知道了
如果是要檢測插入和拔出,就增加對應的檢測就可以了
KEY為中斷端口
void main(void)
{
Mcu_Rst(); //單片機初始化
while(1)
{
if(key_press&&(key_10ms>=30)&&KEY)key_disp(); //處理
//key_press中斷觸發標志位,只在key_disp();函數中清除
}
}
//───────────────────────────────────────────────
void Int0_isr() interrupt 0 //外部中斷0
{
key_press=1; //中斷觸發
key_10ms=0x00; //每次進入中斷都清除定時器變量,這樣定時器就會在抖動之后才開始計時,從最后一次退出中斷開始計時
IE0=0;//清除中斷標志位
}
//────────────────────────────────────────────────
void key_disp()//處理
{
key_press=0; //清標志位
}
|