ImageVerifierCode 换一换
格式:DOC , 页数:6 ,大小:50KB ,
资源ID:2293277      下载积分:20 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-2293277.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(msp430-5438 键扫描.doc)为本站会员(dzzj200808)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

msp430-5438 键扫描.doc

1、/*工程名:msp430_project作者:模块名称:键扫描模块(Nx(N-1)型键盘,N=5) 模块描述:通过 TIMER1A0 中断定时启动键扫描.。 - -|msp430| p10.0 |5x4keyboard|5438 | | | | | p10.4 | |版本:*/ #include “msp430x54x.h“ #DEFINE uchar unsigned char#DEFINE uint unsigned int/*定义每个按键名及对应值*/#DEFINE num0 0xf0 /*#DEFINE num0 0x00 不行, keybuff,keybufs 初始化 0x00*/#

2、DEFINE num1 0x01#DEFINE num2 0x02#DEFINE num3 0x03#DEFINE num4 0x04#DEFINE num5 0x05#DEFINE num6 0x06#DEFINE num7 0x07#DEFINE num8 0x08#DEFINE num9 0x09#DEFINE dirup 0x0a#DEFINE dirdown 0x0b#DEFINE dirleft 0x0c#DEFINE dirright 0x0d#DEFINE ctlenter 0x0e#DEFINE ctlshift 0x0f#DEFINE ctlclear 0x10#DEFIN

3、E ctlexit 0x11#DEFINE ctlreset 0x12#DEFINE ctlstop 0x13/*定义全局变量*/ uchar keybuff=0x00;uchar keybufs=0x00;uchar keyvalue=0xff;uchar keyflag=0x00;/*timerA0 初始化*/void init_timera0(void)WDTCTL=WDTPW+WDTHOLD;/*CCR0 中断允许*/TA1CCTL0 = CCIE; /*捕获/比较寄存器设 50ms 中断, (50/1000)*32768=1638*/ TA1CCR0 = 1638;/*使用 3276

4、8hz 时钟,增计数模式,ta 清零*/ TA1CTL = TASSEL_1 + MC_1 + TACLR; #progma vector=TIMER1_A0_ISR(void)_interrupt void TIMER1_A0_ISR(void)keyscan();/*每 50ms 更新一次 max7219 数据*/led_show();/*键刚按下*/*第一次扫描到电平有变化时,按键值给 keybuff,再 keybufs=keybuff*/*50ms 后扫描到电平有变化时,按键值给 keybuff,再比较 keybufs 与 keybuff 是否相等:若相等,确定有键按下,值赋给 key

5、value,keyflag=0xff,keybuff,keybufs 清零;不等 keybuff,keybufs 清零*/*健刚松开*/ /*第一次扫描到无变化时即 keybuff=0x00,keybufs,keyflag 清零,按键过程结束*/*键盘扫描模块*/void keyscan(void) /*设置 P10.0 为输出且输出高电平,p10.1-p10.4 为输入*/P10DIR | =0X01;P10OUT | =0x01;if(P10IN /*按键 9*/else if(P10IN /*按键 exit*/else if(P10IN /*按键 right*/else if(P10IN

6、 /*设置 P10.1 为输出且输出高电平,p10.0/p10.2/p10.3/p10.4 为输入*/P10DIR | =0X02;P10OUT | =0x02;if(P10IN /*按键 8*/else if(P10IN /*按键 up*/else if(P10IN /*按键 down*/else if(P10IN /*设置 P10.2 为输出且输出高电平,p10.0/p10.1/p10.3/p10.4 为输入*/P10DIR | =0X04;P10OUT | =0x04;if(P10IN /*按键 7*/else if(P10IN /*按键 shift*/else if(P10IN /*按

7、键 left*/else if(P10IN /*设置 P10.3 为输出且输出高电平,p10.0/p10.1/p10.2/p10.4 为输入*/P10DIR | =0X08;P10OUT | =0x08;if(P10IN /*按键 6*/else if(P10IN /*按键 reset*/else if(P10IN /*按键 enter*/else if(P10IN /*设置 P10.4 为输出且输出高电平,p10.0/p10.1/p10.2/p10.3 为输入*/P10DIR | =0X10;P10OUT | =0x10;if(P10IN /*按键 5*/else if(P10IN /*按键

8、 clear*/else if(P10IN /*按键 stop*/else if(P10IN /*判断是第一次还是第二次按下,做出对应动作 */*是第一次按下 或 按键进入稳定状态 */ if(keybuffs=0x00)keybuffs=keybuff;if(keybuff=0)/*没键按下 或 已经取键值(keybuff,keybufs 复位,keyflag=0xff ),再次扫描到无按键按下 */ keyflag=0x00;/*按下键中间时间段扫描时,清零 keybufs,使满足上一层 if 条件,进入本过程*/if(keyflag=0xff)keybufs=0x00;keybuff=0x00; /*是第二次按下*/else if(keybuffs ! =0) keybuff=0x00;keybufs=0x00;keyflag=0xff;

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报