第七章 可编程接口芯片
可编程接口概术
可编程并行输入/输出接口芯片 8255A
可编程定时/计数器接口芯片 8253
可编程接口概术一个简单的具有输入功能和输出功能的可编程接口 电路如下图,它包括一个输入接口,
其组成主要是八位的三态门;一个输出接口,
其组成主要是八位的锁存器;另外还有八位的多路转换开关及控制这个开关的寄存器 FF。
输入接口输出接口寄存器FF
多路转换开关 I/O线数据总线
8
8
8
8
用户对寄存器 FF写入的内容称为命令字或 方式控制字,而寄存器 FF称为 命令寄存器,相应的端口称为 命令端口或控制端口,对可编程芯片 初始化 过程实际上就是对芯片的控制端口写入各种命令字的操作过程。
目前常用的可编程芯片有如下几种:
8255A 并行 I/O接口
8253 计数器 /定时器
8251 串行 I/O
8259A 中断控制器
7.1 可编程并行输入/输出接口芯片 8255A
一,功能
8255A是一种通用的可编程并行 I/ O接口芯片,广泛用于几乎所有系列的微型机系统中,
如 8086,MCS51,Z80CPU系统等 。 8255A具有 3个带锁存或缓冲的数据端口,可与外设并行进行数据交换 。 用户可用程序来选择多种操作方式,通用性强 。 使用灵活,可为 CPU与外设之间提供并行输入/输出通道 。
二,8255A的内部结构
A口
B口
C口二,8255A的内部结构并行输入/
输出端口
A组和 B组控制数据总线缓冲器读/写控制电路三,8255A的管脚分配
1、与外设连接的管脚我们已经知道 8255A有三个数据端口,每个端口是 8位的,由此可推算与外设相连接的管脚共有 24位。其中 A口有 PA7— PA0八个 I/O引脚,
B口有 PB7— PB0八个 I/O引脚,C口有 PC7— PC0八个 I/O引脚。特别地对于 PC7— PC0,其中可有若干根复用线可用于“联络”信号或状态信号,
其具体定义与端口的工作方式有关。
PA0…PA7
PB0…PB7
PC0…PC7
2、与 CPU连接的管脚包括数据线 D7— D0,读写控制线和,
复位线 RESET,以及和 CPU地址线相连接的片选信号、端口地址控制线 A0和 A1。
D0…D7
A0
A1
/CS
/WR
/RD
RESET
3、电源线和地线
8255A的电源引脚为 VCC和 GND。 VCC为电源线,一般取+ 5V 。 GND为电源地线。
四,8255与 8086CPU的接口
连接方法
同 RAM相似,取 M/IO=0
举例设计接口,使 8255地址为 0300H
五,8255A的工作方式及编程
1,8255A的工作方式
8255A有三种工作方式,它们是:
①方式 0—— 基本输入/输出方式;
②方式 1—— 选通输入/输出方式;
⑨方式 2— 一双向传送方式。
2,8255A编程所谓 8255A编程,就是用户在使用 8255前,
用户可用软件来定义端口的工作方式,选择所需要的功能。
8255A复位时,A,B,C三端口工作在方式 0
的输入状态。
1.方式控制字这是一个八位的控制字,代表的信息非常丰富。上面提到 8255A内部的 3个端口分为 A,B两组,因此方式控制字也就相应地分成两个部分,分别控制 A
组和 B组,其格式如下,
1 D6 D5 D4 D3 D2 D1 D0
方式选择控制字标识位
A组方式选择
00 方式 0
01 方式 1
1x 方式 2 端口 A1 输入
0 输出
PC3~PC0,1 输入
(方式 0时) 0 输出端口 B,1 输入
0 输出
B组方式选择:
0 方式 0
1 方式 1
PC7~PC4,1 输入
(方式 0时) 0 输出
2,C口置,1” /清,0” 控制字置,1”又称为置位操作,而清,0”称为复位操作。
0 D6 D5 D4 D3 D2 D1 D0
x x x
无关
1,置 1
0,置 0
0
0
0
0
1
1
1
1
端口 C按位置 1/置 0
控制字标识位 位选择
PC0
PC1
PC2
PC3
PC4
PC5
PC6
PC7
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
3.读入状态字当 8255A由程序设定在方式 1或方式 2
工作时,C口就根据不同的情况,产生或接收,联络,信号。如果这时我们对 C口进行读操作,则读出的内容就包含两部分内容,一部分是那些作为 I/O
线上的内容,另一部分是与,联络,
状态有关的内容。
方式 1的输入状态字六,8255A的 三种工作方式
1,8255A工作在方式 0
方式 0也叫 基本输入/输出方式 。
在这种方式下,端口 A和端口 B可以通过 方式选择控制字 规定为输入口或者输出口 ;
端口 C分为高 4位 (PC7~ PC4) 和低 4位 (PC3~ PC0) 两个 4位端口,这两个 4位端口也可由方式选择控制字分别规定为输入口或输出口 。
这四个并行口共可构成 16种不同的使用组态 。
利用 8255A的方式 0进行数据传输时,由于没有规定专门的应答信号,所以这种方式常用于与简单外设之间的数据传送,如向 LED显示器的输出,从二进制开关装置的输入等 。
8255工作过程
1,8255编程(初始化)
2、程序对端口的访问例,8255A的 A口和 B口工作在方式 0,A口为输入端口,接有四个开关。 B口为输出端,
接有一个七段发光二极管,连接电路如图所示。试编一程序要求七段发光二班管显示开关所拨通的数字。
a
g
DP
f
e
d
b
c
电路
LED数码管段码表
……
mov al,90h ;设置 8255方式字
mov dx,ctrl_port
out dx,al
mov dx,a_port
in al,dx ;取键盘信息
and al,0fh ;屏蔽高 4位
mov bx,offset tab1 ;取段码表首地址
xlat ;查表得段码
mov dx,b_port ;输出显示
out dx,al
2,8255A工作在方式 1—— 输入以 A口为例,控制字 1011xxxxB
A口的选通信号,当其有效时,
外设把数据打入 A口的输入缓冲器
A口的输入缓冲器,满,信号,
当其有效时表示 A口的输入缓冲器已暂存一个有效数据 。
A口的中断请求信号。当其有效时,8255A的 A口向 CPU申请中断,要求 CPU从 A口取数中断允许信号 。
C口特点
1,C3- 5作为 A口的联络线,C4 - /STB;
C4 - IBF; C5- INTR
2,C6- 7可工作在基本的 I/O
3,C0- 2由 B组决定
8255A工作在方式 1(输入) 时序图
1
2
3
4
1,/STB有效,外设数据- >A口锁存器
2,IBF有效,告诉外设数据未被 CPU取走
3,INTA有效,申请中断(告诉 CPU A口有新数据)
4,CPU从 A口取数,清除 IBF和 INTA,使之无效
8255A工作在方式 1(输入)
当 A口已接受外设数据后,有两种方式通知 CPU取数:其一用条件查询方式,
通过查询缓冲器是否,满,,即 IBFA是否为高电平来取数。其二用中断方式。
在条件传送中,一般要有所谓的,握手,
信号来协调数据的传送。,握手,信号至少要有两位信号线,其中一位是由接口电路发给外设,功能是向外设提供接口电路的信息。另一位是由外设发给接口,功能是向接口提供外设的信息。显然在 8255A的选通输入方式中 STBA和
IBFA是一对,握手,信号。
例,8255A的 A口和 B口分别工作在方式 1和方式 0,A口为输入端口,接有 8个开 关。
B口为输出端,接有 8个发光二极管,连接电路如图所示。现要求用方式 1把改变后的键信息输入到 CPU并通过 B口显示。
例题电路图
8
2
5
5
A
K
K 7
K 0
PA 0
PA 7
PC 4
PB 0
PB 7
PC 5
LED 0
LED 7
LED
STB A
IBF A
这个系统的工作过程如下:
1、用户通过改变 K0~ K7,产生新的键信息;
2、按下开关 K,产生选通信号,数据进入 A口的缓冲器,
此步骤实际上告诉 CPU,8255的 A口来了一个新数据;
3,IBFA有效使 LED点亮。 这里含有两个信息,一个是
8255A 通知 CPU其 A口来了一个新数据,另一个是告诉用户 CPU尚未取走这个这个数据,用户不得再送其他数据;
4,CPU取走这个数据,LED熄灭;
5、转步骤 1。
设 8255的 I/O地址分布为 88H— 8EH,相应的程序段如下:
mov al,10111001b ;设置 A口为方式 1的输入,
loop1,in al,8ch ;取 C口的状态线
test al,00100000b ;测试 IBFA信息
jz loop1 ;等待用户设定新的键值
in al,80h ;取数 。 LED灯灭 ( 相对于步骤 4)
out 82h,al ;更新 B口的显示
jmp loop1 ;重复
3,8255A工作在方式 1—— 输出以 A口为例,控制字 1010xxxxB
外设回答信号。由外设发出。
当其有效时,表示外设已接收数据。
A口的输出缓冲器,满,信号,
当其有效时表示 A口的输出缓冲器已暂存一个有效数据。
A口的中断请求信号。当其有效时,8255A的 A口向 CPU申请中断,要求 CPU送数给 A口中断允许信号。
C口特点
1,C3,C6,C7作为 A口的联络线,
C3 - /INTR;
C7 - /ACK; C5- /OBF
2,C4- 5可工作在基本的 I/O
3,C0- 2由 B组决定
8255A工作在方式 1(输出)时序图
1
2
3
4
1,CPU对 A口写数据,/OBF有效,表示 A口锁存器中有新数据;
2、外设取走新数据,向 8255发 /ACK信号,告诉 8255A口数据取走;
3,A口的 /OBF无效,表示 A口数据锁存器为空
4,INTA有效,发中断信号给 CPU,请求新数据
1
当 A口已接受外设数据后,有两种方式通知 CPU取数:其一用条件查询方式,
通过查询缓冲器是否,满,,即 IBFA是否为高电平来取数。其二用中断方式。
在这种方式下,OBFA和 ACKA是一对
,握手,信号 。 OBFA是 8255A产生,当其有效时,告诉外设 A口已有一个新数据 。
ACKA是外设产生,当其有效时,通知 A
口外设已把数据取走 。
例,8255A的 A口工作在方式 1的输出,
接有 8个发光二极管,现要求把内存中的
10个数,通过 A口发送给发光二极管以二进制的形式供用户抄录 。
例题电路图
8
2
5
5
A
K
PC 7
PA 0
PA 7
PC 6
LED 0
LED 7
LED
+5V
ACK A
OBF A
这个系统的工作过程如下:
1,CPU把内存中的一个数据写入 A口;
2,LED灯亮,告诉用户 LED显示的是新数据;
3,用户抄录数据;
4,用户按下开关 K,发 ACK信号,告诉 CPU数据已取走;
5,转第一步。
mov cx,10 ;送 10个数
mov bx,offset xx ;数组指针送 bx
loop1,mov al,[bx] ;取数
out 88h,al ;送数到 A口
loop2,in al,8ch ;取 C口状态线
anl al,80h ;测试 IBOA
jnz loop2;用户尚未抄录数据,检测 ;等待,;此时; LED灯亮 ( 对应步骤 2)
call delay;用户已抄录数据,LED灯灭 ( 对;应步 骤 4)
inc bx ;准备送下一个数
loop loop1 ;循环 10次
4,8255A工作在方式 2—— 双向外设回答信号。由外设发出。
当其有效时,表示外设已接收数据。
A口的输出缓冲器,满,信号,
当其有效时表示 A口的输出缓冲器已暂存一个有效数据。
A口的中断请求信号。当其有效时,8255A的 A口向 CPU申请中断,要求 CPU访问 A口中断允许信号。
中断允许信号。
A口的输入缓冲器,满,信号,
当其有效时表示 A口的输入缓冲器已暂存一个有效数据
A口的选通信号,当其有效时,
外设把数据打入 A口的输入缓冲器如果设定某个 8255A的 A口和 B口分别工作在方式 2和方式 1下,则这个 8255A的
C口的 I/O功能将不在存在 。 当然如果 B
口是工作在方式 0下,则 C口还有 3根线可作 I/O线用 。
七,8255应用举例
1、与打印机接口例:在某一 8086系统中接有一个打印机,
8255A作为输出接口。工作在方式 0,试编一程序将缓冲区 BUFF内的 400H个字节的 ACK码送打印机打印。
总线式接口的缺点
8255接口的优点
DATA
STROBE
BUSY
打印机具体工作过程如下:
1,数据线 D7— D0出现有效数据;
2,STB有效,通知打印机,
接口给打印机一个数据,
数据从数据线进入打印机;
3,BUSY有效,告诉接口,
打印机正在打印数据 。
打印完毕,BUSY变为无效,表示打印结束 。
8
2
5
5
A
PA 0
PA 7
打印机
D 0
D 7
PC 0
PC 4
STB
BUSY
1
2
3
print_data proc ;打印子程序,入口在 dl中
print1,in al,c_port ;无条件读 C口数据
test al,00010000b ;测试 busy线
jnz print1 ; busy有效,循环测试
mov al,dl
out a_port,al ;打印数据进入 A口
mov al,00000000b ;发选通信号
out ctrl_port,al
mov al,00000001b
out ctrl_port,al
ret ;返回主程序
print_datA endp
2,人机交互接口 —— 动态显示例:常用的显示称为动态显示,它采用扫描显示技术,可以使硬件开销降低很多。对于一个 8位数据显示,它就需要两个输出端口就可以了。其电路如图所示。在两个输出端口中,
一个称为段信号通道,它用来输出要显示数据的段码;另一个称为位信号通道,用来决定当前要显示数据的位置。
动态显示电路图
A
口
8255A
PA 7
|
|
PA 0
B
口
8255A
PB 7
|
|
PB 0
+5V
段信号通道位信号通道段驱动位驱动
LED6LED7
显示系统的具体工作步骤如下:
a,设要显示的初始位码 i= 0;
b,送第 i位的段信号;
c,送第 i位的位信号;
d,延时;
e,i+ 1- >i
f,如果 i小于 8,转 b
g,8位数据显示结束。
程序如下:
a_port equ 80h ;定义 8255A的四个端口
b_port equ 82h
c_port equ 84h
ctrl_port equ 86h
……
data segment ;定义数据段
tab1 db 3FH,06H,5BH,4FH,…,;定义段码表
dispbuff db 2,0,0,6,1,2,0,9 ;定义显示缓冲区
data ends
……;显示子程序,数据在 dispbuff中
display proc
…,,;保护现场
mov bx,offset tab1
mov si,offset dispbuff ;步骤 a
mov cx,8
mov ah,01
disp1,mov al,[si] ;步骤 b
xlat
out a_port,al
mov al,ah ;步骤 c
out b_port,al
call delay5ms ;步骤 d,延时 5ms
shl ah,1 ;步骤 e
inc si
loop disp1
…… ;恢复现场
ret
display endp
3,人机交互接口 —— 键盘扫描例:方案一。矩阵式键盘电路,其特点是由按键组成一个矩阵,矩阵的行线和列线分别作为两个传输方向相反的 I/O接口信号线,比如行线作为输入接口信号线,列线作为输出接口信号线 。
程序流程如下:
a,设定行为输出,列为输入;
b,行输出为 0,输入列信号;
c,检查列信号是否全为 1,
若是,无键按下,转 b;
如果不全为 1,表明有键按下,执行下步;
d,延时 10ms,消除抖动。
e,取 i= 0(用寄存器 dh)
f,置 i行为 0,其他行为 1(用寄存器 ah);
g,输入列信号;
h,逐列检测,找出为 0的列信号(用寄存器 dl);
未找到,i= i+ 1;转 f;
若找到:执行下步;
i,计算键号 key_num
例:方案二。图所示为矩阵式键盘电路,
其特点是由按键组成一个矩阵,矩阵的行线和列线 在不同时刻 分别作为两个传输方向相反的 I/O接口信号线,比如行线作为输入接口信号线,列线作为输出接口信号线,或反之 。
键盘扫描电路图
8255A
PC 0
PC 1
PC 2
PC 3
PC 4
PC 5
PC 6
PC 7
+5V
K 8 K 10K 9 K 11
K 0 K 2K 1 K 3
K 4 K 6K 5 K 7
K 12 K 14K 13 K 15
在翻转法中,行列线交换输入、输出,
两步就可获取键位置信息。可见这种方法要比扫描法效率高。
翻转法程序流程如下:
a,设定行为输出,列为输入;
b,行输出为 0,输入列信号;
c,检查列信号是否全为 1,
若是,无键按下,转 b;
如果不全为 1,表明有键按下,执行下步;
d,延时 10ms,消除抖动。
e,逐列检测,找出为 0的列信号 j;
f,设定列为输出,行为输入;
g,列输出为 0,输入行信号;
h,逐行检测,找出为 0的行信号 i;
i,计算键号 key_num
_4key num i j
7,2 可编程定时/计数器接口芯片 8253
定时和脉冲信号的处理与接口是完全有别于并行信号的,其特点是信号形式简单但需要连续检测。
高速公路入口红外光源光电接收脉冲输出光路高速公路并行接口计数器 脉冲控制计数器溢出
7,2 可编程定时/计数器接口芯片 8253
一、功能下面介绍的 INTEL8253可编程定时/
计数器就是可以实现所要求这方面功能。
8253内部有 3个独立的 16位定时/计数器通道。计数器可按照二进制或十进制计数,计数和定时范围可在 1— 65535之间改变,每个通道有 6种工作方式,计数频率可高达 2MHz以上。
二,8253的内部结构计数通道数据总线缓冲器读/写控制电路通道控制寄存器
1、四个端口计数器 1
计数器 2
计数器 3
控制端口
1 6 位计数器
GATE
CLK OUT
2、每个计数端口有三根线与外界联系
CLK:计数器脉冲输入
GATE:门控信号
OUT:计数器输出计数器三,8253的管脚分配与 8086接口通道管脚数据线通道选择控制线
1、管脚定义
2、接口四,8253的编程
8253只有一个控制字,8253的一个方式控制字只决定一个计数通道的工作模式 。
8253的控制字格式如图所示 。 共分为 4部分,通道选择,计数器读 /写方式,工作方式和计数码的选择 。
<一 >、计数器选择( SC1,SC0)
SC1 SC0 对应的通道
0 0 通道 0
0 1 通道 1
1 0 通道 1
1 1 不用
<二 >、计数器读 /写方式( RLl,RL0)
RL1 RL0 通道读写操作
0 0 计数器锁存
0 1 只读写低八位字节
1 0 只读写高八位字节
1 1 读写 16位
STB
计数器 L计数器 H
<三 >、工作方式选择( M2,M1,M0)
M2 M1 M0 工作方式选择
0 0 0 工作方式 0
0 0 1 工作方式 1
X 1 0 工作方式 2
X 1 1 工作方式 3
1 0 0 工作方式 4
1 0 1 工作方式 5
<四 >、计数码选择( BCD)
BCD 计数制式选择
0 二进制计数制
1 BCD计数制五,8253的工作方式
1、方式 0—— 计数结束中断方式工作方式 0有如下特点:
a,门控信号 GATE必须为 1,计数器才能计数;
b、计数时通道输出端 OUT一直为 0;
c,通道计数器计数到 0后,OUT由 0到 1,同时计数器停止工作 。
a
b
c
PC 7
|
PC 0
CLK 0
OUT 0
GATE 0 +5V
1Hz
中断申请信号送家用电器220V~
8255A
8253
时间常数= (秒 )= 3840H(秒 )
相应的程序段如下:
……
mov al,10011010B ;置 8255A方式控制字
out 8255控制口,al
mov al,00h ; 8255A置位 /复位控制字,使 PC0= 0
out 8255控制口,al
mov al,30h ;置 8253通道 0方式控制字
out 8253控制口,al
mov al,40H ;置 8253通道 0时间常数
out 通道 0端口,al
mov al,38H
out 通道 0端口,al
……
中断程序中有关程序段如下:
……
mov al,00000001B ; 8255置位 /复位控制字,使 PC0= 1
out 8255控制口,al
……
4 3600 14400
2、方式 1—— 可编程序的单独负脉冲方式 1工作过程如下:
b,触发后,通道计数器开始计数,输出端 OUT由高变低;
c,计数器计数到 0,OUT再由低变高。
a
b c
a,门控信号 GATE是触发信号,上升沿有效。即开始计数是由 GATE的上升沿触发的;
d,计数器过程中,如果又被触发,则计数器重新工作
d
OUT 0
GATE 0
CLK 0 OUT 1
GATE 1
CLK 11KHz
原始脉冲整形脉冲
+5V
8253通 道0
3,方式 2—— 速率发生器方式 2的特点如下:
a,GATE门为 1,计数器才能工作,对 CLK
端上的脉冲进行计数;
b,当计数器,减,计数到 1时,输出端由高变低,再经过一个 CLK周期,即计数器计数到 0时,输出端 OUT又跳变为高 。 所以方式
2输出周期性负脉冲信号,其宽度固定为一个 CLK周期;
c,当计数器的值减为 0时,自动重新装入计数初值,实现循环计数 。
a
b
c
4、方式 3—— 方波发生器方式 2虽然可以作分频电路,但其输出是窄脉冲,如果是方波,就只有选方式 3
① 8253的通道 0,实时中断 。 用于产生固定频率的时钟节拍,故设定工作在方式 3,初值为 0,所以从 OUT0 管脚的输出方波频率为 1.19MHz/216
=18.2Hz,通道 0的控制字为 36H;
② 8253的通道 l,动态 RAM刷新 。 用于固定频率的刷新信号,故设定工作在方式 2,计数值为 12H
= 18,速率输出频率为 1.19M/18= 66.1kHz,即定时时间为 15.13μs,通道 1的控制字为 54H;
③ 8253的通道 2,用于产生频率信号 。 故取工作在方式 3,计数值为 6A4H= 1190,方波输出频率为
1.19MHz/1190= 1kHz。 此信号频率决定扬声器的音调,通道 2的控制宇为 0B6H。
方式 4—— 软件触发方式软件触发方式实际上就是 CPU通过指令触发一个选通信号给外部设备,选通信号在触发后设定时间点上发出。
方式 4在工作过程中有以下特点:
1、门控信号 GATE为高电平,计数器开始减 1计数,OUT维持高电平;
a
b
2、当计数器减到 0,输出端 OUT变低,再经过一个 CLK输入时钟周期,OUT输出又变高。
OUT 0
GATE 0
CLK 0
+5 V
8 2 5 3 通道0
D
CP
S D
R D
Q
送家用电器
+5V
220V~
C R
+5 V
6、方式 5—— 硬件触发方式这种工作方式同方式 4很相似,当控制字写入控制寄存器后,输出端 OUT
变高。同方式 4不同的一点是当计数值写入通道计数器后,通道并未被触发,
也就是计数器并不立即开始计数。只有当 GATE信号的上升沿触发通道后,
通道计数器才开始计数。
方式 5—— 硬件触发方式
OUT 0
GATE 0
CLK 0
8 2 5 3 通道0
D
CP
S D
R D
Q
送家用电器
+5V
220V~
C R
+5 V
+5 V
8253的工作方式小结
8253的六种工作方式可归为两类,一个是充当频率发生器,另一类主要是作计数器来使用。下面我们就从这个角度来讨论总结 OUT和 GATE门的作用。
与频率发生器有关的工作方式
8253有两种方式与频率发生器有关,即方式 2
和发生 3。
对 OUT端,方式 2提供给用户的是负脉冲,方式 3提供给用户的是方波。
在这个两种方式下,GATE信号要始终保持为高。
与计数器有关的工作方式对于计数器类,有方式 0,1和方式 4,5。启动计数器的方式有两种。
一种是 CPU把时间常数写入相应通道后,计数器就开始工作,我们可以称之为软件启动方式,在这种启动方式下,GATE要始终保持为高电平,所以方式 0和方式 4可以称为 软件启动方式 。
另一种是 硬件启动计数器,即 CPU把时间常数写入计数器后,即使 GATE为高电平,计数器并不工作。只有 GATE发生跳变,其上升沿启动计数器工作,
所以方式 1和方式 5就可以称为硬件启动方式计数器溢出时,OUT有两种输出形式,要么是电平,
要么是负脉冲。前者有方式 0方式 1,后者有方式 4和方式 5。
六,8253应用举例例 1,现有一个高精密晶体振荡电路,
输出信号是脉冲波,频率为 1MHz。要求利用 8253做一个秒信号发生器,其输出接一发光二极管,以 0.5秒点亮,0.5秒熄灭的方式闪烁指示。设 8253的通道地址为 80H~ 86H(偶地址)
解,1、时间常数计算这个例子要求用 8253作一个分频电路,而且其输出应该是方波,否则发光二极管不可能等间隔闪烁指示。频率为 1MHz信号的周期为 1微妙,而 1Hz
信号的周期为 1秒,所以分频系数 N可按下式进行计算:
1 1 0 0 0 0 0 0 1000000
11
SSN
SS
由于 8253一个通道最大的计数值是 65536,
所以对于 N= 1000000这样的大数,一个通道是不可能完成上述分频要求的。由于即取两个计数器,采用级联方式。
2、电路
121 0 0 0 0 0 0 1 0 0 0 1 0 0 0N N N
OUT 0
GATE 0
CLK 0
1MHz 8 2 5 3 通道0
+5 V
OUT 1
GATE 1
CLK 1
1KHz
8 2 5 3 通道1
3、工作方式选择由于通道 1要输出方波信号推动发光二极管,
所以通道 1应选工作方式 3。对于通道 0,只要能起分频作用就行,对输出波形不做要求,所以方式 2和方式 3都可以选用。
这样对于通道 0,我们取 工作方式 2,BCD计数; 对于通道 1,我们取 工作方式 3,二进制计数 (当然也可选 BCD计数)
4、程序
mov al,00110101b ;通道 0控制字
out 86h,al
mov al,00 ;通道 0初始计数值
out 80h,al
mov al,10h
out 80h,al
mov al,01110110b ;通道 1控制字
out 86h,al
mov al,0e0h ;通道 1初始计数值,03E8H=1000BCD
out 82h,al
mov al,03h
out 82h,al
例 2:延时程序,设 8253的通道地址为
80H~ 86H,8255的地址为 88H ~ 8EH (偶地址)
解,1、电路这个例子要求用 8253,8255作一个延时系统。
GATE0
CLK0
OUT0
+5V
1KHz
PC0
8253
8255
2、时间常数计算如果 8253的 CLK输入 1KHz信号,延时时间为 1S,则时间常数为
N= 1/0.001=1000D=03E8H
3、工作方式选择
4、程序例 3:音乐演奏系统,设 8253的通道地址为 80H~ 86H,8255的地址为 88H ~
8EH (偶地址)
解,1、电路这个例子要求用 8253,8255作一个定时音调发生器。
GATE0
CLK0
OUT0
+5V
1KHz
PC0
8253
8255
GATE1
CLK1
OUT1
+5V
1MHz
驱动
1:
262Hz
2:
294Hz
3:
330Hz
4:
349Hz
0EE8H 0D49H 0BD9H 0B31H
5:
392Hz
6:
440Hz
7:
494Hz
09F9 08E0H 01EEH
2、时间常数计算如果 8253的 CLK输入 1KHz信号,延时时间为 1S,则时间常数为
N= fclk/fout
3、工作方式选择
4、程序建立频率和时间表格例 4,计件系统。计件系统的功能就是记录脉冲的个数。
一个脉冲代表一个事件,比如交通道路检测系统中通过检测点的车辆,工业控制系统中流水线上已加工好的工件。要求在计件过程中,
PC机可以显示当前计数器的内容,当完成
10000个工件记录后,系统发出 1KHz信号推动喇叭发音通知用户。
解,1、电路。
需要两个通道,一个作为计数,选用通道 0。另一个产生 1KHz信号,选用通道 1。 工作原理如下,传感器电路把物理事件转换为脉冲信号输入到通道 0计数,
当记录 10000个事件后,通道 0计数器溢出,GATE端输出高电平,这时通道 1开始工作,产生 1KHz信号推动喇叭发音 。
OUT 0
GATE 0
CLK 0
1MHz
8 2 5 3 通道0
+5 V
OUT 1
GATE 1
CLK 1
8 2 5 3 通道1
计件脉冲驱动放大
2、工作方式选择对于通道 1,由于要产生 1KHz信号,故选用工作方式 3。
对于通道 0,要求初始计数值写入计数通道后,计数器就可以工作,则通道 0的启动方式应是软件启动。
另外由于要求计数溢出后产生一个信号来启动一个事件,即喇叭发音,故可选的工作方式为方式 0和方式 4,
对于图所示方案,通道 1的 GATE信号由通道 0的 OUT
信号产生,这个 OUT信号应该是电平型的,所以通道
0应选用方式 0。
3、时间常数
N0= 10000=2710H
4、程序
1
1 M H z 1 0 0 0 K H z= = 1 0 0 0
1 K H z 1 K H z
N?
可编程接口概术
可编程并行输入/输出接口芯片 8255A
可编程定时/计数器接口芯片 8253
可编程接口概术一个简单的具有输入功能和输出功能的可编程接口 电路如下图,它包括一个输入接口,
其组成主要是八位的三态门;一个输出接口,
其组成主要是八位的锁存器;另外还有八位的多路转换开关及控制这个开关的寄存器 FF。
输入接口输出接口寄存器FF
多路转换开关 I/O线数据总线
8
8
8
8
用户对寄存器 FF写入的内容称为命令字或 方式控制字,而寄存器 FF称为 命令寄存器,相应的端口称为 命令端口或控制端口,对可编程芯片 初始化 过程实际上就是对芯片的控制端口写入各种命令字的操作过程。
目前常用的可编程芯片有如下几种:
8255A 并行 I/O接口
8253 计数器 /定时器
8251 串行 I/O
8259A 中断控制器
7.1 可编程并行输入/输出接口芯片 8255A
一,功能
8255A是一种通用的可编程并行 I/ O接口芯片,广泛用于几乎所有系列的微型机系统中,
如 8086,MCS51,Z80CPU系统等 。 8255A具有 3个带锁存或缓冲的数据端口,可与外设并行进行数据交换 。 用户可用程序来选择多种操作方式,通用性强 。 使用灵活,可为 CPU与外设之间提供并行输入/输出通道 。
二,8255A的内部结构
A口
B口
C口二,8255A的内部结构并行输入/
输出端口
A组和 B组控制数据总线缓冲器读/写控制电路三,8255A的管脚分配
1、与外设连接的管脚我们已经知道 8255A有三个数据端口,每个端口是 8位的,由此可推算与外设相连接的管脚共有 24位。其中 A口有 PA7— PA0八个 I/O引脚,
B口有 PB7— PB0八个 I/O引脚,C口有 PC7— PC0八个 I/O引脚。特别地对于 PC7— PC0,其中可有若干根复用线可用于“联络”信号或状态信号,
其具体定义与端口的工作方式有关。
PA0…PA7
PB0…PB7
PC0…PC7
2、与 CPU连接的管脚包括数据线 D7— D0,读写控制线和,
复位线 RESET,以及和 CPU地址线相连接的片选信号、端口地址控制线 A0和 A1。
D0…D7
A0
A1
/CS
/WR
/RD
RESET
3、电源线和地线
8255A的电源引脚为 VCC和 GND。 VCC为电源线,一般取+ 5V 。 GND为电源地线。
四,8255与 8086CPU的接口
连接方法
同 RAM相似,取 M/IO=0
举例设计接口,使 8255地址为 0300H
五,8255A的工作方式及编程
1,8255A的工作方式
8255A有三种工作方式,它们是:
①方式 0—— 基本输入/输出方式;
②方式 1—— 选通输入/输出方式;
⑨方式 2— 一双向传送方式。
2,8255A编程所谓 8255A编程,就是用户在使用 8255前,
用户可用软件来定义端口的工作方式,选择所需要的功能。
8255A复位时,A,B,C三端口工作在方式 0
的输入状态。
1.方式控制字这是一个八位的控制字,代表的信息非常丰富。上面提到 8255A内部的 3个端口分为 A,B两组,因此方式控制字也就相应地分成两个部分,分别控制 A
组和 B组,其格式如下,
1 D6 D5 D4 D3 D2 D1 D0
方式选择控制字标识位
A组方式选择
00 方式 0
01 方式 1
1x 方式 2 端口 A1 输入
0 输出
PC3~PC0,1 输入
(方式 0时) 0 输出端口 B,1 输入
0 输出
B组方式选择:
0 方式 0
1 方式 1
PC7~PC4,1 输入
(方式 0时) 0 输出
2,C口置,1” /清,0” 控制字置,1”又称为置位操作,而清,0”称为复位操作。
0 D6 D5 D4 D3 D2 D1 D0
x x x
无关
1,置 1
0,置 0
0
0
0
0
1
1
1
1
端口 C按位置 1/置 0
控制字标识位 位选择
PC0
PC1
PC2
PC3
PC4
PC5
PC6
PC7
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
3.读入状态字当 8255A由程序设定在方式 1或方式 2
工作时,C口就根据不同的情况,产生或接收,联络,信号。如果这时我们对 C口进行读操作,则读出的内容就包含两部分内容,一部分是那些作为 I/O
线上的内容,另一部分是与,联络,
状态有关的内容。
方式 1的输入状态字六,8255A的 三种工作方式
1,8255A工作在方式 0
方式 0也叫 基本输入/输出方式 。
在这种方式下,端口 A和端口 B可以通过 方式选择控制字 规定为输入口或者输出口 ;
端口 C分为高 4位 (PC7~ PC4) 和低 4位 (PC3~ PC0) 两个 4位端口,这两个 4位端口也可由方式选择控制字分别规定为输入口或输出口 。
这四个并行口共可构成 16种不同的使用组态 。
利用 8255A的方式 0进行数据传输时,由于没有规定专门的应答信号,所以这种方式常用于与简单外设之间的数据传送,如向 LED显示器的输出,从二进制开关装置的输入等 。
8255工作过程
1,8255编程(初始化)
2、程序对端口的访问例,8255A的 A口和 B口工作在方式 0,A口为输入端口,接有四个开关。 B口为输出端,
接有一个七段发光二极管,连接电路如图所示。试编一程序要求七段发光二班管显示开关所拨通的数字。
a
g
DP
f
e
d
b
c
电路
LED数码管段码表
……
mov al,90h ;设置 8255方式字
mov dx,ctrl_port
out dx,al
mov dx,a_port
in al,dx ;取键盘信息
and al,0fh ;屏蔽高 4位
mov bx,offset tab1 ;取段码表首地址
xlat ;查表得段码
mov dx,b_port ;输出显示
out dx,al
2,8255A工作在方式 1—— 输入以 A口为例,控制字 1011xxxxB
A口的选通信号,当其有效时,
外设把数据打入 A口的输入缓冲器
A口的输入缓冲器,满,信号,
当其有效时表示 A口的输入缓冲器已暂存一个有效数据 。
A口的中断请求信号。当其有效时,8255A的 A口向 CPU申请中断,要求 CPU从 A口取数中断允许信号 。
C口特点
1,C3- 5作为 A口的联络线,C4 - /STB;
C4 - IBF; C5- INTR
2,C6- 7可工作在基本的 I/O
3,C0- 2由 B组决定
8255A工作在方式 1(输入) 时序图
1
2
3
4
1,/STB有效,外设数据- >A口锁存器
2,IBF有效,告诉外设数据未被 CPU取走
3,INTA有效,申请中断(告诉 CPU A口有新数据)
4,CPU从 A口取数,清除 IBF和 INTA,使之无效
8255A工作在方式 1(输入)
当 A口已接受外设数据后,有两种方式通知 CPU取数:其一用条件查询方式,
通过查询缓冲器是否,满,,即 IBFA是否为高电平来取数。其二用中断方式。
在条件传送中,一般要有所谓的,握手,
信号来协调数据的传送。,握手,信号至少要有两位信号线,其中一位是由接口电路发给外设,功能是向外设提供接口电路的信息。另一位是由外设发给接口,功能是向接口提供外设的信息。显然在 8255A的选通输入方式中 STBA和
IBFA是一对,握手,信号。
例,8255A的 A口和 B口分别工作在方式 1和方式 0,A口为输入端口,接有 8个开 关。
B口为输出端,接有 8个发光二极管,连接电路如图所示。现要求用方式 1把改变后的键信息输入到 CPU并通过 B口显示。
例题电路图
8
2
5
5
A
K
K 7
K 0
PA 0
PA 7
PC 4
PB 0
PB 7
PC 5
LED 0
LED 7
LED
STB A
IBF A
这个系统的工作过程如下:
1、用户通过改变 K0~ K7,产生新的键信息;
2、按下开关 K,产生选通信号,数据进入 A口的缓冲器,
此步骤实际上告诉 CPU,8255的 A口来了一个新数据;
3,IBFA有效使 LED点亮。 这里含有两个信息,一个是
8255A 通知 CPU其 A口来了一个新数据,另一个是告诉用户 CPU尚未取走这个这个数据,用户不得再送其他数据;
4,CPU取走这个数据,LED熄灭;
5、转步骤 1。
设 8255的 I/O地址分布为 88H— 8EH,相应的程序段如下:
mov al,10111001b ;设置 A口为方式 1的输入,
loop1,in al,8ch ;取 C口的状态线
test al,00100000b ;测试 IBFA信息
jz loop1 ;等待用户设定新的键值
in al,80h ;取数 。 LED灯灭 ( 相对于步骤 4)
out 82h,al ;更新 B口的显示
jmp loop1 ;重复
3,8255A工作在方式 1—— 输出以 A口为例,控制字 1010xxxxB
外设回答信号。由外设发出。
当其有效时,表示外设已接收数据。
A口的输出缓冲器,满,信号,
当其有效时表示 A口的输出缓冲器已暂存一个有效数据。
A口的中断请求信号。当其有效时,8255A的 A口向 CPU申请中断,要求 CPU送数给 A口中断允许信号。
C口特点
1,C3,C6,C7作为 A口的联络线,
C3 - /INTR;
C7 - /ACK; C5- /OBF
2,C4- 5可工作在基本的 I/O
3,C0- 2由 B组决定
8255A工作在方式 1(输出)时序图
1
2
3
4
1,CPU对 A口写数据,/OBF有效,表示 A口锁存器中有新数据;
2、外设取走新数据,向 8255发 /ACK信号,告诉 8255A口数据取走;
3,A口的 /OBF无效,表示 A口数据锁存器为空
4,INTA有效,发中断信号给 CPU,请求新数据
1
当 A口已接受外设数据后,有两种方式通知 CPU取数:其一用条件查询方式,
通过查询缓冲器是否,满,,即 IBFA是否为高电平来取数。其二用中断方式。
在这种方式下,OBFA和 ACKA是一对
,握手,信号 。 OBFA是 8255A产生,当其有效时,告诉外设 A口已有一个新数据 。
ACKA是外设产生,当其有效时,通知 A
口外设已把数据取走 。
例,8255A的 A口工作在方式 1的输出,
接有 8个发光二极管,现要求把内存中的
10个数,通过 A口发送给发光二极管以二进制的形式供用户抄录 。
例题电路图
8
2
5
5
A
K
PC 7
PA 0
PA 7
PC 6
LED 0
LED 7
LED
+5V
ACK A
OBF A
这个系统的工作过程如下:
1,CPU把内存中的一个数据写入 A口;
2,LED灯亮,告诉用户 LED显示的是新数据;
3,用户抄录数据;
4,用户按下开关 K,发 ACK信号,告诉 CPU数据已取走;
5,转第一步。
mov cx,10 ;送 10个数
mov bx,offset xx ;数组指针送 bx
loop1,mov al,[bx] ;取数
out 88h,al ;送数到 A口
loop2,in al,8ch ;取 C口状态线
anl al,80h ;测试 IBOA
jnz loop2;用户尚未抄录数据,检测 ;等待,;此时; LED灯亮 ( 对应步骤 2)
call delay;用户已抄录数据,LED灯灭 ( 对;应步 骤 4)
inc bx ;准备送下一个数
loop loop1 ;循环 10次
4,8255A工作在方式 2—— 双向外设回答信号。由外设发出。
当其有效时,表示外设已接收数据。
A口的输出缓冲器,满,信号,
当其有效时表示 A口的输出缓冲器已暂存一个有效数据。
A口的中断请求信号。当其有效时,8255A的 A口向 CPU申请中断,要求 CPU访问 A口中断允许信号。
中断允许信号。
A口的输入缓冲器,满,信号,
当其有效时表示 A口的输入缓冲器已暂存一个有效数据
A口的选通信号,当其有效时,
外设把数据打入 A口的输入缓冲器如果设定某个 8255A的 A口和 B口分别工作在方式 2和方式 1下,则这个 8255A的
C口的 I/O功能将不在存在 。 当然如果 B
口是工作在方式 0下,则 C口还有 3根线可作 I/O线用 。
七,8255应用举例
1、与打印机接口例:在某一 8086系统中接有一个打印机,
8255A作为输出接口。工作在方式 0,试编一程序将缓冲区 BUFF内的 400H个字节的 ACK码送打印机打印。
总线式接口的缺点
8255接口的优点
DATA
STROBE
BUSY
打印机具体工作过程如下:
1,数据线 D7— D0出现有效数据;
2,STB有效,通知打印机,
接口给打印机一个数据,
数据从数据线进入打印机;
3,BUSY有效,告诉接口,
打印机正在打印数据 。
打印完毕,BUSY变为无效,表示打印结束 。
8
2
5
5
A
PA 0
PA 7
打印机
D 0
D 7
PC 0
PC 4
STB
BUSY
1
2
3
print_data proc ;打印子程序,入口在 dl中
print1,in al,c_port ;无条件读 C口数据
test al,00010000b ;测试 busy线
jnz print1 ; busy有效,循环测试
mov al,dl
out a_port,al ;打印数据进入 A口
mov al,00000000b ;发选通信号
out ctrl_port,al
mov al,00000001b
out ctrl_port,al
ret ;返回主程序
print_datA endp
2,人机交互接口 —— 动态显示例:常用的显示称为动态显示,它采用扫描显示技术,可以使硬件开销降低很多。对于一个 8位数据显示,它就需要两个输出端口就可以了。其电路如图所示。在两个输出端口中,
一个称为段信号通道,它用来输出要显示数据的段码;另一个称为位信号通道,用来决定当前要显示数据的位置。
动态显示电路图
A
口
8255A
PA 7
|
|
PA 0
B
口
8255A
PB 7
|
|
PB 0
+5V
段信号通道位信号通道段驱动位驱动
LED6LED7
显示系统的具体工作步骤如下:
a,设要显示的初始位码 i= 0;
b,送第 i位的段信号;
c,送第 i位的位信号;
d,延时;
e,i+ 1- >i
f,如果 i小于 8,转 b
g,8位数据显示结束。
程序如下:
a_port equ 80h ;定义 8255A的四个端口
b_port equ 82h
c_port equ 84h
ctrl_port equ 86h
……
data segment ;定义数据段
tab1 db 3FH,06H,5BH,4FH,…,;定义段码表
dispbuff db 2,0,0,6,1,2,0,9 ;定义显示缓冲区
data ends
……;显示子程序,数据在 dispbuff中
display proc
…,,;保护现场
mov bx,offset tab1
mov si,offset dispbuff ;步骤 a
mov cx,8
mov ah,01
disp1,mov al,[si] ;步骤 b
xlat
out a_port,al
mov al,ah ;步骤 c
out b_port,al
call delay5ms ;步骤 d,延时 5ms
shl ah,1 ;步骤 e
inc si
loop disp1
…… ;恢复现场
ret
display endp
3,人机交互接口 —— 键盘扫描例:方案一。矩阵式键盘电路,其特点是由按键组成一个矩阵,矩阵的行线和列线分别作为两个传输方向相反的 I/O接口信号线,比如行线作为输入接口信号线,列线作为输出接口信号线 。
程序流程如下:
a,设定行为输出,列为输入;
b,行输出为 0,输入列信号;
c,检查列信号是否全为 1,
若是,无键按下,转 b;
如果不全为 1,表明有键按下,执行下步;
d,延时 10ms,消除抖动。
e,取 i= 0(用寄存器 dh)
f,置 i行为 0,其他行为 1(用寄存器 ah);
g,输入列信号;
h,逐列检测,找出为 0的列信号(用寄存器 dl);
未找到,i= i+ 1;转 f;
若找到:执行下步;
i,计算键号 key_num
例:方案二。图所示为矩阵式键盘电路,
其特点是由按键组成一个矩阵,矩阵的行线和列线 在不同时刻 分别作为两个传输方向相反的 I/O接口信号线,比如行线作为输入接口信号线,列线作为输出接口信号线,或反之 。
键盘扫描电路图
8255A
PC 0
PC 1
PC 2
PC 3
PC 4
PC 5
PC 6
PC 7
+5V
K 8 K 10K 9 K 11
K 0 K 2K 1 K 3
K 4 K 6K 5 K 7
K 12 K 14K 13 K 15
在翻转法中,行列线交换输入、输出,
两步就可获取键位置信息。可见这种方法要比扫描法效率高。
翻转法程序流程如下:
a,设定行为输出,列为输入;
b,行输出为 0,输入列信号;
c,检查列信号是否全为 1,
若是,无键按下,转 b;
如果不全为 1,表明有键按下,执行下步;
d,延时 10ms,消除抖动。
e,逐列检测,找出为 0的列信号 j;
f,设定列为输出,行为输入;
g,列输出为 0,输入行信号;
h,逐行检测,找出为 0的行信号 i;
i,计算键号 key_num
_4key num i j
7,2 可编程定时/计数器接口芯片 8253
定时和脉冲信号的处理与接口是完全有别于并行信号的,其特点是信号形式简单但需要连续检测。
高速公路入口红外光源光电接收脉冲输出光路高速公路并行接口计数器 脉冲控制计数器溢出
7,2 可编程定时/计数器接口芯片 8253
一、功能下面介绍的 INTEL8253可编程定时/
计数器就是可以实现所要求这方面功能。
8253内部有 3个独立的 16位定时/计数器通道。计数器可按照二进制或十进制计数,计数和定时范围可在 1— 65535之间改变,每个通道有 6种工作方式,计数频率可高达 2MHz以上。
二,8253的内部结构计数通道数据总线缓冲器读/写控制电路通道控制寄存器
1、四个端口计数器 1
计数器 2
计数器 3
控制端口
1 6 位计数器
GATE
CLK OUT
2、每个计数端口有三根线与外界联系
CLK:计数器脉冲输入
GATE:门控信号
OUT:计数器输出计数器三,8253的管脚分配与 8086接口通道管脚数据线通道选择控制线
1、管脚定义
2、接口四,8253的编程
8253只有一个控制字,8253的一个方式控制字只决定一个计数通道的工作模式 。
8253的控制字格式如图所示 。 共分为 4部分,通道选择,计数器读 /写方式,工作方式和计数码的选择 。
<一 >、计数器选择( SC1,SC0)
SC1 SC0 对应的通道
0 0 通道 0
0 1 通道 1
1 0 通道 1
1 1 不用
<二 >、计数器读 /写方式( RLl,RL0)
RL1 RL0 通道读写操作
0 0 计数器锁存
0 1 只读写低八位字节
1 0 只读写高八位字节
1 1 读写 16位
STB
计数器 L计数器 H
<三 >、工作方式选择( M2,M1,M0)
M2 M1 M0 工作方式选择
0 0 0 工作方式 0
0 0 1 工作方式 1
X 1 0 工作方式 2
X 1 1 工作方式 3
1 0 0 工作方式 4
1 0 1 工作方式 5
<四 >、计数码选择( BCD)
BCD 计数制式选择
0 二进制计数制
1 BCD计数制五,8253的工作方式
1、方式 0—— 计数结束中断方式工作方式 0有如下特点:
a,门控信号 GATE必须为 1,计数器才能计数;
b、计数时通道输出端 OUT一直为 0;
c,通道计数器计数到 0后,OUT由 0到 1,同时计数器停止工作 。
a
b
c
PC 7
|
PC 0
CLK 0
OUT 0
GATE 0 +5V
1Hz
中断申请信号送家用电器220V~
8255A
8253
时间常数= (秒 )= 3840H(秒 )
相应的程序段如下:
……
mov al,10011010B ;置 8255A方式控制字
out 8255控制口,al
mov al,00h ; 8255A置位 /复位控制字,使 PC0= 0
out 8255控制口,al
mov al,30h ;置 8253通道 0方式控制字
out 8253控制口,al
mov al,40H ;置 8253通道 0时间常数
out 通道 0端口,al
mov al,38H
out 通道 0端口,al
……
中断程序中有关程序段如下:
……
mov al,00000001B ; 8255置位 /复位控制字,使 PC0= 1
out 8255控制口,al
……
4 3600 14400
2、方式 1—— 可编程序的单独负脉冲方式 1工作过程如下:
b,触发后,通道计数器开始计数,输出端 OUT由高变低;
c,计数器计数到 0,OUT再由低变高。
a
b c
a,门控信号 GATE是触发信号,上升沿有效。即开始计数是由 GATE的上升沿触发的;
d,计数器过程中,如果又被触发,则计数器重新工作
d
OUT 0
GATE 0
CLK 0 OUT 1
GATE 1
CLK 11KHz
原始脉冲整形脉冲
+5V
8253通 道0
3,方式 2—— 速率发生器方式 2的特点如下:
a,GATE门为 1,计数器才能工作,对 CLK
端上的脉冲进行计数;
b,当计数器,减,计数到 1时,输出端由高变低,再经过一个 CLK周期,即计数器计数到 0时,输出端 OUT又跳变为高 。 所以方式
2输出周期性负脉冲信号,其宽度固定为一个 CLK周期;
c,当计数器的值减为 0时,自动重新装入计数初值,实现循环计数 。
a
b
c
4、方式 3—— 方波发生器方式 2虽然可以作分频电路,但其输出是窄脉冲,如果是方波,就只有选方式 3
① 8253的通道 0,实时中断 。 用于产生固定频率的时钟节拍,故设定工作在方式 3,初值为 0,所以从 OUT0 管脚的输出方波频率为 1.19MHz/216
=18.2Hz,通道 0的控制字为 36H;
② 8253的通道 l,动态 RAM刷新 。 用于固定频率的刷新信号,故设定工作在方式 2,计数值为 12H
= 18,速率输出频率为 1.19M/18= 66.1kHz,即定时时间为 15.13μs,通道 1的控制字为 54H;
③ 8253的通道 2,用于产生频率信号 。 故取工作在方式 3,计数值为 6A4H= 1190,方波输出频率为
1.19MHz/1190= 1kHz。 此信号频率决定扬声器的音调,通道 2的控制宇为 0B6H。
方式 4—— 软件触发方式软件触发方式实际上就是 CPU通过指令触发一个选通信号给外部设备,选通信号在触发后设定时间点上发出。
方式 4在工作过程中有以下特点:
1、门控信号 GATE为高电平,计数器开始减 1计数,OUT维持高电平;
a
b
2、当计数器减到 0,输出端 OUT变低,再经过一个 CLK输入时钟周期,OUT输出又变高。
OUT 0
GATE 0
CLK 0
+5 V
8 2 5 3 通道0
D
CP
S D
R D
Q
送家用电器
+5V
220V~
C R
+5 V
6、方式 5—— 硬件触发方式这种工作方式同方式 4很相似,当控制字写入控制寄存器后,输出端 OUT
变高。同方式 4不同的一点是当计数值写入通道计数器后,通道并未被触发,
也就是计数器并不立即开始计数。只有当 GATE信号的上升沿触发通道后,
通道计数器才开始计数。
方式 5—— 硬件触发方式
OUT 0
GATE 0
CLK 0
8 2 5 3 通道0
D
CP
S D
R D
Q
送家用电器
+5V
220V~
C R
+5 V
+5 V
8253的工作方式小结
8253的六种工作方式可归为两类,一个是充当频率发生器,另一类主要是作计数器来使用。下面我们就从这个角度来讨论总结 OUT和 GATE门的作用。
与频率发生器有关的工作方式
8253有两种方式与频率发生器有关,即方式 2
和发生 3。
对 OUT端,方式 2提供给用户的是负脉冲,方式 3提供给用户的是方波。
在这个两种方式下,GATE信号要始终保持为高。
与计数器有关的工作方式对于计数器类,有方式 0,1和方式 4,5。启动计数器的方式有两种。
一种是 CPU把时间常数写入相应通道后,计数器就开始工作,我们可以称之为软件启动方式,在这种启动方式下,GATE要始终保持为高电平,所以方式 0和方式 4可以称为 软件启动方式 。
另一种是 硬件启动计数器,即 CPU把时间常数写入计数器后,即使 GATE为高电平,计数器并不工作。只有 GATE发生跳变,其上升沿启动计数器工作,
所以方式 1和方式 5就可以称为硬件启动方式计数器溢出时,OUT有两种输出形式,要么是电平,
要么是负脉冲。前者有方式 0方式 1,后者有方式 4和方式 5。
六,8253应用举例例 1,现有一个高精密晶体振荡电路,
输出信号是脉冲波,频率为 1MHz。要求利用 8253做一个秒信号发生器,其输出接一发光二极管,以 0.5秒点亮,0.5秒熄灭的方式闪烁指示。设 8253的通道地址为 80H~ 86H(偶地址)
解,1、时间常数计算这个例子要求用 8253作一个分频电路,而且其输出应该是方波,否则发光二极管不可能等间隔闪烁指示。频率为 1MHz信号的周期为 1微妙,而 1Hz
信号的周期为 1秒,所以分频系数 N可按下式进行计算:
1 1 0 0 0 0 0 0 1000000
11
SSN
SS
由于 8253一个通道最大的计数值是 65536,
所以对于 N= 1000000这样的大数,一个通道是不可能完成上述分频要求的。由于即取两个计数器,采用级联方式。
2、电路
121 0 0 0 0 0 0 1 0 0 0 1 0 0 0N N N
OUT 0
GATE 0
CLK 0
1MHz 8 2 5 3 通道0
+5 V
OUT 1
GATE 1
CLK 1
1KHz
8 2 5 3 通道1
3、工作方式选择由于通道 1要输出方波信号推动发光二极管,
所以通道 1应选工作方式 3。对于通道 0,只要能起分频作用就行,对输出波形不做要求,所以方式 2和方式 3都可以选用。
这样对于通道 0,我们取 工作方式 2,BCD计数; 对于通道 1,我们取 工作方式 3,二进制计数 (当然也可选 BCD计数)
4、程序
mov al,00110101b ;通道 0控制字
out 86h,al
mov al,00 ;通道 0初始计数值
out 80h,al
mov al,10h
out 80h,al
mov al,01110110b ;通道 1控制字
out 86h,al
mov al,0e0h ;通道 1初始计数值,03E8H=1000BCD
out 82h,al
mov al,03h
out 82h,al
例 2:延时程序,设 8253的通道地址为
80H~ 86H,8255的地址为 88H ~ 8EH (偶地址)
解,1、电路这个例子要求用 8253,8255作一个延时系统。
GATE0
CLK0
OUT0
+5V
1KHz
PC0
8253
8255
2、时间常数计算如果 8253的 CLK输入 1KHz信号,延时时间为 1S,则时间常数为
N= 1/0.001=1000D=03E8H
3、工作方式选择
4、程序例 3:音乐演奏系统,设 8253的通道地址为 80H~ 86H,8255的地址为 88H ~
8EH (偶地址)
解,1、电路这个例子要求用 8253,8255作一个定时音调发生器。
GATE0
CLK0
OUT0
+5V
1KHz
PC0
8253
8255
GATE1
CLK1
OUT1
+5V
1MHz
驱动
1:
262Hz
2:
294Hz
3:
330Hz
4:
349Hz
0EE8H 0D49H 0BD9H 0B31H
5:
392Hz
6:
440Hz
7:
494Hz
09F9 08E0H 01EEH
2、时间常数计算如果 8253的 CLK输入 1KHz信号,延时时间为 1S,则时间常数为
N= fclk/fout
3、工作方式选择
4、程序建立频率和时间表格例 4,计件系统。计件系统的功能就是记录脉冲的个数。
一个脉冲代表一个事件,比如交通道路检测系统中通过检测点的车辆,工业控制系统中流水线上已加工好的工件。要求在计件过程中,
PC机可以显示当前计数器的内容,当完成
10000个工件记录后,系统发出 1KHz信号推动喇叭发音通知用户。
解,1、电路。
需要两个通道,一个作为计数,选用通道 0。另一个产生 1KHz信号,选用通道 1。 工作原理如下,传感器电路把物理事件转换为脉冲信号输入到通道 0计数,
当记录 10000个事件后,通道 0计数器溢出,GATE端输出高电平,这时通道 1开始工作,产生 1KHz信号推动喇叭发音 。
OUT 0
GATE 0
CLK 0
1MHz
8 2 5 3 通道0
+5 V
OUT 1
GATE 1
CLK 1
8 2 5 3 通道1
计件脉冲驱动放大
2、工作方式选择对于通道 1,由于要产生 1KHz信号,故选用工作方式 3。
对于通道 0,要求初始计数值写入计数通道后,计数器就可以工作,则通道 0的启动方式应是软件启动。
另外由于要求计数溢出后产生一个信号来启动一个事件,即喇叭发音,故可选的工作方式为方式 0和方式 4,
对于图所示方案,通道 1的 GATE信号由通道 0的 OUT
信号产生,这个 OUT信号应该是电平型的,所以通道
0应选用方式 0。
3、时间常数
N0= 10000=2710H
4、程序
1
1 M H z 1 0 0 0 K H z= = 1 0 0 0
1 K H z 1 K H z
N?