6.7.18253的寻址及连接
1.寻址
8253占用4个接口地址,地址由A0、A1来确定。当对8253的计数器进行读操作时,可以读出计数值,具体实现方法有如下两种:
① 使计数器停止计数时,先写入控制字,规定好RL1和RL0的状态——也就是规定读一个字节还是读两个字节。
② 在计数过程中读计数值。这时读出当前的计数值并不影响计数器的工作。为做到这一点,首先写入8253一个特定的控制字:SC1SC000××××。这是控制字的一种形式。
2.连接
为了用好8253,读者必须能熟练地将它连接到系统总线上。图6.35就是8253与8088系统总线连接的例子。
在图6.35中,主要解决了8253与8088总线的连接。通过译码器,使8253占FF04H~FF07H四个接口地址。假如在连接中采用了部分地址译码方式,使A0不参加译码,则
8253的每一个计数器和控制寄存器分别占用两个接口地址。
6.7.2初始化及其应用
① 逐个对计数器进行初始化。
②先写所有计数器的方式字,再装入各计数器的计数值,其过程如图6.38所示。
摘录该段程序如下:
MOV AL,36H ;计数器0,双字节,方式3,十六进制计数
OUT 43H,AL ;写入控制寄存器
MOV AL,0
OUT 40H,AL ;写低字节
OUT 40H,AL ;写高字节
由于规定工作在方式3,在OUT0输出端可以获得对称方波。下面是对计数器1的初始化程序:
MOV AL, 54H ;计数器1,只写低字节,方式2,二进制计数
OUT 43H,AL ;写入控制寄存器
MOV AL,18 ;将低字节计数值18写入计数器1
OUT 41H,AL
下面是对计数器2的初始化程序:
MOV AL,0B6H ;选择计数器2,写双字节,方式3,二进制计数
OUT 43H,AL ;装入控制寄存器
MOV AX,533H
OUT 42H,AL ;送低字节
MOV AL,AH
OUT 42H,AL ;装入高字节
下面我们以图6.35所示的连接图为例,写出8253的初始化程序。请读者分析此程序的初始化顺序以及各计数器的工作方式。
SET8253: MOV DX,0FF07H
MOV AL,36H
OUT DX,AL
MOV AL,71H
OUT DX,AL
MOV AL,0B5H
OUT DX,AL
MOV DX,0FF04H
MOV AL,0A8H
OUT DX,AL
MOV AL,61H
OUT DX,AL
MOV DX,0FF05H
MOV AL,00H
OUT DX,AL
MOV AL,02H
OUT DX,AL
MOV DX,0FF06H
MOV AX,0050H
OUT DX,AL
MOV AL,AH
OUT DX,AL
从以上的叙述中可以看到,8253在应用上具有很高的灵活性。通过对外部输入时钟信号的计数,可以达到计数和定时两种应用目的。