单片机定时/计数工作方式

单片机中的定时/计数器都能有多种用途,要通过定时/计数器的方式控制字来设置,需要的用途。

在单片机中有两个特殊功能寄存器与定时/计数有关,这就是TMOD和TCON。,TMOD和TCON是名称,我们在写程序时就能直接用这个名称来指定它们,当然也能直接用它们的地址89H和88H来指定它们(其实用名称也就是直接用地址,汇编软件帮你翻译一下而已)。

   

TMOD被分成两部份,每部份4位。分别用于控制T1和T0。TCON也被分成两部份,高4位用于定时/计数器,低4位则用于中断(TF1、0在这)。TR0(1)称之为运行控制位,为1,开关才能合上,计数脉冲才能过来,可用指令SETB和CLR来置位以启动/关闭计数器/定时器。

方式0框图

定时/计数器的四种工作方式

方式0

为13位计数器,由TL(1/0)的低5位和TH(0/1)的8位组成,,此时TL(1/0)的高3位未用。

M1、M0:定时/计数器一共有四种工作方式,就是用M1M0来控制的,2位正好是四种组合。

C/T:C/T为0就是用作定时器(开关往上打),如果C/T为1就是用作计数器(开关往下打)。

GATE:GATE后非门后是一或门,GATE=0时只要TR1=0则开关闭合

GATE=1时,开关合闭不仅要由TR1,而且还受到INT1管脚控制,两个都为高电平计数脉冲才能通过。

方式1

工作方式1是16位的定时/计数方式,将M1、M0设为01即可,其它特性与工作方式0相同。

方式2

自动装入预置数的工作方式。当溢出后,T(0/1)高、低八位之间的开关打开,放在高八位的预置数进入低八位,开始第二轮,由硬件完成。代价是计数范围少一半。

方式3

定时/计数器被拆成2个独立的定时/计数器来用。

(最下是TR1)

TL0能组成8位的定时器或计数器的工作方式,而TH0则只能作为定时器来用。

TLO使用T0状态控制位C/T、GATE、TR0、INT0,而TH0使用T1的状态控制位TR1,一般只有T1以方式2运行(当波特率发生器用),才能让T0以方式3工作。

定时器/计数器的定时/计数范围

工作方式0:13位定时/计数方式,因此,最多能计到2的13次方,也就是8192次。

工作方式1:16位定时/计数方式,因此,最多能计到2的16次方,也就是65536次。

工作方式2和工作方式3,都是8位的定时/计数方式,因此,最多能计到2的8次方,也说是256次。

预置值计算:用最大计数量减去需要的计数次数即可。

时间: 2024-12-17 15:32:52

单片机定时/计数工作方式的相关文章

定时器计数器工作方式

1.方式0          方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成.TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求. 方式1      方式1的计数位数是16位,由TL0作为低8位,TH0作为高8位,组成了16位加1计数器 . 计数个数与计数初值的关系为:X=216-N 方式2      方式2为自动重装初值的8位计数方式. 计数个数与计数初值的关系为:X=28-N工作方式2特别适合于用作较精确的脉冲信号发生器.

STC15 串口(工作方式1)使用小结

这里暂且不说其他工作方式,以后有时间补上.仅总结下STC15串口工作方式1的一些注意点. 串口1: setp1 波特率发生器: T2定时器(默认).T1定时器: 设置位:S1ST2(AUXR.0),1--T2,0--T1,此位复位值为1. 12T模式(默认):通过T2x12(AUXR.2),T1x12(AUXR.6)位确定,0--12T模式,1--1T模式:这两位复位值位0. (这里可能有点模糊, 解释一下:所谓1T模式就是T1X12位置1,相当于T1速度提高12倍,原来计数加1需要12T,现在

妹纸小A的计数工作

文中所述事情均是YY. 小A是一个呆萌的妹纸,最近刚刚加入小B的团队,这几天小B交给她一个任务,让她每天统计一下团队里九点半之前到公司的人数. 九点半之前到公司人数 于是,每天早上小A都早早来到公司,然后拿一个本子来记,来一个人就记一下. [1] 这里,其实小A的做法和下面的代码一样: public class SimpleCounter1 { List<CheckRecordDO> counter = new LinkedList<CheckRecordDO>(); public

定时器0工作方式1

#include<reg52.h> #define uchar unsigned char #define uint unsigned int sbit led1=P1^0; uchar num; void main() { TMOD=0X01; //设置定时器0为工作方式1(M1M0为01) TH0=(65536-45872)/256; //装处初值11.0592M晶振定时50ms数为45872 TL0=(65536-45872)%256; EA=1; ET0=1; TR0=1; while

Rsync的工作方式及Sersync

Rsync的工作方式 单个主机本地之间的数据传输(此时类似于cp命令的功能). 借助rcp,ssh等同到来传输数据(此时类似于scp命令的功能). 以守护进程(socket)的方式传输数据(这个是rsync自身的重要的功能). cp -a /etc/hosts /tmp/ rsync -avz /etc/hosts /tmp/ rsync --delete /null/ tmp/ 推送scp /etc/hosts ***@********:/tmp/ 推送rsync -avz -e 'ssh '

从一个简单例子来理解js引用类型指针的工作方式

? 1 2 3 4 5 6 7 <script> var a = {n:1};  var b = a;   a.x = a = {n:2};  console.log(a.x);// --> undefined  console.log(b.x);// --> [object Object]  </script> 上面的例子看似简单,但结果并不好了解,很容易把人们给想绕了--"a.x不是指向对象a了么?为啥log(a.x)是undefined?".&

LVS三种工作方式八种算法

一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式.集群计算机通常用来改进单个计算机的计算速度和/或可靠性.一般情况下集群计算机比单个计算机,比如工作站或超级计算机性能价格比要高得多. 集群就是一组独立的计算机,通过网络连接组合成一个组合来共同完一个任务 LVS在企业架构中的位置: 以上的

Buffer的工作方式

1.Buffer的工作方式 前面<java NIO的工作方式>介绍了Selector检测到通信信道I/O有数据传输时,通过select()方法取得SocketChannel,将数据读取或写入Buffer缓冲区,下面讨论Buffer如何接受和写出数据.通过查看JDK源码可知道,Buffer的构造函数 Buffer(int mark, int pos, int lim, int cap) { // package-private if (cap < 0) throw new IllegalA

MVC4 WebAPI(二)——Web API工作方式

在上篇文章中和大家一起学习了建立基本的WebAPI应用,立刻就有人想到了一些问题:1.客户端和WebService之间文件传输2.客户端或者服务端的安全控制要解决这些问题,要了解一下WebAPI的基本工作方式. (一)WebAPI中工作的Class 在MVC中大家都知道,获取Request和Response使用HttpRequest和HttpResponse两个类,在WebAPI中使用两外两个类:HttpRequestMessage 和HttpResponseMessage,分别用于封装Requ