可编程定时器、计数器8253
第九章可编程计数器定时器8253及其应用(精)
一、计数/定时的工作原理
CLK是计数输入信号,计数器对CLK端出现的脉冲个数 进行计数 •CLK端可以输入外部事件 •CLK端可以接入固定频率的时钟信号,从而实现 计时 OUT信号在计数结束时发生变化 •可将OUT作为外部设备的控制信号 •可将OUT作为向CPU申请中断的信号
CPU可以从计数输出寄存器读出当前计数值。 读前,应向控制寄存器发送锁存命令
边界
写入初值
三、8253的编程命令
•初始化
1)写入控制字 2)按控制字要求写入计数初值
计数器初值计算:N=fCLK/fOUT
例:设三个计数器的CR/OL端口地址为70H、71H、72H,控制 寄存器端口地址73H。计数器0,工作模式2,CR/OL仅使用低8 位,初值为100,计数值使用二进制 MOV AL, 14H OUT 73H, AL MOV AL, 64H OUT 70H, AL
例如输入脉冲频率为2MHz,那么计数2106
计时1秒
因此,使用同一个芯片,既能计数,又能计时——计时器/计数器
一、计数/定时的工作原理
组成:
控制寄存器——决定工作模式 状态寄存器——反应工作状态 初值寄存器——计数的初值 计数输出寄存器——CPU从中 读当前计数值 计数器——执行计数操作, CPU不能访问
定时和计数器
对不同信号的计数 定时器
对时钟信号进行计数 周期性 对外部脉冲进行计数 周期性、非周期性
计数器
8253计数/定时器
可编程(工作方式/计数值) 三个独立的计数器通道 对初值进行减一计数 二进制/BCD计数初值 计数对象的最高频率为2MHz
第八章可编程计数器定时器8253
每个通道(计数器)是16位二进制计数器,每个计数器中有3 个寄存器。
(1)初值寄存器:初始化时写入该计数器的初始值。
(2)减一计数器:初值寄存器写入减一计数器,减1到0为止。
(3)计数值锁存器:在计数器工作的过程中,跟随计数值的 变化,在接收到CPU发来的读计数值命令时,用以锁存计 数值,供CPU读取,读取完毕之后,输出锁存器又跟随减1
控制字:10110110 B6H
MOV AL,0B6H OUT 43H,AL MOV AX,533H OUT 42H,AL MOV AL,AH OUT 42H,AL
;计数器2,先低后高字节 ;写命令字 ;计数初值 ;写计数值低位
;写计数值高位
例2:8253工作为计数器1,方式3,初值为4020D,设寄存器地 址为40H-43H。
MOV AL,00010100B OUT 73H,AL MOV AL,100 OUT 70H,AL
;控制字 ;计数初值
例4:计数器1,工作在模式1,初值为1234,先写入低8位,再 写高8位,计数值为二进制,设寄存器地址为70H-73H。
MOV AL,01110010B OUT 73H,AL MOV AX,1234H OUT 71H,AL MOV AL,AH OUT 71H,AL
一、8253结构及引脚功能 1.结构:由四部分组成。
D0~D7 8 数据总线缓冲器
A0 A1
RD 读/写逻辑
WR
CS
控制字寄存器
计数器0 计数器1 计数器2
内部总线
CLK0 GATE0 OUT0
CLK1 GATE1 OUT1
CLK2 GATE2 OUT2
(1) 数据总线缓冲器
这是8253与CPU的数据总线(D7~D0)连接的8位双向三态缓冲器。 CPU用输入输出指令对8253进行读写操作时的所有信息都通过这个缓冲器
(计数初值)可编程定时器计数器8253
8253-5的工作方式
②GATE=1计数进行,GATE=0计数停止,且下一个CLK计数 器重新赋初值,GATE变为高电平,计数重新开始。
29
8253-5的工作方式
③ 计数期间送入新值,本周期继续进行,下一个周期按 新值计数操作。
不用重复置数。计数器能够连续工作,输出OUT是输 入CLK的n(初值)分频。
31
8253-5的工作方式
方式3的时序波形: ① 写入CW后OUT变为高电平,输入时间常数后,下一个时 钟开始计数,计到一半时输出变为低电平,计到终值时重 新变为高电平,并开始下一次计数过程。
32
8253-5的工作方式
② 若N为偶数,高低电平持续时间相等;若为奇数,则 高电平持续时间为(N+1)/2,低电平持续时间为(N-1) /2。
35
8253-5的工作方式
①写入CW后OUT为高电平,输入时间常数后,下一个CLK 开始计数,计数器为0时,输出一个周期负脉冲,并停止 操作。
36
8253-5的工作方式
②GATE=1允许计数,GATE=0禁止计数。
37
8253-5的工作方式
③计数期间送入新的时间常数,则下一个时钟按新值重新 计数。
25
8253-5的工作方式
④计数过程中,GATE触发沿提前到来,在下一个CLK的下 降沿,计数器开始重新计数,这将使输出单稳脉冲比原 先设定的计数值加宽。
26
8253-5的工作方式
(3)方式2—速率发生器(Rate Genenator) 方式2能产生周期性的定时信号,称为速率发生器,
又称为N分频方式和周期性定时器方式。
数频率,N为计数初值。
42
8253-5的工作方式
第9章_3 可编程定时计数器8253
OUT
2
1)写入计数值开始计数。周期性计数。 2)N=偶数,正负半周=N/2,N=奇数,正半周=(N+1)/2,负半周=(N-1)/2。 3)计数过程中GATE=0,暂停计数,GATE=1重新计数。 4)计数过程中改变计数值,下一周期按新的计数值计数
9.4 可编程的定时/计数器8253/8254 方式4——软件触发选通
9.4 可编程的定时/计数器8253/8254 8253的引线及内部结构:
D0~D7
CLK0
数据 总线 缓冲
计数器 #0 (CNT0) 计数器 #1 (CNT0) 计数器 #2 (CNT0)Biblioteka GATE0OUT0 CLK1
D7 D6 D5 D4 D3 D2 D1 D0 CLK0 OUT0 GATE0 GND
9.4 可编程的定时/计数器8253/8254 方式5——硬件触发选通
WR GATE 启动计数 CLK CW=16 N=3
OUT
3 GATE OUT 3 2 3
3
2
1
0
0
GATE重复 启动计数
3
2
1
0
GATE
WR 计数中改 变计数值 OUT
CW=16
N=4
N=2 4 3 2 1 0 2 1
GATE
控制字 寄存器
•三个16位计数口: #0:CLK0、OUT0、GATE0 #1:CLK1、OUT1、GATE1 #2:CLK2、OUT2、GATE2
9.4 可编程的定时/计数器8253/8254 8253的口地址及操作:
•片内地址:A0,A1 •片选:CS •数据总线:D0~D7 •读/写信号: RD
D0 ;初始化通道0 D7 ;计数值100
硬件技术基础第八章可编程定时计数器8253
读/写控制逻辑
读/写逻辑接收系统控制总线的输入信号,然后依次 产生整个器件操作的控制信号,通过片选信号来控制读/ 写逻辑的工作,没有被选中,读/写逻辑操作功能不会发 生变化。这时,8253不再与CPU交换信息,数据总线缓冲 器呈三态,芯片从系统数据总线上脱开。
概述
控制字寄存器
当A1A0的值为11时,选中控制字寄存器。
初始化编程的内容为:必须先写入每一个通道的控 制字,然后写入通道的计数值。如前所述,在有些方式 下,写入计数值后此计数值通道就开始工作了,而有的 方式需要外界门控信号的触发启动。
在初始化编程时,某一通道的控制字和计数值,是 通过两个不同的端口地址写入的。任一通道的控制字都 是写入到控制字寄存器(地址总线低两位A1A0=11),由 控制字中的D7D6 来确定是哪一个通道的控制字;而计数 值是由各个通道的端口地址写入的。
概述
概述
若8253的地址为04H~07H,要使计数器1工作在方式0, 仅用8位二进制计数,计数值为128。 初始化程序为: MOV OUT MOV AL,50H 07H,AL AL,80H ;设控制字 ;输至控制字寄存器 ;计数值
OUT
05H,AL
;输至计数通道1
概述
方式1——可编程序的单拍脉冲 在这种方式,当CPU写控制字之后(的上升沿),输 出将保持为高(若原为低,则由低变高)。当CPU写完计 数值后,计数器并不开始计数,直到外部门控脉冲GATE启 动之后的下一个输入CLK脉冲的下降沿开始计数,输出OUT 变低。 整个计数过程中,OUT都维持为低,直到计数到0, 输出变为高,因此,输出为一个单拍脉冲。若外部再次触 发启动,则可以再产生一个单拍脉冲。
;写入控制字 ;写计数值的低8位 ;写计数值的高8位
第八章 可编程计数器定时器8253及其应用
LSB=4 CR=4
CLK GATE
OUT CRCE 4 CRCE 2 4 CRCE 2 4 CRCE 2 4 CRCE 2 4
8253方式3 计数初值为奇数时的波形 CW=16H WR LSB=5
CR=5
CLK GATE OUT
CRCE
5 4
CRCE 2 5 2
CRCE 5 4
CRCE 4 3
8253方式0
两种特殊情况:
中途改变计数初值
CW=10H WR CR=3 CLK GATE OUT CR=3 LSB=3
LSB=3
CRCE 3 2
CRCE 1 3 2
1
0
8253方式1
2、方式1——可编程单稳态输出方式
时序图
CW=12H WR
LSB=3 CR=3
CLK GATE
OUT
CRCE
CRCE 3 2
1
0
8253方式1
工作过程
① 写入控制字,OUT立即变为高,并保持不变。 ② 写计数初值N,只有当GATE形成一个上升沿时,才在
下一个时钟脉冲的下降沿,将n装入实际计数器,同 时OUT由高变为低,开始减1计数(再来一个脉冲)。
③ 计数期间,OUT一直为低;当计数结束(计数值为0)
8253综述
Intel 8253是一种可编程的计数器/定时器芯片。 8253内部具有3个独立的16位计数器通道,通过对
它进行编程,每个计数器通道均有6种工作方式,并 且都可以按2进制或10进制2种格式进行计数,最高 计数频率能达到2MHz。 8253还可用作可编程方波频 率产生器、分频器、程控单脉冲发生器等。
教材第八章内容
第八章 可编程计数器/定时器8253及应用
微机原理实验4 可编程定时器计数器8253
实验三可编程定时器/计数器8253要求:按图15连接电路,并将OUT0接指示灯(高电红灯亮、低电平绿灯亮)。
将计数器0、计数器1分别设置为方式3,已知CLK0输入为1MHz的方波,计算两计数器的计数初值,使OUT1输出1s为周期的方波,接着退出程序返回DOS流程图:初始化计数器1初始化计数器0按任意键返回dos程序:stack segment stack 'stack'dw 32 dup (0)stack endsdata segmenttip db 'quit the program.$'data endscode segmentstart proc farassume ss:stack, cs:code,ds:datapush dssub ax,axpush axmov ax,datamov ds,axmov dx,283hmov al,77hout dx,almov dx,281hmov al,00hout dx,almov al,10hout dx,almov dx,283hmov al,37hout dx,almov dx,280hmov al,00hout dx,almov al,10hout dx,almov dx,offset tipmov ah,9int 21hmov ah,8int 21hmov ah,4chint 21hretstart endpcode endsend start分析总结:这次的程序真心是没什么好说的了,初始化完后就没有然后了(话说这也能叫程序的······),本来按我的想法得有一个输入计数值的结构和一秒自动检测误差的结构的,关于输入结构前面的实验已经出现过了应该不是很难办,而延时结构就比较麻烦了,直接的调用int 15h,ah 86h功能不知为啥老是出问题,也不晓得是不是我格式错了,而通过指令循环凑出1s延迟计算起来有些麻烦,稳定性可能还有些问题,这个可能还得去查多点资料了,不过只要延迟精确了误差也就几条指令罢了,之后显示的话也就稍微麻烦点而已了。
8253可编程计数器定时器
8253的工作原理简介8253可编程计数器/定时器的工作频率为0~2MHz,它有3个独立编程的计数器,每个计数器有三个引脚,分别为时钟CLK、门控GATE、计数器和计时结束输出OUT;每个计数器分别有6种工作方式。
下面针对使用到的两种工作方式——方式1和方式2的工作原理[1]进行简述。
方式1:可编程单稳,即由外部硬件产生的门控信号GATE触发8253而输出单稳脉冲。
计数器装入计数初值后,在门控信号GATE由低电平变高电平并保持时,计数器开始计数,此时输出端变成低电平并开始单稳过程。
当计数结束时,输出端OUT转变成高电平,单稳过程结束,在OUT端输出一个单稳脉冲。
硬件再次触发,OUT端可再次输出一个同样的单稳脉冲。
单稳脉冲的宽度由装入计数器的计数初值决定。
在WR信号的上升沿(CPU写控制字之后),输出端OUT保持高电平(若OUT原为低电平则变为高电平)。
CPU写入计数值后,计数器并不马上开始计数,而要等到门控信号GATE启动之后的下一个CLK的下降沿才开始。
在整个计数过程中,输出端OUT保持低电平,直至计数值至0,OUT变为高电平为止。
方式2:速率发生器,其功能如同一个N分频计数器。
其输出是将输入时钟按照N计数值分频后得到的一个连续脉冲。
在该方式下,当计数器装入初始值开始工作后,输出端OUT 将不断地输出负脉冲,其宽度为一个时钟周期的时间,而两个负脉冲间的时间脉冲个数等于计数器装入的计数初值。
若计数初值为N,则每N个输入脉冲输出一个脉冲。
当CPU写完控制字后,输出端OUT转变成高电平,计数器将立即自动开始对输入CLK时钟计数。
在计数过程中,OUT端始终保持高电平,直至计数器的计数值减到1时,OUT端才变为低电平,其保持的宽度为一个输入CLK时钟周期的时间,然后输出端OUT恢复高电平,计数器重新开始计数。
8253控制字格式为:其中:SC1 SC0为计数器选择位;RL1 RL0为计数器读写操作选择位,以确定计数器进行装入或读出是单字节还是双字节;M2 M1 M0为计数器工作方式选择位;BCD表示计数器计数方式选择位。
可编程定时器、计数器8253
通道 (计数器)
工作方式
方式选择控制字
计数初值
0
0(计数结束 中断方式)
ModCr0= 00 01, 000 0B
(=10H)
n0=100
1
3(方波发生 器)
ModCr1= 001 11, 011 0B
(=76H)
n1 =
TOUT1 TCLK1
=
fCLK1 fOUT1
=
2.5 *106 1000
= 2500
4、8253的工作方式
8253提供6种工作方式,遵循以下基本原则: (1)控制字写入计数器8253的控制字寄存器,所有的
控制逻辑电路复位,输出端进入初始状态; (2)初始计数值写入后,经过一个CLK脉冲后,才在
输入脉冲的CLK的下降沿,计数器作减1计数。
定时与计数 本质上是一回事:
不管是定时,还是计数,计数器都是对C3——方波发生器
例: 设8253的端口地址是80H~83H。欲使计数器1输出频率为1KHz 的方波, 从CLK1端输入2.5MHz的时钟脉冲. 试编写初始化程序.
8253使用前,需初始化: 先写入工作方式控制字,再写入计数初值: 方式控制字规定某个通道的工作方式。将控制字写入控制寄存器端口.
2
0(计数结束 中断方式)
ModCr2= 010 11, 000 1B
(=B1H)
n2
=
TOUT2 TCLK 2
=
1 TCLK 2
= fCLK2
= 1000
由图9-23(a), n1 * TCLK1 = TOUT1
其它内容自学
附图:8253的工作方式控制字
控制字——规定某个计数器/通道的工作方式。
可编程定时计数器8253
可编程定时/计数器8253
5
通道控制寄存器
❖ 一个通道控制寄存器 ❖ CPU通过对控制寄存器的读写,可以分别对
三个计数通道的工作方式进行设置 ❖ 只能写不能读
20010.12
可编程定时/计数器8253
6
数据总线缓冲器
❖ 双向三态的8位数据缓冲器,实现8253和 CPU之间的数据接口
读/写控制电路
8253的方式1就是一个可编程单稳电路
❖ 方式1工作过程
门控信号GATE是触发信号,上升沿有效。即开始计数是由GATE的
上升沿触发的; 触发后,通道计数器开始计数,输出端OUT由高变低; 计数器计数到0,OUT再由低变高。
PW=N×Tclk
PW:输出的负脉冲宽度 ;N:初始计数值,Tclk:CLK端的脉冲周期
可编程定时计数器8253
计数通道
❖ 通道0、通道1和通道2
❖ CLK:计数器的脉冲输入端,GATE: 计数器的门控 信号,OUT: 计数器的输出信号,一般与计数溢出 有关。
❖ 工作原理:
8253计数器工作在减1状态,每输入一个计数脉冲,计数
器值减1,当计数器 CLK
计数到零时,OUT信
16位计数器 OUT
锁存控制字: 0000XXXXB
20010.12
可编程定时/计数器8253
10
工作方式选择(M2、M1、M0)
控制字的D5D4为00,表示的是锁 存命令。这时控制字中的低4位无 效
BCD计数制:写入初值范围为0000到 9999,而0000是最大值,代表10000
二进制计数制:写入初值范围为0000 到FFFFH,其中0000为最大值,代表 65536。
对OUT端,方式2提供给用户的是负脉冲,方式3提供给用 户的是方波。
第八章可编程计数器定时器8253
门控信号控制功能 门控信号GATE的控制功能 表8-2 门控信号 的控制功能
工作方式 方式0 方式1 方式2 方式3 方式4 GATE为低电平或下降沿 禁止计数 —— 禁止计数,使输出变高 禁止计数,使输出变高 禁止计数 —— —— GATE为上升沿 GATE为高电平 允许计数
从初值开始计数,下一个 —— 时钟后输出变为低电平 从初值开始计数 从初值开始计数 —— 从初值开始计数 允许计数 允许计数 允许计数 ——
③GATE是门控信号,GATE=1时允许计数,GATE=0时, 禁止计数。在计数过程中,如果GATE=0则计数暂停,当 GATE=1后接着计数。 ④在计数过程中可改变计数值。若是8位计数,在写入新的 计数值后,计数器将按新的计数值重新开始计数。如果是16位 计数,在写入第一个字节后,计数器停止计数,在写入第二个 字节后,计数器按照新的计数值开始计数。如图8.5所示。
1、软件定时 、 软件定时的方法是:由于执行每条指令都需要时间,则执 行一个程序段就需要一个固定的时间,通过适当地挑选指令和 安排循环次数来实现软件的定时。这种方法由于要完全占用 CPU的时间,因而降低了CPU的利用率。
2、纯硬件定时 、 它采用固定的电路,如可以采用小规模集成电路555,外接 电阻和电容构成单稳延时电路。这样的定时电路简单,而且通 过改变电阻和电容,可以使定时在一定的范围内调整。但它由 纯硬件来完成,给使用带来不便。
CW=18
WR
N=3
CLK GATE OUT 3 2 1 0
图8.9 方式4波形
6、方式5——硬件触发选通 、方式 硬件触发选通 方式5的波形如图8.10所示,这这种方式的特点是: ①写入控制字后,输出为高电平。在设置了计数值后,计 数器并不立即开始计数,而是由门控脉冲的上升沿触发启动。 当计数到0时,输出一个CLK周期的负脉冲,并停止计数。当门 控脉冲再次触发时才能再计数。 ②在计数过程中如果再次用门控脉冲触发,则使计数器重新 开始计数,此时输出还保持为高电平,直到计数为0,才输出负 脉冲。 ③如果在计数过程中改变计数值,只要没有门控信号的触 发,不影响计数过程。当有新的门控脉冲的触发时,不管是否 计数到0,都按新的计数值计数。
第7章 可编程计数器定时器8253及其应用
计数器2
GAT E2
OUT2
A1A0=10 8253的内部结构
§7.1 8253的工作原理
一.8253的结构和功能
2. 8253的内部结构和引脚功能
② 计数器0~2
3个独立的计数器,构成3个通道ch0~ch2。
计数初值 寄存器CR
计数执行 单元CE
计数值锁 存单元LR
CLK
GATE
OUT
CPU DB
一.8253的结构和功能
2. 8253的内部结构和引脚功能
③ 控制字寄存器
8位寄存器,写入控制口(A1A0=11)。
CPU DB
D0 ~ D7
数据 总线 缓冲器 内 部 总 线 控制字 寄存器
CLK0
计数器0
GAT E0
OUT0
CLK1
在8253的初始化编程中, 由CPU向8253的控制字寄存器写 入一个控制字来设置8253的工 作方式。
§7.1 8253的工作原理
三.8253的工作方式
2. 方式1 可编程单稳态输出方式
N N
OUT
TCLK
写入控制字,OUT变高,写入初值,经 过一个CLK周期,初值到达计数执行单元。 无论GATE为何电平,都不工作。在GATE上 升沿作用下,并且OUT变低,开始计数,计 数到“0”,OUT变高,停止计数。
■ 通道管脚(9个)
8253有3个计数/定时通道。 ◇ 通道0有3个引脚:CLK0、GATE0、OUT0 ◇ 通道1有3个引脚:CLK1、GATE1、OUT1 ◇ 通道2有3个引脚:CLK2、GATE2、OUT2
8253
■ 与CPU连接的管脚(13个)
第17讲 计数器定时器8253
例 2 :要求读出并检查 1 号计数器的当前计数值是否是全
“1”(假定计数值只有低8位),其程序段为
L :
MOV DX,306H
;命令口 ;1号计数器的锁存命令 ;写入命令寄存器 ;1号计数器数据口
MOV AL,01000000B OUT DX,AL MOV DX,302H
CW N=4
N 装 控 制 字
N 4 装 计 初 数 值 开 始
3
2
1
计 数 结 束
0 FF
说明:①控制字写入之后,OUT变低;初值装入后,要经过1个CLK 的周期(1个上升沿和1个下降沿)后,计数器才开始计数,所以,输 出OUT要经过N+1个时钟周期后才有输出; ②输出OUT的有效电平为高电平,并可同时触发中断请求; ③门控GATE的作用:高电平时计数,低电平或下降沿时停止计数; ④CW为写入控制字,N=4表示写入初值,计数值一次有效。 22
CS
0
0 0 0 0 0 0
RD
1
1 1 1 0 0 0
WR
0
0 0 0 1 1 1
A1
0
0 1 1 0 0 1
A0
0
1 0 1 0 1 0
传送方式
写入计数器0的初始值
写入计数器1的初始值 写入计数器2的初始值 写入控制寄存器控制字 读自计数器0的OL 读自计数器1的OL 读自计数器2的OL
12
四、8253的控制字
30
MOV AL,00110101B(35H) OUT 86H,AL MOV AX,1000 OUT 80H,AL MOV AL,AH OUT 80H,AL MOV AL,01110110B(76H) OUT 86H,AL MOV AL,0E8H 03E8H=1000D OUT 82H,AL MOV AL,03H OUT 82H,AL
可编程定时-计数器8253
接口技术
•8086/8088中断响应周期时,CPU的INTA引脚的 正确功能是—————— A.输出一个负脉冲,CPU从D7~D0读入中断类型码 B.输出两个负脉冲,在第二个负脉冲期间,CPU 从A7~A0读入中断类型码 C.输出两个负脉冲,在第二个负脉冲期间,CPU 从D7~D0读入中断类型码
D.输出一个负脉冲,CPU从A7~A0读入中断类型 码
接口技术
7.1.4 中断嵌套 当CPU执行优先级较低的中断服务程序时,允许响 应比它优先级高的中断源请求中断,而挂起正在处 理的中断。 (1)屏蔽同级和较低级中断请求。 (2)在保护现场、屏蔽同级和较低级中断完成后, 用STI指令来开中断。 (3)中断服务程序结束后,恢复现场前,用CLI指 令来关中断,然后才能恢复现场。 (4)恢复现场后,CPU应该重新开放中断,以便允 许任何其它等待着的中断请求有可能被CPU响应。
CNT2:标准定时,定时时间为1S。
8253
D7~D0
系
A1
统 总
A0 IOR
IOW
线
A2~A15
地址 译码器
D7~D0
CLK OUT
2 2
A1 A0
CLK 1 OUT 1
RD WR
CLK 0
OUT 0 CS GATE 1
GATE 2 GATE 3
送8259的IR 2端 2.5MHz 1kHz方波 外部事件
接口技术
计数结束时,输出一个时钟周期的负脉冲;
计数中写入新初值,待GATE信号重新启动之后 才置入计数器使用。
WR
CLK
GATE OUT
CW N=4
4 32 1 0 图7.19 方式5 的波形
接口技术
例7.5 IBM PC/XT主机板上有一片8253用作计 数/定时电路,各计数器及控制寄存器所占地 址及工作情况如下:
第8章 可编程定时计数器8253
8.2.3 8253的工作方式
8253的每个通道均可以通过编程选择6种工作方式
1.方式0:计数结束产生中断
(1)工作过程:工作波形如图。 控制字CW写入控制寄存器后, 在写信号的上升沿,输出信号 OUT变为低电平且在计数过程 中一直维持低电平。 开始计数要有两个条件:一 是门控信号GATE必须为高 电平,二是写入计数器初值。 如图,满足以上两个条件后(计数初值N=4),在每个CLK时钟下降沿, 计数器进行减1计数,直到计数值减到0时,输出OUT变为高电平,并且 一直保持到该通道重新装入计数初值或重新设置工作方式为止。
8.2.3 8253的工作方式
2.方式1:可重复触发的单稳态触发器
(2)方式1的主要特点:
①可重复触发的单次脉冲,即:当计数 到零后,不用再次送计数初值,只要再 次由GATE触发,8253可以再输出一个 同样宽度的单稳脉冲,如图8.6所示。 ②若设置的计数初值为N,则输出的单 稳脉冲的脉宽为N个CLK时钟周期间隔。 ③如果在计数器未减到零时,GATE又 一次触发,则计数器将从初值开始重新 计数,从而使输出负脉冲加宽。 ④在计数过程中,改变计数初值,计数 过程不受影响。只有再次出发启动后, 计数器才开始按新计数值输出单稳脉冲。
表8.1 A0、A1功能说明
A0A1 00 01 10 功能说明 可选择计数器0 可选择计数器1 可选择计数器2
11
可选择控制寄存器
8.2.2 8253的内部结构
RD / WR:读/写控制信号,低电平有效。 CS :片选信号,低电平有效。 A0、A1、 RD 、 WR 、 CS 各信号配合实现8253的读/写操作, 如表8.2所示。
8.2.3 8253的工作方式
1.方式0:计数结束产生中断
第8讲_可编程计数(定时)器8253
21/38
三、8253的工作方式
(2)方式1:可重复触发的单稳态触发器(稳定在高,暂稳在 CW N=2 低) WR
CLK GATE OUT GATE OUT 2 1 2 1 0 2 1 0 2 1 0
提前触发,则输出脉冲加宽
硬件启动(触发:即边沿引起计数),不自动重复计数; 过程:写入控制字后OUT=1;写入计数初值后不计数,GATE 由低变高(触发)后下一个CLK下沿开始计数,OUT=0;减1 为0,OUT=1;OUT端输出N倍CLK的负脉冲。
第八讲 可编程计数器/定时器Intel8253
主要内容
计数/定时器8253引脚功能和内部结
构; 8253控制字/锁存字; 8253的6种工作方式及其使用; 8253应用:系统连接、初始化编程。
2/38
一、8253引脚和内部结构
1.1 概述 定时/计数器的用途? 可以实现定时与计数两个功能,常用于:系统时钟、 DRAM刷新定时、定时采样、实时控制(如:交通信号灯)、 事件/脉冲计数等。 如何实现定时? 软件方法:CPU执行一段程序实现延时。利用程序循环延 迟指定的时间;缺点:CPU占用率?延时精度?兼容? 硬件方法:不可编程的定时/计数器电路,如定时器555, 单稳触发器等;缺点:不可编程、不够灵活。
8/38
主要内容
计数/定时器8253引脚功能和内部
结构; 8253控制字/锁存字; 8253的6种工作方式及其使用; 8253应用:系统连接、初始化编程。
9/38
二、8253控制字/锁存字
1、 计数启动方法 软件启动:CPU用输出指令向计数器写入初值后启动计数; 硬件启动:写入初值后不启动计数,外部电路信号(GATE) 启动计数。 (1)软件启动过程 • 门控信号GATE端保持为高电平; • 写入计数初值后第1个CLK,初值寄存器内容送计数器(CE); • 第2个CLK下降沿计数器(CE)开始减1计数,直到为0,OUT端 输出一个信号; • 实际CLK个数比写入的计数初值N多一个,即N+1。 (2)硬件启动过程 写入计数初值后不启动计数;门控信号GATE端低变高 CLK上升沿采样GATE;有,则该CLK的下降沿开始计数。
第7章 可编程定时器计数器8253
①软件定时器/计数器
软件定时器/计数器是实现系统定时控制或延 时控制的最简单的方法。在计算机中CPU每执行 一条指令所占用的周期(T状态)数是确定的, 用汇编语言编写一段具有固定延时时间的循环程 序,将该程序的每条指令的T状态数加起来,乘 以系统的时钟周期,就是该程序执行一遍所需的 延时时间。设计者可选择不同的指令条数和不同 的循环次数来实现不同的时间延迟。
④ 计数通道 8253有3个相互独立的同样的计数电路,分 别称作计数器0、计数器1和计数器2。每个计数 器包含一个8位的控制寄存器(控制单元),它存 放计数器的工作方式控制字;一个16位的初值 寄存器CR(时间常数寄存器),8253工作之前要对 它设置初值;一个16位计数执行单元CE,它接 收计数初值寄存器CR送来的内容,并对该内容 执行减1操作;一个16位输出锁存器OL,它锁存 CE的内容,使CPU能从输出锁存器内读出一个稳 定的计数值。计数器的内部结构如图6-5所示。
3.项目电路原理框图 利用8253对外部事件进行计数,电路原理框 图如图7-1所示。电路由8086CPU芯片、8253芯 片、按钮开关UP和发光二极管LED等组成。
图7-1 电路原理框图
4.项目程序设计 (1)程序流程图 利用8253对外部事件进行计数程序流程图 如图7-2所示。
图7-2 用8253对外部事件进行计数程序流程图
(2)程序清单 利用8253对外部事件进行计数程序清单如下所示。 CODE SEGMENT ASSUME CS:CODE START: MOV AL, 30H ; 二进制计数,方式0,先低后高,通 道0 MOV DX, 203H ;8253控制地址 MOV AL, 0 OUT DX, AL OUT DX, AL ; 高八位 MOV AL, 5 ; 计数器初始值。JMP AGAIN AGAIN: MOV DX, 200H ;通道0地址 CODE ENDS OUT DX, AL ; 低八位 END START
第九章 可编程计数器与定进控制器8253(9.2)
SC1 SC0 RW1 RW0 M2
M1
M0 BCD
1--计数值为BCD码格式 0--计数值为二进制格式 M2 M1 0 0 0 1 1 0 0 M0 0 1 0 1 0 1 模式选择 模式0 模式1 模式2 模式3 模式4 模式5
0 0----对计数器进行锁存
0 / / 1 1
0 0----选计数器0
STT: MOV DX,8253-C MOV AL,10H OUT DX,AL MOV DX,8253-0 MOV AL,64H OUT DX,AL MOV DX,8253-C MOV AL,76H OUT DX,AL MOV DX,8253-1 MOV AX,09C4H OUT DX,AL MOV AL,AH OUT DX,A MOV DX,8253-C MOV AL,0B1H OUT DX,AL
图 8-22
方式0——计数结束产生中断
高
图 8-22
单脉冲触发器
图 8-23
分频器
图 8-23 方波发生器
图 8-23 软件触发的选通信号发生器
图 8-23
硬件触发的选通信号发生器
8-2-3 8253应用举例
8253初始化方法: 控制字 计数初值:
已知:CLK 的频率fc与定时的时间t. 计数初值: n= fc t
习题1分析: 用通道 0 作定时器,初始编程使通道0按方式3工作,每秒产 生18.2次输出信号,该信号送到8259A中断控制器的IRQ0输入端。 每55ms产生一次中断请求,8086对其计数,用来计算时间。通道 1 用作动态RAM刷新定时,每隔5.12us产生一次输出信号,请求动态 刷新。OUT1输出产生DMA请求信号送8237,由8237对动态RAM刷新。 (8253地址为40H~43H) 通道0:地址为40H,控制字为36H,工作方式3,计数初值为0 通道1:地址为41H,控制字为 54H,工作方式2,计数初值为12H
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(3)在形成负脉冲过程中,可再重触发,使OUT输 出的负脉冲加宽。
(4)由于计数初值是由程序写入的,所以可以通过 改变计数初值输出不同宽度的OUT的负脉冲信号。
4、8253的的工作方式——方式1 ——自学
例:设8253的端口地址是70H-73H,若计数器1工 作在方式1,计数次数为20次,试编写初始化程序。
8253控制字格式图
4、8253的的工作方式——方式1——自学
方式1——硬件触发启动定时或计数 方式1下,CPU写入控制字后,输出OUT变高,然后写入计数
初值到CR; 当GATE端产生一个由低变高的触发信号之后的下一个CLK
时钟脉冲的下降沿,才将CR装入CE,同时OUT变为低电 平;
然后计数部件CE根据CLK脉冲做减1计数,减到0时,OUT变 为高电平。
习题
8253有几个计数器?是多少位的?可采用几种工作方式?简述 各工作方式的特点。
解:8253上有3个独立的16位计数器,可提供6种工作方式供 选择。
(3)数据总线缓冲器——与CPU数据总线直接相连。 (4)读写控制电路——8253的控制电路,接受来自CPU 的地址信号和控制信号,完成对8253内部各功能的控 制和操作。
1、 8253的内部结构及引脚
A1A0的取值用于选择不
同的端口:
与接口的
A1A0 端口
概念不同
0 0 计数器0
RD
0 1 计数器1
三个计数器
(1)16位的计数器。可进行二进制计数或十进制(BCD码)计数。 二进制计数:最大计数值为1111,1111,1111,1111B=FFFFH。 BCD码计数,最大计数值是1001,1001,1001,1001B=9999。
(2)每个计数器内设有一个16位计数值锁存器(输出锁存器)OL 。 必要时可用来锁存计数值。
注:计数初值仅仅一次有效。若需再次计数,必须 (用程序)重新写入计数初值。
工作过程:
CLK的
① 当针对某通道i将控制字写入控制端口后, OUTi变为低电平. 下降沿
② CPU写入计数初值后OUTi仍为低电平, 然后该通道开始减1计数.
③ 减到0时, OUTi跳变为高电平, 并一直保持高电平。除非重新装
通道 (计数器)
工作方式
方式选择控制字
计数初值
0
0(计数结束 中断方式)
ModCr0= 00 01, 000 0B
(=10H)
n0=100
1
3(方波发生 器)
ModCr1= 001 11, 011 0B
(=76H)
n1 =
TOUT1 TCLK1
=
fCLK1 fOUT1
=
2.5 *106 1000
= 2500
N为偶数时,OUT端输出方波的高、低电平时 间相同;
N为奇数时, OUT端输出方波的高、低电平时 间分别是(N+1)/2 *TCLK、 (N-1)/2*TCLK。
含义(见方式选择控制字格式):
通道0;只读/写计数器低字节(只
郑 教材P2519.2.3节例,程序阅读指导
用计数器低字节,高字节不用); 方式0;二进制计数
(1)控制字——规定某个计数器/通道的工作方式。
•控制字应写入控制字寄存器
8253控制字格式图
板书
复习 BCD码
每一个计数器: 16位;8253数据线:8位。所以,若需要对某一 计数器写16位计数值,则需要写两次:先低字节,后高字节,或 反之。
注:工作方式控制字只能写入控制字寄存器,不能从其中读出。
一个计数通道由:初值寄 存器、减一计数器和输出 锁存器组成 (见朱庆保P247)。 需用读计某数计值数锁器存的器现来行锁值存时计, WRDR 数值,此后锁存器不随减 一计数器而变化,保证读 CS 数的正确性。
当CPU读取计数值后锁 存器自动解除锁存状态, 继续跟随计数器同步变化。
(3)GATE——门控脉冲输入。 * 高电平时,允许计数器工作; * 低电平时,禁止计数器工作。
控制逻辑电路复位,输出端进入初始状态; (2)初始计数值写入后,经过一个CLK脉冲后,才在
输入脉冲的CLK的下降沿,计数器作减1计数。
定时与计数 本质上是一回事:
不管是定时,还是计数,计数器都是对CLK端输入的方波个数计 数。
当输入周期性方波(如时钟脉冲)时,计数个数×方波周期=定 时时间。
4、8253的的工作方式0 ——计数结束中断方式
4、8253的的工作方式3——方波发生器
例: 设8253的端口地址是80H~83H。欲使计数器1输出频率为1KHz 的方波, 从CLK1端输入2.5MHz的时钟脉冲. 试编写初始化程序.
8253使用前,需初始化: 先写入工作方式控制字,再写入计数初值: 方式控制字规定某个通道的工作方式。将控制字写入控制寄存器端口.
3、 8253的初始化
板书
8253使用前,需初始化:先写入方式控制字,然后写入 计数初值。
(1)先写工作方式控制字——规定某个通道的工作方式.
将控制字写入控制字寄存器端口(控制端口)。 (2) 给相应的计数器通道送计数初值。
计数初值写入计数器端口。
4、8253的工作方式
8253提供6种工作方式,遵循以下基本原则: (1)控制字写入计数器8253的控制字寄存器,所有的
把计数初值写入相应的计数器端口。
解:按题意,计数器1工作在方式3。初始化程序段:
MOV AL,76H ;01 11 011 0B: 计数器1. 计数器的
;高、低字节均用. 方式3. 二进制计数
OUT 83H, AL ;控制字写入控制寄存器 MOV AL, 0C4H ;先送低8位 OUT 81H, AL ;计数值低8位送计数器1 MOV AL, 09H ;再送高8位 OUT 81H, AL ;计数值高8位送计数器1
装入到计数执行部件CE中。只要CLK是周期性的脉冲序 列,在OUT端上就能连续地输出周期性分频信号,正脉冲 宽度为(计数初值-1)个CLK宽度,负脉冲宽度即为 CLK的宽度; (2)方式2的计数器既可软件启动(计数器恢复初值,重新计 数); 又可硬件启动(GATE=1,计数器恢复初值,GATE=0现行 计数暂停) (3)在计数过程中,可再次写入新的计数初值,下次有效。
入计数初值或复位。
GATE是门控信号,高电平开放计数,低电平停止计数。 GATE恢复高电平后“接力”计数。
4、8253的的工作方式0
方式0的特点:
方式0是典型的事件计数用法,CLK作为事件计数输入 信号,当计数到0时,OUT端变为高电平,可以作为中 断请求信号。
OUT由低变高表示计数过程结束,若计数初值为N,表 示已经出现了N+1个CLK脉冲信号,或者说已经发生了 N+1次事件.
OUT端输出的负脉冲宽度就是计数初值个CLK脉冲周期之和。 方式1可重触发,只要将GATE端再产生一次由低变高的触发
信号,则又将计数初值寄存器的CR的内容装入CE,又开 始计数。
4、8253的的工作方式——方式1 ——自学
方式1特点和应用
(1)计数器的启动只能由门控脉冲的上升沿产生, 即只能用硬件启动,不能用软件启动计数器;
2
0(计数结束 中断方式)
ModCr2= 010 11, 000 1B
(=B1H)
n2
=
TOUT2 TCLK 2
=
1 TCLK 2
= fCLK2
= 1000
由图9-23(a), n1 * TCLK1 = TOUT1
其它内容自学
附图:8253的工作方式控制字
控制字——规定某个计数器/通道的工作方式。
也可:
MOV AX, 2500 OUT 81H, AL MOV AL, AH OUT 81H, AL
端口地址 80H
81H
82H
83H
对应端口 计数器0 计数器1 计数器2 控制字寄存器
2500=09C4H
注: 工作于方式3时,观察波形,可得
TOUT=N*TCLK
N为偶数和奇数时,输出波形有一点点区别:
4、8253的的工作方式0
例:设8253的端口地址是80H-83H,若计数器0工作在方式0, 计数值为100次,试编写初始化程序。
解:初始化程序段 MOV AL, 10H ;00 01 000 0B: 计数器0. 只用计数器的低字节
;方式0 . 二进制计数 OUT 83H, AL ;控制字写入控制寄存器 MOV AL, 100 ;给计数器0送计数初值
可编程定时器/记数器8253
在微型计算机系统中常常需要定时器或计数器,用来产生实 时时钟信号。 计算机控制系统也常常需要计数功能,实现对外部事件的计 数。 1、 8253的内部结构及引脚 2、 8253的工作方式控制字 3、8253的初始化 4、8253的工作方式 5、习题
1、 8253的内部结构及引脚
OUT 80H, AL
端口地址 80H
81H
82H
83H
对应端口 计数器0 计数器1 计数器2 控制字寄存器
4、8253的的工作方式3——方波发生器
特点:计数到初值的一半时,输出变为低;至计数到零,输出又变 高,并重新开始计数。自动重装
n=5
工作过程: ① 当针对某通道i将控制字写入控制字寄存器后, OUTi变为低电平. ② 写入计数初值n后OUTi立即变为高电平并保持, 然后开始减1计数. ③ 计数值减到n/2时, OUTi变为低电平,一直保持到计数值为0。 ④ 系统自动重新置入计数初值n,再次计数。 GATE是门控信号, 高电平开放计数, 低电平停止计数 . (GATE变低时OUT立即变高) GATE恢复高电平后从初值n开始重新计数。