|
来帮你分析下程序的结构
void main()
{
uchar B1,B2,B3,B4,B5;
InitLCD();
TMOD=0x15; //定时器0工作于计数方式1,定时器1工作于定时方式1
TH0=0;
TL0=0;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256; //定时时间为10ms
TR0=1; //计数器0开始运行
TR1=1;
EA=1;
ET1=1;
ET0=1;
key();
while(h)
{
if(flag==1)
{
TR1=0;
flag=0;
frequency=(TH0*256+TL0)+0x00;
B1=(uint)frequency/10000;
B2=(uint)frequency%10000/1000;
B3=(uint)frequency%1000/100;
B4=(uint)frequency%100/10;
B5=(uint)frequency%10;
TH0=0;
TL0=0;
TH1=(65536-5000)/256;
TL1=(65536-5000)%256; //定时时间为5000个周期
TR0=1; //计数器0开始运行
TR1=1;
disp_hz(0,3,B1);
disp_hz(8,3,B2);
disp_hz(18,3,B3);
disp_hz(27,3,B4);
disp_hz(38,3,B5);
}
}
bx();
}
你的代码写的很乱,,,
对于嵌入式系统来说,程序是一个死循环.
所以必须有个WHILE(1)
void main()
{
uchar B1,B2,B3,B4,B5;
InitLCD();
TMOD=0x15; //定时器0工作于计数方式1,定时器1工作于定时方式1
TH0=0;
TL0=0;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256; //定时时间为10ms
TR0=1; //计数器0开始运行
TR1=1;
EA=1;
ET1=1;
ET0=1;
while(1)
{
key();
while(h)
{
if(flag==1)
{
TR1=0;
flag=0;
frequency=(TH0*256+TL0)+0x00;
B1=(uint)frequency/10000;
B2=(uint)frequency%10000/1000;
B3=(uint)frequency%1000/100;
B4=(uint)frequency%100/10;
B5=(uint)frequency%10;
TH0=0;
TL0=0;
TH1=(65536-5000)/256;
TL1=(65536-5000)%256; //定时时间为5000个周期
TR0=1; //计数器0开始运行
TR1=1;
disp_hz(0,3,B1);
disp_hz(8,3,B2);
disp_hz(18,3,B3);
disp_hz(27,3,B4);
disp_hz(38,3,B5);
}
}
bx();
}
}
至少是这样的的结构 |
|