最近做了一個小的項目,寫了一段程序,編譯沒有錯,但是在用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;
}
}