群星之泉 2022-04-11 09:49 采纳率: 0%
浏览 162

单片机程序执行中断后卡死,是哪里有问题啊?

为什么执行中断不能返回啊,是一个计算器的程序,显示数字

/* Main.c file generated by New Project wizard
 *
 * Created:   周二 4月 5 2022
 * Processor: MSP430F249
 * Compiler:  GCC for MSP430
 */

 

#include <MSP430.h>
#define CPU_F ((double)8000000)   //外部高频晶振8MHZ
//#define CPU_F ((double)32768)   //外部低频晶振32.768KHZ
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) 
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
 #pragma vector = PORT1_VECTOR
__interrupt void Port_1(void) 
{
    delay_ms(20);                         //延时100ms
    unsigned char t1; 
    unsigned char t2; 
    unsigned char t; 
    t1=P1IN &  0x0F;
    P1DIR = 0X0F;
    P1OUT = 0;
    t2 =(P1IN & 0XF0);
    t = t1|t2;
    switch(t){
    case 0b01111101:P4OUT=0;break;
    case 0b10111110:P4OUT=1;break;
    case 0b10111101:P4OUT=2;break;
    case 0b10111011:P4OUT=3;break;
    case 0b11011110:P4OUT=4;break;
    case 0b11011101:P4OUT=5;break;
    case 0b11011011:P4OUT=6;break;
    case 0b11101110:P4OUT=7;break;
    case 0b11101101:P4OUT=8;break;
    case 0b11101011:P4OUT=9;break;
    default: P4OUT=0X0F;
}
}
int main (void)
 { 
    WDTCTL = WDTPW | WDTHOLD ;
    while(1){
    P4DIR =0X0F;
    P4OUT=0XFF;
    P1DIR= 0XF0;
    P1OUT =0X0F;
    P1IE =0X0F;
    P1IES =0X0F;
    P1IFG =0X00;
    _BIS_SR (LPM3_bits +GIE);
    _EINT();                               //使能中断  
    delay_ms(100);                         //延时100ms
    }
   return 0;
}   

  • 写回答

1条回答 默认 最新

  • Franklin 博客专家认证 2022-08-04 12:59
    关注

    能进断点程序吗?如果可以进断点程序,那么就是前面的断点里面延时的问题。
    如果不能进入断点,那么就是断点的入口配置问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 4月11日

悬赏问题

  • ¥50 汇编语言除法溢出问题
  • ¥65 C++实现删除N个数据列表共有的元素
  • ¥15 Visual Studio问题
  • ¥15 state显示变量是字符串形式,但是仍然红色,无法引用,并显示类型不匹配
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗