单片机中th1和tl1是干什么的?

作者&投稿:产仇 (若有异议请与网页底部的电邮联系)
单片机TH0 TL0和TH1 TL1有什么区别?是定时器0和定时器1的区别吗?~

TH0和TL0是控制定时/计数器T0的,TH1和TL1是针对T1的。也就是用TH0和TL0中的数来控制T0到底定时多久或计数多少再进入中断,TH1和TL1也一样。
至于定时器T0和T1的区别,其实使用上没有区别,只是很多时候要同时用上两个,比如定时的数只用TH0和TL0装不下,然后就要用两个定时器级联;
或者有时候要一边定时一边计数,那样T0和T1也要同时用到

直接赋值就可以了。
汇编:
MOV TH1,#HIGH 257
MOV TL1,#LOW 257
C语言:
TH1=257/256;
TL1=257%256;

从上面定时器/计数器的结构图中我们可以看出,16位的定时/计数器分别由两个8位专用寄存器组成,即:T0由TH0和TL0构成;T1由TH1和TL1 构成。其访问地址依次为8AH-8DH。每个寄存器均可单独访问。这些寄存器是用于存放定时或计数初值的。此外,其内部还有一个8位的定时器方式寄存器 TMOD和一个8位的定时控制寄存器TCON。这些寄存器之间是通过内部总线和控制逻辑电路连接起来的。TMOD主要是用于选定定时器的工作方式; TCON主要是用于控制定时器的启动停止,此外TCON还可以保存T0、T1的溢出和中断标志。当定时器工作在计数方式时,外部事件通过引脚T0 (P3.4)和T1(P3.5)输入。

定时计数器的原理:

当定时器/计数器为定时工作方式时,计数器的加1信号由振荡器的12分频信号产生,即每过一个机器周期,计数器加1,直至计满溢出为止。显然,定时器的定时时间与系统的振荡频率有关。因一个机器周期等于12个振荡周期,所以计数频率fcount=1/12osc。如果晶振为12MHz,则计数周期为:

T=1/(12×106)Hz×1/12=1μs

这是最短的定时周期。若要延长定时时间,则需要改变定时器的初值,并要适当选择定时器的长度(如8位、13位、16位等)。

当定时器/计数器为计数工作方式时,通过引脚T0和T1对外部信号计数,外部脉冲的下降沿将触发计数。计数器在每个机器周期的S5P2期间采样引脚输入电 平。若一个机器周期采样值为1,下一个机器周期采样值为0,则计数器加1。此后的机器周期S3P1期间,新的计数值装入计数器。所以检测一个由1至0的跳 变需要两个机器周期,故外部事年的最高计数频率为振荡频率的1/24。例如,如果选用12MHz晶振,则最高计数频率为0.5MHz。虽然对外部输入信号 的占空比无特殊要求,但为了确保某给定电平在变化前至少被采样一次,外部计数脉冲的高电平与低电平保持时间均需在一个机器周期以上。

当CPU用软件给定时器设置了某种工作方式之后,定时器就会按设定的工作方式独立运行,不再占用CPU的操作时间,除非定时器计满溢出,才可能中断CPU 当前操作。CPU也可以重新设置定时器工作方式,以改变定时器的操作。由此可见,定时器是单片机中效率高而且工作灵活的部件。

综上所述,我们已知定时器/计数器是一种可编程部件,所以在定时器/计数器开始工作之前,CPU必须将一些命令(称为控制字)写入定时/计数器。将控制字写入定时/计数器的过程叫定时器/计数器初始化。在初始化过程中,要将工作方式控制字写入方式寄存器,工作状态字(或相关位)写入控制寄存器,赋定时/计 数初值。下面我们就提出的控制字的格式及各位的主要功能与大家详细的讲解。

控制寄存器 定时器/计数器T0和T1有2个控制寄存器-TMOD和TCON,它们分别用来设置各个定时器/计数器的工作方式,选择定时或计数功能,控制启动运行,以及作为运行状态的标志等。其中,TCON寄存器中另有4位用于中断系统。



  1、TH1和TL1 分别指的是单片机中定时器1的Timer寄存器的高八位,低八位。

  2、定时器的核心部件是一个加法(也有减法)的计数器,其本质是对秒冲进行计数。

  只是计数脉冲来源不同:

  如果计数脉冲来自系统时钟,则为定时方式,此时定时器/计数器每12个时钟或者每1个时钟得到一个计数脉冲,计数值加1;

  如果计数脉冲来自单片机外部引脚(T0为P3.1,T1为P3.5),则为计数方式,每来一个脉冲加1。

  3、定时器1作为计数器时,TH1和TL1 保存计数值,当计数值到达最大时,可产生溢出标志位TF1。

  定时器1作为定时器时,先对TH1和TL1设置初值(可以控制溢出时间,达到定时的目的),然后对系统内部时钟进行计数,当溢出引起中断时,需在定时器1的中断服务函数中重新对TH1和TL1赋初值。



是定时器1的高字节和低字节,两个字节最大数是:65536(选十六位时),当要设定定时器的溢出率时,就要把计算的结果放到这两个寄存器里.

装载定时器1的定时数据
TH1装载定时数据的高位
TL1装载定时数据的低位

16位计数器,T0(TH0/TL0),T1(TH1/TL1)。


定时器1中, TH1和TL1各指的是什么?
1、TH1和TL1 分别指的是单片机中定时器1的Timer寄存器的高八位,低八位。2、定时器的核心部件是一个加法(也有减法)的计数器,其本质是对秒冲进行计数。只是计数脉冲来源不同:如果计数脉冲来自系统时钟,则为定时方式,此时定时器\/计数器每12个时钟或者每1个时钟得到一个计数脉冲,计数值加1;如果...

单片机的TH和TL应怎么理解和怎么用(C语言)?
TH,TL是定时中断中写初始值用的,定时器T0,T1定时中分别对应TH0\/TL0和TH1\/TL1,初始值是把需要定时的十进制时间写成单片机中16进制机器时间,当然并不是把十进制直接改成十六进制,机器周期时间不全相同,初始值可以根据自己的需要选用不同的算法,(比如需要产生1ms的方波,即500us的高电平,500us的...

单片机定时器初装,TH,TL高低八位的值,C语言的书上是以十进制,汇编里用...
TL1=(65536-50000)%256; \/\/把(65536-50000)这个初值的低八位取出来,放在TL1,用十六进制表示是0B0H 在c语言中,直接写 TH1 = 0X3C;TL1 = 0XB0;效果跟 TH1=(65536-50000)\/256;\/\/给计数寄存器赋值,50毫秒时间 TL1=(65536-50000)%256;一样的。区别在于一个人工算,直接赋值;一个交给单...

C51,单片机T1,串口编程(请问如何设置TH1,TL1初值)
TH1=FAH TL1=FAH 计算中你会发现除不尽,有小数点,被无情的舍去了,这样的话精度就无法保证,所以要调整你的16M,比如用11.0592M 18.432M等,波特率一般9600等常用波特率 保证计算的时候能除尽,这样精度就高,通讯出错的几率就低 另外我这有波特率计算器,需要的话留邮箱 ...

设置波特率的时候,给th1和tl1送的初值为什么一样?还有定时器1工作方 ...
现在你需要一分钟得基准时间。这里就用到自动重装,如果17秒可进50克沙,那我每次先放50克沙在瓶里面然后再开始装沙,那么瓶子满时时间刚好就是一分钟。TL1相当于为定时用,第一次肯定要放50克沙,即初值。TH1相当于重装值,TL1装满清零后自动装入TH1的值(50克沙)。

单片机 郭天祥的实验板,波特率9600 TL1=0xfd TH1=0xfd 怎么算的?_百 ...
根据这个公式计算一下就知道了,一般单片机的书的串口章节都有的,我自己计算过了,郭天祥的晶振是11.0592M的,再认真看看串口的知识吧 他串口使用的是模式1,

单片机定时器工作方式2的疑问
定时器工作在方式2的时候,存放定时初值的是TH1,也就是存放在高8位。当TL1计满溢出后,硬件会置中断标志位请求中断,并将TH1中的值自动送入TL1。TL1再次重初始值加1计数直到溢出。所以是楼主把存放初始值的寄存器搞错了。楼主这样子做,实际上定时间隔是不同的。第一次是从0xF3计数到0xFF;之后就...

TL0是几进制的?
TH 0和TL0都是单片机的8位定时器。TH 0中的H即为HIGH缩写,它是表示定时器高八位。TL 0中L即为LOW缩写,它所代表为低八位。单片机定时器的工作就是,当低八位定时器满溢后,向高八位进行进位。两个八位的TH 0和TL 0构成了单片机的16为定时\/计数器。

各位大牛,我想问:我把51单片机的定时器TO出于计数器模式,但是计数值的...
T0的计数值,是16位数。读出时,只能每次读出8位。需要读出两次。而T0的计数值,是动态的。先、后读出的,难保是同一个16位数字。为此,要读出一遍,再读出一遍。。。当,先后两次相同时,才能认为读出了同一个数,BREAK,退出读数的操作。高八位乘以256,加上低八位,就是合成为16位数。

单片机计数器的疑问,。
TH0 256 + TL0。=== 计数器的数值,不能一次性读出,只能分别读TH0、TL0。在读出其中一个时,另一个,可能正赶上进位,这样,读出的两个值,就是错误的。只有读两次,两次相等了,读出的,才是正确的当前计数值。while(1){ \/\/死循环 th1 = TH0;\/\/读出第一次 tl = TL0;\/\/读出另一个...

布拖县19124816672: 单片机中th1和tl1是干什么的? -
茶知杏丁: 从上面定时器/计数器的结构图中我们可以看出,16位的定时/计数器分别由两个8位专用寄存器组成,即:T0由TH0和TL0构成;T1由TH1和TL1 构成.其访问地址依次为8AH-8DH.每个寄存器均可单独访问.这些寄存器是用于存放定时或计数初...

布拖县19124816672: 单片机中这里表示什么意思:TH1=0xc3;TL1=0x50; -
茶知杏丁: 你这是51单片机吧,,51单片机有两个定时器,定时器0和定时器1,每个定时是16位的,,高八位是THX(X代表0或1, 0就代表定时器0,,1就代表定时器1),低八位是TLX,,两者一起刚好是16位,, 0XC3,,0X50就是把这两个值分别赋给TH1和TL1,,具体定时多长时间需要计算,懂了吗?

布拖县19124816672: 51单片机timer1的TH1和TL1 -
茶知杏丁: 直接赋值就可以了. 汇编: MOV TH1,#HIGH 257 MOV TL1,#LOW 257 C语言: TH1=257/256; TL1=257%256;

布拖县19124816672: 为什么51单片机串行中断中TL1和TH1的值要相同 -
茶知杏丁: 那是因为要自动重载初值的缘故,这两个寄存器里有一个是当前计数值,还有一个是自动重载的计数值.也可以不一样,但那么使用的非常少见.

布拖县19124816672: 在用单片机进行串口通信时,设置波特率的时候,TH1和TL1为什么一样?TL1是怎么计算的? -
茶知杏丁: 现在可以直接用 波特率计算器 来对串口的波特率 参数 计算设置.

布拖县19124816672: 单片机中坐标单位th是什么? -
茶知杏丁: 单片机里面没有坐标单位这个名.TH0,TH1是定时器T0,T1的高8位寄存器名.

布拖县19124816672: 急!51单片机中TH1=( - 5000)>>8;TL1= - 5000;这两句是什么意思?》8是什么意思? -
茶知杏丁: TH1 = (-5000) >> 8,或者 TH1 = (-5000) / 256 因为这两个寄存器你都可以看作是一个无符号的8bit的寄存器, 至于为什么用-5000,学过计算机的人都知道的哈 ,对于一个无符号的段整型数据(16位)而言,如果你比如说A 是一个unsigned short int 变量,现在直接给A赋值 -5000,最后的结果会什么呢,答案就是2^16(65536)-5000,不相信就验证下,至于为什么是这样,看看数据存储,补码之类的 !

布拖县19124816672: 单片机中 time =TH1*256+TL1; -
茶知杏丁: TH1是定时器的计数寄存器高八位,他和低八位合起来就是计数值,按照二进制规则,它乘以256就是十六位二进制数了,再加上低八位(TL1)的值就是计数值,所以这是取出定时器的计数值赋给time

布拖县19124816672: 单片机中 time =TH1*256+TL1; //取出定时器的值 这个式子什么意思,怎么计算的,急!!!!! -
茶知杏丁: time是16位的吧 TH1*256 就是说把TH1中的值左移8位 变成了高八位 然后第八位就可以空出来了 再加上TL1 就等于十六位的数 比如:TH1=0101 0101 TL1=1010 1010TH1*256=0101 0101 0000 0000 TH1*256+TL1=0101 0101 1010 1010

布拖县19124816672: 单片机cishu=TH1*256+TL1 这个是什么计数方式或者是什么中断计数 -
茶知杏丁: cishu是unsigned int型变量 cishu=TH1*256+TL1就相当于cishu=((TH1<<8)|TL1); 估计是外部中断1计数模式获取指定时间内的脉冲个数

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