新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > P1 端口中斷操作

        P1 端口中斷操作

        作者: 時間:2016-11-13 來源:網絡 收藏
        /*******************************************************************************

        * 功能 : P1.0用來控制LED的亮滅,軟件延時50000,來翻轉P1.0 *
        * *
        * MSP430F2274 *
        * ----------------- VCC 3.0v *
        * /| | XIN|- ___ *
        * | | XOUT|- | *
        * --|RST P1.2|-->LED-----| *
        * +--key-->|P1.3 P1.1|-->LED-----| *
        * |---key-->|P1.4 P1.0|-->LED-----| *
        * | ------------------- *
        * GND *
        * 作者 : Singel *
        * 時間 : 2008-10-11 16:36:00 *
        * 調試環境 : IAR For MSP430 Embedded Workbench v3.42A *
        ********************************************************************************/

        本文引用地址:http://www.104case.com/article/201611/316223.htm

        #include"msp430x22x4.h"
        unsigned char keybuffer;
        unsigned char scanflag;
        unsigned char TEMP_KEY;
        void Do_Without_PORT_Register( void )
        {
        P1IE = 0x00;
        P1IFG = 0x00;
        P1IE = 0x00;
        }

        void PORT_init( void )
        {
        P1DIR |= (BIT0+BIT1+BIT2);
        P1OUT |= (BIT0+BIT1+BIT2);
        P1DIR &=~ (BIT4+BIT3);
        P1IES &=~ (BIT4+BIT3);
        P1IE |= (BIT4+BIT3);
        P1IFG &=~ (BIT4+BIT3);
        }

        void key_procss ( void )
        {
        TEMP_KEY = TEMP_KEY&0X18;
        switch(TEMP_KEY)
        {
        case 0x10: P1OUT ^= BIT0+BIT1+BIT2;break;
        case 0x08: P1OUT ^= BIT0+BIT1+BIT2;break;
        }
        P1IE |= (BIT4+BIT3);
        }
        void main( void )
        {
        WDTCTL = WDTPW + WDTHOLD;
        BCSCTL1 = CALBC1_12MHZ;
        DCOCTL = CALBC1_12MHZ;
        Do_Without_PORT_Register();
        PORT_init();
        _BIS_SR(GIE+LPM4_bits);
        while(1)
        {
        if(scanflag)
        {
        scanflag = 0;
        key_procss();
        }
        _BIS_SR(GIE + LPM4_bits);

        }
        }
        #pragma vector = PORT1_VECTOR
        __interrupt void PORT1_ISR ( void )
        {
        _BIC_SR_IRQ(LPM4_bits);
        TEMP_KEY = P1IFG;
        scanflag = 1;
        P1IE &=~ (BIT4+BIT3);
        P1IFG &=~ (BIT4+BIT3);
        }



        關鍵詞: P1中斷操

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 浏阳市| 淮安市| 响水县| 安福县| 霍邱县| 叶城县| 高安市| 冷水江市| 台湾省| 井陉县| 东光县| 临安市| 福州市| 汉寿县| 泌阳县| 三亚市| 灵川县| 阳朔县| 当涂县| 建昌县| 开鲁县| 麟游县| 沙坪坝区| 禹州市| 广宁县| 泰兴市| 吴桥县| 浠水县| 大宁县| 从江县| 阳曲县| 博湖县| 来安县| 博罗县| 疏附县| 奉新县| 商城县| 咸宁市| 昭觉县| 凤庆县| 永川市|