msp430按键控制

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第三讲按键控制

一、概述

LAUNCH PAD的实验板上共有两个按键,一个按键接至RESET脚,固定作为复位按键来使用(S1)。按键S2连接在引脚P1.3,可供我们自由使用。这里我们实现通过此按键控制LED的闪烁。应当注意,连接按键的引脚松开时为高电平,按下为低电平。

按键一般可以通过扫描和中断来实现。扫描是指程

序通过循环不停地读取IO口的输入值,并以此判断按

键是否按下。中断实现可以免除扫描的麻烦,在按键按

下时,中断当前的程序,执行中断处理函数,效率较高。

二、中断简介

中断对于初学者来说,是最不容易理解的。但它的

道理实际上很简单,中断条件满足时,暂停正在运行的

程序,开始处理中断服务函数,中断服务函数结束后返

回,继续从之前停下的地方运行。就好像是你原来在网

上聊天,突然电话响了,接完电话继续上网一样。这里,

上网就像是初始运行的程序,电话响了是中断触发条件,

接电话是中断服务程序。只是设置好中断处理函数以后,

每次中断运行的程序都是相同的。

每种CPU之中,都会有许多不同种类的中断。对

于单片机来说,最常用的中断有外部中断、定时器中断

等。而这些中断中,又有不同的优先级,有时还可以实

现中断嵌套。

中断优先级是指系统中多个中断源可能同时提出中断请求,需要按中断的轻重缓急给每个中断源指定一个优先级别。

从头文件中,我们可以看到msp430g2553的中断优先级。如图,最下面的复位中断具有最高优先级。

中断嵌套是指系统为某个中断请求服务时,可能再次接收到其他中断请求信号,这时系统有可能会再次中断,转去处理新的、优先级更高的中断请求。对于msp430,一般情况下

不允许任何中断嵌套,但是,若在中断中打开总中断,则不论优先级高低都会进行中断嵌套。

我们使用在按键这里的中断,被称为外部中断,意思是触发条件是来自外部的。在程序中,要配置好中断,要考虑到很多方面。首先,要确定是哪种中断,如外部中断就要配置IO 口的寄存器;其次,编写中断处理函数;最后,也是最重要的部分,打开总中断。

三、扫描实现按键

我们现在需要实现以下功能:使LED闪烁,但是当按键按下时,LED停止闪烁,松开按键,LED继续闪烁。

首先实现LED闪烁,接下来,加入对按键的判断语句。这里要注意,由于按键属于IO口的输入功能,因此对应的DIR寄存器位应该是0,launch pad板子上的按键在P1.3,即第三位必须为0。

右图为加入的按键判断语句:

我们通过!(P1IN&BIT3)来判断第三位是否为低,若为低,则停止主循环。

其中P1IN的8位数据,我们只关心按键所连的BIT3,将他们位与之后,若P1IN的第三位为低,则值为0,加上!,while中值为1,则在此while中循环,即停止主循环。

运行程序,即可达到所需的效果。

四、中断实现按键

我们实现以下功能:LED闪烁,按键按下后,LED停止闪烁,松开按键,LED仍然不闪烁,这时可以按RESET按键使程序复位,LED闪烁。

我们实现按键所需要的中断是外部中断,其触发源可以是P1和P2的任意引脚。

配置方法如图:

第一步,将P1DIR中的按键引脚设置为输入

第二步,设置BIT3位为下降沿中断

第三步,打开P1 BIT3的中断

第四步,确认清空中断标志(外部中断进入之后,不会自动清除中断标志,要手动清除,不然会持续进入中断函数)

最后,打开总中断。

我们知道,中断时,程序会进入中断处理函数,因此,配置中断处理函数也很重要。对于msp430,它有特定的格式,如下图:

这里,中断函数的名字是可以修改的,上面蓝色的字是固定格式。结束时,要清除标志位(注意,不是所有种类的中断最后都需要)。加入while(1)是因为,我们想要在按下键之后使程序停在这里,不再继续使LED闪烁。

至此,按键部分就介绍完了,大家可以思考一下,扫描和中断方式各在什么情况下使用更有效。

相关文档
最新文档