[技术求助] 老是出现程序复位

[复制链接]
 楼主| 发表于 2019-11-9 09:06 | 显示全部楼层 |阅读模式
   我编了一个小程序,处理定时器下溢中断,为什么中断返回时,老是出现程序复位?
发表于 2019-11-9 09:09 | 显示全部楼层
楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因
 楼主| 发表于 2019-11-9 09:12 | 显示全部楼层

#include \"LF2407.H\"



void initial()                 //系统初始化程序

{

    asm(\" setc INTM\";

    *SCSR1=0x8104;

    *WDCR=0x0E8;

    *IMR=0x0002;

    *IFR=0x0FFFF;

    *MCRA=*MCRA&0x0FFFC;

    *PADATDIR=*PADATDIR|0x0301;   

}



void timer1()              //通用定时器1初始化程序

{  

   *T1CON=0x0802;

   *T1PR=0x4E20;

   *T1CNT=0x00;

   *EVAIMRA=*EVAIMRA|0x0100;

   *EVAIFRA=*EVAIFRA&0x0100;

}



void T1INT()                //定时器下溢中断处理程序

{ int flag;

   flag=*EVAIFRA&0x0100;

   if(flag!=0x0100)

   {

     asm(\" clrc INTM\";

     return;

   }   

   *T1CNT=0x00;

   *EVAIFRA=*EVAIFRA&0x0100;

   asm(\" clrc INTM\";

   return;

}



void main()                   //主程序

{ initial();

   timer1();

   asm(\" clrc INTM\");

   *T1CON=*T1CON|0x0040;

   while(1)

   {    }                        //等待中断

}   
发表于 2019-11-9 09:16 | 显示全部楼层

最好借助仿真器来调试.
发表于 2019-11-9 09:18 | 显示全部楼层

"中断返回时,老是出现程序复位", 很多时候由于堆栈设置不足引起
发表于 2019-11-9 09:24 | 显示全部楼层

由于中断函数和普通函数是不同的, 请用中断服务函数规范. 如:

void    interrupt    c_intimer() {}
发表于 2019-11-9 09:27 | 显示全部楼层

应该是程序跑飞了吧;
 楼主| 发表于 2019-11-9 09:30 | 显示全部楼层
嗯,预料中的结果,先结贴吧,多谢大家啦
您需要登录后才可以回帖 登录 | 注册

本版积分规则

950

主题

11568

帖子

6

粉丝
快速回复 返回顶部 返回列表