//为了保证代码可以在IAR编译器的任何版本中都能正确得到编译,所以作以下的条件编译。
#ifdef __IAR_SYSTEMS_ICC__ //如果编译器是IAR, 那么以下将被编译。
#if __VER__ >= 200
#pragma vector=USART0RX_VECTOR //在IAR2.0以上中断函数声明。
__interrupt void SPI0_rx (void)
#else //在IAR2.0以下中断函数声明。
interrupt[USART0RX_VECTOR] void SPI0_rx (void)
#endif //IAR中断函数声明结束。
{ }
在上述中USART0RX_VECTOR 是定义中断地址宏,其实就是一个中断矢量值,例如,地址0xffe0
这个中断矢量有芯片型号决定,一旦信号确定,那么所有的终端矢量也就确定了。
SPI0_rx 是中断函数名称,使用者可以根据自己的喜好来编写这个函数名。
实际例程
//**************************************************************************
//例程描述:利用定时器定时功能,实现P1.0方波输出。
#include <msp430x14x.h>
{
WDTCTL = WDTPW + WDTHOLD; //停止看门狗WDT,不使用内部看门狗定时器。
P1DIR |= 0x01; //设置P1.0口方向为输出。
CCTL0 = CCIE; //设置捕获/比较控制寄存器中CCIE位为1,CCR0捕获/比较功能中断为允许。
CCR0 = 50000; //捕获/比较控制寄存器CCR0初值为5000。
TACTL = TASSEL_2 + MC_2; //设置定时器A控制寄存器TACTL,使时钟源选择为SMCLK辅助时钟。
_BIS_SR(LPM0_bits + GIE); //进入低功耗模式LPM0和开中断
}
用户377235 2012-11-23 11:53