您当前的位置:五五电子网电子知识单片机-工控设备MSP430单片机MSP430单片机按键中断程序 正文
MSP430单片机按键中断程序

MSP430单片机按键中断程序

点击数:7860 次   录入时间:03-04 11:41:11   整理:http://www.55dianzi.com   MSP430单片机
    //停止并清除TA
    TACTL = TACLR; 
    //切换切换位
    Trans_Flags ^= toggle;
}

void OutputHigh(unsigned int val)
{
    unsigned int j;
    //CCR1 RESET/SET
    TACCTL1 = OUTMOD_7; 
    //PWM周期(40kHz)
    TACCR0 = 25 - 1;
    //清除TA
    TACTL = TASSEL1+TACLR;
    //TA开始UP模式
    TACTL |= MC0;
    for (j = val; j > 0; j--) 
    {   
        // 中断记数
        //周期40kHz时,每个中断的时间为25us
        LPM0; 
    } 
}

void OutputLow(unsigned int val)
{
    // 设置CC1的输出为0
    TACCTL1 = OUTMOD_0;
    //清TA
    TACTL = TASSEL1+TACLR;
    //延时
    TACCR0 = val; 
    //设置TA为UP模式
    TACTL |= MC0; 
    //进入LPM0模式,等待CCR0中断
    LPM0;
}

// P1.x 中断服务程序
#if __VER__ < 200
    interrupt [PORT1_VECTOR] void P1_ISR(void)
#else
    #pragma vector=PORT1_VECTOR
    __interrupt void P1_ISR(void)
#endif
{
    //退出LPM4低功耗模式
    LPM4_EXIT; 
    //清除中断标志
    P1IFG = 0;
    //中断不使能
    P1IE = 0;
}

// CCR0 中断服务程序
#if __VER__ < 200
    interrupt [TIMERA0_VECTOR] void CCR0_ISR(void)
#else
    #pragma vector=TIMERA0_VECTOR
    __interrupt void CCR0_ISR(void)
#endif
{
    //退出LPM0低功耗模式
    LPM0_EXIT; 
}

IRRemote.h

#include  "MSP430x21x1.h"

#define   noKey       0x001
#define   noMatch     0x002
#define   heldDown    0x001
#define   toggle      0x002
#define   RETRANSMIT  1
#define   ENDTRANSMIT 0

// 按键查询表
const char KeyTab[6] = {
  0x11,     // 按键 0
  0x21,     // 按键 1
  0x12,     // 按键 2
  0x22,     // 按键 3
  0x14,     // 按键 4
  0x24      // 按键 5
};

// 函数查询表
const char FuncTab[6] = {
  0x0C,   // 按键 0 - 电源
  0x0D,   // 按键 1 - 静音
  0x20,   // 按键 2 - 频道+
  0x10,   // 按键 3 - 音量+
  0x21,   // 按键 4 - 频道-
  0x11    // 按键 5 - 音量-
};

unsigned int RowMask;
unsigned int KeyHex;
unsigned int KeyVal;
unsigned int KeyPressed;
unsigned int Command;
unsigned int Trans_Flags;
unsigned int Error_Flags;                    

void Initialize(void);
void SetForPress(void);
void Debounce(void);
void KeyScan(void);
void KeyLookup(void);
void SetupForRelease(void);
void DetermineRelease(void);
void Transmit(void);
unsigned int TestRetransmit(void);
void DelayToNextTransmit(void);
void OutputHigh(unsigned int);
void OutputLow(unsigned int);



上一页  [1] [2] [3] 


本文关键字:单片机  程序  MSP430单片机单片机-工控设备 - MSP430单片机