资源描述
第17章 可编程计数器_定时器8253
17.1. 基本功能
l 三个独立的16位计数器;
l 每个计数器有6种工作方式;
l 能进行二进制或十进制计数(减法计数);
l 计数频率为0~2MHz;
l 可作计数器或定时器。
17.2. 引脚及内部结构
一个计数器内部结构
17.3. 寻址方式
A1 A0
寻址
操作
0 0
写计数器0初值(CR)
读计数器0当前值(OL)
写
读
0 1
写计数器1初值(CR)
读计数器1当前值(OL)
写
读
1 0
写计数器2初值(CR)
读计数器2当前值(OL)
写
读
1 1
写控制字
写
17.4. 工作方式控制字(CW)
l 写控制字时,复位8253:OUT=初态, CR=0;
l 写控制字,之后写对应计数器的初值,之后才开始工作;
l 读当前计数值时,必须先设置锁存操作控制字,之后读OL。
17.5. 工作方式
1. 方式0(计数结束中断方式,单次)
过程:
(1) 写CW,使OUT=0 ;
(2) 写CR,在下一个CLK下降沿,CRàCE(重装);
(3) 每个CLK下降沿,CE减1;
(4) 当CE=0时,OUT=1。
(5) GATE是CLK的开关,可以关断CLK。
作用:软件某个操作后,过多长时间(时间常数决定)后,可以产生一个事件(状态)。可用于申请中断。
2. 方式1(硬件触发(GATE)单稳态方式,单脉冲)
过程:
(1) 写CW,使OUT=1 ;
(2) 写CR ,不重装;
(3) GATE有一个上升沿后,下一个CLK下降沿,CRàCE(重装), OUT=0;
(4) 每个CLK下降沿,CE减1;
(5) 当CE=0时,OUT=1。
作用:由GATE触发,过多长时间(时间常数决定)后,可以OUT产生一个事件(状态)。
3. 方式2(分频器, CLK的n分频,多次),周期信号
过程:
(1) 写CW,使OUT=1 ;
(2) 写CR,在下一个CLK下降沿,CRàCE(重装);
(3) 每个CLK下降沿,CE减1;
(4) CE=1时,OUT=0; CE=0时,OUT=1,并CRàCE(重装);
(5) GATE=0使计数暂停,GATE=1,重装CR->CE,并开始计数。
(6) 计数过程中,修改CR,在下次重装时有效。
作用:产生多个CLK的n分频。
4. 方式3(方波发生器,多次),周期信号
过程:
(1) 写CW,使OUT=1 ;
(2) 写CR,在下一个CLK下降沿,CRàCE(重装);
(3) 每个CLK下降沿,CE减2;
(4) 当CE=0时,OUT=变化,并CRàCE(重装);
(5) GATE=0使计数暂停,GATE=1,重装CR->CE,并开始计数。
(6) 计数过程中,修改CR,在下次重装时有效。
作用:产生方波。
5. 方式4(软件触发选通方式,单脉冲)
过程:
(1) 写CW,使OUT=1 ;
(2) 写CR,在下一个CLK下降沿,CRàCE(重装);
(3) 每个CLK下降沿,CE减1;
(4) 当CE=0时,OUT=0;在下一个CLK下降沿,OUT=1。
(5) GATE=0使计数暂停,GATE=1,重装CR->CE,并开始计数。
(6) 计数过程中,修改CR,立即有效。
作用:软件某个操作后,过多长时间(时间常数决定)后,可以产生一个事件(脉冲)。
6. 方式5(硬件触发选通,单脉冲)
过程:
(1) 写CW,使OUT=1 ;
(2) 写CR ,不重装;
(3) GATE有一个上升沿后,下一个CLK下降沿,CRàCE(重装);
(4) 每个CLK下降沿,CE减1;
(5) 当CE=0时,OUT=1;在下一个CLK下降沿,OUT=1。
(6) 计数过程中,修改CR,在下次重装时有效。
作用:由GATE触发,过多长时间(时间常数决定)后,可以产生一个事件(状态)。
17.6. 应用
例1. 用8253-5监视一个生产线 P165
1. 硬件连接
2. 控制字设置
3. 程序设计
主程序为:
MOV AL,15H ;通道初始化
OUT 43H,AL
MOV AL,50H ;计数初值
OUT 40H,AL
STI ;开中断
LOP: HLT ;等待中断
JMP LOP
中断服务程序为:
MOV AL,01H ;通道1的GATE1置1,启动计数
OUT 80H,AL
MOV AL,77H ;通道1初始化
OUT 43H,AL
MOV AL,50H ;计数初值
OUT 41H,AL
MOV AL,12H
OUT 41H.AL
CALL DL5S ;延时5秒
MOV AL,00H ;通道1的GATE1置0,停止计数
OUT 80H,AL
IRET
例2 8253在IBM-PC机中的应用
1.工作原理
2.8253的初始化程序
(1) 对计数器0的初始化程序:
MOV AL,00110110B ;写入计数器0的控制字,CW表示选择计数器0、
;双字节写、方式3和二进制计数
OUT 43H,AL
MOV AL,0 ;计数初值为65536,先写入低8位字节到CRL,
;后写入高8位字节到CRH
OUT 40H,AL
OUT 40H,AL
(2) 对计数器1的初始化程序:
MOV AL,01010100B ;写入计数器1的控制字,CW表示选择计数器1的控制
; 字寄存器,只写入低位字节,方始和二进制计数
OUT 43H,AL ;计数初值写如CRL中
MOV AL,18
OUT 41H,AL
(3) 对计数器2的初始化程序:
MOV AL,10110110B ;写入计数器2的控制字,CW表示选择计数器2的控
;制字寄存器,双字节、方式3和二进制技术
OUT 43H,AL
MOV AX,0533H ;计数初值0533依次写入CRL中
OUT 42H,AL
MOV AL,AH
OUT 42H,AL
IN AL,61H ;完成对8255A PB0=PB1=1的设置,控制扬声器发声,
;8255A PB口的端口地址为061H
MOV AH,AL
OR AL,03H
OUT 61H,AL
展开阅读全文