阅读:1544回复:4
55ms中断死机
请教高手:在dos下调用55ms中断,如果中断里的标志性变量较多(3,4个),当改变该变量时,就会死机
|
|
沙发#
发布于:2005-01-29 12:10
你的叙述也太不清楚了,让人不得不相信你遇到什么怪问题都是理所当然的。
|
|
板凳#
发布于:2005-01-29 12:57
什么标志性变量?
关建你的终端程序的执行时间是否超出55ms。 |
|
地板#
发布于: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中断,再打开就没问题了 |
|
地下室#
发布于:2005-02-01 19:22
这么说吧,就是在主程序执行过程中,如果想执行某项功能,就将某一变量设为1,在55ms中断中每隔1s执行一下该项功能,不需要时将该变量设为0。当然这种变量较多。55ms中断一直打开着。
后来我发现,在改变某一变量时,只要先关闭55ms中断,再打开就不会死机。而有时在主程序中改变某一变量时则不会死机 |
|