近期关于当定时计数器工作在方式0模式时,TH0和TL0的初值如何确定?的讨论热度持续攀升,我们通过多方渠道收集整理了相关资讯 ,并进行了系统化的梳理。若这些内容恰好能为您提供参考,将是我们最大的荣幸 。
初值X可以这样计算:X=M-计数值。
单片机在不同的工作方式下,计数器的位数不同,因而最大计数值也不同.现在设最大计数值为M,那么在各方式下的M值如下:
1 、方式0:M=2^13=8192。
2、方式1:M=2^16=65536 。
3、方式2:M=2^8=256。
4 、方式3:定时器0分为两个8为定时器,所以两个M均为256。
5、因为定时器是做加1计数,并在计满溢出时产生中断,因此初值X可以这样计算:
6、X=M-计数值 。
7 、现在举例说明定时处置的计算方法,若80C51主频为6MHz,要求产生1ms的定时,计算初值.。
8、在6MHz的主频下,计数器每加1所需的时间是2uS.若果要产生1ms的计时就需要“加1” 500次.那么500即为计数值,如果要求在方式1下工作,则计数初值X=M-计数值=65536-500=65036=FE0CH。
单片机定时器设初值的问题,谢谢!
51单片机定时器初值计算:
void main(void)
{
s1=1;
TMOD=0x01; //使用定时器T0的模式1
TH0=(65536-46083)/256; //定时器T0的高8位设置初值
TL0=(65536-46083)%256; //定时器T0的低8位设置初值
函数功能:定时器T0的中断服务函数
void Time0(void ) interrupt 1 using 0 //定时器T0的中断编号为1 ,使用第1组工作寄存器
{
count++; //每产生1次中断,中断累计次数加1
if(count==20) //如果中断次数计满20次
count=0; //中断累计次数清0
s++; //秒加1
定时器初值 46083 是怎么计算出来的? 一般我们如用 AT892051的话 定时50MS 就是 TH0=(65536-50000)/256 。使用的12M晶体 ,20次为1S。
扩展资料:
使用说明
以12M晶振为例:每秒钟可以执行1000000次机器周期个机器周期。而T 每次溢出最多65536 个机器周期。我们尽量应该让溢出中断的次数最少(如50ms) ,这样对主程序的干扰也就最小 。
开发的时候可能会根据需要更换不同频率的晶振(比如c51单片机,用11.0592M的晶振,很适合产生串口时钟 ,而12M晶振很方便计算定时器的时间),使用插接式比较方便。
对12MHz 1个机器周期 1us 12/fosc = 1us,方式0 13位定时器最大时间间隔 = 2^13 = 8.192ms,方式1 16位定时器最大时间间隔 = 2^16 = 65.536ms ,方式2 8位定时器最大时间间隔 = 2^8 = 0.256ms =256 us。
定时5ms,计算计时器初值 M = 2^K-X*Fosc/12 12MHz 。方式0: K=13,X=5ms ,Fosc=12MHz 则 M = 2^13 - 5*10^(-3)*12*10^6/12= 3192 = 0x0C78。
THx = 0CH,TLx = 78H,方式1: K=16 ,X=5ms,Fosc=12MHz 则 M = 2^16 - 5*10^(-3)*12*10^6/12= 60536 = 0xEC78。
THx = ECH,TLx = 78H ,50ms 12MHz THx = 3CH,TLx = B0H,10ms THx = D8H ,TLx = F0H 。
已知单片机系统晶振频率为 6MHz,若要求定时值为10ms时,定时器T0工作在方式1时,TH0 = ? TL0 = ?
TH0 = 0x0EC;
TL0 = 0x78;
不要死记公式 ,记着定时器的溢出速率有关,晶振频率不同,定时器溢出速率也不同
假设t0工作于方式1(16位最大65535)那么定时时间=(65536-X)再乘以机器周期(12m晶振时为1us)
例如定时50000us(既50ms)(晶振12m ,机器周期1us)
首先在主函数或初始化函数中写入(就是在运行定时中断函数之前运行)
TMOD=0X01;//T0工作于定时模式,方式1
TH0=(65536-50000)/256;//给定时器高8位赋值,其中50000就是定时机器周期
TL0=(65536-50000)%256;//给定时器高8位赋值
EA=ET0=TR0=1;//开总中断 ,开定时中断,启动定时器。
然后定时器开始工作。
定时中断函数
void timer0() interrupt 1
{
TH0=(65536-50000)/256;//重新赋值
TL0=(65536-50000)%256;
关于当定时计数器工作在方式0模式时,TH0和TL0的初值如何确定?的相关内容介绍到此告一段落,若这些信息对您有所启发 ,欢迎持续关注本站获取更多优质内容 。
本文来自作者[wangyingdangjiaoman]投稿,不代表屠杀号立场,如若转载,请注明出处:https://tsja.com.cn/toutiao/403.html
评论列表(3条)
我是屠杀号的签约作者“wangyingdangjiaoman”
本文概览:近期关于当定时计数器工作在方式0模式时,TH0和TL0的初值如何确定?的讨论热度持续攀升,我们通过多方渠道收集整理了相关资讯,并进行了系统化的梳理。若这些内容恰好能为您提供参考...
文章不错《当定时计数器工作在方式0模式时,TH0和TL0的初值如何确定-》内容很有帮助