本演示采用了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;
}
}
}
|