51单片机 ,定时器 工作方式2,是8位的 怎么给TH0和TL0赋初值? 如果是方式1的话就
51单片机,定时器工作方式2,是8位的怎么给TH0和TL0赋初值?如果是方式1的话就是16位的那么用TH0=(65536-初值)/256TL0=(65536-初值)%25...
51单片机 ,定时器 工作方式2,是8位的 怎么给TH0和TL0赋初值? 如果是方式1的话就是16位的 那么用TH0=(65536-初值)/256 TL0=(65536-初值)%256,那方式2 的话是TH0=(256-初值)/16 TL0=(256-初值)%16 ??????是这样的吗?方式2怎么赋初值
展开
推荐于2017-09-07 · 知道合伙人数码行家
关注
展开全部
不是你写的那样
机器周期 :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++;
}
机器周期 :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是8位定时器,所以TH0和TL0都=256-初值。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
方式2是8位自动重装的;TH0=TL0=256-初值,这样就可以了
追问
嗯 谢谢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
何必那么麻烦,下一个单片机小精灵,全搞定
追问
自己搞懂了比较靠谱吧~_~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询