msp430 launchpad 按键控制led亮灭

2020-03-23来源: eefocus关键字:msp430  launchpad  按键控制  led亮灭

demo1


实现功能:按一下按键,led2变换一下亮灭状态。


#include  


//这个宏仅针对8MHz

#define delay_us(us) __delay_cycles(8*(us))

#define delay_ms(ms) __delay_cycles(8000*(ms))


int main(void) {

    WDTCTL = WDTPW | WDTHOLD;   // Stop watchdog timer


    BCSCTL1 = CALBC1_8MHZ;     //设置 DCO 频率为8MHz

    DCOCTL = CALDCO_8MHZ;


    P1DIR |= BIT6; //设置P1.0口为输出


    P1REN |= BIT3;//启用P1.3内部上下拉电阻

    P1OUT |= BIT3;//将电阻设置为上拉

    P1DIR &= ~(BIT3); // P1.3设为输入

    P1IES |= BIT3;// P1.3设为下降沿中断

    P1IE  |= BIT3 ;// 允许P1.3中断


    P1IFG &= ~BIT3;        //中断标志位清零


    _EI NT(); //开总中断


    return 0;

}


/*中断服务程序*/

#pragma vector = PORT1_VECTOR

__interrupt void PORT_1(void) {

    delay_ms(1);//消抖

    if((P1IN & BIT3) == 0){

        P1OUT ^= BIT6;

    }  

    P1IFG &= ~BIT3; //中断标志位清零

}


demo2


实现功能:快速按按键两次,led2变换一下亮灭状态。


#include  


//这个宏仅针对8MHz

#define delay_us(us) __delay_cycles(8*(us))

#define delay_ms(ms) __delay_cycles(8000*(ms))


int main(void) {

    WDTCTL = WDTPW | WDTHOLD;   // Stop watchdog timer


    BCSCTL1 = CALBC1_8MHZ;     //设置 DCO 频率为8MHz

    DCOCTL = CALDCO_8MHZ;


    P1DIR |= BIT6; //设置P1.0口为输出


    P1REN |= BIT3; //启用P1.3内部上下拉电阻

    P1OUT |= BIT3; //将电阻设置为上拉

    P1DIR &= ~(BIT3); // P1.3设为输入

    P1IES |= BIT3; // P1.3设为下降沿中断

    P1IE |= BIT3; // 允许P1.3中断


    P1IFG &= ~BIT3;        //中断标志位清零


    _EINT(); //开总中断


    return 0;

}


/*中断服务程序*/

#pragma vector = PORT1_VECTOR

__interrupt void PORT_1(void) {

    delay_ms(1); //消抖

    while ((P1IN & BIT3) == 0)

        ; //P1.3低

    int times = 0;

    while ((P1IN & BIT3)) { //P1.3高

        times++;

        delay_ms(1);

        if (times > 120) {//说明只按了一次按键。此值自己多试几下

            goto exit_interrupt;

        }

    }

    P1OUT ^= BIT6;

    exit_interrupt: P1IFG &= ~BIT3; //中断标志位清零

}

关键字:msp430  launchpad  按键控制  led亮灭 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic492339.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:MSP430单片机控制IO口操作-LED灯闪烁
下一篇:MSP430 串口接收指令控制LED亮灭

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

MSP430教程11:MSP430单片机低功耗结构
当系统时钟发生器基本功能建立之后,CPU内状态寄存器SR的SCG1,SCG0,CPUOFF,OSCOFF位是重要的低功耗控制位。只要任意中断被响应,上述控制位就被压入堆栈保存,中断处理之后,又可恢复先前的工作方式。在中断处理子程序执行期间,通过间接访问堆栈数据,可以操作这些控制位;这样允许程序在中断返回(RETI) 后,以另一种功耗方式继续运行。各控制位的作用如下: SCG1: 复位,使能SMCLK;置位,禁止SMCLK。 SCG0: 复位,激活直流发生器,只有SCG0置位,并且DCOCLK没有被用作MCLK或SMCLK时,直流发生器才能被禁止。 OSCOFF:复位,激活LFXT1,只有当OSCOFF被
发表于 2020-03-25
MSP430教程10:MSP430单片机WDT看门狗定时器
看门狗定时器用来防止程序因供电电源、空间电磁干扰或其它原因引起的强烈干扰噪声而跑飞的事故。程序中设置看门狗清零指令WDTCTL=WDTPW+WDTCNTCL,当程序跑飞不能及时清零看门狗,导致看门狗溢出复位,这样程序可以恢复正常运行状态。 一、WDT寄存器包括WDTCNT和WDTCTL,两个寄存器在上电和系统复位内容全部清零 1.记数单元WDTCNT:WDTCNT是16位增记数器,由MSP430选定的时钟电路产生的固定周期脉冲信号对记数器进行加法记数。WDTCNT不能直接软件存取,必须通过看门狗定时器的控制寄存器WDTCTL来控制。  2.控制寄存器WDTCTL:WDTCTL由两部分组成,高
发表于 2020-03-25
MSP430教程15:MSP430单片机串行通讯模块
串行异步通讯模块在MSP430系列产品中,每一款型号都能实现串行通讯的功能,在MSP430F1X11系列中,可以用定时器A和软件编程结合实现串行通讯功能。而在其它系列产品中都带有硬件的串行通讯模块USART;另外,MSP430F14X系列产品中还带了两个串行通讯模块。而在MSP430F15X,F16X系列中USART0还可以实现IIC总线通讯。在UART模块中带有UART串行异步通讯和SPI同步通讯硬件资源。 图是USART模块结构图,从下图可以看出USART模块分别由波特率部分:波特率发生器,串行通讯接收/发送控制寄存器。接收部分,发送部分,端口IO部分。     
发表于 2020-03-25
MSP430教程15:MSP430单片机串行通讯模块
基于CCS工程MSP430串口升级(一)
第一次接触MSP430的芯片,第一次使用CCS开发环境,花了将近一个星期的时间,才把MSP430串口升级做出来。同样分成BOOT,APP,上位机,三个部分来讲解。BOOT在lnk_msp430fg479.cmd中修改BOOT Flash的起始地址(0xF000~0xFFE0),将近4K的FlashMEMORY{    SFR                     : origin = 0x0000, length = 0x0010    PERIPHERALS_8BIT 
发表于 2020-03-25
基于CCS工程MSP430串口升级(一)
MSP430单片机定时器学习笔记
_BIS_SR(LPM2_bits + GIE)  //进入LPM3低功耗模式和开总中断允许中断#pragma  vector=TIMERA0_VECTOR__interrupt void Timer_A(void){}TACTL   timerA控制寄存器TAR     timerA计数器CCTL0   捕获/比较控制寄存器0CCRO    捕获/比寄存器0(具有最高中断优先级别,单独使用一个中断向量)CCTL1   捕获/比较寄存器1CCR1    捕获/比较寄存器1CCTL2&n
发表于 2020-03-25
MSP430 SPI硬件接口
所使用的为MSP430F5438,比较老的一款单片机了。不过它的串口还是比较多,所以本人还是比较喜欢。在使用SPI硬件接口的时候,初始化程序代码:void halCom3Init(void){    unsigned char Data[3];  P3SEL |= (BIT0+BIT4+BIT5);  P3DIR |= BIT3;  UCA0CTL1 |= UCSWRST;                      // **Put state machine
发表于 2020-03-24
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved