定时计数器方式控制
- 格式:doc
- 大小:40.00 KB
- 文档页数:4
实验6 8253定时计数器电路接口实验2220083443 赵洪宇一、实验目的掌握8253定时器的编程原理,用示波器观察不同模式下的输出波形。
二、实验设备MUT—Ⅲ型实验箱、8086CPU模块、示波器(实验台无)。
三、实验内容8253计数器0,1,2工作于方波方式,观察其输出波形四、实验原理介绍本实验用到两部分电路:脉冲产生电路、8253定时器/计数器电路(1)电路原理该电路由1片8253组成,8253的片选输入端插孔CS8253,数据口,地址,读写线均已接好,T0、T1、T2时钟输入分别为8253CLK0、8253CLK1、8253CLK2。
定时器输出,GATE控制孔对应如下:OUT0、GATE0、OUT1、GATE1、OUT2、GATE2、CLK2。
本实验用到两部分电路:脉冲产生电路、8253定时器/计数器电路脉冲产生电路8253的方式控制字8253的状态字(2)电路测试检查复位信号,通过8253定时器/计数器接口实验,程序全速运行,观察片选、读、写、总线信号是否正常。
五、实验步骤1、实验连线:CS0CS8253 OUT08253CLK2 OUT2LED1示波器(实验中无)OUT1 CLK38253CLK0 CLK38253CLK1实验接线原理图如下:注:GATE信号无输入时为高电平2、编程调试程序assume cs:codecode segment publicorg 100hstart:mov dx,04a6h ;控制寄存器mov ax,36h ;计数器0,方式3out dx,axmov dx,04a0hmov ax,7Chout dx,axmov ax,92hout dx,ax ;计数值927Chmov dx,04a6hmov ax,76h ;计数器1,方式3out dx,axmov dx,04a2hmov ax,32hout dx,axmov ax,0 ;计数值32hout dx,axmov dx,04a6hmov ax,0b6h ;计数器2,方式3out dx,axmov dx,04a4hmov ax,04hout dx,axmov ax,0 ;计数值04hout dx,axnext:nopjmp nextcode endsend start3、全速运行,观察实验结果六、实验结果程序全速运行后,LED1闪烁(周期为0.25s),本实验由于实验台没有提供示波器,所以对于实验所要求的观察方式3的波形无法实现。
51单片机定时器工作方式51单片机是一种非常常见的单片机,它具有多个定时器用来实现各种定时任务。
下面我们就来详细介绍一下51单片机的定时器工作方式。
首先,51单片机的定时器可以分为两种类型:定时/计数器0(T0)和定时/计数器1(T1),它们分别有不同的工作方式和控制寄存器。
一、定时/计数器0(T0)工作方式:定时/计数器0(T0)是一个8位的定时器/计数器,它可以进行定时或计数操作。
在定时模式下,它可以作为定时器在规定的时间段内进行计时;在计数模式下,它可以根据外部信号的脉冲计数。
在定时模式下,T0可以通过设置控制寄存器TCON的位4(TR0)来启动或停止计时操作。
当TR0为1时,定时器开始计时;当TR0为0时,定时器停止计时。
定时器的工作频率可以通过控制寄存器TMOD的位1和位0来设置。
在计数模式下,T0可以通过设置TCON的位5(CT0)来选择定时器或计数器操作。
当CT0为0时,定时器工作,当CT0为1时,计数器工作。
同时,在计数模式下,还需要通过设置控制寄存器TMOD的位1和位0来设置计数器的工作频率。
定时/计数器0还可以使用中断功能,通过设置控制器IE的位4(ET0)来开启或关闭中断。
当ET0为1时,当定时器溢出时会产生中断请求,可以在中断服务程序中处理相应的操作。
二、定时/计数器1(T1)工作方式:定时/计数器1(T1)也是一个8位的定时器/计数器,它可以进行定时或计数操作。
类似于T0,T1也可以在定时模式下作为定时器进行计时,或者在计数模式下根据外部信号的脉冲进行计数。
在定时模式下,T1可以通过设置TCON的位6(TR1)来启动或停止计时操作。
当TR1为1时,定时器开始计时;当TR1为0时,定时器停止计时。
定时器的工作频率可以通过设置TMOD的位3和位2来设置。
在计数模式下,T1可以通过设置TCON的位7(CT1)来选择定时器或计数器操作。
当CT1为0时,定时器工作;当CT1为1时,计数器工作。
单片机定时计数器工作方式实现方法本文介绍了单片机定时计数器的工作原理和四种工作方式的实现方法,包括初始化、定时器计数器结构的详细说明以及定时时间的计算公式。
下面是本店铺为大家精心编写的5篇《单片机定时计数器工作方式实现方法》,供大家借鉴与参考,希望对大家有所帮助。
《单片机定时计数器工作方式实现方法》篇1一、引言单片机定时计数器是单片机中的一个重要组成部分,它可以用于测量时间、控制程序流程等。
单片机定时计数器的工作方式有多种,每种工作方式都有不同的计数器结构和计时精度,因此需要根据具体应用场景选择合适的工作方式。
本文将详细介绍单片机定时计数器的工作原理和四种工作方式的实现方法。
二、定时计数器工作原理单片机定时计数器通常由一个或多个计数器和一些控制寄存器组成。
计数器用于计数外部时钟脉冲的数量,控制寄存器用于设置计数器的工作方式和初始值等。
定时计数器的工作原理如下:1. 初始化:在使用定时计数器之前,需要对其进行初始化,包括设置工作方式、计数器初始值和开启中断等。
2. 计时:定时计数器根据外部时钟脉冲的频率和计数器的位数计算时间,通常使用二进制计数法,计数器的每一位代表一个时间单位。
3. 中断:定时计数器可以根据计数器的溢出情况产生中断,中断服务程序可以根据具体应用场景进行时间处理和控制。
三、定时计数器工作方式实现方法单片机定时计数器有四种工作方式,分别为工作方式 0、工作方式 1、工作方式 2 和工作方式 3,每种工作方式都有不同的计数器结构和计时精度。
1. 工作方式 0:13 位定时器/计数器工作方式 0 是 13 位计数结构的工作方式,其计数器由 TH 的全部 8 位和 TL 的低 5 位构成,TL 的高 3 位没有使用。
以定时器0 为例,当 C/0 时,多路开关接通振荡脉冲的 12 分频输出,13 位计数器以此进行计数,这就是定时工作方式。
当 C/1 时,多路开关接通计数引脚(T0),外部计数脉冲由引脚 T0 输入,当计数脉冲发生负跳变时,计数器加 1,这就是计数工作方式。
单片机定时计数器工作方式
单片机定时计数器的工作方式可以分为以下几种:
1. 定时器/计数器工作方式:在这种工作方式下,定时器/计数器会周期性地生成一个固定时间的定时中断。
可以通过设置计数器中的初始值、计数器溢出中断等参数来控制定时器的工作周期和精度。
2. 外部计数器工作方式:在这种工作方式下,定时器模块会使用外部输入引脚作为计数器的时钟输入,通过计数器的计数变化来判断时间的流逝。
可以通过设置计数器的计数位宽、外部时钟的频率等参数来控制计时的精度和范围。
3. PWM输出工作方式:在这种工作方式下,定时器模块会周期性地生成一个脉宽调制(PWM)信号。
可以通过设置定时器的计数周期和占空比参数来控制PWM信号的频率和脉宽,从而实现对输出信号的控制。
4. 输入捕获工作方式:在这种工作方式下,定时器模块会通过捕获外部信号引脚的电平变化来记录时间的流逝。
可以通过设置捕获寄存器、捕获锁存器等参数来获取输入信号的频率、脉宽等信息,实现对外部信号的测量和分析。
5. 输出比较工作方式:在这种工作方式下,定时器模块会周期性地将计数器的当前值与设定的比较值进行比较。
可以通过设置比较寄存器和比较结果的输出控制来实现对外部设备的控制,如产生特定的电平或触发特定的事件。
总的来说,单片机定时计数器工作方式的选择取决于具体的应用需求,可以灵活地利用定时器模块的各种功能和参数来实现各种定时、计数、测量和控制的应用。
PSW 字节地址D0H 位地址字节地址位地址TCON 88H 字节地址位地址TCON SCON 98H 字节地址位地位地址IE A8H 字节地址位地址IP B8H(1)程序状态寄存器(PSW ):Cy :进位标志。
AC :辅助进位标志。
F0:用户标志。
RS1、RS0:寄存器选择。
OV :溢出标志。
P :奇偶标志。
(2)定时器/计数器方式控制寄存器 TMODGATA :门控位。
GATA=0,只要用软件对TR0或TR1置1就启动了定时器/计数器;GATA=1,只有中断端子有一个为1。
且用软件对TR0(或TR1)置1才能启动定时器/计数器工作。
(3)定时器/计数器控制寄存器 TCONTF1:定时器/计数器T1溢出标志。
当T1溢出(计数完成)时,此位由硬件置1。
TF1可以由程序查询,也可以作为中断源向CPU 申请中断,系统响应中断后,又由硬件自动清零。
TF1也可以软件清零。
TR1:定时器/计数器T1运行控制位。
可以通过用软件对该位置1或清零来启动或停止T1的工作。
TF0:定时器/计数器T0溢出标志。
功能同TF1。
TR0:定时器/计数器T0运行控制位。
功能同TR1。
IE1:外部中断1的中断标志。
若检测到外部中断1端子信号有效(低电平触发或边沿触发)时,由硬件置1,向CPU 申请中断,中断响应后不能自动清零。
详细功能参见中断系统一节。
IT1:外部中断1触发方式控制位。
IT1=0,为低电平触发;IT1=1,为下降沿触发。
详细功能参见中断系统一节。
IE0:外部中断0的中断标志。
功能同IE1。
IT0:外部中断0触发方式控制位。
功能同IT1。
(4)串行口控制寄存器 SCONTI :串行口发送中断请求标志。
在进行串行口数据通信时,每发送完一帧数据,由硬件自动将TI 置位,向CPU 申请中断。
RI :串行口接收中断请求标志。
每接收完一帧数据,由硬件自动将RI 置位,向CPU 申请中断。
注意:CPU 在响应串行发送、接收中断后,TI 、RI 不能自动清零,必须由用户用软件清零。
定时/计数器的方式控制字
从上一节我们已经得知,单片机中的定时/计数器都可以有多种用途,那么我怎样才能让它们工作于我所需要的用途呢?这就要通过定时/计数器的方式控制字来设置。
在单片机中有两个特殊功能寄存器与定时/计数有关,这就是TMOD和TCON。
顺便说一下,TMOD和TCON是名称,我们在写程序时就可以直接用这个名称来指定它们,当然也可以直接用它们的地址89H和88H来指定它们(其实用名称也就是直接用地址,汇编软件帮你翻译一下而已)。
从图1中我们可以看出,TMOD被分成两部份,每部份4位。
分别用于控制T1和T0,至于这里面是什么意思,我们下面介绍。
从图2中我们可以看出,TCON也被分成两部份,高4位用于定时/计数器,低4位则用于中断(我们暂不管)。
而TF1(0)我们上节课已提到了,当计数溢出后TF1(0)就由0变为1。
原来TF1(0)在这儿!那么TR0、TR1又是什么呢?看上节课的图。
计数脉冲要进入计数器还真不容易,有层层关要通过,最起码,就是TR0(1)要为1,开关才能合上,脉冲才能过来。
因此,TR0(1)称之为运行控制位,可用指令SETB来置位以启动计数器/定时器运行,用指令CLR来
关闭定时/计数器的工作,一切尽在自已的掌握中。
定时/计数器的四种工作方式
1. 1.工作方式0
定时器/计数器的工作方式0称之为13位定时/计数方式。
它由TL(1/0)的低5位和TH(0/1)的8位构成13位的计数器,此时TL(1/0)的高3位未用。
我们用这个图来讨论几个问题:
1. 1.M1M0:定时/计数器一共有四种工作方式,就是用M1M0来控制的,2位正好
是四种组合。
2. 2.C/T:前面我们说过,定时/计数器即可作定时用也可用计数用,到底作什么用,
由我们根据需要自行决定,也说是决定权在我们编程者。
如果C/T为0就是用作定时器(开关往上打),如果C/T为1就是用作计数器(开关往下打)。
顺便提一下:一个定时/计数器同一时刻要么作定时用,要么作计数用,不能同时用的,这是个极
普通的常识,几乎没有教材会提这一点,但很多初学者却会有此困惑。
3. 3.GA TE:看图,当我们选择了定时或计数工作方式后,定时/计数脉冲却不一定
能到达计数器端,中间还有一个开关,显然这个开关不合上,计数脉冲就没法过去,那么开关什么时候过去呢?有两种情况
1. 1.GA TE=0,分析一下逻辑,GA TE非后是1,进入或门,或门总是输出1,和或
门的另一个输入端INT1无关,在这种情况下,开关的打开、合上只取决于TR1,只要TR1是1,开关就合上,计数脉冲得以畅通无阻,而如果TR1等于0则开关打开,计数脉冲无法通过,因此定时/计数是否工作,只取决于TR1。
2. 2.GA TE=1,在此种情况下,计数脉冲通路上的开关不仅要由TR1来控制,而且
还要受到INT1引脚的控制,只有TR1为1,且INT1引脚也是高电平,开关才合上,计数脉冲才得以通过。
这个特性可以用来测量一个信号的高电平的宽度,想想看,
怎么测?
为什么在这种模式下只用13位呢?干吗不用16位,这是为了和51机的前辈48系列兼容而设的一种工作式,如果你觉得用得不顺手,那就干脆用第二种工作方式。
1. 1.工作方式1
工作方式1是16位的定时/计数方式,将M1M0设为01即可,其它特性与工作方式0相同。
2. 2.工作方式2
在介绍这种式方式之前先让我们思考一个问题:上一次课我们提到过任意计数及任
意定时的问题,比如我要计1000个数,可是16位的计数器要计到65536才满,怎么办呢?我们讨论后得出的办法是用预置数,先在计数器里放上64536,再来1000
个脉冲,不就行了吗?是的,但是计满了之后我们又该怎么办呢?要知道,计数总
是不断重复的,流水线上计满后马上又要开始下一次计数,下一次的计数还是1000吗?当计满并溢出后,计数器里面的值变成了0(为什么,可以参考前面课程的说
明),因此下一次将要计满65536后才会溢出,这可不符合要求,怎么办?当然办法很简单,就是每次一溢出时执行一段程序(这通常是需要的,要不然要溢出干吗?)可以在这段程序中做把预置数64536送入计数器中的事情。
所以采用工作方式0或1都要在溢出后做一个重置预置数的工作,做工作当然就得要时间,一般来说这点
时间不算什么,可是有一些场合我们还是要计较的,所以就有了第三种工作方式自
动再装入预置数的工作方式。
既然要自动得新装入预置数,那么预置数就得放在一个地方,要不然装什么呢?那
么预置数放在什么地方呢?它放在T(0/1)的高8位,那么这样高8位不就不能参与计数了吗?是的,在工作方式2,只有低8位参与计数,而高8位不参与计数,用作预置数的存放,这样计数范围就小多了,当然做任可事总有代价的,关键是看
值不值,如果我根本不需要计那么多数,那么就可以用这种方式。
看图4,每当计
数溢出,就会打开T(0/1)的高、低8位之间的开关,计预置数进入低8位。
这是由硬件自动完成的,不需要由人工干预。
通常这种式作方式用于波特率发生器(我们将在串行接口中讲解),用于这种用途时,定时器就是为了提供一个时间基准。
计数溢出后不需要做事情,要做的仅仅只有一
件,就是重新装入预置数,再开始计数,而且中间不要任何延迟,可见这个任务用
工作方式2来完成是最妙不过了。
3. 3.工作方式3
这种式作方式之下,定时/计数器0被拆成2个独立的定时/计数器来用。
其中,TL0可以构成8位的定时器或计数器的工作方式,而TH0则只能作为定时器来用。
我们知道作定时、计数器来用,需要控制,计满后溢出需要有溢出标记,T0被分成两个来用,那就要两套控制及、溢出标记了,从何而来呢?TL0还是用原来的T0的标记,而TH0则借用T1的标记。
如此T1不是无标记、控制可用了吗?是的。
一般情况处,只有在T1以工作方式2运行(当波特率发生器用)时,才让T0工作于方式3的。
定时器/计数器的定时/计数范围
工作方式0:13位定时/计数方式,因此,最多可以计到2的13次方,也就是8192次。
工作方式1:16位定时/计数方式,因此,最多可以计到2的16次方,也就是65536次。
工作方式2和工作方式3,都是8位的定时/计数方式,因此,最多可以计到2的8次方,也说是256次。
预置值计算:用最大计数量减去需要的计数次数即可。
例:流水线上一个包装是12盒,要求每到12盒就产生一个动作,用单片机的工作方式0来控制,应当预置多大的值呢?对了,就是8192-12=8180。
以上是计数,明白了这个道理,定时也是一样。
这在前面的课程已提到,我们不再重复,请参考前面的例子。