原创 MSP430中断服务函数的定义

2010-12-4 09:52 6459 8 9 分类: MCU/ 嵌入式

//为了保证代码可以在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和开中断
}

//定时器A 中断服务程序区
//当IAR编译器版本大于或等于2.0以上时,则中断写法格式如下。
#pragma vector=TIMERA0_VECTOR        //定时器A0中断向量
__interrupt void Timer_A (void)                  //中断函数
 {
   P1OUT ^= 0x01;                                          //P1.0取反输出
   CCR0 += 50000;                                        //重新载入CCR0捕获/比较数据寄存器数据
 }

//程序结束
//**************************************************************************
PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户377235 2012-11-23 11:53

very good!! Thank you very much!!!
相关推荐阅读
用户174417 2010-12-04 09:54
利用MSP430定时器A测量脉冲宽度
1、程序描述     利用MSP430单片机定时器A和捕获/比较功能模块结合使用,实现脉冲宽度的测量。     本例程用到了定时器A的CCI1A端口(例如MSP430F14X的P1.2引脚)作捕获外部...
用户174417 2010-12-04 09:33
事无巨细——MSP430学习之时钟
        很久没有没来EDN了,可能是之前比较忙的缘故,大约半年的时间了。然而现在自己也由一个在校学生的角色转变为嵌入式研发工程师(呵呵,只是一个称呼,多少水平自己清楚着呢)。所以我想以后会多些...
用户174417 2010-05-07 16:42
TI DSP USB2.0仿真器(自制)
TI DSP USB2.0仿真器自制资料:原理图CPLD配置:JTAG.V程序:module JTAG(TRST,rdy,pa0,pa1,pa2,led,rdyout,JTAG_VCC,INT_899...
用户174417 2010-05-07 16:15
一种用STM21F103实现的PLC
这个想法最初是在STM32的2009年全国巡回研讨会的资料上看到的。至从看到以后一直有自己动手搞一台PLC的念头。最终还是经受不了诱惑也就是这幅图片了。原资料是一个PDF上传一下静下心来,先前是查阅了...
用户174417 2010-05-07 15:52
LM317电源
前不久在搞大功率LED驱动问题,本想使用LM317提供恒流来驱动LED的后来发现功耗有点大,没办法只好换掉采用了SN3350来驱动,效果还不错。那LM317拿来做什么呢,呵呵。搞台简单的电源:电路图很...
EE直播间
更多
我要评论
1
8
关闭 站长推荐上一条 /3 下一条