找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4557|回复: 2
打印 上一主题 下一主题
收起左侧

MSP430单片机按键测试KEY函数

[复制链接]
跳转到指定楼层
楼主
ID:380613 发表于 2018-7-29 20:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
MSP430单片机KEY函数

单片机源程序如下:
  1. /********************************************************************
  2. //DM430-L型最小系统板4位独立按键测试程序,采用查询模式
  3. //按不同的按键,显示不同的LED灯,具体请看程序
  4. //调试环境:EW430 V5.30
  5. //时间:2014.03.01
  6. ********************************************************************/

  7. #include <msp430x14x.h>
  8. #include "Config.h"

  9. uchar key;

  10. //*************************************************************************
  11. //        初始化IO口子程序
  12. //*************************************************************************
  13. void Port_init()
  14. {

  15.   P1SEL = 0x00;                   //P1普通IO功能
  16.   P1DIR = 0xF0;                   //P10~P13输入模式,外部电路已接上拉电阻
  17.   P6SEL = 0x00;                   //P6口普通IO功能
  18.   P6DIR = 0xFF;                   //P6口输出模式
  19. }

  20. //**********************************************************************
  21. //        键盘扫描子程序,采用逐键扫描的方式
  22. //**********************************************************************

  23. uchar Key_Scan(void)
  24. {
  25.   uchar key_check;
  26.   uchar key_checkin;
  27.   key_checkin=KeyPort;                  //读取IO口状态,判断是否有键按下
  28.   key_checkin&= 0x0F;                          //读取IO口状态,判断是否有键按下
  29.   if(key_checkin!=0x0F)                    //IO口值发生变化则表示有键按下
  30.     {
  31.       delay_ms(20);                          //键盘消抖,延时20MS
  32.       key_checkin=KeyPort;
  33.       if(key_checkin!=0x1F)
  34.         {  
  35.           key_check=KeyPort;
  36.           switch (key_check & 0x0F)
  37.             {
  38.               case 0x0E:key=1;break;
  39.               case 0x0D:key=2;break;
  40.               case 0x0B:key=3;break;
  41.               case 0x07:key=4;break;
  42.             }
  43.          
  44.         }
  45.       
  46.    }
  47.   else
  48.    {
  49.      key=0xFF;        
  50.    }
  51.   return key;
  52. }
  53. //*************************************************************************
  54. //                主程序
  55. //*************************************************************************

  56. void main(void)
  57. {     
  58.   WDT_Init();                            //看门狗设置
  59.   Clock_Init();                          //系统时钟设置
  60.   Port_init();                           //系统初始化,设置IO口属性
  61.   delay_ms(100);                         //延时100ms
  62.   while(1)
  63.     {
  64.       Key_Scan();                       //键盘扫描,看是否有按键按下
  65.       if(key!=0xff)                     //如果有按键按下,则显示该按键键值1~4
  66.         {
  67.           {
  68.             switch(key)
  69.               {
  70.                 case 1: LED8 = 0xFC;break;        //给不同的键赋键值,键值1,亮2个LED灯
  71.                 case 2: LED8 = 0xF3;break;        //给不同的键赋键值,键值2,亮2个LED灯
  72.                 case 3: LED8 = 0xCF;break;         //给不同的键赋键值,键值3,亮2个LED灯
  73.                 case 4: LED8 = 0x3F;break;         //给不同的键赋键值,键值4,亮2个LED灯
  74.               }

  75.           }
  76.        
  77.        }
  78.      else
  79.       {
  80.         //LED=key;                      //没有按键的时候显示上次的键值
  81.       }
  82.     }

  83. }

复制代码

所有资料51hei提供下载:
4KEY.rar (21.72 KB, 下载次数: 16)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:195950 发表于 2018-9-29 15:35 来自手机 | 只看该作者
好资料好好看看
回复

使用道具 举报

板凳
ID:396470 发表于 2018-10-13 11:29 | 只看该作者
没有见过这种
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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