下面介绍8253引脚图和内部结构及引脚定义等。
8253由以下几个部分组成:
(1) 数据总线缓冲器(8位、三态、双向);
(2) 读/写控制逻辑;
CS:片选信号,低电平有效;
RD:读信号,低电平有效;
WR:写信号,低电平有效
A1A0:端口选择信号
(3) 三个通道( 0 ~ 2);
(4) 一个控制寄存器;
当A1A0分别为00 01 10 11时分别选中三个通道和控制字寄存器在8088系统中,8088的A1A0分别与8253的A1A0相连在8086系统中,通常将8253的8位数据线与8086的低8位相连,即使用偶地址,所以8086的A2A1分别与8253的A1A0相连
Intel 8253是一片具有三个独立的16位计数器通道的可编程定时器/计数器芯片。每个通道都可以编程设定6种工作方式之一种;
由于8253的读/写操作对系统时钟没有特殊的要求,因此它几乎可以应用与由任何一种微处理器组成的系统中,可作为可编程的方波频率发生器、分频器、实时时钟、事件计数器和单脉冲发生器等。
表8-4 控制功能表
CS
RD
WR
A1A0
功 能
0
1
0
0 0
写计数器0
0
1
0
0 1
写计数器1
0
1
0
1 0
写计数器2
0
1
0
1 1
写控制字寄存器
0
0
1
0 0
读计数器0
0
0
1
0 1
读计数器1
0
0
1
1 0
读计数器2
0
0
1
1 1
无操作1
X
X
X X
禁止使用
0
1
1
X X
无操作
计数器(0 ~ 2)即三个计数器/定时器通道。每个通道包括:8位控制字寄存器、16位计数初值寄存器、减一计数器和输出锁存器。作定时器用:其CLK端上的输入脉冲应是标准的、精确的;作计数器用:对其CLK端上的脉冲计数,脉冲宽度可以不等。采用减一计数器,为0时,从OUT端上输出一个脉冲定时时间 = 时钟脉冲周期X预置的计数初值
每个通道:
CLK
计数脉冲或标准脉冲输入端
GATE
允许端,当GATE=1时允许计数
OUT
计数值为0时输出一个脉冲
8253在 PC机中的应用
例8.5.2: 设计一个程序,使扬声器发出600Hz频率的声音,按下任意键声音停止。PC机的发声系统以计数器2为核心。CLK2的输入频率1.19MHz,改变计数器初值可以由OUT2得到不同频率的方波输出对于600Hz,计数初值1.19MHz/600Hz=1938,发声系统受8255芯片B口的两个输出端线PB0、PB1的控制。PB0为1,使GATE2为1,计数器2能正常计数。PB1为1,打开输出控制门。
下面为控制程序源代码:
CODE SEGMENT
ASSUME CS:CODE
START:IN AL, 61H //8253端口
OR AL, 03H
OUT 61H, AL
MOV AX, 1983
OUT 42H, AL
MOV AL, AH
OUT 42, AL
MOV AH, 01H
INT 21H
IN Al, 61H
AND AL, 0FCH
OUT 61H, AL
MOV AH, 4CH
INT 21H
CODE ENDS
END START
结束!