編了一個1秒內LED1閃10次的程序(12MHZ,STC89C52),編譯OK,但在實驗板上運行失敗,網友也幫忙寫了個程序,結果也是失敗。現在將此程序貼上來,請大家來一起來幫幫忙,指教指教,探討探討
題目要求:1秒內LED1閃10次后停止(或是說燈在1秒之內只閃10次)
我寫的:
程序分析:閃10次即亮10次滅10次,共20次,1S/20=50MS每次。
#include<reg52.h>
#define uchar unsigned char
sbit P1_4=P1^4;
sbit LED1=P0^0;
uchar a;
void main()
{
P1_4=0;
a=0;
TMOD=0X01;
TH0=0X3C;
TL0=0Xb0;
EA=1;
ET0=1;
TR0=1;
while(1);
}
void time0() interrupt 1
{
TH0=0X3c;
HL0=0Xb0;
a++;
if(a==1)
{
a=0;
LED1=~LED1;
}
if(a==20)
{
TR0=0;
}
}
當以上程序運行失敗之后,我在if(a==1)之前加了個while(1)將兩個if都放在了{ }中,但結果仍然達不到題目要求:1秒鐘之內LED1閃爍10次后停止。
網友的程序:
#include<reg52.h>
#define uchar unsigned char
sbit P1_4=P1^4;
sbit LED1=P0^0;
uchar a,b;
void main()
{
P1_4=0;
a=0;
b=0;
TMOD=0X01;
TH0=0X3C;
TL0=0Xb0;
EA=1;
ET0=1;
TR0=1;
while(1);
}
void time0() interrupt 1
{
TH0=0X3c;
HL0=0Xb0;
a++;
if(a==1)
{
a=0;
}
for(b=0;b<=10;b++)
{
LED1=~LED1;
}
}
以上是網友的程序,大概是這樣吧,因為他給我的資料沒帶在身邊 編譯OK,實驗板上得不到題目要求的結果。
[此貼子已經被作者于2010-10-12 18:56:49編輯過]
|