写了一段程序,编译没有错,但是在用keil进行仿真时,有的程序段直接跳过不执行了,百思不得其解!
#include<reg52.h> #define uchar unsigned char #define uint unsigned int sbit d_q=P1^1; sbit d_h=P1^0; sbit d_z=P1^3; sbit d_y=P1^2;
sbit feng=P2^0;
uchar dot,flag;
void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void init () { TMOD=0x05;// T0的方式1 TH0=0; TL0=0; TR0=1;//计数器0的设置
d_q=0; d_h=0; } main() { init (); while(1) { d_q=1; delay(5); d_q=0; delay(7); dot=TL0; if(dot>5) { TH0=0; TL0=0; } dot=TL0; if(dot==5) { //主要是从这儿开始的 TL0=0; d_q=0; d_h=0; d_z=0; d_y=0; feng=1; delay(600); feng=0; delay(600); feng=1; delay(600); feng=0; delay(600); feng=1; delay(600); // 后面在中断子程序里面的相同部分也是一样 feng=0; delay(2000); d_q=1; TL0=0; flag=0; } dot=TL0; if(dot==3&flag==0) { flag=1; feng=1; delay(600); feng=0; delay(4400); d_q=1; TL0=0; }
d_q=1; delay(8); d_q=0;
}
}
|