編了一個(gè)1秒內(nèi)LED1閃10次的程序(12MHZ,STC89C52),編譯OK,但在實(shí)驗(yàn)板上運(yùn)行失敗,網(wǎng)友也幫忙寫(xiě)了個(gè)程序,結(jié)果也是失敗,F(xiàn)在將此程序貼上來(lái),請(qǐng)大家來(lái)一起來(lái)幫幫忙,指教指教,探討探討
題目要求:1秒內(nèi)LED1閃10次后停止(或是說(shuō)燈在1秒之內(nèi)只閃10次)
我寫(xiě)的:
程序分析:閃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;
}
}
當(dāng)以上程序運(yùn)行失敗之后,我在if(a==1)之前加了個(gè)while(1)將兩個(gè)if都放在了{(lán) }中,但結(jié)果仍然達(dá)不到題目要求:1秒鐘之內(nèi)LED1閃爍10次后停止。
網(wǎng)友的程序:
#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;
}
}
以上是網(wǎng)友的程序,大概是這樣吧,因?yàn)樗o我的資料沒(méi)帶在身邊 編譯OK,實(shí)驗(yàn)板上得不到題目要求的結(jié)果。
[此貼子已經(jīng)被作者于2010-10-12 18:56:49編輯過(guò)]
|