MSP430G2553(一)IO外部中断说明…

    xiaoxiao2021-03-25  221

    这一篇文章将说明MSP430G2553的IO中断配置,整个P1的IO都可以配置IO中断,但中断处理函数只有一个,MSP430和大多数MCU一样提供上升沿、下降沿选择。 在Launchpad上有按键S2,接在P1.3口,当按下后P1.3将接入高电平,从而触发中断。 所有寄存器的具体名称和地址,可以查看M430G2553 datasheet 第 21页中对于P1的寄存器定义 在实例代码中,配置了P1.3和P1.6的LED灯,当按下P1.3的按键产生中断,LED灯将切换点亮 1.按键的中断配置 要配置按键中断,需要先设置P1.3口为输入,并且设置上拉电阻以保障稳定性, P1DIR &= ~BIT3;//设置P1.3为输入   P1REN |= BIT3;//启用P1.3电阻 在启用电阻后,由P1OUT来配置下拉还是上拉   P1OUT |= BIT3;//设置上拉电阻 通过P1IES寄存器设置上升沿,0为下降沿   P1IES |= BIT3;//P1.3中断边缘选择 需要对P1的中断进行使能,除了这里还有总中断需要使能(在main函数中)   P1IE |= BIT3;//P1.3中断使能 ===================================================================== 2.中断处理函数 在中断处理函数中处理LED程序 编译器指示 #pragma vector=PORT1_VECTOR __interrupt void PORT1_ISR(void) {     delay(100);//约100ms     P1OUT ^= (1<<6);                  //反向P1.0和P1.6     P1OUT ^= (1<<0);     P1IFG = 0;//清除中断标识 } ===================================================================== 源代码: //P1.0---------Red Led //P1.3---------Button //P1.6---------Green Led #include "msp430g2553.h" //名称:delay(int time) //功能:延时程序 void delay(int time) {   static int i,j;       for(i=0;i       for(j=0;j<100;j++)       {       } } //名称:InitLed() //功能:初始化LED void InitLed() {   P1DIR |= BIT0+BIT6;//设置BIT0和BIT6为输出   P1OUT &= ~0x01; //设置BIT0和BIT6低电平   P1OUT |= 0x40; //设置BIT0和BIT6低电平 } //名称:InitIOInterrupt() //功能:初始化P1的按键中断配置 void InitIOInterrupt() {   P1DIR &= ~BIT3;//设置P1.3为输入   P1REN |= BIT3;//启用P1.3电阻   P1OUT |= BIT3;//设置上拉电阻   P1IES |= BIT3;//P1.3中断边缘选择   P1IE |= BIT3;//P1.3中断使能   P1IFG = 0x00;//清除中断标识 } //名称:PORT1_ISR(void) //功能:按键中断的处理函数 #pragma vector=PORT1_VECTOR __interrupt void PORT1_ISR(void) {     delay(100);//约100ms     P1OUT ^= (1<<6);     P1OUT ^= (1<<0);     P1IFG = 0;//清除中断标识 } int main( void ) {   WDTCTL = WDTPW + WDTHOLD;   InitLed();                                        //初始化LED端口   InitIOInterrupt();                        //初始化IO中断   _EINT();                                                //开总中断   while(1);   return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-331.html

    最新回复(0)