网站标志
自定模版
  • Show Information
  • Themed Pavilions
  • Visitor Center
  • News Center
  • Download Center
  • Contact Us
自定模版

距离本届展会开幕还有:
00 00 00 00 
北京•中国国际展览中心
2019年07月19-21日
访问统计
媒体中心/Media center
组委会秘书处
⊙ 地址:北京市朝阳区朝阳北路北京像素南区
⊙ 电话:010-52594859
⊙ 传真:010-57049186
⊙ E-mail: 43450301@qq.com
广告位
广告位
广告位
文章正文
MSP430单片机按键中断程序
作者:    发布于:2018-01-30 21:40:35    文字:【】【】【

#include "IRRemote.h" 


void main(void) 

    //初始化 
    Initialize();      


//死循环 
    while(1) 
    { 
        unsigned int transmit; 
        //初始化变量 
        transmit = ENDTRANSMIT; 
        //等待按键按下 
        SetForPress(); 
        //进入LPM4模式 
        LPM4; 
         
        Debounce();  
        //扫描键盘 
        KeySCAN();  
        //键盘处理 
        KeyLookup();  
        if (Error_Flags == 0)  
        {                  
            //有键按下的情况 
            SetupForRelease(); 
            do  
            {  
                //传输数据(RC5码) 
                Transmit(); 
                 
                transmit = TestRetransmit(); 
                //延时 
                DelayToNextTransmit();  
            } while (transmit == RETRANSMIT); 
        } 
    } 


void Initialize(void) 

    //停止看门狗 
    WDTCTL = WDTPW+WDTHOLD; 
    //P2口为输出 
    P2DIR = 0xFF; 
    //P2.3为TA1功能管脚 
    P2SEL = 0x08; 
    //清除P2口的输出 
    P2OUT = 0; 
    //设置DCO频率为1MHz 
    DCOCTL = CALDCO_1MHZ; 
    BCSCTL1 = CALBC1_1MHZ; 
    //使能中断 
    _EINT();  


void SetForPress(void) 

    //P1.0和P1.1为输入 
    P1DIR = 0xFC; 
    //清除P1口的输出,下拉 
    P1OUT = 0; 
    //使能P1.0和P1.1的电阻 
    P1REN |= 0x03;  
    //使能键盘 
    P2OUT |= 0x07;  
    //低到高中断方式 
    P1IES &= ~0x03; 
    //清除中断标志 
    P1IFG = 0; 
    //使能中断 
    P1IE |= 0x03; 
    //清除错误标志 
    Error_Flags = 0; 
    //清除传输标志 
    Trans_Flags = 0; 


void Debounce(void) 

    //SMCLK/8,清除TA 
    TACTL = TASSEL1+TACLR+ID0+ID1; 
    //使能CCR0中断 
    TACCTL0 = CCIE;  
    //设置延时的值 
    TACCR0 = 5000 - 1;  
    //开始UP模式 
    TACTL |= MC0; 
    //进入LPM0模式 
    LPM0; 
    //停止并清除TA 
    TACTL = TACLR; 
    //清除CCTL0寄存器 
    TACCTL0 = 0; 


void KeyScan(void) 

    unsigned int i; 
     
    //初始化行 
    RowMask = 0x01; 
    KeyHex = 0; 
    //清除行的值 
    P1OUT &= ~0x03;  
     
    for (i=0; i 


  • ★指导单位
  • 国家发展和改革委员会
  • 国家商务部
  • 国家科技部
  • 国家工业和信息化部
  • ★支持单位
  • 中国电子器材总公司 | 中国汽车工业协会 | 中国机械工业联合会
  • 中国线缆行业协会
  • ★组织单位
  • 振江国际展览(北京)有限公司
  • 北京亚太瑞斯会展服务有限公司

振江国际展览(北京)有限公司
北京亚太瑞斯会展服务有限公司
电话:(010)5259 4859

地址:北京市朝阳区朝阳北路北京像素南区907
传真:(010)5704 9186

技术支持
据海网络