51单片机f=12MHz,用定时器T0,工作方式1,中断方式工作,从P1.0输出周期为1s的方波,让发光二极管以1Hz闪烁

#include <reg52.h>
sbit LED1=P1^0;
unsigned int t=0;
void main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
TR0=1;
EA=1;
while (1)
{

}
}
void time0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t++;
if(t==20)
{
t=0;
LED1=0;
}
else
{
LED1=1;
t=0;
}
}
求教代码哪里有错?单片机是郭天祥的TX-1C

程序最后 一段

else
{
LED1=1;
t = 0;

}
这部分中的t = 0 ;多余了。每次定时器中断进来的时候t不等20就会执行else ,然后t被清零,这样t就一直不可能等于20了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-08-14
#include <reg52.h>
sbit LED1=P1^0;
unsigned int t=0;
void main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
TR0=1;
EA=1;
while (1)
{

}
}
void time0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t++;
if(t==20)
{
t=0;
LED1=~LED1;
}
}

改下就行了,我给你改好了。
相似回答