80C51单片机程序

#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,等待下一次计数完成产生溢出追问

TH0=0xee;
TL0=0x00;
这里为什么要用两个不同的定时器/计数器???

追答

这不时两个不同的,是一个的高8位和低8位,因为51里数据都是8位的,所以一个16位的数用两个8位的来表示

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-25
给你发个产品的真实程序,控制交流滑差电机,既检测控制速度,又检测实际速度单片机仿真实例,包括仿真图 和 源码 搜 5d6d 和 proteus 2个关键词

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网