lwj625
驱动牛犊
驱动牛犊
  • 注册日期2005-01-24
  • 最后登录2008-11-22
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望24点
  • 贡献值0点
  • 好评度22点
  • 原创分0分
  • 专家分0分
阅读:1500回复:4

55ms中断死机

楼主#
更多 发布于:2005-01-27 21:13
请教高手:在dos下调用55ms中断,如果中断里的标志性变量较多(3,4个),当改变该变量时,就会死机
steven__xu
驱动牛犊
驱动牛犊
  • 注册日期2004-08-24
  • 最后登录2013-09-03
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-01-29 12:10
你的叙述也太不清楚了,让人不得不相信你遇到什么怪问题都是理所当然的。
Gong_XG
驱动太牛
驱动太牛
  • 注册日期2002-10-01
  • 最后登录2010-11-25
  • 粉丝0
  • 关注0
  • 积分313分
  • 威望46点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-01-29 12:57
什么标志性变量?
关建你的终端程序的执行时间是否超出55ms。
lwj625
驱动牛犊
驱动牛犊
  • 注册日期2005-01-24
  • 最后登录2008-11-22
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望24点
  • 贡献值0点
  • 好评度22点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-02-01 19:12
在dos下,采用系统55ms中断实现1s定时,还有一些其他需要延时处理的功能.我设置了几个标志变量,当需要定时或延时时,设置该变量标志,可是在执行几个以后就会死机,请高手帮助帮助我吧!
void interrup 55ms(void)
{
static int time1s=0, mnltimes=0;

if(time1s_flag)
{
time1s++;
if(time1s>=18)
{
progressbar();
time1s=0;
}
}

mnltimes++;
if(mnltimes>9)
{
mnlflag=1;
mnltimes=0;
}

if(data_flag==1)
{
;;;;;;
}
..........
..........
..........
}
我的progressbar()函数大约执行0.5ms,当不需要的时候,我就设置time1s_flag=0,需要时设置为1,这时候就会死机,而设置data_flag变量就不会死机死机,当然还有其他一些需要设置的变量,有的也会死机,比如我在主程序中把mnlflag改为1时也会死机。但是这时候如果先关闭55ms中断,再打开就没问题了

lwj625
驱动牛犊
驱动牛犊
  • 注册日期2005-01-24
  • 最后登录2008-11-22
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望24点
  • 贡献值0点
  • 好评度22点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-02-01 19:22
这么说吧,就是在主程序执行过程中,如果想执行某项功能,就将某一变量设为1,在55ms中断中每隔1s执行一下该项功能,不需要时将该变量设为0。当然这种变量较多。55ms中断一直打开着。

后来我发现,在改变某一变量时,只要先关闭55ms中断,再打开就不会死机。而有时在主程序中改变某一变量时则不会死机
游客

返回顶部