本帖最后由 李冬 于 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();//清屏
- //显示 关机
- OLED_ShowCHinese(48,2,51);//
- OLED_ShowCHinese(64,2,52);//
- // delay_ms(1000);
- beep(1,300); //长响
- OLED_Clear();//清屏
- ES = 0; //关闭串口中断
- UART1_SendString("关机"); //查询方式发送
-
- 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; //关闭串口中断
- UART1_SendString("开机"); //查询方式发送
-
- IAP_CONTR |= 0x60; //软复位
-
- }
-
- }
- }
- if(press_time <1000)
- {
-
- press_time = 0;
- cd = 1;
- }
-
-
-
- }
复制代码 长按开关机,短按CD=1,主程序里判断CD,实现其他功能。
|