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

MSP430中断c函数模板大全

发布时间:2020-06-20 发布时间:
|
端口1中断函数
 

多中断中断源:P1IFG.0~P1IFG7

 

进入中断后应首先判断中断源,退出中断前应清除中断标志,否则将再次引发中断

 

******************************************************************************/

 

#pragma vector=PORT1_VECTOR

 

__interrupt void Port1()

 

{

 

//以下为参考处理程序,不使用的端口应当删除其对于中断源的判断。

 

if((P1IFG&BIT0) == BIT0)

 

{

 

//处理P1IN.0中断

 

P1IFG &= ~BIT0; //清除中断标志

 

//以下填充用户代码

 
 

}

 

else if((P1IFG&BIT1) ==BIT1)

 

{

 

//处理P1IN.1中断

 

P1IFG &= ~BIT1; //清除中断标志

 

//以下填充用户代码

 
 

}

 

else if((P1IFG&BIT2) ==BIT2)

 

{

 

//处理P1IN.2中断

 

P1IFG &= ~BIT2; //清除中断标志

 

//以下填充用户代码

 
 

}

 

else if((P1IFG&BIT3) ==BIT3)

 

{

 

//处理P1IN.3中断

 

P1IFG &= ~BIT3; //清除中断标志

 

//以下填充用户代码

 
 

}

 

else if((P1IFG&BIT4) ==BIT4)

 

{

 

//处理P1IN.4中断

 

P1IFG &= ~BIT4; //清除中断标志

 

//以下填充用户代码

 
 

}

 

else if((P1IFG&BIT5) ==BIT5)

 

{

 

//处理P1IN.5中断

 

P1IFG &= ~BIT5; //清除中断标志

 

//以下填充用户代码

 
 

}

 

else if((P1IFG&BIT6) ==BIT6)

 

{

 

//处理P1IN.6中断

 

P1IFG &= ~BIT6; //清除中断标志

 

//以下填充用户代码

 
 

}

 

else

 

{

 

//处理P1IN.7中断

 

P1IFG &= ~BIT7; //清除中断标志

 

//以下填充用户代码

 
 

}

 
 

LPM3_EXIT; //退出中断后退出低功耗模式。若退出中断后要保留低功耗模式,将本句屏蔽

 

}

 
 

 

 

#pragma vector=TIMERA1_VECTOR

 

__interrupt void TimerA1()

 

{

 

//以下为参考处理程序,不使用的中断源应当删除

 

switch (__even_in_range(TAIV, 10))

 

{

 

case 2:

 

//捕获/比较1中断

 

//以下填充用户代码

 
 

break;

 

case 4:

 

//捕获/比较2中断

 

//以下填充用户代码

 
 

break;

 

case 10:

 

//TAIFG定时器溢出中断

 

//以下填充用户代码

 
 

break;

 

}

 
 
 

LPM3_EXIT; //退出中断后退出低功耗模式。若退出中断后要保留低功耗模式,将本句屏蔽

 

}

 
 

 

 

#pragma vector=TIMERA0_VECTOR

 

__interrupt void TimerA0()

 

{

 

//以下填充用户代码

 
 
 

LPM3_EXIT; //退出中断后退出低功耗模式。若退出中断后要保留低功耗模式,将本句屏蔽

 

}

 
 

 

 

#pragma vector=ADC_VECTOR

 

__interrupt void Adc()

 

{

 

//以下为参考处理程序,不使用的中断源应当删除

 

if((ADC12IFG&BIT0)==BIT0)

 

{

 

//通道0

 

//以下填充用户代码

 
 

}

 

else if((ADC12IFG&BIT1)==BIT1)

 

{

 

//通道1

 

//以下填充用户代码

 
 

}

 

else if((ADC12IFG&BIT2)==BIT2)

 

{

 

//通道2

 

//以下填充用户代码

 
 

}

 

else if((ADC12IFG&BIT3)==BIT3)

 

{

 

//通道3

 

//以下填充用户代码

 
 

}

 

else if((ADC12IFG&BIT4)==BIT4)

 

{

 

//通道4

 

//以下填充用户代码

 
 

}

 

else if((ADC12IFG&BIT5)==BIT5)

 

{

 

//通道5

 

//以下填充用户代码

 
 

}

 

else if((ADC12IFG&BIT6)==BIT6)

 

{

 

//通道6

 

//以下填充用户代码

 
 

}

 

else if((ADC12IFG&BIT7)==BIT7)

 

{

 

//通道7

 

//以下填充用户代码

 
 

}

 

else if((ADC12IFG&BIT8)==BIT8)

 

{

 

//VeREF+

 

//以下填充用户代码

 
 

}

 

else if((ADC12IFG&BIT9)==BIT9)

 

{

 

//VREF-/VeREF-

 

//以下填充用户代码

 
 

}

 

else if((ADC12IFG&BITA)==BITA)

 

{

 

//温度

 

//以下填充用户代码

 
 

}

 

else if((ADC12IFG&BITB)==BITB)

 

{

 

//(AVcc-AVss)/2

 

//以下填充用户代码

 
 

}

 
 

LPM3_EXIT; //退出中断后退出低功耗模式。若退出中断后要保留低功耗模式,将本句屏蔽

 

}

 
 

 [page]

 

#pragma vector=USART0TX_VECTOR

 

__interrupt void Usart0Tx()

 

{

 

//以下填充用户代码

 
 
 

LPM3_EXIT; //退出中断后退出低功耗模式。若退出中断后要保留低功耗模式,将本句屏蔽

 

}

 
 

 

 

#pragma vector=USART0RX_VECTOR

 

__interrupt void Usart0Rx()

 

{

 

//以下填充用户代码

 
 
 

LPM3_EXIT; //退出中断后退出低功耗模式。若退出中断后要保留低功耗模式,将本句屏蔽

 

}

 
 

 

 

#pragma vector=WDT_VECTOR

 

__interrupt void WatchDog()

 

{

 

//以下填充用户代码

 
 
 

LPM3_EXIT; //退出中断后退出低功耗模式。若退出中断后要保留低功耗模式,将本句屏蔽

 

}

 
 

 

 

#pragma vector=COMPARATORA_VECTOR

 

__interrupt void ComparatorA()

 

{

 

//以下填充用户代码

 
 
 

LPM3_EXIT; //退出中断后退出低功耗模式。若退出中断后要保留低功耗模式,将本句屏蔽

 

}

 
 

 

 

#pragma vector=TIMERB1_VECTOR

 

__interrupt void TimerB1()

 

{

 

//以下为参考处理程序,不使用的中断源应当删除

 

switch (__even_in_range(TBIV, 14))

 

{

 

case 2:

 

//捕获/比较1中断

 

//以下填充用户代码

 
 

break;

 

case 4:

 

//捕获/比较2中断

 

//以下填充用户代码

 
 

break;

 

case 6:

 

//捕获/比较3中断

 

//以下填充用户代码

 
 

break;

 

case 8:

 

//捕获/比较4中断

 

//以下填充用户代码

 
 

break;

 

case 10:

 

//捕获/比较5中断

 

//以下填充用户代码

 
 

break;

 

case 12:

 

//捕获/比较6中断

 

//以下填充用户代码

 
 

break;

 

case 14:

 

//TBIFG定时器溢出中断

 

//以下填充用户代码

 
 

break;

 

}

 
 

LPM3_EXIT; //退出中断后退出低功耗模式。若退出中断后要保留低功耗模式,将本句屏蔽

 

}

 
 

 

 

#pragma vector=TIMERB0_VECTOR

 

__interrupt void TimerB0()

 

{

 

//以下填充用户代码

 
 

LPM3_EXIT; //退出中断后退出低功耗模式。若退出中断后要保留低功耗模式,将本句屏蔽

 

}

 
 

 

 

#pragma vector=NMI_VECTOR

 

__interrupt void Nmi()

 

{

 

//以下为参考处理程序,不使用的中断源应当删除

 

if((IFG1&OFIFG)==OFIFG)

 

{

 

//振荡器失效

 

IFG1 &= ~OFIFG;

 

//以下填充用户代码

 
 

}

 

else if((IFG1&NMIIFG)==NMIIFG)

 

{

 

//RST/NMI不可屏蔽中断

 

IFG1 &= ~NMIIFG;

 

//以下填充用户代码

 
 

}

 

else //if((FCTL3&ACCVIFG)==ACCVIFG)

 

{

 

//存储器非法访问

 

FCTL3 &= ~ACCVIFG;

 

//以下填充用户代码

 
 

}

 
 

LPM3_EXIT; //退出中断后退出低功耗模式。若退出中断后要保留低功耗模式,将本句屏蔽

 

}

 
 

 

 

#pragma vector=BASICTIMER_VECTOR

 

__interrupt void BasTimer()

 

{

 

//以下填充用户代码

 
 

LPM3_EXIT; //退出中断后退出低功耗模式。若退出中断后要保留低功耗模式,将本句屏蔽

 
 

 

}




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

热门文章 更多
FPGA及CPLD应用领域不断拓展