本帖最后由 dongyumin 于 2013-8-6 15:53 编辑
各位前辈们,大家好,我是初学
单片机,刚学到定时这用定时器1工作在方式1产生1S定时,然后LED取反,闪烁,,反反复复搞了好多次就是不知道错误在哪,身边又没有人能解答的,麻烦各位不吝赐教,到底哪里有问题,感激不尽。
#include<stc89c54rd+.h>
unsigned char i;
sbit led=P1^0;
void main()
{
TMOD=0x01;
TR1=1;
TH1=0x0B;
TL1=0x7F;
EA=1;
ET1=1;
while(1);
} //初始化
void
timer1()interrupt 5
{
TF1=0;
TH1=0x0B;
TL1=0x7F;
i++;
if(i==50) //定时0.02S*50
{
i=0;
led=~led;
}
}
一段一段来吧。
void main()
{
TMOD=0x01;
TR1=1;
TH1=0x0B;
TL1=0x7F;
EA=1;
ET1=1;
以上这段,TMOD设置,高4位是设置定时器1,低四位是设置定时器0.上面TMOD=0x10吧。
void timer1()interrupt 5
{
TF1=0;
TH1=0x0B;
TL1=0x7F;
i++;
if(i==50) //定时0.02S*50
{
i=0;
led=~led;
}
}
这一段,void timer1()interrupt 5 这里,interrupt x 这个x的数字在stc单片机中,只有0-4,分别代表外部中断0,定时器0,外部中断1,定时器1,串行口。所以应该是void timer1()interrupt 3 才对。然后TF1=0这句,进入中断程序就会自动清零的,不用手动清零,当然,写了也没错。这样应该就差不多了。
一周热门 更多>