这是代码:#include <reg51.h>unsigned char count=0;
void main()
{
TMOD|=0x01;
TH0=0x3c; //给一个初值;计数满了就使TF0=1;
TL0=0xb0;
TR0=1;
while(1)
{
TH0=0x3c; //问题在这里:我的理解是进入了循环之后又开始计数,因为还没记满, TL0=0xb0; 往后执行代码, TF==1执行下面语句,完了循环回来;
if(TF0==1) 重点来了:定时又重新从初值开始计,上次并没有记满所以TF0==1
{ 还是初值时那次,TF0依然等于初值那次;然后依然会执行下面语句,直到
count++; 20次;会一 亮一闪; //谁能详细解答哈,虽然黑简单,谢谢;
TF0=0;
if(count==20)
{
count=0;
P2=~P2;
}
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
#include <reg51.h>
unsigned char count=0;
void main()
{
TMOD|=0x01;
TH0=0x3c; //给一个初值;计数满了50ms就使TF0=1;
TL0=0xb0;
TR0=1;
while(1)
{
// TH0=0x3c; //问题在这里:我的理解是进入了循环之后又开始计数,因为还没记满,
// TL0=0xb0; //往后执行代码, TF==1执行下面语句,完了循环回来;
if(TF0==1) //重点来了:定时又重新从初值开始计,上次并没有记满所以TF0==1
{ //还是初值时那次,TF0依然等于初值那次;然后依然会执行下面语句,直到
count++; //20次;会一 亮一闪; //谁能详细解答哈,虽然黑简单,谢谢;
TH0=0x3c;
TL0=0xb0;
TF0=0;
if(count==20)
{
count=0;
P2=~P2;
}
}
}
}
void main()
{
TMOD|=0x01;
TH0=0x3c;
TL0=0xb0;
TR0=1;
while(1)
{
if(TF0==1)
{ TH0=0x3c;
TL0=0xb0;
count++;
TF0=0;
if(count==20)
{
count=0;
P2=~P2;
}
}
}
一周热门 更多>