本演示采用了4个按键的操作,与LED点亮操作。
软件上采用了函数指针。通过函数指针指向不同的4个花样流水灯子函数
在按键触发后改变指针指向。
- #include "delay.h"
- #include "sys.h"
- #include "led.h"
- #include "key.h"
- typedef void (*BL)(void);
- static volatile BL BLINK = NULL;
- /********************************************************************************************************
- **函数信息 :main(void)
- **功能描述 :
- **输入参数 :无
- **输出参数 :无
- ********************************************************************************************************/
- int main(void)
- {
- u8 t=0;
-
- delay_init();
- LED_Init(); //初始化与LED连接的硬件接口
- KEY_Init(); //初始化与按键连接的硬件接口
- BLINK=(BL)LED_Blink0; //给指针指向一个全部灭灯函数,防止跑飞。
- while(1)
- {
- t=KEY_Scan(0); //得到键值
- BLINK();
- switch(t)
- {
- case KEY1_PRES: //K1默认悬空,按下后连接高电平,初始化配置要设置为输入带下拉电阻
- LED_Blink0();
- BLINK=(BL)LED_Blink1;
- break;
- case KEY2_PRES:
- LED_Blink0();
- BLINK=(BL)LED_Blink2;
- break;
- case KEY3_PRES:
- LED_Blink0();
- BLINK=(BL)LED_Blink3;
- break;
- case KEY4_PRES:
- LED_Blink0();
- BLINK=(BL)LED_Blink4;
- break;
- }
- }
- }
|