最近做了一個小的項目,寫了一段程序,編譯沒有錯,但是在用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; } }
[此貼子已經被作者于2010-5-4 14:06:49編輯過]
|