找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9394|回复: 0
收起左侧

一个单片机按键扫描函数分享

[复制链接]
ID:221467 发表于 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. }
复制代码



评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表