| 
			 
					阅读:1655回复: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中断,再打开就不会死机。而有时在主程序中改变某一变量时则不会死机  | 
	|