新闻  |   论坛  |   博客  |   在线研讨会
msp430单片机IO中断代码,欢迎测试
ChrisHardy | 2012-06-24 17:11:00    阅读:83392   发布文章

//我之前在网上找了一些代码,写的都不太具体,于是我决定自己写一段…… //******************************************************************************* // MSP-FET430P140 Demo - Software Toggle P2 when P1 IO interrupt Is Enabled // // Description: P1设置为IO使能中断,8路IO针对8路LED小灯闪烁,观察IO中断的工作原理; // // ACLK= n/a, MCLK= SMCLK= default DCO ~800k // // MSP430F149 // ----------------- // /|\| XIN|- // | | | // --|RST XOUT|- // | | // 1--0 --|P1.x P2.x |--LED 1 or 0 // // Chris Hardy // Hurbust edu. // 2012 6 24 // Built with IAR Embedded Workbench Version: 5.10A //****************************************************************************** #include unsigned char ISR_flag; void InitIO(void); void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer InitIO(); _EINT(); //开总中断 while(1) { LPM3;//进入睡眠模式 switch(ISR_flag) { case BIT0: P2OUT ^= BIT0; break; case BIT1: P2OUT ^= BIT1; break; case BIT2: P2OUT ^= BIT2; break; case BIT3: P2OUT ^= BIT3; break; case BIT4: P2OUT ^= BIT4; break; case BIT5: P2OUT ^= BIT5; break; case BIT6: P2OUT ^= BIT6; break; case BIT7: P2OUT ^= BIT7; break; } // Toggle P2 using exclusive-OR } } #pragma vector=PORT1_VECTOR __interrupt void P1_ISR(void) { ISR_flag =P1IFG; //读取中断标志位 P1IFG=0;//多源中断,需靠软件清除P1IFG _BIC_SR_IRQ(LPM3_bits); //将CPU从睡眠模式唤醒 } void InitIO(void) { P1DIR &=~0xff;//set P1 to input direction P1IES |= 0xff;//set P1 1--0 to set the flag P1IE |= 0xff;//enable P1.0 interrupt P1IFG = 0; P2DIR |= 0xff; // Set P2.0 to output direction P2OUT = 0xff;//all LED off }

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
jobs  2012-06-24 20:36:30 

楼主您的代码,看起来的难度实在太大了

一直很努力!
最近文章
思考实践之道
2012-06-02 13:00:28
爱在自控前
2012-01-02 09:06:20
推荐文章
最近访客