51单片机 ,定时器 工作方式2,是8位的 怎么给TH0和TL0赋初值? 如果是方式1的话就

2024-11-22 08:11:47
推荐回答(4个)
回答1:

不是你写的那样
机晌厅器周期 :Tcy 定时器产生一次中断的时间为宴告隐 : t 计算友侍的个数 ; N= t/Tcy 晶振12的好计算11.0592的要换算
THx = 256 -N TLx = 256 - N;

Tcy = 12 * (1/11059200)=1.0851us;

以1秒计时为例 当计数250个数时 需要耗时 1.0851 * 250 = 271.275us

然后在计算需要溢出的次数对吧;1000000/271.275 = 3686;(以上是11.0592晶振 12的为4000自己算一下根据我给你的公式和步骤)

打个比方1秒吧
TMOD = 0x02;
TH0 = 6;
TLO = 6;
EA = 1;
ET0 = 1;
TR0 = 1;
while(1)
{
if(num == 3686)
{
num = 0;

led = ~led;

}

}

void TO_time()interrupt 1
{
num++;

}

回答2:

模式2是8位定时器,所以TH0和TL0都=256-初值。

回答3:

方式2是8位自动重装的;TH0=TL0=256-初值,这样就可以了

回答4:

何必那么麻烦,下一个单片机小精灵,全搞定