2560|0

103

帖子

3840

TA的资源

一粒金砂(高级)

楼主
 

msp430中断嵌套:“另类”的嵌套 [复制链接]

/*   定时:LFXT1CLK作为ALCK的时钟源,频率:32768HZ   */
#include  
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;
}

说明:此程序可用于验证“msp430中优先级低的中断是否能打断高优先级的中断”!
          首先我们可以查到:P1口的中断优先级比TIMERA0的要低。此程序main部分使led全灭,TA定时(>10s),产生中断,进入中断使P2.1的led亮,并且将维持一段时间,为了便于验证,我特意延时较长,差不多有5s。则有,led——亮,进入TA中断,led——灭,在main函数中。这时,我们只要在led刚亮的时候,按下按键触发P1口中断,导致led提前退出亮的状态,而点亮其他led,则证明P1中断打断了TA中断!否则,反之。

赞赏

1

查看全部赞赏

 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表