#include <reg51.h>
void delay(unsigned int i)
{
TMOD=0x01;
IE=0x00;
TR0=1;
while(i!=0)
{
TH0=0xee;
TL0=0x00; //设定计数脉冲为4608次
while(TF0!=1);
TF0=0;
i--;
}
TR0=0;
}
void main()
{
for(;;)
{
P1=0x00;
delay(100);
P1=0xff;
delay(100);
}
}
TL0=0x00设定计数的脉冲是多少?是如何得出来的???
还有while(TF0!=1);
TF0=0;这两行该如何理解?能详细的说明一下吗?
小弟是菜鸟,请大虾多多赐教!谢谢了!
你用的模式1,脉冲次数为2^16减去你在TH0和TL0组成的16位二进制数的值,因为51是加法计数
然后你采用的查询方式,TF0=1,说明计数溢出,已经有了设计次数的脉冲输入,或是计时结束,while(TF0!=1);是说计数没有完成,程序就不走,完成后将溢出标志TF0手动设为0,等待下一次计数完成产生溢出追问
然后你采用的查询方式,TF0=1,说明计数溢出,已经有了设计次数的脉冲输入,或是计时结束,while(TF0!=1);是说计数没有完成,程序就不走,完成后将溢出标志TF0手动设为0,等待下一次计数完成产生溢出追问
TH0=0xee;
TL0=0x00;
这里为什么要用两个不同的定时器/计数器???
这不时两个不同的,是一个的高8位和低8位,因为51里数据都是8位的,所以一个16位的数用两个8位的来表示
温馨提示:答案为网友推荐,仅供参考
第1个回答 2011-11-25
给你发个产品的真实程序,控制交流滑差电机,既检测控制速度,又检测实际速度单片机仿真实例,包括仿真图 和 源码 搜 5d6d 和 proteus 2个关键词