#include <AT89x52.h><br />//#include <reg52.h><br />#define uchar unsigned char<br /><br />#define uint unsigned int<br />uchar data one_sec;<br />uint data time;<br />//sfr T2MOD=0XC9;<br />void delay(uint t)<br />{<br />IE=0; //禁止所有中断<br /> T2MOD=0X00;<br /> TCON=0; //所有中断标志清0<br /> T2CON=0x00;<br /> ET2=1; //允许T2中断<br /> TH2=-46080/256;<br /> TL2=-46080%256;<br /> RCAP2H=TH2;<br /> RCAP2L=TL2;<br /> one_sec=20;<br /> time=t;<br /> TR2=1; //启动T2定时<br /> EA=1; //CPU开中断<br /> while(time!=0);<br /> TR2=0;<br /> EA=0;<br />}<br /><br />void timer2(void) interrupt 5<br /> { TF2=0;<br /> one_sec--;<br /> if(one_sec==0)<br /> { one_sec=20;<br /> time--;<br /> }<br /> }<br /><br /> void main()<br /> {<br /> delay(1000);<br /> while(1);<br /> }<br /><br /><br />为什么退出来的时候time=0x00ff.太想不通了。 |
|