本帖最后由 李冬 于 2025-6-7 18:00 編輯
- void common_isr() interrupt 13
- {
-
- P3INTF = 0x00;
-
- // 等待按鍵釋放或達到長按時間
- while(a3 == 0)
- {
- delay_ms(1);
-
- if(++press_time>=1000)
- {
- press_time=0;
-
- if(kg==0)
- {
- kg=1;//下次開機標志位
- OLED_Clear();//清屏
- //顯示 關(guān)機
- OLED_ShowCHinese(48,2,51);//
- OLED_ShowCHinese(64,2,52);//
- // delay_ms(1000);
- beep(1,300); //長響
- OLED_Clear();//清屏
- ES = 0; //關(guān)閉串口中斷
- UART1_SendString("關(guān)機"); //查詢方式發(fā)送
-
- PD = 1; //進入休眠 復位鍵喚醒
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- }
- else
- {
-
- OLED_Clear();//清屏
- //顯示 開機
- OLED_ShowCHinese(48,2,53);//
- OLED_ShowCHinese(64,2,54);//
- // delay_ms(1000);
- beep(1,300); //長響
- OLED_Clear();//清屏
- ES = 0; //關(guān)閉串口中斷
- UART1_SendString("開機"); //查詢方式發(fā)送
-
- IAP_CONTR |= 0x60; //軟復位
-
- }
-
- }
- }
- if(press_time <1000)
- {
-
- press_time = 0;
- cd = 1;
- }
-
-
-
- }
復制代碼 長按開關(guān)機,短按CD=1,主程序里判斷CD,實現(xiàn)其他功能。
|