×
嵌入式 > 技术百科 > 详情

P1 端口中断操作

发布时间:2020-06-15 发布时间:
|
/*******************************************************************************

* 功能   : 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     *
********************************************************************************/

#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);
    }

 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
物联传感与Atmel强强联手 达成智能家居战略合作协议