按键的下降沿和低电平的问题

2019-03-24 09:40发布

请教各位,按键原来是下降沿有效,但我想把按键改为低电平有效,应该怎么改呢,是把原来的下降沿中断去掉吗?
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
16条回答
crysislove
2019-03-26 11:26
本帖最后由 crysislove 于 2015-11-19 00:12 编辑
qiushenghua 发表于 2015-11-18 16:59
过了两天不见楼主重写程序,看样子楼主已经没有在做这个项目了,那么就不上参考代码了。

首先感谢版主大大上心啊,非常抱歉啊,这两天我一直在忙其他事,所以没有上论坛回复。然后下面是我对低功耗的认识和了解以及用定时器中断改写的代码请版主指导指导。下面这段代码我想要实现的是:当P1.3按键按下不放的时候,P1.0 和P1.6保持亮的状态,当按键松开的时候两个的是灭的状态。代码编译没错,但是下载之后,没有实现上面的功能。

低功耗模式也叫休眠模式是一种间歇式工作方式。通过间歇性的方式来启动和停止系统时钟,就可以开启低功耗模式。
MSP430G2553的CPU有5种工作模式: AM(Active Mode)、LPM0(Low Power Mode 0)、LPM1、LPM2、LPM3。后四种为低功耗模式。有些程序中的CPUOFF也是休眠模式。
LMP0模式:CPU、MCLK停用,SMCLK,ACLK激活。
LMP1模式:CPU、MCLK、如果DCO(数控振荡器)不作为SMCLK源的时候停用,ACLK激活。
LMP2模式;CPU、MCLK、SMCLK、DCO停用。ACLK激活。
LMP3模式:CPU、MCLK、SMCLK、DCO停用。ACLK激活。(与LMP2模式不同的是LMP3模式SR寄存器的SCG0置1了)
LMP4模式:CPU、MCLK、SMCLK、DCO、ACLK停用。
常用的模式是LPM0、LPM3。如果想用LMP3模式,在主程序的最后调用内函数_bis_SR_register(LPM3_bits),如果是退出LMP3模式则调用内部函数_bic_SR_register_on_exit(LPM3_bits)。
代码如下:
#include "MSP430G2553.h"
void WDT_init();
void P1_IODect();
void P13_Onclick();

void main(void)
{
        WDTCTL = WDTPW + WDTHOLD;
        P1DIR |= BIT0+BIT6;
        P1OUT |= BIT0;
        P1OUT |= BIT6;

        P1REN |= BIT3;
        P1OUT |= BIT3;
        WDTCTL = WDT_ADLY_16;
        IE1 |= WDTIE;
        _enable_interrupts();
        _bis_SR_register(LPM3_bits);
                }

#pragma vector=WDT_VECTOR
__interrupt void WDT_ISR(void)
{
P1_IODect();
}

void P1_IODect()
{
    unsigned char KEY_1=0;
        if(P1IN&BIT3) //如果BIT3的值为1,
                KEY_1=1;
        else KEY_1=0;
        while(KEY_1==0)
        P13_Onclick();
}

void P13_Onclick() //P1.3的事件处理函数
{
        P1OUT ^= BIT0;
        P1OUT ^= BIT6;
}

一周热门 更多>

相关问题

    相关文章