计数器的原理,很简单,就是给个方波信号,一个方波,就加1即可,最简单的都能用数字电子技术里的或门,与门,非门来实现的。专门做计数的芯片也是一大堆,这里我们就不讨论怎么用或门,非门,与门,做出一个计数器了吧。
那么怎么用计数器实现定时器的功能呢?其实很简单,只要你给计数器的方波是规律的就可以了啊,比如做一个一秒钟输出一个方波的电路,然后把这个方波给计数器,即可,那么这个计数器就是一个定时器了,假设计数器一开始是0,一个方波以后,计数器就变成了1,对吧,但是计数器的方波来源是稳定的,一秒钟就给一个方波,那么这个就是个1s的定时器了吧,我们可以通过计数器的数值,来确定时间了吧,这样就可以完成定时的功能了吧。
单片机也是通过这种手段来形成的,你可能就要问了,那我单片机不是没有方波发射的装置吗?对不起,单片机芯片内部自己内置了,所以你不需要自己做这个方波发生装置,那么单片机是用什么来形成方波的呢?答案是你外置的晶振,单片机是通过你外部的那个晶振来实现的,而且晶振也是你单片机能跑起来的关键,他是单片机的CPU等内部部件工作的时间标准,比如晶振12MHZ,就是这个晶振1秒钟,能有12M个方波形成懂吧,所以这个频率是很高的了,但是单片机一般不在这么高的频率上工作,所以CPU的时间单位,不是晶振的频率,一般是要进行降频处理的,也叫分频,像51单片机,很多都是12分频的,即外部晶振是12MHZ,内部CPU工作的频率只有1MHZ,内部的计数器一般也不能在那么高的频率下工作,所以也是分频的,你最需要了解的是计数器或定时器里的数值加1,对应的时间是多少,一般都是1ms这样的整数倍。
然后计数器呢?计数器就是用晶振分频后的方波来工作的,晶振工作稳定,频率稳定,那么定时器就稳定,而如果你不用定时器的时候呢?那么计数器的计数端,就和来自晶振的方波,切断,切换成对应的IO端口的线路即可,而外部的端口,他们的波形和频率都不确定,所以就不是定时器了,如果你在外部,加个稳定的方波装置,计数器也就是定时器了,只不过这个需要自己去实现,岂不是麻烦?所以一般都用单片机内部自带的,方便而已。因为51单片机处理数据是按八位进行的,所以给定时器赋初值的时候,不能将一个数直接赋到t0中,而是将这个数先转化为一个十六进制数,将它的高两位数(也就是二进制的高八位)传送给th0,将低两位(也就是二进制的低八位)传送给tl0!(65536-x)/256就是取计数值的高八位运算表达式,因为八位二进制的最大值为256,所以将一个十进制数除以256后就会得到这个十进制数高八位数。最后将所得的余数传送到tl0,也就是后面(65536-x)%256的工作!希望能帮助你
读出51单片机T0计数器的计数值,并存到内部RAM的(31H)(30H)中,这很简单,用两条指令就行。
MOV 30H,TL0
MOV 31H,TH0
例如:
MOV A,30h
CJNE A,#10,LOOP
MOV 31H,#1 ;A=10
JMP EXIT
LOOP:
JNC LOP1 ;CY=0,理解为没借位
MOV 31H,#3 ;有借位A<10
JMP EXIT
LOP1: MOV 31H,#2 ;没借位A>shu10
EXIT:JMP $ ;踏步
扩展资料:
计数值(离散数据、定性数据、属性数据)是指用计数的方法得到的非连续性的数据,一般表现为正整数。
计数值不符合连续标准的任何测量。如:特性和属性;物体的数量;设备编号等。
注:计数值可分分为计件值和计点值。
计量值(连续数据、定量数据)是指可以用测量量具进行测量而得出的连续性的数据。
计量值是无穷可分或连续变量。如:距离、重量、时间、温度、电流、高度、分贝等。
参考资料来源:百度百科-计数值
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)