钱晓捷,微机原理与接口技术 ·第 4版 —— 基于 IA-32处理器和 32位汇编语言第 8 章常用接口技术
8.1 定时控制接口
8.2 并行接口
8.3 异步串行通信接口
8.4 模拟接口微机原理与接口技术
·

4
版机械工业出版社
8.1 定时控制接口
定时控制具有极为重要的作用微机控制系统中常需要定时中断,定时检测,
定时扫描等实时操作系统和多任务操作系统中要定时进行进程调度
PC机的日时钟计时,DRAM刷新定时和扬声器音调控制都采用了定时控制技术
可编程定时器芯片软硬件相结合,方便灵活的定时电路
软件延时方法处理器执行延时子程序微机原理与接口技术
·

4
版机械工业出版社
8.1.1 8253/8254定时器
定时器 ( 计数器 ),由数字电路中的计数电路构成,记录输入脉冲的个数脉冲信号具有一定随机性,往往 通过脉冲的个数可以获知外设的状态变化次数 ( 计数 )
脉冲信号的周期固定 (使用高精度晶振产生脉冲信号 ),个数乘以周期就是时间间隔 ( 定时 )
Intel 8253/8254可编程间隔定时器
3个独立的 16位计数器通道每个计数器有 6种工作方式微机原理与接口技术
·

4
版机械工业出版社
1,内部结构和引脚
3个相互独立的计数器通道,结构完全相同计数器 0
计数器 1
计数器 2
每个计数器通道
16位减法计数器
16位预置寄存器输出锁存器预置寄存器
GATE
CLK OUT
减 1计数器输出锁存器微机原理与接口技术
·

4
版机械工业出版社定时器外设引脚
CLK时钟输入信号在计数过程中,此引脚上每输入一个时钟信号
( 下降沿 ),计数器的计数值减 1
GATE门控输入信号控制计数器工作,可分成电平控制和上升沿控制两种类型
OUT计数器输出信号当一次计数过程结束 ( 计数值减为 0),OUT引脚上将产生一个输出信号微机原理与接口技术
·

4
版机械工业出版社连接处理器引脚
D0~ D7数据线 A0~ A1地址线
RD*读信号 WR*写信号
CS*片选信号
CS* A1 A0 I/O地址 读操作 RD* 写操作 WR*
0 0 0
0 0 1
0 1 0
0 1 1
40H
41H
42H
43H
读计数器 0
读计数器 1
读计数器 2
无操作写计数器 0
写计数器 1
写计数器 2
写控制字微机原理与接口技术
·

4
版机械工业出版社
2,工作方式
8253有 6种工作方式,由方式控制字确定
每种工作方式的过程类似:
① 设定工作方式
② 设定计数初值
[ ③ 硬件启动 ]
④ 计数初值进入减 1计数器
⑤ 每输入一个时钟计数器减 1的计数过程
⑥ 计数过程结束微机原理与接口技术
·

4
版机械工业出版社定时器方式 0:计数结束中断
① ② ⑤④ ⑥
GATE
OUT
CLK
03 124
4方式 0WR

设定工作方式

设定计数初值

计数值送入计数器

计数过程

计数结束微机原理与接口技术
·

4
版机械工业出版社定时器方式 1:可编程单稳脉冲
① ② ⑤④ ⑥

设定工作方式

设定计数初值


硬件启动

计数值送入计数器

计数过程

计数结束
GATE
OUT
CLK
03 124
4方式 1
WR
微机原理与接口技术
·

4
版机械工业出版社定时器方式 2:频率发生器(分频器)
03 124
GATE
OUT
CLK
4方式 2
03 124
03 124
03 124
WR
微机原理与接口技术
·

4
版机械工业出版社定时器方式 3:方波发生器
03 124
GATE
OUT
CLK
4方式 3
03 124
03 124
03 124
WR
微机原理与接口技术
·

4
版机械工业出版社定时器方式 4:软件触发选通信号
GATE
OUT
CLK
03 124
4方式 4
22 33
3
1 0
WR
微机原理与接口技术
·

4
版机械工业出版社定时器方式 5:硬件触发选通信号
GATE
OUT
CLK
03 124
4方式 5
22 33
3
1 1 0
WR
微机原理与接口技术
·

4
版机械工业出版社
3,编程:写入方式控制字
控制字写入控制字 I/O地址,A1A0= 11
计数器 读写格式 工作方式 数制
D7 D6 D5 D4 D3 D2 D1 D0
00 计数器 0
01 计数器 1
10 计数器 2
11 非法
( 8253)
11 读回命令
( 8254)
00 计数器锁存命令
01 只读写低字节
10 只读写高字节
11 先读写低字节后读写高字节
000 方式 0
001 方式 1
*10 方式 2
*11 方式 3
100 方式 4
101 方式 5
0 二进制
1 十进制微机原理与接口技术
·

4
版机械工业出版社方式控制字编程示例; 8253的计数器 0,1,2端口和控制端口地址,40H~ 43H;设置其中计数器 0为方式 0;采用二进制计数,先低后高写入计数值
mov al,30h;方式控制字,30H= 00 11 000 0B
out 43h,al;写入控制端口,43H
微机原理与接口技术
·

4
版机械工业出版社
3,编程:写入计数值
选择二进制时计数值范围,0000H~ FFFFH
0000H是最大值,代表 65536
选择十进制 ( BCD码 )
计数值范围,0000~ 9999
0000代表最大值 10000
计数值写入计数器各自的 I/O地址
按方式控制字规定的读写格式进行微机原理与接口技术
·

4
版机械工业出版社计数值编程示例; 8253的计数器 0,1,2端口和控制端口地址,40H~ 43H;设置计数器 0采用二进制计数;写入计数初值,1024( = 400H)
mov ax,1024 ;计数初值,1024( = 400H);写入计数器 0地址,40H
out 40h,al ;写入低字节计数初值
mov al,ah
out 40h,al ;写入高字节计数 初 值微机原理与接口技术
·

4
版机械工业出版社
8.1.2 定时器的应用
A0
A1


— A0
— A1

D0~ D7 D0~ D0 OUT1
OUT2
OUT0
GATE0
GATE1
GATE2
CLK0
CLK1
CLK2
D Q
CLK
+5V
接至 DMA控制器接至扬声器驱动器
PB0
PB1
IRQ0
DRQ0
8253 +5V
1.19318MHz
DACK0 BRD
IOR
IOW
RD
WR
CST/CCS
&
微机原理与接口技术
·

4
版机械工业出版社
1,定时中断
mov al,36h ; 计数器 0为方式 3,二进制计数; 先低后高写入计数值
out 43h,al ; 写入方式控制字
mov al,0 ; 计数值为 0
out 40h,al ; 写入低字节计数值
out 40h,al ; 写入高字节计数值
计数器 0,方式 3,计数值,65536,输出方波频率,1.19318MHz÷ 65536= 18.206Hz,不断产生
OUT0端接 8259A的 IRQ0,每秒产生 18.206次中断请求,或说每隔 55ms( 54.925493ms) 申请一次中断
DOS系统利用计数器 0的这个特点,通过 08号中断服务程序实现了日时钟计时功能微机原理与接口技术
·

4
版机械工业出版社
2,定时刷新
需要重复不断提出刷新请求门控总为高,选择方式 2或 3
2ms内刷新 128次,即 15.6?s刷新一次计数初值为 18
mov al,54h ;计数器 1为方式 2;采用二进制计数,只写低 8位计数值
out 43h,al ;写入方式控制字
mov al,18 ;计数初值为 18
out 41h,al ;写入计数值微机原理与接口技术
·

4
版机械工业出版社
3,扬声器控制;发音频率设置子程序;入口参数,AX= 1.19318× 106÷ 发音频率
speaker proc
push ax ;暂存入口参数
mov al,0b6h ;定时器 2为方式 3,先低后高
out 43h,al ;写入方式控制字
pop ax ;恢复入口参数
out 42h,al ;写入低 8位计数值
mov al,ah
out 42h,al ;写入高 8位计数值
ret
speaker endp
微机原理与接口技术
·

4
版机械工业出版社扬声器发音控制
speakon proc ;扬声器开 子程序
push ax
in al,61h ;读取 61H端口的原控制信息
or al,03h ;D1D0= PB1PB0= 11,其他不变
out 61h,al ;直接控制发声
pop ax
ret
speakon endp;扬声器关 子程序
and al,0fch;D1D0= PB1PB0= 00,其他不变微机原理与接口技术
·

4
版机械工业出版社
〔 例 8-1〕 控制扬声器程序;数据段
freq dw 1193180/600 ;给一个 600Hz的频率;代码段
mov ax,freq
call speaker ;设置扬声器的音调
call speakon ;打开扬声器声音
call readc ;等待按键
call speakoff ;关闭扬声器声音;子程序
输出,明确向哪个 端口 输出什么 数据输入,清楚从哪个 端口 输入什么 数据微机原理与接口技术
·

4
版机械工业出版社
8.2 并行接口
并行数据传输:以计算机字长,通常是 8、
16或 32位为传输单位,利用 8,16或 32个数据信号线一次传送一个字长的数据适合于外部设备与微机之间进行近距离,大量和快速的信息交换,如微机与并行接口打印机,
磁盘驱动器等微机系统中最基本的信息交换方法,例如系统板上各部件之间的数据交换
并行数据传输需要并行接口的支持微机原理与接口技术
·

4
版机械工业出版社
8.2.1 并行接口电路 8255
具有多种功能的可编程并行接口电路芯片最基本的接口电路:三态缓冲器和锁存器与 CPU间,与外设间的接口电路:状态寄存器和控制寄存器还有端口的译码和控制电路,中断控制电路
分 3个端口,共 24个外设引脚
共 3种输入输出工作方式方式 0,基本输入输出方式方式 1,选通输入输出方式方式 2,双向选通传送方式微机原理与接口技术
·

4
版机械工业出版社
1,内部结构和引脚数据总线缓冲器内部控制线内部数据线D0~ D7
A组控制
A组端口 A
A组端口 C
上部
B组控制
B组端口 B
B组端口 C
下部读写控制逻辑 PC0~ PC3
PB0~ PB7
PC4~ PC7
PA0~ PA7
RD
WR
A0
A1
CS
RESET
微机原理与接口技术
·

4
版机械工业出版社
8255外设数据端口
端口 A,PA0~ PA7
A组,支持工作方式 0,1,2
常作数据端口,功能最强大
端口 B,PB0~ PB7
B组,支持工作方式 0,1
常作数据端口
端口 C,PC0~ PC7
仅支持工作方式 0,分两个 4位,每位可独立操作
A组控制高 4位 PC4~ PC7,B组控制低 4位 PC0~ PC3
可作数据,状态和控制端口控制最灵活,最难掌握微机原理与接口技术
·

4
版机械工业出版社
2,工作方式 0:基本输入输出方式
方式 0输入执行输入 IN指令,输入外设数据
data
data输入端口
D0~ D7
RD
CS,A1,A0
微机原理与接口技术
·

4
版机械工业出版社
2,工作方式 0:基本输入输出方式
方式 0输出执行输出 OUT指令,将数据送给外设
WR
data
data输出端口
D0~ D7
CS,A1,A0
微机原理与接口技术
·

4
版机械工业出版社
3,工作方式 1:选通输入输出方式
借助于选通 (应答 )联络信号进行输入或输出
只有端口 A和端口 B可以采用方式 1
作为输入或输出的数据端口
利用端口 C的 3个引脚作为应答联络信号
还提供有中断请求逻辑和中断允许触发器
对输入和输出的数据都进行锁存
适用于查询和中断方式的接口电路微机原理与接口技术
·

4
版机械工业出版社
8255工作方式 1输入引脚
A组引脚 数据选通信号表示外设已经准备好数据输入缓冲器满信号表示 A口已经接收数据中断请求信号请求 CPU接收数据中断允许触发器
PC4
PC5
PC3
PA7~ PA0
INTEA
IBFA
INTRA
STBA
微机原理与接口技术
·

4
版机械工业出版社选通输入工作时序
异步时序:没有时钟,由引脚控制信号定时
STB*和 IBF是外设和 8255A间应答联络信号
data
INTR
IBF
输入端口
D0~ D7
STB
RD
data
微机原理与接口技术
·

4
版机械工业出版社
8255工作方式 1输出引脚
A组引脚外设响应信号表示外设已经接收到数据输出缓冲器满信号表示 CPU已经输出了数据中断请求信号请求 CPU再次输出数据中断允许触发器
PC6
PC7
PC3
PA7~ PA0
INTEA
OBFA
INTRA
ACKA
微机原理与接口技术
·

4
版机械工业出版社选通输出工作时序
异步时序:没有时钟,由引脚控制信号定时
OBF*和 ACK*是外设和 8255A间应答联络信号
INTR
data
data输出端口
D0~ D7
WR
OBF
ACK
微机原理与接口技术
·

4
版机械工业出版社
B组方式
0 方式 0
1 方式 1
端口 B
0 输出
1 输入端口 C下部
0 输出
1 输入
4,8255的编程:写入方式控制字
控制字写入控制字 I/O地址,A1A0= 11
1 D6 D5 D4 D3 D2 D1 D0
D7
A组方式
00 方式 0
01 方式 1
1* 方式 2
端口 A
0 输出
1 输入端口 C上部
0 输出
1 输入微机原理与接口技术
·

4
版机械工业出版社写入方式控制字示例
要求:
A端口:方式 1输入
C端口上半部:输出,C口下半部:输入
B端口:方式 0输出
方式控制字,10110001B或 B1H
初始化的程序段:
mov dx,0fffeh ;假设控制端口为 FFFEH
mov al,0b1h ;方式控制字
out dx,al ;送到控制端口微机原理与接口技术
·

4
版机械工业出版社
4,8255的编程:读写数据端口
利用数据端口 I/O地址,A1A0= 00(A) 01(B) 10(C)
作输入接口,执行输入 IN指令获取外设数据作输出接口,执行输出 OUT指令将数据送出
8255A具有锁存输出数据的能力对输出方式的端口同样可以输入不是读取外设数据,而是上次给外设的数据可实现按位输出控制
对输出端口 B的 PB7位置位的程序段
mov dx,0fffah ;B端口假设为 FFFAH
in al,dx ;读出 B端口原输出内容
or al,80h ;使 PB7= D7= 1
out dx,al ;输出新的内容微机原理与接口技术
·

4
版机械工业出版社端口 C的特点
C端口被分成 两个 4位端口只能以方式 0工作,可分别选择输入或输出上半部和 A端口编为 A组下半部和 B端口编为 B组
A和 B端口在方式 1或方式 2时
C端口的部分或全部引脚将 被征用其余引脚工作在方式 0
微机原理与接口技术
·

4
版机械工业出版社端口 C的输出
通过端口 C的 I/O地址向 C端口直接 写入字节数据写进 C端口的输出锁存器,并从输出引脚输出对设置为输入的引脚无效
通过控制端口的 I/O地址向 C端口 写入位控字使 C端口的某个引脚输出 1或 0
或置位复位内部的中断允许触发器示意图微机原理与接口技术
·

4
版机械工业出版社端口 C的输入
未被 A和 B端口征用的引脚定义为输入的端口读到引脚输入的信息定义为输出的端口读到输出锁存器的信息
被 A和 B端口征用作为联络线的引脚读到反映 8255A状态的 状态字示意图微机原理与接口技术
·

4
版机械工业出版社
8.2.2 并行接口的应用
端口 A,B,C和控制字地址
60H,61H,62H和 63H
工作在基本输入 /输出方式 0
端口 A为方式 0输入,用来读取键盘扫描码端口 B工作于方式 0输出,例如 控制扬声器 等端口 C为方式 0输入,读取系统状态和配置
系统的初始化编程:
mov al,10011001b;方式控制字 99H
out 63h,al
微机原理与接口技术
·

4
版机械工业出版社
1,用 8255方式 0与打印机接口
端口 A为方式 0输出打印数据
PC7引脚产生负脉冲选通信号
PC2引脚连接忙信号查询其状态
微处理器利用查询方式输出数据
BUSY
DATA0~ 7
8255A
PC7
PC2
PA0~ PA7
打印机
STROBE
微机原理与接口技术
·

4
版机械工业出版社打印机接口时序
典型的异步时序
DATA0~ DATA7( 8位并行数据 ) 信号主机输出打印数据和命令
STROBE*( 选通 ) 信号输出低有效,才能使打印机接收数据
ACK*( 响应 ) 信号打印机接收数据结束回送负脉冲响应信号
BUSY( 忙状态 ) 信号打印机忙于处理接收的数据,不接收新的数据示意图微机原理与接口技术
·

4
版机械工业出版社方式 0初始化程序段
mov dx,0fffeh ;控制端口地址为 FFFEH
mov al,10000001b ;方式控制字
out dx,al;A端口方式 0输出,端口 B任意;C端口上半部输出,下半部输入
mov al,00001111b ;端口 C复位置位控制字
out dx,al;使 PC7= 1,即置 STORE*= 1
微机原理与接口技术
·

4
版机械工业出版社打印数据子程序 - 1
printc proc ;AH=打印数据
push ax
push dx
prn,mov dx,0fffch ;读取端口 C
in al,dx ;查询打印机的状态
and al,04h ;忙否 ( PC2= BUSY= 0)?
jnz prn ;PC2= 1,打印机忙,等待
mov dx,0fff8h;PC2= 0,打印机不忙,输出
mov al,ah
out dx,al ;将打印数据从端口 A输出微机原理与接口技术
·

4
版机械工业出版社打印数据子程序 - 2
mov dx,0fffeh ;从 PC7送出控制低脉冲
mov al,00001110b ;使 PC7= STROBE*= 0
out dx,al
nop ;产生一定宽度的低电平
nop
mov al,00001111b ;使 PC7= STROBE*= 1
out dx,al ;产生低脉冲 STROBE*信号
pop dx
pop ax
ret
printc endp
微机原理与接口技术
·

4
版机械工业出版社
2,用 8255方式 1与打印机接口
端口 A选通输出连接打印机
PC7= OBF*输出,PC6= ACK*输入,PC3= INTR输出
通过 PC6控制 INTEA
1000pf 2K
15
3
2
14
41 LS123
单稳电路 +5V
DATA0~ 7
8255A
PC6
INTR
PC3
PC7
PA0~ PA7
打印机
ACKACK
OBF STROBE
微机原理与接口技术
·

4
版机械工业出版社方式 1时序配合
8255的 OBF*引脚对应打印机 STROBE*引脚
略有差别,不能直接连接
PA0~ PA7
( DATA0~ 7)
ACK
OBF
STROBE
微机原理与接口技术
·

4
版机械工业出版社方式 1初始化程序段
mov dx,0fffeh ;设定端口 A为选通输出方式
mov al,0a0h
out dx,al
mov al,0ch;使 INTEA( PC6) 为 0,禁止中断
out dx,al

mov cx,counter ;打印字节数送 CX
mov bx,offset buffer ;取字符串首地址送 BX
call prints ;调用打印子程序微机原理与接口技术
·

4
版机械工业出版社打印字符串子程序- 1;入口参数,DS:BX=字符串首地址;CX=字符个数
prints proc
push ax ;保护寄存器
push dx
print1,mov al,[bx] ;取一个数据
mov dx,0fff8h
out dx,al ;从端口 A输出微机原理与接口技术
·

4
版机械工业出版社打印字符串子程序- 2
mov dx,0fffch
print2,in al,dx ;读取端口 C
test al,80h ;检测 OBF*( PC7) 为 1否?
jz print2;为 0,说明打印机没有响应,继续检测
inc bx;为 1,说明打印机已接受数据
loop print1 ;准备取下一个数据输出
pop dx ;打印结束,恢复寄存器
pop ax
ret ;返回
prints endp
微机原理与接口技术
·

4
版机械工业出版社
8.2.3 键盘及其接口
键盘是微机系统最常使用的输入设备
小键盘,适用于单板机或以处理器为基础的仪器,实现数据,地址,命令及指令等输入
独立键盘,通过 5芯电缆与 PC微机主机连接微机原理与接口技术
·

4
版机械工业出版社
1,简易键盘
线性结构键盘
+5V
+5V
+5V
+5V
+5V
控制线检测线
矩阵结构键盘微机原理与接口技术
·

4
版机械工业出版社识别按键的扫描方法
先使第 0行接低电平,其余行为高电平,然后看第 0行是否有键闭合 ( 通过检查列线电位实现 )
再将第 1行接地,检测列线是否有变为低电位的线
如此往下一行一行地扫描,直到最后一行
扫描过程中,发现某一行有键闭合时 ( 列线输入中有一位为 0),便在扫描中途退出
通过组合行线和列线识别此刻按下哪一键微机原理与接口技术
·

4
版机械工业出版社键盘扫描程序第 1段:判断是否有键按下
key1,mov al,00
mov dx,rowport ; rowport=行线端口地址
out dx,al ; 使所有行线为低电平
mov dx,colport ; colport=列线端口地址
in al,dx ; 读取列值
cmp al,0ffh ; 判定列线是否为低电平
jz key1 ; 没有,无闭合键; 则循环等待 ( 或转向其他程序片断 )
call delay ; 有,延迟 20ms消除抖动微机原理与接口技术
·

4
版机械工业出版社键盘扫描程序第 2段:识别按键
mov cx,8 ; 行数送 CX
mov ah,0feh ; 扫描初值送 AH
key2,mov al,ah
mov dx,rowport
out dx,al ; 输出行值 ( 扫描值 )
mov dx,colport
in al,dx ; 读进列值
cmp al,0ffh ; 判断有无低电平的列线
jnz key3 ; 有,则转下一步处理
rol ah,1 ; 无,则移位扫描值
loop key2 ; 准备下一行扫描
jmp key1 ; 所有行都没有按键
key3, ; AL=列值,AH=行值微机原理与接口技术
·

4
版机械工业出版社键盘扫描程序第 3段:查找键代码- 1
key3,mov si,offset table; SI指向键行列值表
mov di,offset char ; DI指向键代码表
mov cx,64 ; CX=键的个数
key4,cmp ax,[si] ; 与按键的行列值比较
jz key5 ; 相同,说明查到
inc si ; 不相同,继续比较
inc si
inc di
loop key4
jmp key1 ; 全部不相同; 返回继续检测 ( 或转向其他程序片断 )
微机原理与接口技术
·

4
版机械工业出版社键盘扫描程序第 3段:查找键代码- 2
key5,mov al,[di] ; 获取键代码送 AL
; 判断按键释放,没有则等待
call delay ; 按键释放,延时消除抖动
; 后续处理; 键盘的行列值表:低字节是列值,高字节是行值
table word 0fefeh ; 键 0的行列值
word 0fefdh ; 键 1的行列值
; 其他键的行列值; 键盘的键代码表
char byte ; 键 0的代码值
byte ; 键 1的代码值
; 其他键的代码值微机原理与接口技术
·

4
版机械工业出版社
2,PC机键盘
与主机箱分开的一个独立装置
通过一根五芯电缆与主机相连
PC及 PC/XT机采用 83( 或 84) 键的标准键盘微机原理与接口技术
·

4
版机械工业出版社
PC机键盘的工作过程
键盘电路正常工作时不断地扫描键盘矩阵
有按键,则确定按键位置之后以串行数据形式发送给系统板键盘接口电路
键按下时,发送该键的 接通扫描码
键松开时,发送该键的 断开扫描码
若一直按住某键,则以拍发速率 ( 每秒 2~
30次 ) 连续发送该键的接通扫描码接通扫描码=键盘上的位置断开扫描码=接通扫描码+ 80H
微机原理与接口技术
·

4
版机械工业出版社键盘接口电路 的工作过程
接收一个串行形式字符,进行串并转换
产生键盘中断 IRQ1请求,等待读取键盘数据
CPU响应中断,进入 09H键盘中断服务程序,
① 读取键盘扫描码:用 IN AL,60H即可
② 响应键盘:系统使 PB7= 1
③ 允许键盘工作:系统使 PB7= 0
④ 处理键盘数据
⑤ 给 8259A中断结束 EOI命令,中断返回微机原理与接口技术
·

4
版机械工业出版社
〔 例 8-2〕 键盘中断服务程序- 1
09H号中断服务程序 ( kbint过程 )
完成常规的操作处理键盘数据将扫描码通过查表转换为对应 ASCII码送缓冲区不能显示的按键,转换为 0,且不再送至缓冲区
键盘 I/O功能程序 ( kbget子程序 )
从缓冲区中读取转换后的 ASCII码
功能调用 ( 主程序 )
循环显示键入的字符微机原理与接口技术
·

4
版机械工业出版社
〔 例 8-2〕 键盘中断服务程序- 2
键盘缓冲区中断服务程序与子程序之间传递参数先进先出循环队列
buffer
bufptr1
bufptr2
9
2
1
0
队列末端队列始端队列空进队列出队列队列满微机原理与接口技术
·

4
版机械工业出版社
〔 例 8-2〕 键盘中断服务程序- 3; 数据段
buffer byte 10 dup(0) ; 键盘缓冲区
bufptr1 word 0 ; 队列头指针
bufptr2 word 0 ; 队列尾指针; 按扫描码顺序给出字符的 ASCII码; 不能显示的按键为 0; 第一个 0不对应按键,仅用于查表指令
scantb byte 0,1,'1234567890-=',08h; 键盘第 1排的按键,从 ESC到退格

byte 0,0,'789-456+1230.'; 右边小键盘,从 Num Lock到 Del
微机原理与接口技术
·

4
版机械工业出版社
〔 例 8-2〕 键盘中断服务程序- 4; 代码段
mov ax,3509h ; 获取保存原中断向量表项
int 21h
push es
push bx
cli ; 关中断
push ds ; 设置 09H号新中断向量表项
mov ax,seg kbint
mov ds,ax
mov dx,offset kbint
mov ax,2509h
int 21h
pop ds
微机原理与接口技术
·

4
版机械工业出版社
〔 例 8-2〕 键盘中断服务程序- 5
in al,21h ; 允许 IRQ1中断
push ax
and al,0fdh
out 21h,al
sti ; 开中断
start1,call kbget; 调用 KBGET获取按键的 ASCII码
cmp al,1
jz start2 ; 是 ESC键,则退出
push ax ; 保护字符
call dispc ; 显示字符
pop ax ; 恢复字符微机原理与接口技术
·

4
版机械工业出版社
〔 例 8-2〕 键盘中断服务程序- 6
cmp al,0dh ; 该字符是回车符吗?
jnz start1 ; 不是,取下个按键字符
mov al,0ah ; 是回车符,再进行换行
call dispc
jmp start1 ; 继续取字符
start2,cli ; 恢复中断原状态
pop ax
out 21h,al
pop dx
pop ds
mov ax,2509h
int 21h
sti
微机原理与接口技术
·

4
版机械工业出版社
〔 例 8-2〕 键盘中断服务程序- 7; KBGET子程序从缓冲区取字符送 AL
kbget proc
push bx ; 保护 BX
kbget1,cli ; 关中断
mov bx,bufptr1 ; 取缓冲区队列头指针
cmp bx,bufptr2 ; 与尾指针相等否?
jnz kbget2 ; 不相等,有字符
sti ; 相等,缓冲区空
jmp kbget1 ; 等待缓冲区有字符微机原理与接口技术
·

4
版机械工业出版社
〔 例 8-2〕 键盘中断服务程序- 8
kbget2,mov al,buffer[bx]; 从队列头取字符送 AL
inc bx ; 队列头指针增量
cmp bx,10 ; 指针指向队列末端?
jc kbget3 ; 没有,转移
mov bx,0 ; 循环指向始端
kbget3,mov bufptr1,bx ; 设定新队列头指针
sti ; 开中断
pop bx ; 恢复 BX
ret ; 子程序返回
kbget endp
微机原理与接口技术
·

4
版机械工业出版社
〔 例 8-2〕 键盘中断服务程序- 9; KBINT中断服务程序处理 09H号键盘中断
kbint proc
sti ; 开中断
push ax ; 保护寄存器
push bx
in al,60h ; 读取键盘扫描码
mov bl,al ; 扫描码保存在 BL
in al,61h ; 使 PB7= 1,响应键盘
or al,80h
out 61h,al
and al,7fh ; 使 PB7= 0,允许键盘
out 61h,al
微机原理与接口技术
·

4
版机械工业出版社
〔 例 8-2〕 键盘中断服务程序- 10
test bl,80h ; 键盘数据处理
jnz kbint2 ; 是断开扫描码,退出
xor bh,bh
mov al,scantb[bx] ; 是接通扫描码,转换
cmp al,0 ; 合法的 ASCII码?
jz kbint2 ; 不是,退出
mov bx,bufptr2 ; 是,取队列尾指针
mov buffer[bx],al ; 存入缓冲区队列尾
inc bx ; 队列尾指针增量
cmp bx,10 ; 指针指向队列末端?
jc kbint1 ; 没有,转移
mov bx,0 ; 循环指向始端微机原理与接口技术
·

4
版机械工业出版社
〔 例 8-2〕 键盘中断服务程序- 11
kbint1,cmp bx,bufptr1 ; 缓冲区是否已满?
jz kbint2 ; 队列满,退出
mov bufptr2,bx; 队列不满,设置新的队列尾指针
kbint2,mov al,20h ; 普通中断结束命令
out 20h,al
pop bx ; 恢复寄存器
pop ax
iret ; 中断返回
kbint endp
示意图微机原理与接口技术
·

4
版机械工业出版社
8.2.4 数码管及其接口
发光二极管 LED是 最简单的显示设备
由 7段 LED就可以组成的 LED数码管
LED数码管广泛用于单板微型机,微型机控制系统及数字化仪器中
LED数码管可以显示内存地址和数据等
h
gf
e
d
c
b
a
微机原理与接口技术
·

4
版机械工业出版社
1,LED数码管的工作原理
主要部分是 7段发光管
顺时针分别称为 a,b,c,d,e,f,g
有的产品还附带有一个小数点 h
通过 7个发光段的不同组合主要显示 0~ 9
也可显示 A~ F( 16进制数 )
还可显示个别特殊字符:-,P
共阳极结构共用阳极接高电平
共阴极结构共用阴极接低电平 h
gf
e
d
c
b
a
示意图微机原理与接口技术
·

4
版机械工业出版社
2,单个数码管的显示
LED数码管显示一位十六进制数 ( 4位二进制数 )
硬件方法:专用的带驱动器的 LED段译码器软件方法:组成显示代码表,通过查表进行译码
ledtb byte 3fh,06h,5bh, ;显示代码表; 实现 1个 LED数码管显示
mov bx,1 ; BX← 要显示的数字
mov al,ledtb[bx]; 换码为显示代码,AL←LEBTB[BX]
mov dx,port ; port=数码管端口地址
out dx,al ; 输出显示示意图微机原理与接口技术
·

4
版机械工业出版社
3,多个数码管的显示
硬件上用公用的驱动电路来驱动各数码管
软件上用扫描方法实现数码显示
8个数码管:用 2个 8位输出端口控制位控制端口,控制哪个 ( 位 ) 数码管显示段控制端口,控制哪个 段 显示,决定具体显示什么数码
稳定数字显示:依次显示,不断重复重复频率越高,数字显示越稳定延时显示时间越长,显示亮度就越高
各种显示效果:控制重复频率和延时时间微机原理与接口技术
·

4
版机械工业出版社位控制端口位控制,Di= 0,相应位发光
D7 D6 D5 D4 D3 D2 D1 D0
位 7 位 6 位 5 位 4 位 3 位 2 位 1 位 0
D7
D6
D5
D4
D3
D2
D1
D0
阳极位 0 位 1 位 2
D0~ D7
位控制反相寄存驱动
bitport,IOW
微机原理与接口技术
·

4
版机械工业出版社段控制端口段控制,Di= 0,相应段发光
D7 D6 D5 D4 D3 D2 D1 D0
h g f e d c b a
D0
D1
D2
D3
D4
D5
D6
D7
阳极位 0
a b c d e f g h 位 1 位 2
… …
D0~ D7
段控制正相寄存驱动
segport,IOW
微机原理与接口技术
·

4
版机械工业出版社依次显示 8位数码管程序- 1; 数据段
leddt byte 8 dup(0) ; 数码缓冲区; 主程序
mov si,offset leddt ; 指向数码缓冲区
call displed ; 调用显示子程序; 子程序:显示一次数码缓冲区的 8个数码; 入口参数,DS:SI=缓冲区首地址
displed proc
push ax
push bx
push dx
微机原理与接口技术
·

4
版机械工业出版社依次显示 8位数码管程序- 2
xor bx,bx
mov ah,0feh ; 指向最左边数码管
led1,mov bl,[si] ; 取出要显示的数字
inc si
mov al,ledtb[bx]; 得到显示代码,AL←LEDTB[BX]
mov dx,segport ; segport为段控制端口
out dx,al ; 送出段码
mov al,ah ; 取出位显示代码
mov dx,bitport ; bitport为位控制端口
out dx,al ; 送出位码微机原理与接口技术
·

4
版机械工业出版社依次显示 8位数码管程序- 3
call delay ; 实现数码管延时显示
rol ah,1 ; 指向下一个数码管
cmp ah,0feh ; 是否指向最右边数码管
jnz led1 ; 没有,显示下一个数字
pop dx
pop bx
pop ax
ret ; 8位数码管都显示一遍; 显示代码表,按照 0~ 9,A~ F的顺序
ledtb byte 0c0h,0f9h,0a4h,,86h,8eh
displed endp
微机原理与接口技术
·

4
版机械工业出版社依次显示 8位数码管程序- 4
timer = 10 ; 延时常量
delay proc ; 软件延时子程序
push bx
push cx
mov bx,timer ; 外循环,timer次数
delay1,xor cx,cx
delay2,loop delay2 ; 内循环,216次循环
dec bx
jnz delay1
pop cx
pop bx
ret
delay endp
微机原理与接口技术
·

4
版机械工业出版社
8.3 异步串行通信接口
串行通信,将数据分解成二进制位用一条信号线,
一位一位顺序传送的方式
串行通信的 优势,用于通信的线路少,因而在远距离通信时可以极大地降低成本
串行通信适合于远距离数据传送,也常用于速度要求不高的近距离数据传送
通信协议 ( 通信规程 ),收发双方共同遵守,解决传送速率,信息格式,位同步,字符同步,数据校验等问题
串行异步通信,以字符为单位进行传输
串行同步通信,以一个数据块 ( 帧 ) 为传输单位微机原理与接口技术
·

4
版机械工业出版社
8.3.1 异步串行通信格式起始位 —— 每个字符开始传送的标志,
起始位采用逻辑 0电平数据位 —— 数据位紧跟着起始位传送 。由 5~ 8个二进制位组成,低位先传送校验位 —— 用于校验是否传送正确;可选择奇检验,偶校验或不传送校验位停止位 —— 表示该字符传送结束 。 停止位采用逻辑 1电平,可选择 1,1.5或 2位起始位 校验位 停止位 空闲位数据位低位 高位字符
0/1 0/1 0/10/1 101 1 1…
空闲位 —— 传送字符之间的逻辑 1电平,
表示没有进行传送微机原理与接口技术
·

4
版机械工业出版社数据传输速率
数据传输速率 = 比特率 ( Bit Rate)
每秒传输的 二进制位数 bps
字符中每个二进制位持续的时间长度都一样,
为数据传输速率的倒数
进行二进制数码传输,每位时间长度相等:
比特率= 波特率 ( Baud Rate)
过去,限制在 50 bps到 9600 bps之间
现在,可以达到 115200 bps或更高微机原理与接口技术
·

4
版机械工业出版社
8.3.2 异步串行接口标准
美国电子工业协会 EIA制定
1962年公布,1969年修订
1987年 1月正式改名为 EIA-232D
数据终端设备 DTE与数据通信设备 DCE标准接口
调制解调器 Modem
通信线路信号与数字信号相互转换的设备
传输制式全双工,双根传输线,能够同时发送和接收半双工,单根传输线,不能同时发送和接收单工,单根传输线只用作发送或只用作接收微机原理与接口技术
·

4
版机械工业出版社
1,232C的引脚定义
TxD,发送数据
RxD,接收数据
RTS:请求发送
CTS:清除发送 ( 允许发送 )
DTR,数据终端准备好
DSR,数据装置准备好
GND,信号地
CD,载波检测 ( DCD)
RI,振铃指示保护地 ( 机壳地 )
TxC:发送器时钟
RxC:接收器时钟微机原理与接口技术
·

4
版机械工业出版社
2,232C的连接
连接调制解调器,通过电话线路远距离通信
直接 (零调制解调器 )连接,进行短距离通信不使用联络信号的 3线相连微机
TxD
RxD
GND
微机微机
DSR
DTR
TxD
RxD
RTS
CTS
GND
微机
,伪,使用联络信号的 3线相连微机原理与接口技术
·

4
版机械工业出版社
2,232C的连接
连接调制解调器,通过电话线路远距离通信
直接 (零调制解调器 )连接,进行短距离通信微机
DSR
DTR
TxD
RxD
RTS
CTS
GND
微机使用联络信号的多线相连微机原理与接口技术
·

4
版机械工业出版社
8.3.3 异步串行通信程序
IBM PC/XT机的 UART芯片是 INS 8250
后续 PC机采用兼容的 NS16450和 NS16550
现在 32位 PC机芯片组兼容 NS16550
实现起止式串行异步通信协议数据位为 5~ 8位,停止位 1,1.5或 2位奇偶校验,具有奇偶,帧和溢出错误检测电路
支持全双工通信
8250支持的数据传输速率为 50~ 9600 bps
16550支持的速率高达 115200 bps
微机原理与接口技术
·

4
版机械工业出版社
1,8250的寄存器
9种可访问的寄存器
用引脚 A0~ A2来寻址,DLAB位区别
DLAB A2 A1 A0 寄 存 器 COM1地址 COM2地址
0
0
0
×
×
×
×
×
×
1
1
0 0 0
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
0 0 0
0 0 1
读接收缓冲寄存器写发送保持寄存器中断允许寄存器中断识别寄存器通信线路控制寄存器调制解调器控制寄存器通信线路状态寄存器调制解调器状态寄存器不用除数寄存器低 8位除数寄存器高 8位
3F8H
3F8H
3F9H
3FAH
3FBH
3FCH
3FDH
3FEH
3FFH
3F8H
3F9H
2F8H
2F8H
2F9H
2FAH
2FBH
2FCH
2FDH
2FEH
2FFH
2F8H
2F9H
微机原理与接口技术
·

4
版机械工业出版社
8250的接收缓冲寄存器 RBR
存放串行接收后转换成并行的数据并行数据检测接收错误删除起始位、
校验位、停止位串行数据
CPU
接收缓冲寄存器接收移位寄存器同步控制
8250
SIN 0/10/1 0/10/1
微机原理与接口技术
·

4
版机械工业出版社
8250的发送保持寄存器 THR
包含将要串行发送的并行数据并行数据加入起始位、
校验位、停止位串行数据
CPU
发送保持寄存器发送移位寄存器同步控制
8250
SOUT 0/10/1 0/10/1
微机原理与接口技术
·

4
版机械工业出版社
8250的除数寄存器
除数寄存器保存设定的分频系数分频系数=基准时钟频率 ÷ ( 16× 比特率)
起 始 位时钟
( RCLK)
数据线
( SIN) T
16 T
16 T8 T
微机原理与接口技术
·

4
版机械工业出版社
8250的通信线路控制寄存器 LCR
指定串行异步通信的字符格式
DLAB D7 D5 D4 D3 D2 D1 D0
寄存器选择
0 正常值
1 除数寄存器中止字符
0 无作用
1 发送中止字符校验位设置
×× 0 无校验位
001 设置奇校验
011 设置偶校验
101 校验位为 1
111 校验位为 0
停止位个数
0 1位
1 1.5位 ( 数据位为 5位时 )
1 2位 ( 数据位为 6~ 8位时 )
数据位个数
00 5位
01 6位
10 7位
11 8位微机原理与接口技术
·

4
版机械工业出版社
8250的通信线路状态寄存器 LSR
提供串行异步通信的当前状态
0 D6 D5 D4 D3 D2 D1 D0
为 1,表示发送移位寄存器空;
当数据由发送保持寄存器移入发送移位寄存器时,该位为 0
为 1,表示发送保持寄存器空,
当 CPU将字符写入发送保持寄存器后,该位为 0
为 1,表示正在传输中止字符为 1,表示出现帧错误为 1,表示出现奇偶错为 1,表示出现溢出错为 1,表示接收数据缓冲器收到一个数据,既接收数据准备好;
当 CPU读走数据后,该位为 0
奇偶错误 PE 帧错误 FE 溢出错误 OE
微机原理与接口技术
·

4
版机械工业出版社
8250的调制解调器控制寄存器 MCR
设置 8250与数据通信设备联络的输出信号为 1使 DTR*引脚为低否则为高
0 0 0 LOOP OUT2 OUT1 RTS DTR
为 1使 RTS*引脚为低否则为高为 1使 OUT1*引脚为低否则为高为 1使 OUT2*引脚为低否则为高为 1使 8250为循环工作方式否则为正常工作方式循环工作方式,
4个控制输入信号在内部与 4个控制输出信号相连发送的串行数据在内部被接收检测 8250发送和接收功能,不必外连线微机原理与接口技术
·

4
版机械工业出版社
8250的调制解调器状态寄存器 MSR
反映 4个控制输入信号的当前状态及其变化
MSR高 4位中某位为 1:
相应输入信号当前为低有效
MSR低 4位中某位为 1:
从上次 CPU读取该状态字后,相应输入信号已发生改变,从高变低或反之产生调制解调器状态中断,当 CPU读取该寄存器或复位后,低 4位被清零微机原理与接口技术
·

4
版机械工业出版社
8250的中断允许寄存器 IER
8250有 4级 10个中断接收线路状态中断 ( 4个 )
奇偶错,溢出错,帧错和中止字符接收器数据准备好中断发送保持寄存器空中断调制解调器状态中断 ( 4个 )
中断允许寄存器低 4位控制 4级中断是否允许某位为 1,则对应的中断被允许否则,被禁止优先权高优先权低微机原理与接口技术
·

4
版机械工业出版社
8250的中断识别寄存器 IIR
表明是否有中断
保存正在请求中断优先权最高中断级别编码
0 0 0 0 0 ID1 ID0 IP 0 有中断
1 无中断
ID1ID0 优先权 中断类型
1 1
1 0
0 1
0 0
1
2
3
4
接收线路状态接收数据准备好发送保持寄存器空调制解调器状态微机原理与接口技术
·

4
版机械工业出版社
2,初始化编程
对 8250的内部控制寄存器进行编程写入
⑴ 设置传输率写入除数寄存器
⑵ 设置字符格式写入通信线路控制寄存器
⑶ 设置工作方式写入调制解调器控制寄存器
⑷ 设置中断允许或屏蔽位写入中断允许寄存器微机原理与接口技术
·

4
版机械工业出版社写入除数寄存器设置传输率
mov al,80h
mov dx,2fbh
out dx,al; 写入通信线路控制寄存器,使 DLAB= 1
mov ax,96 ; 分频系数; 1.8432MHz÷ (1200× 16)= 96= 60H
mov dx,2f8h
out dx,al ; 写入除数寄存器低 8位
mov al,ah
inc dx
out dx,al ; 写入除数寄存器高 8位微机原理与接口技术
·

4
版机械工业出版社写入通信线路控制寄存器 设置字符格式; 假设使用 7个数据位,1个停止位,奇校验
mov al,00001010b
mov dx,2fbh
out dx,al ;写入通信线路控制寄存器; 同时使 DLAB= 0,以方便下述初始化过程微机原理与接口技术
·

4
版机械工业出版社写入调制解调器控制寄存器设置工作方式; 设置查询通信方式
mov al,03h ; 禁止中断 ( D3= 0)
mov dx,2fch
out dx,al ; 写入调制解调器控制寄存器; 设置中断通信方式
mov al,0bh ; 允许中断 ( D3= 1)
mov dx,2fch
out dx,al; 设置查询的循环测试通信方式
mov al,13h ; 循环测试 ( D4= 1)
mov dx,2fch ; 禁止中断 ( D3= 0)
out dx,al
微机原理与接口技术
·

4
版机械工业出版社写入中断允许寄存器设置中断允许或屏蔽位;禁止所有中断
mov al,0
mov dx,2f9h
out dx,al ;写入中断允许寄存器 (DLAB= 0);仅允许接收中断
mov al,1
mov dx,2f9h
out dx,al ;写入中断允许寄存器 (DLAB= 0)
微机原理与接口技术
·

4
版机械工业出版社
〔 例 8-3〕 异步通信程序- 1; 数据段
msg byte 'What you see is,',13,10,0; 代码段
; 初始化编程
mov si,offset msg; SI指向发送信息
mov bx,1 ; BX= 1需要发送信息
mov cx,1 ; CX= 1可以接收信息; 读取通信线路状态,查询工作
statue,mov ax,bx
or ax,cx ; BX= CX= 0,接发完成
jz done ; 转向结束微机原理与接口技术
·

4
版机械工业出版社
〔 例 8-3〕 异步通信程序- 2
mov dx,2fdh ; 读取线路状态寄存器
in al,dx
test al,1eh ; 接收有错误否?
jz statue1 ; 没有错误,继续; 接收有错,响铃报警
mov dx,2f8h ; 读出接收有误的数据
in al,dx
mov al,07h ; 响铃控制的 ASCII码
call dispc
jmp statue ; 继续查询微机原理与接口技术
·

4
版机械工业出版社
〔 例 8-3〕 异步通信程序- 3
statue1,test al,01h ; 接收到数据吗?
jz statue2 ; 没有收到数据,继续; 已接收字符,读取该字符并显示
mov dx,2f8h ;读取输入缓冲寄存器
in al,dx
cmp al,0 ; 是结尾字符吗?
jnz receive
xor cx,cx ; CX= 0,不再接收数据
jmp statue ; 继续查询
receive,and al,7fh ; 标准 ASCII码取低 7位
call dispc ; 屏幕显示该数据
jmp statue ; 继续查询微机原理与接口技术
·

4
版机械工业出版社
〔 例 8-3〕 异步通信程序- 4
statue2,cmp bx,1 ; 有要发送的字符吗?
jne statue ; 无字符,继续查询
test al,20h ; 能输出数据吗?
jz statue ; 不能输出,继续查询; 保持寄存器已空,可以发送数据
mov al,[si] ; 获得要发送的字符
inc si
cmp al,0 ; 是结尾字符吗?
jnz transmit
xor bx,bx ; 无发送字符,BX= 0
jmp statue ; 继续查询微机原理与接口技术
·

4
版机械工业出版社
〔 例 8-3〕 异步通信程序- 5
transmit,mov dx,2f8h; 将字符输出给发送保持寄存器
out dx,al ; 串行发送数据
jmp statue ; 继续查询
done,; 返回 DOS
What you see is what you get.
显示结果微机原理与接口技术
·

4
版机械工业出版社
8.4 模拟接口
模拟量 —— 连续变化的物理量模拟 /数字转换器
ADCDAC数字 /模拟转换器
数字量 —— 时间和数值上都离散的量
8.4.1 模拟输入输出系统数字信号模拟信号现场信号
1
现场信号
2
现场信号
n
微型计算机放大器放大器放大器多路开关低通滤波传感器低通滤波传感器低通滤波传感器
A/D转换器采样保持器数字信号受控对象控制信号 模拟信号
D/A转换器放大驱动电路

8.4.1 模拟输入输出系统数字信号模拟信号现场信号
1
现场信号
2
现场信号
n
微型计算机放大器放大器放大器多路开关低通滤波传感器低通滤波传感器低通滤波传感器
A/D转换器采样保持器数字信号受控对象控制信号 模拟信号
D/A转换器放大驱动电路

传感器将各种现场的物理量测量出来并转换成电信号 ( 模拟电压或电流 )
放大器把传感器输出的信号放大到 ADC所需的量程范围
低通滤波器用于降低噪声,滤去高频干扰,
以增加信噪比
多路开关把多个现场信号分时地接通到 A/D转换器采样保持器周期性地采样连续信号,
并在 A/D转换期间保持不变微机原理与接口技术
·

4
版机械工业出版社
8.4.2 D/A转换器
D/A转换器 ( DAC)
将数字量转换成为模拟量 ( 电压或电流 )
DAC芯片有多种类型按 DAC的性能:通用,高速和高精度等转换器按内部结构:不包含,包含数据寄存器按位数,8位,12位,16位等按输出模拟信号:电流输出型和电压输出型微机原理与接口技术
·

4
版机械工业出版社
1,D/A转换原理
把每位代码按其权的大小转换成相应的模拟分量,将各模拟分量相加
1101B= 1× 23+ 1× 22+ 0× 21+ 1× 20= 13
D/A转换器,
主要由电阻网络,电子开关和基准电压组成
DAC集成电路多采用 R-2R梯形解码网络输入数字量控制电子开关使电阻网络中的不同电阻和基准电压接通输出端产生成比例的模拟电流或电压基准电压 (参考电压 VREF):稳定的电压源微机原理与接口技术
·

4
版机械工业出版社
DAC0832的内部结构
典型的 8位,电流输出型,通用 DAC芯片
LE2LE1
Rfb
AGND
DAC0832
Vcc
ILE
VREF输入寄存器
DGND
DI0~ DI7
D/A
转换器
DAC
寄存器 Iout2
Iout1
CS
WR1
WR2
XFER
微机原理与接口技术
·

4
版机械工业出版社
2,DAC0832的数字接口
8位数字输入端
DI0~ DI7( DI0为最低位 )
输入寄存器 ( 第 1级 ) 控制端
ILE,CS*,WR1*
DAC寄存器 ( 第 2级 ) 控制端
XFER*,WR2*
LE2LE1 DAC0832
输入寄存器
DI0~ DI7
D/A
转换器
DAC
寄存器
Iout1
直通方式
单缓冲方式
双缓冲方式微机原理与接口技术
·

4
版机械工业出版社
3,DAC0832的模拟输出
Iout1,Iout2—— 电流输出端
Rfb—— 反馈电阻引出端 ( 电阻在芯片内 )
VREF—— 参考电压输入端
+ 10V~- 10V
AGND—— 模拟信号地
VCC—— 电源电压输入端
+ 5V~+ 15V
DGND—— 数字信号地微机原理与接口技术
·

4
版机械工业出版社单极性电压输出设 VREF= 5V
D= FFH= 255时,最大输出电压:
Vmax= -(255/256)× 5V= -4.98V
D= 00H时,最小输出电压:
Vmin= -(0/256)× 5V= 0V
D= 01H时,一个最低有效位电压:
VLSB= -(1/256)× 5V= -0.02V
Rfb
Iout2
Iout1
Vout+
_
AGND
A
DI
VREF Vout=- (D/2n)× VREF
微机原理与接口技术
·

4
版机械工业出版社双极性电压输出
Vmax= [(255-128)/128]× 5V= 4.96V
Vmin= [(0-128)/128]× 5V= -5V
VLSB= [(129-128/128]× 5V= 0.04V
R1( R)
R3( 2R)R2( 2R)
Rfb
Iout2
Iout1
AGND
DI
VREF
Vout1+
_
A1
Vout2+
_
A2
Vout= [(D- 2n-1)/2n-1]× VREF
微机原理与接口技术
·

4
版机械工业出版社
4,DAC芯片与主机的连接
DAC芯片相当于一个,输出设备,
至少需要一级锁存器作为接口电路
mov al,buf
mov dx,portd
out dx,al
译码AB
D0~ D7
CLK
DAC
Vout+
_
A
LS273
IOW &
微机原理与接口技术
·

4
版机械工业出版社
8.4.3 A/D转换器
A/D转换器 ( ADC)
将模拟量 ( 电压或电流 ) 转换成为数字量
ADC芯片主要以模拟到数字转换技术区别
有些 ADC芯片不仅具有 A/D转换的基本功能,
还包含内部放大器和三态输出锁存器
有的还包括多路开关,采样保持器等微机原理与接口技术
·

4
版机械工业出版社
1,A/D转换原理
逐次逼近式 A/D转换原理
从最高位开始的逐位试探法时钟复位数字输出转换结束比较器模拟输入寄存器
D/A转换器微机原理与接口技术
·

4
版机械工业出版社
ADC0809的内部结构
8位逐次逼近式 ADC,多路开关和三态锁存缓冲器
ADC0809
地址锁存和译码 OE
通道选择开关
ADDA
ADDB
ADDC
1N0
IN1
IN2
IN3
IN4
IN5
IN6
IN7
8位三态锁存缓冲器DAC
Vcc
比较器
CLOCK START
GND VREF(+) VREF(-)
ALE
逐次逼近寄存器 SAR
定时和控制
D0
D1
D2
D3
D4
D5
D6
D7
EOC
微机原理与接口技术
·

4
版机械工业出版社
2,ADC0809的模拟输入
IN0~ IN7,8个模拟电压输入端
ADDA,ADDB,ADDC,3个地址输入线
ALE,地址锁存允许信号
提供一个 8通道的多路开关和寻址逻辑
ALE的上升沿用于锁存 3个地址输入的状态
译码器从 8个选择一个模拟输入进行 A/D转换
3,ADC0809的转换时序
D0~ D7
OE
EOC
START/ALE
ADDA/B/C
DATA
100?s
2?s+8T
(最大 )
200ns
(最小 )
转换启动信号转换结束信号微机原理与接口技术
·

4
版机械工业出版社
4,ADC0809的数字输出
输出允许信号 OE高电平 有效
将三态锁存缓冲器的数字量从 D0~ D7输出
8
)()(
)( 2?

REFREF
REFin
VV
VV
N
基准电压 VREF(+)= 5V,VREF(- )= 0V
输入模拟电压 Vin= 1.5V
N= (1.5- 0)÷ (5- 0)× 256= 76.8≈77= 4DH
微机原理与接口技术
·

4
版机械工业出版社
5,ADC芯片与主机的连接
ADC芯片相当于,输入设备,
需要接口电路提供数据缓冲器
转换开始需要启动信号软件编程或硬件定时产生脉冲信号或电平信号
转换结束输出结束信号主机获知转换是否结束,进行数据输入查询方式,把结束信号作为状态信号中断方式,把结束信号作为中断请求信号延时方式,不使用转换结束信号
DMA方式,把结束信号作为 DMA请求信号微机原理与接口技术
·

4
版机械工业出版社
6,ADC芯片的应用:中断方式
D0~ D7
220h
IRQ2
A0~ A9 译码
Vcc
D0~ D7
EOC
ADDA
ADDB
ADDC
ALE
模拟输入
( 0~ 5V)
500KHzCLOCK
VREF(+)
+5V
IN0
OE
START
GND VREF(-)
IOR
IOW
&
&
微机原理与接口技术
·

4
版机械工业出版社中断方式:主程序;数据段设置缓冲区
adtemp db 0 ;给定一个临时变量;代码段
;设置中断向量等工作
sti ;开中断
mov dx,220h
out dx,al ;启动 A/D转换
;其他工作微机原理与接口技术
·

4
版机械工业出版社中断方式:中断服务程序- 1
adint proc ;中断服务程序
sti ;开中断
push ax ;保护寄存器
push dx
push ds
mov ax,@data ;设置数据段 DS的段地址
mov ds,ax
mov dx,220h
in al,dx ;读取 A/D转换后的数字量
mov adtemp,al ;送入缓冲区微机原理与接口技术
·

4
版机械工业出版社中断方式:中断服务程序- 2
mov al,20h ;给中断控制器发送 EOI命令
out 20h,al
pop ds ;恢复寄存器
pop dx
pop ax
iret ;中断返回
adint endp
微机原理与接口技术
·

4
版机械工业出版社
7,ADC芯片的应用:查询方式
8通道模拟输入
Vcc
D7
A3~ A9
D0~ D7 D0~ D7
OE
EOC
A0
A1
A2
ADDA
ADDB
ADDC
译码
500KHzCLOCK
START
GND
VREF(+)
VREF(-)
ALE
+5V
IN0
IN1
IN2
IN3
IN4
IN5
IN6
IN7
220h~ 227h
238h~ 23fh
IOR
IOW
&
&
&
微机原理与接口技术
·

4
版机械工业出版社查询方式程序- 1;数据段
counter equ 8
buf db counter dup(0) ;设立数据缓冲区;代码段
mov bx,offset buf ;BX← 缓冲区偏移地址
mov cx,counter ;CX← 检测的数据个数
mov dx,220h ;从 IN0开始转换
start1,out dx,al ;启动 A/D转换
push dx
微机原理与接口技术
·

4
版机械工业出版社查询方式程序- 2
mov dx,238h ;循环查询是否转换结束
start2,in al,dx ;读入状态信息
test al,80h ;D7= 1,转换结束否?
jz start2 ;没有结束,则继续查询
pop dx ;转换结束
in al,dx ;读取数据
mov [bx],al ;存入缓冲区
inc bx
inc dx
loop start1 ;转向下一个模拟通道
;数据处理
掌握 8253引脚,工作方式,编程和应用
熟悉 8255A的结构特点和引脚功能
掌握 8255A的方式 0/1的编程及应用
掌握简易键盘编程和理解 PC机键盘的工作原理
掌握 LED数码管编程
掌握起止式通信协议,232C引脚定义和连接
了解 8250的内部寄存器功能
理解异步通信适配器的初始化编程和通信程序
了解模拟输入输出系统
熟悉 DAC0832和 ADC0809
理解 DAC和 ADC芯片与主机连接问题
掌握 ADC芯片的应用教学要求第 8章 常用接口技术钱晓捷,微机原理与接口技术 ·第 4版 —— 基于 IA-32处理器和 32位汇编语言第 8章 习题
8.1 简答题 ( 2,3,4,6,7)
8.2 判断题 ( 2,3,4,5,9)
8.3 填空题 ( 1,2,5,6,7)
8.6 8.10 8.11 8.12
8.14 8.20 8.21