diff --git a/App/event.c b/App/event.c index bf12a6d..ba37f39 100644 --- a/App/event.c +++ b/App/event.c @@ -193,7 +193,7 @@ void Event_KeyScan_Poll(void) u8 raw_up = !KEY_UP; u8 raw_down = ADC_IsKeyDown(); // KEY_DOWN 通过 P0.3 ADC 通道判定 (常态 2.0V, 按下 3.7V) u8 raw_confirm = !KEY_CONFIRM; - u8 raw_sos = 0; // 临时注释关闭 SOS 物理按键电平检测,防浮空干扰 + u8 raw_sos = !KEY_SOS; // 恢复 SOS 物理按键电平检测 key_scan_timer = 0; // 重置扫描分频计数器 // 按键调试诊断:若按键 ADC 值有变化或处于高电平,串口输出真实 ADC 值 diff --git a/App/system.c b/App/system.c index 3578669..492e4ed 100644 --- a/App/system.c +++ b/App/system.c @@ -51,6 +51,12 @@ void GPIO_Init(void) MOTOR = 0; RGB_DIN = 0; // P2.3 初始拉低,防止上电期间 WS2812B 误触发 + // 配置 KEY_SOS (P2.6) 为带上拉准双向口模式以确保输入稳定 + P2M1 &= ~(1 << 6); + P2M0 &= ~(1 << 6); + KEY_SOS = 1; + (*(unsigned char volatile xdata *)0xFE12) |= (1 << 6); // 使能 P2.6 的强内部上拉电阻 (P2PU = 0xFE12) + // SGM_CTRL (P1.7), LCD 控制管脚 (P1.0, P1.1, P1.4, P1.5, P1.6) 置为推挽输出 P1M1 &= ~((1 << 7) | (1 << 0) | (1 << 1) | (1 << 4) | (1 << 5) | (1 << 6)); P1M0 |= ((1 << 7) | (1 << 0) | (1 << 1) | (1 << 4) | (1 << 5) | (1 << 6));