使用扫描的方法实现6个IO口控制2两个按键7个led
一、2个按键 和 7个LED ,采用6个IO ,以2 *4的方式复用
二、扫描分时 - 3步 (X1 X2 对应IOA5 IOA3;Y1 Y2 Y3 Y4对应IOB3 IOC0 IOB0 IOB1)
a. X1/X2 设置为输入上拉模式,作为按键输入检测;同时Y1 Y2 Y3 Y4也设置为输入上拉模式,以防止LED有弱电流的情况
b. X1切换为输出1模式,X2保持输入模式,需要关闭上拉功能,Y1 Y2 Y3 Y4 根据功能要求输出对应的1或0信号,1-LED off / 0-LED on
c. X1先切换为输入模式关闭上拉,X2切换为输出1模式,Y1 Y2 Y3 Y4 根据功能要求输出对应的1或0信号
d. 重复a操作,需要注意切换a/b/c操作时,需要先将Y1 Y2 Y3 Y4设置为输入上拉模式,以避免瞬间LED导通形成微亮的情况
三、 按键的功能转换,输出开关机功能状态 F_work_on =1开机;=0关机,调用key_func_static()函数实现开关机工作程序
四、 根据b_LED_statu的值来控制LED亮或灭
uchar b_LED_statu ;
uchar F_work_on;
extern uchar key_count_time;
void key_display(void)
{
switch(key_count_time)
{
case 2: