6873|12

195

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

关于msp430中断问题(为什么跳不进去) [复制链接]

 
为什么一直死在while里,已经开中断了,为什么不跳到中断里呢?
#include
#include
unsigned char table[]="LIUJINGHANG";
int main( void )
{
  WDTCTL = WDTPW + WDTHOLD;
  //lcd1602_init();
  //display2(0x80,table);
  adc12();
  pwm();
  while(1)
  {
  //Clock();
  //Display();
  ADC12CTL0 |= ADC12SC;
  }
}
adc12程序+中断
void adc12()   //adc12
{
  //WDTCTL = WDTPW + WDTHOLD;                               // Stop WDT
  ADC12CTL0 = ADC12SHT02 + ADC12ON + ADC12MSC+ADC12REF2_5V; // Sampling time, ADC12 on
  ADC12CTL1 = ADC12SHP+ADC12CONSEQ_3;                     // Use sampling timer
  ADC12IE = 0x01;                           // Enable interrupt
  ADC12CTL0 |= ADC12ENC;
  P6SEL |= BIT0;                            // P6.0 ADC option select
  P1DIR |= BIT0;                            // P1.0 output
  /*while (1)
  {
    ADC12CTL0 |= ADC12SC;                   // Start sampling/conversion

    __bis_SR_register(LPM0_bits + GIE);     // LPM0, ADC12_ISR will force exit
    __no_operation();                       // For debugger
  }*/
}



#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector = ADC12_VECTOR
__interrupt void ADC12_ISR(void)
#elif defined(__GNUC__)
void __attribute__ ((interrupt(ADC12_VECTOR))) ADC12_ISR (void)
#else
#error Compiler not supported!
#endif
{
  switch(__even_in_range(ADC12IV,34))
  {
  case  0: break;                           // Vector  0:  No interrupt
  case  2: break;                           // Vector  2:  ADC overflow
  case  4: break;                           // Vector  4:  ADC timing overflow
  case  6:                                  // Vector  6:  ADC12IFG0
    if (ADC12MEM0 >= 0x7ff)                 // ADC12MEM = A0 > 0.5AVcc?
      //ADC12MEM0=ADC12MEM0+PIDCalc(ADC12MEM0,NextPoint);//误差较小 PID 调节稳住
      //if(ADC12MEM0>=0x500)
      //ADC12MEM0=0x500; //限制 PWM 占空比     
      P1OUT |= BIT0;                        // P1.0 = 1
    else
      P1OUT &= ~BIT0;                       // P1.0 = 0

    __bic_SR_register_on_exit(LPM0_bits);   // Exit active CPU
  case  8: break;                           // Vector  8:  ADC12IFG1
  case 10: break;                           // Vector 10:  ADC12IFG2
  case 12: break;                           // Vector 12:  ADC12IFG3
  case 14: break;                           // Vector 14:  ADC12IFG4
  case 16: break;                           // Vector 16:  ADC12IFG5
  case 18: break;                           // Vector 18:  ADC12IFG6
  case 20: break;                           // Vector 20:  ADC12IFG7
  case 22: break;                           // Vector 22:  ADC12IFG8
  case 24: break;                           // Vector 24:  ADC12IFG9
  case 26: break;                           // Vector 26:  ADC12IFG10
  case 28: break;                           // Vector 28:  ADC12IFG11
  case 30: break;                           // Vector 30:  ADC12IFG12
  case 32: break;                           // Vector 32:  ADC12IFG13
  case 34: break;                           // Vector 34:  ADC12IFG14
  default: break;
  }

}

此帖出自单片机论坛

最新回复

你以为的未必如你以为的那样,初学者什么错误都可能犯,包括那些非常低级的错误,所以先去好好检查吧。第一件事是确认程序编译正确、下载正确,然后才是设置问题。  详情 回复 发表于 2017-7-27 17:31
点赞 关注
 

回复
举报

1059

帖子

1

TA的资源

版主

沙发
 
打开全局中断_EINT();
此帖出自单片机论坛

点评

我用iar运行的,加了总中断还是跳不进去  详情 回复 发表于 2017-7-27 15:23
 
 

回复

1万

帖子

141

TA的资源

版主

板凳
 
检查中断使能设置,包括总中断使能和用到的中断使能。
此帖出自单片机论坛

点评

都设置了。跳中断有什么语句吗?  详情 回复 发表于 2017-7-27 15:38
 
个人签名上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
 
 

回复

195

帖子

0

TA的资源

一粒金砂(中级)

4
 
qwerghf 发表于 2017-7-26 14:33
打开全局中断_EINT();

我用iar运行的,加了总中断还是跳不进去
此帖出自单片机论坛

点评

单步调试看看寄存器配置的对不对  详情 回复 发表于 2017-7-27 15:39
 
 
 

回复

195

帖子

0

TA的资源

一粒金砂(中级)

5
 
chunyang 发表于 2017-7-27 12:02
检查中断使能设置,包括总中断使能和用到的中断使能。

都设置了。跳中断有什么语句吗?
此帖出自单片机论坛

点评

中断是靠硬件实现的,你说呢?  详情 回复 发表于 2017-7-27 15:40
 
 
 

回复

195

帖子

0

TA的资源

一粒金砂(中级)

6
 
用iar软件,帮忙看看怎么能跳进去?搞不明白了

lcd1602.eww

223 Bytes, 下载次数: 0

此帖出自单片机论坛
 
 
 

回复

1059

帖子

1

TA的资源

版主

7
 
刘123 发表于 2017-7-27 15:23
我用iar运行的,加了总中断还是跳不进去

单步调试看看寄存器配置的对不对
此帖出自单片机论坛

点评

中断使能IE0=1 标志位IFG0=1 中断向量IV=06h,总中断GIE=1,应该没毛病吧  详情 回复 发表于 2017-7-27 15:56
 
 
 

回复

1万

帖子

141

TA的资源

版主

8
 
刘123 发表于 2017-7-27 15:38
都设置了。跳中断有什么语句吗?

中断是靠硬件实现的,你说呢?
此帖出自单片机论坛

点评

中断是在while之前 还是在while里跳?  详情 回复 发表于 2017-7-27 15:57
 
个人签名上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
 
 

回复

195

帖子

0

TA的资源

一粒金砂(中级)

9
 
qwerghf 发表于 2017-7-27 15:39
单步调试看看寄存器配置的对不对

中断使能IE0=1   标志位IFG0=1   中断向量IV=06h,总中断GIE=1,应该没毛病吧
此帖出自单片机论坛
 
 
 

回复

195

帖子

0

TA的资源

一粒金砂(中级)

10
 
chunyang 发表于 2017-7-27 15:40
中断是靠硬件实现的,你说呢?

中断是在while之前   还是在while里跳?
此帖出自单片机论坛

点评

中断请求发生时,如果中断允许已使能,那么在执行完当前正在执行的那条指令后立刻跳转到中断服务程序的入口,待中断服务程序执行完成之后,再跳转到进入中断前执行的那条指令的下一条指令处继续运行。这是计算机原理  详情 回复 发表于 2017-7-27 16:29
 
 
 

回复

1万

帖子

141

TA的资源

版主

11
 
刘123 发表于 2017-7-27 15:57
中断是在while之前   还是在while里跳?

中断请求发生时,如果中断允许已使能,那么在执行完当前正在执行的那条指令后立刻跳转到中断服务程序的入口,待中断服务程序执行完成之后,再跳转到进入中断前执行的那条指令的下一条指令处继续运行。这是计算机原理的基本常识之一,不应该不知道。
此帖出自单片机论坛

点评

你说的我都设置了 ,那不应该调不进去啊  详情 回复 发表于 2017-7-27 16:47
 
个人签名上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
 
 

回复

195

帖子

0

TA的资源

一粒金砂(中级)

12
 
chunyang 发表于 2017-7-27 16:29
中断请求发生时,如果中断允许已使能,那么在执行完当前正在执行的那条指令后立刻跳转到中断服务程序的入 ...

你说的我都设置了  ,那不应该调不进去啊
此帖出自单片机论坛

点评

你以为的未必如你以为的那样,初学者什么错误都可能犯,包括那些非常低级的错误,所以先去好好检查吧。第一件事是确认程序编译正确、下载正确,然后才是设置问题。  详情 回复 发表于 2017-7-27 17:31
 
 
 

回复

1万

帖子

141

TA的资源

版主

13
 
刘123 发表于 2017-7-27 16:47
你说的我都设置了  ,那不应该调不进去啊

你以为的未必如你以为的那样,初学者什么错误都可能犯,包括那些非常低级的错误,所以先去好好检查吧。第一件事是确认程序编译正确、下载正确,然后才是设置问题。
此帖出自单片机论坛
 
个人签名上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表