420 likes | 600 Views
第 四章. 定时 / 计数技术 课程名称:微机原理与接口技术 授课方式 : 讲课、实验、提问及作业 主讲人:金永贤. 第 4 章 定时计数接口. 教学重点 8253 的 6 种工作方式 8253 的编程 8253 的应用. 4.1 基 本 概 念. 一、定时 / 计数 在计算机系统、工业控制领域、乃至日常生活中,都存在定时、计时和计数问题。 1. 定时 2. 计数 3. 定时与计数的关系
E N D
第 四章 定时/计数技术 课程名称:微机原理与接口技术 授课方式:讲课、实验、提问及作业 主讲人:金永贤
第4章 定时计数接口 教学重点 8253的6种工作方式 8253的编程 8253的应用
4.1 基 本 概 念 • 一、定时/计数 在计算机系统、工业控制领域、乃至日常生活中,都存在定时、计时和计数问题。 1.定时 2.计数 3.定时与计数的关系 定时的本质就是计数,只不过这里的“数”的单位是时间单位。如果把一小片一小片的计时单位累加起来,就可获得一时间。如计满60秒为1 分,计满60分为1 小时。
4.1 基 本 概 念 二、微机系统中的定时 微机系统中经常需要为处理器和外设提供时间标记,或对外部事件进行计数。如分时系统的程序切换、向外设定时周期性地以出控制信号等。在微机系统中定时分为两种:(1)内部定时(2)外部定时 内部定时是计算机本身运行的时间基准和时序关系;外部定时是外部设备实现某种功能时,本身所需的一种时序关系。 外部定时,由于外设或被控对象不同,需要由用户安排。当外设与CPU连接时,应以计算机的时序为依据,来设计外设的定时机构,已满足计算机的时序要求,这叫时序配合。
4.1 基 本 概 念 • 定时的方法 1.软件定时 利用微处理器执行一个延时程序段实现。主要用于短时的延时。 2.硬件定时 采用可编程通用的定时/计数器或单稳延时电路产生定时或延时。常见的定时/计数芯片有:Intel 8253/8254和Zilog 的 CTC等。
4.2 可编程定时/计数器8253-5/8254-2 可编程定时/计数器芯片型号有几种,8353和8254,它们的外形引脚及功能都是兼容的,只是最高工作频率有所差异。 • 一、外部特性与内部逻辑 1.外部特性 定时/计数器8253/8254是24脚的双列直插式芯片,每个芯片内有3个独立的计数器(通道),每个计数器都有自己的时钟输入CLK、计数器输出 OUT和门控信号GATE。通过编程选择计数器的和设置工作方式,可作为计数器用,也可作为定时器用,故称为定时/计数器,记作T/C。
4.2 可编程定时/计数器8253-5/8254-2 引脚的功能 面向CPU的信号线: (1)数据总D0~D7线,为三态输入/输出线,用于将8253与系统数据总线相连。 (2)片选线/CS,对8253芯片进行片选。 (3)读信号/RD,有效时表示对8253进行读操作。 (4)写信号/WR,有效时表示对外253进行写操作。 (5)地址线 A1A0,用于选择8253片内的寄存器。 面向I/O设备的信号线: (6)计数器时钟信号线CLK,为计数器提供时钟信号。 (7)计数器门选控制信号GATE,用来控制计数器的计数过程。 (8)计数器输出信号OUT,表示计数或定时到的输出信号。
2.内部逻辑结构 图4.1定时/计数器8253/8254内部框图
(1)数据总缓冲器,它是三态,双向的8位寄存器。(1)数据总缓冲器,它是三态,双向的8位寄存器。 (2)读/写逻辑,它接受由CPU送来的读/写信号和地址信号来选择读出或写入寄存器。 (3)控制命令寄存器,它接受CPU送来的控制字。 (4)计数器,8253有3 个计数器,其内部结构完全相同。 2.内部逻辑结构
LSB MSB 锁存器读出当前值 16位当前计数值锁存器 16位减1计数器 OUT (减1至0时) CLK & GATE 16位计数初值寄存器 装入/读出初值 LSB MSB 图4.2 计数通道内部逻辑图
计数初值寄存器(16位),用于存放计数初值,其长度为16位,故最大计数值为65536,此寄存器的初值同减1计数器的初值在初始化时同时装入的。计数初值寄存器(16位),用于存放计数初值,其长度为16位,故最大计数值为65536,此寄存器的初值同减1计数器的初值在初始化时同时装入的。 减1计数器(16位),用于进行减1操作,每来一个时钟脉冲,它就作减1运算,直至将计数初值减为0为止。 当前数值锁存器(16位),用于锁存减1 计数器的内容,以供读出和查询。 2.内部逻辑结构
计数器初值的大小由输入时钟频率和输出波形的频率有关,可表示为:计数器初值的大小由输入时钟频率和输出波形的频率有关,可表示为: C=fCLK/fOUT。 二、计数初值
1.方式命令字的作用 主要是对8253进行初始化,同时也可对当前计数值进行锁存。 三、编程命令
2 方式命令字的格式 00 计数器0 01 计数器1 10 计数器2 11 非法 0 二进制 1 十进制 00 计数器锁存命令 01 只读写低字节 10 只读写高字节 11 先读写低字节 后读写高字节 000 方式0 001 方式1 010 方式2 011 方式3 100 方式4 101 方式5 控制字写入的I/O地址(A1A0=11)
例1:选择2号计数器,工作在3方式,计数初值为533H,采用二进制计数,其初始化程序为:例1:选择2号计数器,工作在3方式,计数初值为533H,采用二进制计数,其初始化程序为: 三、编程命令 mov dx,307h ;设置方式控制字 mov al,10110110B out dx,al mov dx,306h ;设置计数初值 mov ax,533h ;计数初值为533H out dx,al ;先送低字节 mov al,ah out dx,al ;后送高字节
3.读当前计数值 在事件计数器的应用中,需要读出计数过程中的当前计数值,以便根据这个值做计数判断。具体做法是,先发一条锁存命令,将减1 计数器锁存至输出锁存器中,再执行读操作,读出锁存器中的内容。 mov dx,307h ;设置方式控制字 L: mov al,01000000B;1号计数器锁存命令 out dx,al mov dx,305h in al,dx cmp al,0ffh jne l hlt 三、编程命令
8253/8254芯片的每个通道都有6种工作方式(0方式~5方式)可供选用,各种方式的不同之处在于:一、是输出波形不同,二、是启动计数器的触发方式不同,三是计数过程中门控信号GATE对计数操作的控制不同。8253/8254芯片的每个通道都有6种工作方式(0方式~5方式)可供选用,各种方式的不同之处在于:一、是输出波形不同,二、是启动计数器的触发方式不同,三是计数过程中门控信号GATE对计数操作的控制不同。 1. 0方式---低电平输出方式,具有以下特点: (1)当向计数器写完计数值后,开始计数,计数一旦开始,输出端OUT就变为低电平,并在计数过程中一直保持低电平,当计数器减到0时,OUT立即变成高电平。 (2)门控信号GATE为高电平时,计数器工作;当GATE变为低电平时,计数器停止工作,其计数值保持不变。如GATE再次变高,计数器继续计数。 (3)在计数工作期间,如果重新写入新的计数值,计数器按新写入的的计数初值重新工作。 四、工作方式及特点
① ② ③ ④ ⑤ 方式0 4 WR CLK GATE 4 3 2 1 0 OUT 方式0 低电平输出 ② 设 定 计 数 初 值 ④ 计 数 过 程 ③ 计 数 值 送 入 计 数 器 ⑤ 计 数 结 束 ① 设 定 工 作 方 式
例1 : 使1号计数器T1,工作在0方式,采用十六位二进制,计数初值的高低字节分别为BYTEH和BYTEL,其初始化程序为: mov dx,307h ;设置方式控制字 mov al,01110000B;1号计数器锁存命令 out dx,al mov dx,305h mov al,BYTEL out dx,al Mov al,BYTEH Out dx,al 方式0 低电平输出
1方式是可编程的单稳态工作方式,当此方式设定后,输出端OUT就输出为高电平,写入计数器初值后,计数器并不立即开始工作,直到门控信号GATE有效(变为高电平)后的一个时钟周期的下降沿,才开始工作,使输出为OUT为高电平,并在计数过程中一直保持低电平,直到计数器减为0,才输出高电平。1方式是可编程的单稳态工作方式,当此方式设定后,输出端OUT就输出为高电平,写入计数器初值后,计数器并不立即开始工作,直到门控信号GATE有效(变为高电平)后的一个时钟周期的下降沿,才开始工作,使输出为OUT为高电平,并在计数过程中一直保持低电平,直到计数器减为0,才输出高电平。 方式1 低电平输出
① ② ④ ⑤ ⑥ ③ ⑥ 计 数 结 束 ⑤ 计 数 过 程 方式1 低电平输出 ④ 计 数 值 送 入 计 数 器 ③ 硬 件 启 动 ② 设 定 计 数 初 值 ① 设 定 工 作 方 式 方式1 4 WR CLK GATE 4 3 2 1 0 OUT
2方式是一种具有自动装入时间常数的N分频器,具有以下特点:2方式是一种具有自动装入时间常数的N分频器,具有以下特点: (1)在计数期间输出端OUT为高电平,计数器至1时,输出一个时钟脉冲周期的负脉冲,并自动重新装入原计数初值,一个负脉冲过去后,输出又恢复高电平并重新作减法计数。 (2)门控信号GATE为高电平时,计数器工作;如在计数期间GATE变为低电平时,计数器停止工作,GATE再次变高,计数器按原装入的计数数值重新开始计数。 (3)在计数工作期间,如果重新写入新的计数值,则计数器仍按原计数值计数,直到计数器至1,并在输出一个时钟周期的负脉冲后,才按新写入的的计数初值计数。 方式2 周期性负脉冲输出
方式2 4 WR CLK GATE 4 3 2 1 0 4 3 2 1 0 4 3 2 1 0 4 3 2 1 0 OUT 方式2 周期性负脉冲输出(分频器)
3方式和方式2基本相同,也具有自动装入时间常数的功能,不同之处在于:3方式和方式2基本相同,也具有自动装入时间常数的功能,不同之处在于: (1)工作在方式3,引脚OUT输出的不是一个周期性的负脉冲,而是占空比为1:1或近似是1:1的方波;当计数初值为偶数时,输出前一半计数过程中为高电平,在后一半的计数过程中为低电平。 (2)当计数初值为奇数时,在前一半加1的计数过程中,输出为高电平,后一半减1 的计数过程为低电平。例如,计数初值为5,则在前3个时钟周期OUT为高电平,后2个时钟周期OUT为低电平。 (3)由于方式3输出的波形是方波,并且具有自动重装计数初值的功能,因此,8253一旦计数开始,就会在输出端OUT输出连续不断的方波。 方式3 周期性方波输出
方式3 4 WR CLK GATE 4 3 2 1 0 4 3 2 1 0 4 3 2 1 0 4 3 2 1 0 OUT 方式3 方波发生器
方式4是一种由软件启动的计数方式,即由写入计数初值来触发计数器开始工作,其工作特点是:方式4是一种由软件启动的计数方式,即由写入计数初值来触发计数器开始工作,其工作特点是: (1)此方式设定后,输出端OUT为高电平;当写完计数初值后,计数器开始计数,计数完毕,计数回0结束,输出一个宽度为一个时钟脉冲周期的负脉冲,然后输出又恢复高电平并一直保持高电平不变。 (2)门控信号GATE为高电平时,允许计数器工作;门控信号GATE变为低电平时,计数器停止工作,当GATE恢复高电平后,计数器又从原装入的计数数值重新开始作减1计数。 (3)在计数工作期间,如向计数器写入新的计数值,则不影响当前的计数状态,仅当当前计数器回0后,计数器才按新写入的计数初值作减1计数。 方式4 单次负脉冲输出(软件触发)
方式4 3 4 WR CLK GATE 3 2 3 2 1 0 4 3 2 1 0 OUT 方式4 单次负脉冲输出)
5方式工作特点是由GATE上升沿触发计数器开始工作的,具有如下特点:5方式工作特点是由GATE上升沿触发计数器开始工作的,具有如下特点: (1)在5方式工作方式下当写入计数器初值后。计数器并不立即开始计数,而要由门控信号的上升沿启动计数。计数器回0后,将在输出端输出一个时钟脉冲周期的负脉冲后恢复高电平。 (2)在计数过程中,如果门控信号再次出现上升沿,计数器将从原装入的计数初值重新计数。 方式5单次负脉冲输出(硬件触发)
方式5 3 4 WR CLK GATE 3 2 1 3 2 1 0 4 3 2 1 0 OUT 方式5 硬件触发选通信号
(1) 0方式(门控单稳)和1方式(门控单稳) a.输出波形类似; b.无自动重装能力; c.启动计数器工作的触发信号不一样; d.方式0,GATE上升沿对它无影响,方式1, GATE上升沿触发重新开始。 (2)2方式(分频器)和3方式(方波发生器) a.时间常数自动重装; b.频率为clk/n; c.方式2,计数时高电平,减1至0时,输出宽度为一个时钟 周期的负脉冲;方式3,前一半为高,后一半为低。 。 五、 6种工作方式的比较
(3) 4方式(软件触发单脉冲)和5方式(硬件触发单脉冲) a.输出波形相同; b.无自动重装能力; c.启动计数触发信号不一样。 注意:从以上分析可知,一般0方式,1方式和4方式,5方式选作计数器用(输出一个电平或一个脉冲),而2方式,3方式选作定时器用(输出周期脉冲或周期方波) 6种工作方式的比较
一、计数器------日时钟 1.要求 设计一个计一天时间的日计时器------日时钟 2.分析 (1)新计时单位的建立 人们的计时习惯是以秒、分、小时为单位来计一天的时间。但8253不能直接提供秒、分、小时的计时单位,因此,要利用8253来计一天的时间,就必须找到一个合适的新计时单位才行。其实,计时也不一定要按秒、分、小时这些单位去计量。只要找到一个定时准确的新单位(不是秒、分、时),再用这个单位去度量一天24小时里包含多少个这种计时单位就行了,所以问题的关键在于如何找到一个定时准确的度量时间的单位。 刚好,可以有8253工作在方式3下,其输出为一系列方波,这种方波周期是准确的,可以作为定时的单位。比如,选用8253的计数器0,让其工作在3方式下,计数初值设置为65536,当输入时钟CLK0=1.1931816MHz时,则输出的方波频率 为: fout0=1.1931816MHz/65536=18.2Hz 输出方波的周期为: Tout0=1/18.2*1000ms=54.945ms 4.3 8253-5/8254-2的应用举例
这个方波的周期是准确的,可以利用这个54.945ms作为计时单位,接下来是如何利用54.945ms这个新计时单位去计一天的时间。这个方波的周期是准确的,可以利用这个54.945ms作为计时单位,接下来是如何利用54.945ms这个新计时单位去计一天的时间。 1天=24*60*60*1000ms/54.945ms=1573040(计时单位),表示为十六进制为:001800B0H个计时单位,同理在一个小时包含65543个计时单位,1分钟包含1092个计时单位,1秒钟包含18.2个计时单位。 (2)新计时单位的计数机构 利用中断技术将这些计时单位累加起来。用8253输出方波OUT0连到8259- IR0,产生定时中断,每中断一次进行加一操作,直至完成一天24小时计时任务。 具体实施办法:开辟两个存储单元,即两个字变量TIME-LO、TIME-HI,每隔54.945ms申请一次中断,先在低字变量加一,计满65536次复位,并向高字变量中加一,一直到TIME-LO=00B0H、TIME-HI=0018H。 3.设计 (1)硬件设计 4.3 8253-5/8254-2的应用举例
4.3 8253-5/8254-2的应用举例 8259A 8254 CPU INT INTR GATE0 IRQ0 IR0 OUT0 D0~D7 CLK0 总线控制器 S2 S2 D 8288 Q S1 S1 Q CP PCLK S0 S0 2.3863632MHz
二、发声器 1.要求 利用定时/计数器8253发600Hz的长/短音。按任意键,开关发声;按ESC键,停止发声。8253的输入时钟CLK的频率为1.9318MHz. 2. 分析 根据题意,有两个工作要做,一是声音的频率应满足600Hz,二是发声持续的长短的控制。 (1)计数初值的确定: C=1.19318X106Hz/600= 1983 (2)长/短音的控制:设置延时常数寄存器BL,改变它,可以改变延时时间; (3)扬声器的开/关控制:设置一个与门,利用8255A PB0,PB1引脚分别控制8253-GATE和与门的开关。 3.设计 (1)硬件设计 4.3 8253-5/8254-2的应用举例
4.3 8253-5/8254-2的应用举例 8253 ÷2 3.38MHz 1.19MHz CLK2 OUT2 & 滤波 功放 gate2 8255A PB1 pB0 发声器电路图
(2)软件设计 发声程序由主程序和子程序组成,主程序流程图如图所示 4.3 8253-5/8254-2的应用举例 开始 8253初始化 图发长短 音主程序 流程图 关闭扬声器 计算并装入初值 返回DOS 关闭扬声器 N 按下任意键? 结束 Y 发长音(BL=6) (CALLSSP) 发短音(BL=1) (CALLSSP) N 按下ESC键? Y
8253-5/8254-2的应用举例 程序 CODE SEGMENT ASSUME CS:CODE,DS:CODE ORG 100H START:JMP BEGIN LONG1:EQU 6 SHORT1:EQU 1 BEGIN:MOV AX,CODE MOV CS, AX MOV DS,AX ;初始化8253 MOV AL,10110110H OUT 43H,AL MOV AX,1983 OUT 42H,AL
4.3 8253-5/8254-2的应用举例 MOV AL,AH OUT 42H,AL ;关闭扬声器 IN AL,61H;读入8255 PB口原输出值 AND AL,0FCH;置PB0和PB1为0,关闭GATE2和与门 OUT 61H,AL ;查任意键,启动发声器 WAIT1:MOV AH,0BH;判断是否有任意键按下? INT 21H CMP AL,00H JE WAIT1;无键,则等待;否则发长音。 ;发长音 LOP: MOV BL,LONG1 CALL SSP ;查ESC键,停止发声
4.3 8253-5/8254-2的应用举例 MOV AH,0BH INT 21H CMP AL,00H JE CONTINUE1;无键按下,发短音 MOV AH,08H;等待从键盘输入一个字符 INT 21H CMP AL,1BH;是ESC,停止发声 JE QUIT ;发短音 CONTINUE1:MOV BL,SHORT1 CALL SSP JMP LOP ;关闭扬声器,并退出 QUIT:IN AL,61H AND AL,0FCH OUT 61H,AL MOV AL,AH OUT 61H,AL
4.3 8253-5/8254-2的应用举例 MOV AX,4C00H INT21 ;发声子程序 SSP PROC NEAR IN AL,61H OR AL,03H OUT 61H,AL SUB CX,CX L: LOOP L DEC BL JNZ L RET SSP END CODE ENDS END START
第4章教学要求 1. 掌握8253引脚,尤其是CLK、OUT、GATE引脚的功能 2. 掌握8253的六种工作方式、编程和应用