[资料分享] MSP430单片机按键测试KEY函数

Jacktang   2019-2-15 20:22 楼主
MSP430单片机KEY函数 单片机源程序如下: /******************************************************************** //DM430-L型最小系统板4位独立按键测试程序,采用查询模式 //按不同的按键,显示不同的LED灯,具体请看程序 //调试环境:EW430 V5.30 //时间:2014.03.01 ********************************************************************/ #include #include "Config.h" uchar key; //************************************************************************* // 初始化IO口子程序 //************************************************************************* void Port_init() { P1SEL = 0x00; //P1普通IO功能 P1DIR = 0xF0; //P10~P13输入模式,外部电路已接上拉电阻 P6SEL = 0x00; //P6口普通IO功能 P6DIR = 0xFF; //P6口输出模式 } //********************************************************************** // 键盘扫描子程序,采用逐键扫描的方式 //********************************************************************** uchar Key_Scan(void) { uchar key_check; uchar key_checkin; key_checkin=KeyPort; //读取IO口状态,判断是否有键按下 key_checkin&= 0x0F; //读取IO口状态,判断是否有键按下 if(key_checkin!=0x0F) //IO口值发生变化则表示有键按下 { delay_ms(20); //键盘消抖,延时20MS key_checkin=KeyPort; if(key_checkin!=0x1F) { key_check=KeyPort; switch (key_check & 0x0F) { case 0x0E:key=1;break; case 0x0D:key=2;break; case 0x0B:key=3;break; case 0x07:key=4;break; } } } else { key=0xFF; } return key; } //************************************************************************* // 主程序 //************************************************************************* void main(void) { WDT_Init(); //看门狗设置 Clock_Init(); //系统时钟设置 Port_init(); //系统初始化,设置IO口属性 delay_ms(100); //延时100ms while(1) { Key_Scan(); //键盘扫描,看是否有按键按下 if(key!=0xff) //如果有按键按下,则显示该按键键值1~4 { { switch(key) { case 1: LED8 = 0xFC;break; //给不同的键赋键值,键值1,亮2个LED灯 case 2: LED8 = 0xF3;break; //给不同的键赋键值,键值2,亮2个LED灯 case 3: LED8 = 0xCF;break; //给不同的键赋键值,键值3,亮2个LED灯 case 4: LED8 = 0x3F;break; //给不同的键赋键值,键值4,亮2个LED灯 } } } else { //LED=key; //没有按键的时候显示上次的键值 } } } 本帖最后由 Jacktang 于 2019-2-15 20:24 编辑

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复