- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
msp430的矩阵键盘程序
msp430g2553的矩阵按键程序IAR环境下的程序!矩阵按键在单片机设计中经常见到,下面给大家几个程序!如果有需求可以看看!矩阵按键,扫描下面程序是淘来的!#includemsp430g2553.h/***************全局变量***************/unsigned char Key_Val;? ?? ?? ? //存放键值void CtrlKey(unsigned char sw); //控制键盘开关//sw=0关 sw=1开/*******************************************函数名称:Init_Keypad功? ? 能:初始化扫描键盘的IO端口参? ? 数:无返回值??:无********************************************/void Init_Keypad(void){? ?????P1DIR = 0x0f;? ?? ? //P1.0~P1.3设置为输出状态,P1.4~P1.7输入 状态(上拉H)??P1OUT=0;??P1IES =0xf0;? ? //P1.4~P1.7允许中断??P1IE??=0xf0;? ?//P1.4~P1.7下降沿触发中断??P1IFG=0;? ?? ?//中断标志清0??Key_Val = 0;}/*******************************************函数名称:Check_Key功? ? 能:扫描键盘的IO端口,获得键值参? ? 数:无返回值??:无********************************************///p14\5\6\7 接上拉电阻/***************************************?? ?? ?? ?? ?key_Val 对应键值?? ?? ???列:[p14]??[p15]??[p16]? ?[p17]? ?? ?? ?? ? ↓? ???↓? ???↓? ???↓行:[p13]→? ?? ?1? ?? ?2? ?? ?3? ?? ?4? ?[p12]→? ?? ?5? ?? ?6? ?? ?7? ?? ?8? ??[p11]→? ?? ?9? ???10? ???11? ???12? ?[p10]→? ???13? ???14? ???15? ???16? ?***************************************/void Check_Key(void){??unsigned char row ,col,tmp1,tmp2;??unsigned char keymap[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};//设置键盘逻辑键值????tmp1 = 0x08;??for(row = 0;row 4;row++)? ?? ?? ?? ???//行扫描??{? ? P1OUT = 0x0f;? ?? ?? ?? ?? ?? ?? ???//P1.0~P1.3输出全1? ? P1OUT -= tmp1;? ?? ?? ?? ?? ?? ?? ? //P1.0~p1.3输出四位中有一个为0? ? tmp1 =1;? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? if((P1IN 0xf0)0xf0)? ?? ?? ?? ???//是否P1IN的P1.4~P1.7中有一位为0? ? {? ?? ?? ?? ?? ?? ?? ???? ?? ?tmp2 = 0x10;? ?? ?? ?? ?? ?? ?? ?? ?// tmp2用于检测出哪一位为0??? ?? ?for(col = 0;col 4;col++)? ?? ?? ? // 列检测?? ?? ?{? ?? ?? ??? ?? ???if((P1IN tmp2) == 0x00)? ?? ? // 是否是该列,等于0为是? ?? ???{? ?? ?? ??? ?? ?? ? Key_Val = keymap[row*4 + col];??// 获取键值? ?? ?? ? return;? ?? ?? ?? ?? ?? ?? ?? ? // 退出循环? ?? ???}? ?? ???tmp2 = 1;? ?? ?? ?? ?? ?? ?? ???// tmp2右移1位?? ?? ?}? ? }??}? ?? ?}/*******************************************函数名称:de
文档评论(0)