这段代码用 AI 编程写的.
试了很多遍,现在只能实现按键换挡,一直这样循环.
我的代码想要 按键换挡,但是如果3秒内没有换挡,
再次按下按键,就关闭LED. 最好是加上 记忆上次关闭时的档位.
下次开机直接进入上次关闭时的档位.
感觉是定时器中断没有 参与进来.
麻烦大神们帮看看把.苦恼死我了
- #include <STC8G.H>
- #include "intrins.h"
- sbit LED1=P3^3;
- sbit KEY1=P3^2;
- #define MAIN_Fosc 11059200UL
- #define ON 0
- #define OFF 1
- typedef unsigned char u8;
- typedef unsigned int u16;
-
- static u8 ld = 0;
- static u8 gear = 0;
- static u16 noShiftTime = 0; // 自上次换挡以来的时间
- void pwm_init(void);
- void delayms(u16 ms);
- void timer0_init();
- void process_key_press();
- void update_led_brightness(u8 gear);
- void main() {
- // I/O口配置
- P0M0 = 0x00; P0M1 = 0x00;
- P1M0 = 0x00; P1M1 = 0x00;
- P2M0 = 0x00; P2M1 = 0x00;
- P4M0 = 0x00; P4M1 = 0x00;
- P5M0 = 0x00; P5M1 = 0x00;
- P3M0 = 0x00; P3M1 = 0x00;
- P_SW2=0x80;
复制代码