msp430中断嵌套

[复制链接]
3183|12
 楼主| specialfrin 发表于 2013-6-29 11:31 | 显示全部楼层 |阅读模式
#include  <msp430x14x.h>
void delay(unsigned int x)
{
  unsigned int i,j;
  for(i=x;i>0;i--)
     for(j=1000;j>0;j--);
}

void main(void)
{   
    WDTCTL = WDTPW + WDTHOLD;      
//TIMER_A相关设置
    CCTL0 = CCIE;                  
//    CCR0 = 2047;                    //设定周期0.5S
    CCR0=60000;
    TACTL = TASSEL_1 + ID_3 + MC_1; //定时器A的时钟源选择ACLK,增计数模式
    P2DIR |=0xff;                   //设置P2方向为输出
    P1DIR=0X00;
    P1IES=0xff;
    P1IE=0XFF;
    _EINT();                        //使能全局中断   
    while(1)
    {
      P2OUT=0XFF;
    }
}

#pragma vector = TIMERA0_VECTOR
__interrupt void Timer_A (void)
{  
   _EINT();
   P2OUT=0XFD;
   delay(1000);
}

#pragma vector=PORT1_VECTOR
__interrupt void timer()
{
  unsigned char temp;
  if((P1IFG&0X0F)!=0X0F)
  {
    temp=P1IFG;
    switch(temp)
    {
    case 1 :P2OUT=0XEF;break;
    case 2  :P2OUT=0XDF;break;
    case 4  :P2OUT=0XBF;break;
    case 8  :P2OUT=0X7F;break;
    }
  }
  delay(100);
  P1IFG=0X00;
}
 楼主| specialfrin 发表于 2013-6-29 11:31 | 显示全部楼层
此程序可用于验证“msp430中优先级低的中断是否能打断高优先级的中断”!
          首先我们可以查到:P1口的中断优先级比TIMERA0的要低。此程序main部分使led全灭,TA定时(>10s),产生中断,进入中断使P2.1的led亮,并且将维持一段时间,为了便于验证,我特意延时较长,差不多有5s。则有,led——亮,进入TA中断,led——灭,在main函数中。这时,我们只要在led刚亮的时候,按下按键触发P1口中断,导致led提前退出亮的状态,而点亮其他led,则证明P1中断打断了TA中断!否则,反之。
someontime 发表于 2013-6-29 11:37 | 显示全部楼层
这个中断很另类啊
haidixibahe 发表于 2013-6-29 12:14 | 显示全部楼层
这个中断不一般那
chao11yue 发表于 2013-6-29 12:24 | 显示全部楼层
学习了
engtafanzhuan 发表于 2013-6-30 00:22 | 显示全部楼层
又学了一招 呵呵
xichengmadia 发表于 2013-6-30 00:38 | 显示全部楼层
这种中断很少见的 厉害
beiwaroad 发表于 2013-6-30 00:44 | 显示全部楼层
原来还可以这样啊
taihezhibanh 发表于 2013-6-30 00:57 | 显示全部楼层
学习了 呵呵
木子不二 发表于 2013-7-5 23:48 | 显示全部楼层
顶一下哈
ok2879121 发表于 2013-7-8 22:12 | 显示全部楼层
MSP430的中断就这样啊,中断优先级是死了,并且在中断中打开总中断,可以响应低优先级的中断。中断优先级的区分只在几个中断同时来的时候区分。用MSP430一般我不嵌套,麻烦!
hkcj 发表于 2013-7-9 18:45 | 显示全部楼层
很不错额   顶一个   有时间好好消化消化   不错
hkcj 发表于 2013-7-9 18:45 | 显示全部楼层
希望楼主  能多共享一些这样的资料   顶一个
您需要登录后才可以回帖 登录 | 注册

本版积分规则

61

主题

1057

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部