MSP430F5529学习笔记(二) 您所在的位置:网站首页 DAYZ的按键控制 MSP430F5529学习笔记(二)

MSP430F5529学习笔记(二)

2023-08-15 03:52| 来源: 网络整理| 查看: 265

        学习了简单的IO口输出点灯实验,IO既有输出也有输入,在MSP430中输出由PxOUT寄存器进行操作,相对应的就有输入寄存器PxIN来进行输入的操作。

        为体现按键效果我采用了按键控制LED灯的使用场景,这个也是单片机中按键的基础操作,通过对输入信号的检测来改变输出信号。首先我们是对LED的简单配置

WDTCTL = WDTPW +WDTHOLD;// stop watchdog timer P1DIR |=BIT0;//板载LED设置为输出 P1OUT|=BIT0;

以上操作即为关闭看门狗,设置对应IO口输出状态并给予IO口初始状态,如有疑问可参照我上一篇笔记。

按键外设的IO口配置        

        按键作为常用外设之一,在控制领域使用较多,同时也是非常经典的IO口电平检测案例,跟输出一样,首先也要对其进行基本的IO口配置。

P1DIR &=~BIT1;//板载按键s2设为输入 P1REN =BIT1;//上拉电阻,提高稳定性 P1OUT |=BIT1;//设置初始值为高电平

        首先是通过DIR方向选择寄存器将其设置为输入状态,第二行的作用为增加其稳定性,在实际的操作中我们一般习惯性添加。在以上两行设置完成后即对按键IO口进行初始化设置,将其拉至高电平状态。

  按键按下检测

         通过对PxIN寄存器的读取可以得知当前Px端口的输入情况,将其与BIT1进行与运算后可以检测对应端口是否有按键按下,通常使用的判断方式为:

if(P1IN&BIT1)

        通过扫描IO口输入状态,例如当按键未按下时P1IN与BIT1的值为1,按下时PxIN口检测到电平变化,与运算时P1.1口获取低电平与BIT1中的高电平相与得0从而来判断按键是否按下。

 简易按键控制开关灯

         通过对按键检测原理的了解,我们可以结合点灯得实验来进行模拟按键控制开关灯的效果,当按键按下时灯关闭,否则常亮,代码如下:

while(1) { if(P1IN&BIT1) P1OUT|=BIT0; else P1OUT&=~BIT0; }

        按键按下时LED灯熄灭,送开始LED灯打开,同时在按键按下过程中通过调节PXREN的添加与否发现,使能上下拉电阻会对按键有一定的影响,未添加时确实存在少量抖动情况,同时还可添加简单延时函数进行消抖处理,例如:

while(1) { if(P1IN&BIT1) { __delay_cycles(2000); if(P1IN&BIT1) P1OUT|=BIT0; } else P1OUT&=~BIT0; }

         其中__delay_cycles();为#include头文件自带的延时函数,其延时计数以机器周期为单位进行,在括号内写入适当的值可以实现简单延时的效果,在本次笔记的第4讲定时器讲解中会提到如何使用其进行MS,US级延时的配置。

简易双按键控制灭灯

         按键点灯完成后,简单书写了一个两按键同时按下才可灭灯程序,供大家参考。可以利用这种判断来进行对寻迹小车,多路红外灯外设的检测和响应。

void main(void) { WDTCTL = WDTPW +WDTHOLD;// stop watchdog timer P1DIR |=BIT0;//板载LED设置为输出 P1DIR &=~BIT1;//板载按键s2设为输入 P2DIR &=~BIT1;//板载按键s1设为输入 P2REN =BIT1;P1REN =BIT1;//上拉电阻 P1OUT |=BIT1;P2OUT |=BIT1;//初始状态为高电平 while(1) { if((P1IN&BIT1)|(P2IN&BIT1)) P1OUT|=BIT0; else P1OUT&=~BIT0; } }

         希望点灯和按键这两章可以让大家简单了解MSP430的端口配置,检测,输出和输入等操作,有了这两章的基础即可进行简单的电子制作,在实践中学习和进步。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有