7.1概述
7.2CPU与外设数据传送的 方式
7.3可编程计数器 /定时器 8253
7.4串行通讯和串行接口
7.5 并行接口
7.6 DMA控制器 8237
7.7 D/A和 A/D转换技术
第七章 输入 /输出接口
7.1 概述
一、接口电路的分类和功能
外设必须通过接口电路与 CPU相连接



线



线



线
接口电路




数据线
控制线
状态线
一、接口电路的分类和功能
接口电路按通用性分为两类:通用接口和专用接口
通用接口:可供多种外部设备使用的标准接口,目的是使微机正常
工作
通用接口通常制造成集成电路芯片,称为接口芯片。
最初的 IBM-PC使用了 6块接口芯片,8284,8288,8255,8259、
8237,8253
后来的微机将这些芯片集成为大规模集成电路芯片,称为芯片
组。
如 82430TX芯片组,由两片芯片组成:
北桥,82439TX
南桥,82371AB
一、接口电路的分类和功能
一、接口电路的分类和功能
专用接口:为某种用途或某类外设而专门设计的接口电路,目

在于扩充微机系统的功能。
专用接口通常制造成接口卡,插在主板总线插槽上使用。
通用接口和专用接口的界限并不严格。
按照可编程性,接口芯片分成硬步线逻辑接口芯片和可编程接口
芯片。
可编程接口芯片的功能可以由指令来控制。
一、接口电路的分类和功能
接口电路的功能:
1)缓冲锁存数据
2)地址译码
3)传递命令
4)码制转换
5)电平转换
P,228
二、接口电路的基本结构
接口电路通常包含一组能够与处理器交换信息的寄存器,称为 I/O
端口寄存器,简称为 I/O端口
1)数据端口 —— 存放数据信息
2)状态端口 —— 存放状态信息,即反映外设当前工作状态的信息
3)控制端口 —— 存放控制信息
状态信息与控制信息可以广义地看作数据信息,因此可以通过
数据总线传送
P,196
三,I/O端口的编址方式
?I/O端口与存储单元统一编址
?I/O端口独立编址
PC系列 机采用 I/O端口独立编址方式
Port 65535
Port 255
Port 3
Port 2
Port 1
Port 0 Port 0(16位 )
Port 1(16位 )
Port 0 (32位 )
三,I/O端口的编址方式
端口地址是一种重要资源
三,I/O端口的编址方式
端口的寻址
?把端口地址放在 DX寄存器中,对该端口进行读写
IN AL,DX
OUT DX,AL
P,83
—— 可寻址的端口号为 0~65535(FFFFH)
?端口地址小于或等于 FFH(255),可以用立即数表示端口地址
IN AL,42H
OUT 43H,AL
7.2 CPU与外设数据传送的 方式
程序传送方式
中断传送方式
DMA传送方式
无条件传送
程序查询传送(条件传送)
一、程序传送方式
(一)无条件传送
CPU与外设间的数据交换在程序控制下进行
不查询外设状态,认为外设已经准备就绪,直接与外设传送数据
外设准备就绪,对于输入设备,已经把数据放入接口电路的数
据输入寄存器,CPU可以读取;对于输出设备,已经准备好接
收数据(接口电路的数据输出寄存器已空),CPU可以向它输
出数据
由于不查询外设状态,接口电路不需要状态寄存器
一、程序传送方式
输入缓存
输出锁存
无条件程序传送的原理,P,197
一、程序传送方式
(二)程序查询传送
在执行输入输出前,要先查询接口中状态寄存器的状态。
输入时,状态寄存器的状态指示要输入的数据是否已经准备就绪
输出时,状态寄存器的状态指示输出设备是否空闲
P,199
二、中断传送方式
使用查询方式,CPU必须检测接口电路的状态寄存器,如果设备
未准备好,CPU就要不断地查询,降低了 CPU的运行效率
中断方式:当外设作好传送准备后,主动向 CPU请求中断,CPU
响应中断后在中断处理程序中与外设交换数据。若外设未准备好,
CPU可以执行其他程序,提高了 CPU的利用率
每条指令完成后,CPU均可响应中断,因此当设备准备好时,可
及时与 CPU交换数据,提高了实时性
三,DMA传送方式
对于高速外设(如磁盘、高速 A/D),中断方式不能满足数据
传输速度的要求。
DMA=Direct Memory Access—— 直接存储器访问
DMA方式是一种由专门的硬件电路执行 I/O的数据传送方式,
它可以让外设接口直接与内存进行高速的数据传送,而不必经
过 CPU。这种专门的硬件电路称为 DMA控制器,简称 DMAC
7.3 可编程计时器 /计数器 8253
一、计数 /定时的工作原理
计数 /定时的功能
?对外部事件发生次数进行计数
?计算机系统经常用到定时信号,如 DRAM刷新定时
计数和计时本质上是相同的,它们都是对一个输入脉冲进行
计数,如果输入脉冲的频率一定,那么记录脉冲的个数与所
需的时间是一一对应的关系。
例如输入脉冲频率为 2MHz,那么计数 2?106 计时 1秒
因此,使用同一个芯片,既能计数,又能计时 —— 计时器 /计数器
一、计数 /定时的工作原理
控制寄存器
初始值寄存器
计数器
计数输出寄存器
状态寄存器
CLK
GATE
OUT
组成:
控制寄存器 —— 决定工作模式
状态寄存器 —— 反应工作状态
初值寄存器 —— 计数的初值
计数输出寄存器 —— CPU从中读
当前计数值
计数器 —— 执行计数操作,
CPU不能访问
一、计数 /定时的工作原理
工作原理:对 CLK信号进行减 1计数
首先,CPU把控制字写入控制寄存器,计数初始值写入初值寄存器
计数从初值开始,每当 CLK信号出现一次,计数值减 1
当计数值减到 0,从 OUT端输出规定的信号
CLK信号出现时,计数器是否减 1,由门控信号 GATE控制
一、计数 /定时的工作原理
CLK是计数输入信号,计数器对 CLK端出现的脉冲个数进行计

?CLK端可以输入外部事件
?CLK端可以接入固定频率的时钟信号,从而实现计时
OUT信号在计数结束时发生变化
?可将 OUT作为外部设备的控制信号
?可将 OUT作为向 CPU申请中断的信号
CPU可以从计数输出寄存器读出当前计数值。
读前,应向控制寄存器发送锁存命令
二,8253的编程结构
1片 8253内部有三个计数器,结构完全相同
8253的引脚、内部结构、寻址方式
P,229
每个计数器内部都有一个 8位控制寄存器,三个控制寄存器使
用相同的端口,在编程结构图中画为一个
8253没有状态寄存器
二,8253的编程结构
8253控制字的格式
P,230
每个计数器的初值寄存器( CR)、输出锁存器( OL) 都是 16位
的,但它们对应相同的一个 8位端口地址,所以 16位的 CR,OL
作为两个 8位寄存器读写,由控制寄存器控制读写高 8位 /低 8位
三,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,100
OUT 70H,AL
三,8253的编程命令
例:设三个计数器的 CR/OL端口地址为 70H,71H,72H,控制
寄存器端口地址 73H。计数器 1,工作模式 1,CR/OL使用 16位,
初值为 1234,计数值使用 BCD
MOV AL,73H
OUT 73H,AL
MOV AX,1234H
OUT 71H,AL
MOV AL,AH
OUT 71H,AL
三,8253的编程命令
?读出命令
1)发出锁存命令,使当前计数值锁存在 OL中
2)读 OL,获得当前计数值
例:设三个计数器的 CR/OL端口地址为 70H,71H,72H,控制
寄存器端口地址 73H。读出计数器 0的当前计数值,放在 BX中
MOV AL,0H
OUT 73H,AL
IN AL,70H
MOV BL,AL
IN AL,70H
MOV BH,AL
四,8253的工作模式
工作模式决定以下内容:
1)门控信号的影响
高电平允许,当 GATE=0,即使出现 CLK,也不计数
—— 模式 0,2,3,4
上升沿允许(上升沿触发)
—— 模式 1,5
2) OUT信号的状态
写入控制字后,OUT的状态
计数过程中,OUT的状态
计数终了,OUT的状态
3)计数操作可否重复
不可重复 —— 模式 0,4
自动重复 —— 模式 2,3
条件重复 —— 模式 1,5
四,8253的工作模式
六种工作模式
P,230
?计数初值写入初值寄存器后,要经过一个 CLK输入后才开始计数
(或,经过一个 CLK后,计数初值才到达计数执行部件 )
?计数器在 CLK的下降沿使计数值减 1
四,8253的工作模式
方式 0:
计数初值写入 CR后,OUT由 0到 1跳变出现在 n+1个时钟脉冲之

延迟时间 TD=(n+1)TCLK
方式 1:
单脉冲宽度 T=n TCLK
方式 2:
对输入端 n个时钟脉冲,在输出端仅出现一个时钟脉冲
—— N分频计数器
四,8253的工作模式
方式 3:
例:计数器工作模式 3,计数器初值 15,时钟脉冲频率为
2MHz,确定 OUT端输出方波的特性。
解,TCLK=1/2MHz=500ns
计数器初值 15为奇数,输出分频波高电平宽度
TCLK(N+1)/2=4?s
输出分频波低电平宽度
TCLK(N-1)/2=3.5?s
方式 4,5:
触发后 n+1个时钟脉冲之后输出端产生选通脉冲信号
四,8253的工作模式
例:计数器 0工作模式 4,初始化计数器,使装入计数器 10 ?s后
产生选通信号 (设时钟频率 2MHz,8253端口地址为 50H~53H)。
解,n+1=T/ TCLK=10/0.5=20
n=19=13H
MOV AL,18H
OUT 53H,AL
MOV AL,13H
OUT 50H,AL
五,8253的应用
1,PC机中 8253的应用
计数器 0:向系统日历时钟提供定时中断
模式 3,控制字 36H,计数器初始值 0
计数器 1:动态 RAM刷新
模式 2,控制字 54H,计数器初始值 18( 12H)
计数器 2:控制扬声器发声
模式 3,控制字 B6H,计数器初始值 1331( 533H)
PC机中,8253的端口地址为 40H~43H
五,8253的应用
2,扬声器控制
设计一个程序,使扬声器发出 600Hz频率的声音,按下任意键
声音停止
PC机的发声系统以计数器 2为核心。 CLK2的输入频率 1.19MHz,
改变计数器初值可以由 OUT2得到不同频率的方波输出
对于 600Hz,计数初值 1.19MHz/600Hz=1938
发声系统受 8255芯片 B口的两个输出端线 PB0,PB1的控制
PB0为 1,使 GATE2为 1,计数器 2能正常计数
PB1为 1,打开输出控制门
五,8253的应用
2,扬声器控制CODE SEGMENT
ASSUME CS:CODE
START,
IN AL,61H
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
五,8253的应用
3,以 2MHz输入 8253,实现每 5秒定时中断(设 8253端口地址
40H~43H)
分析,8253最大初值 65536,CLK=2MHz可实现最大时间间隔
65536/(2?106)=32.769ms
所以需要两个计数器串联,一个计数器的输出作为另一个计数
器的输入
五,8253的应用
计数器 1:模式 2,OUT1每 5ms输出一个脉冲
初值 (2?106)/(1/0.005)=10000
计数器 0:模式 2,OUT0每 5s输出一个脉冲
初值 (1/0.005)/(1/5)=1000
OUT0
GATE0
CLK0
OUT1
GATE1
CLK1
+5V
+5V
2MHz
每 5秒产生
一个脉冲
五,8253的应用
程序,MOV AL,74H
OUT 43H,AL
MOV AX,10000
OUT 41H,AL
MOV AL,AH
OUT 41H,AL
MOV AL,74H
MOV AL,34H
OUT 43H,AL
MOV AX,1000
OUT 40H,AL
MOV AL,AH
OUT 40H,AL
作业
1.试述 CPU与外设交换数据的方式及其特点
2.设 8253三个计数器的 CR/OL端口地址为 70H,71H,72H,控
制寄存器端口地址 73H。编写程序片段,使:
计数器 0,工作模式 1,使用 16位,初值为 1234,BCD计数
计数器 1,工作模式 4,使用低 8位,初值为 100,二进制计数
计数器 2,工作模式 2,使用 16位,初值为 65536,二进制 计数
3.设 8253的端口地址同 2,编写程序片段,读出计数器 2的内容,
并把读出的数据装入寄存器 AX.
4.设计数器的时钟输入频率为 1.91MHz,为产生 25KHZ的 方波
输出信号,应向计数器装入的计数初值为多少?
5.音符 1,2,3,4,5,6,7的频率分别为 350,393,441,467、
525,589,661,编写一个程序,使用户按下 1~7键时扬声器发
出相应的音符,按下其他键退出程序。