标题: 一个单片机按键扫描函数分享 [打印本页]

作者: 天涯教练    时间: 2017-10-30 21:07
标题: 一个单片机按键扫描函数分享
单片机源程序如下:
  1. #include "reg51.h"               //头文件

  2. #define u8 unsigned char         //宏定义
  3. #define u16 unsiged int

  4. u8 key_data=0;                   //定义全局标量

  5. /*
  6.    按键扫描函数:
  7.    输入:
  8.    输出:按键值
  9. */

  10. void key_san(void)
  11. {
  12.   static bit key_bit = 0;                //按键标志

  13.   static  u8 key_num = 0;             //时间标志

  14.   static  u8 key_temp;

  15.   if((P2 !=  0xFF) && (!key_bit)){ //判断按键是否按下?

  16.      key_num +=1;                        //时间累加(每次自动累加1ms)

  17.      if(key_num == 10){                 //当累加到10ms

  18.         key_temp = P2;                    //读取当前独立按键接口的值

  19.         key_bit =1;                            //将标志位置1
  20.     }
  21.   }
  22.   if((P2 == 0xFF) && (key_bit)){      //判断按键是否放开?

  23.       key_num -= 1;                         //时间累加(每次自动减1ms)

  24.       if(key_num == 0){                   //当累减到0ms

  25.           key_data = key_temp;          //将值甩到全局标量

  26.           key_bit = 0;                         //将标志位复位0      
  27.    }
  28.   }
  29. }
复制代码








欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1