ch.8 模拟量的输入输出
DESCRIPTION
Ch.8 模拟量的输入输出. 本章内容 模拟量输入输出通道的组成 D/A 转换器 原理及连接使用方法 A/D 转换器 原理及连接使用方法. 概述. 模拟量 I/O 接口的作用: 实际工业生产环境 —— 连续变化的模拟量 例如:电压、电流、压力、温度、位移、流量 计算机内部 —— 离散的数字量 二进制数、十进制数 工业生产过程的闭环控制. 模拟量. 数字量. 数字量. 模拟量. 传感器. A/D. D/A. 执行元件. 计算机. 模拟量输入 ( 数据采集 ). 模拟量输出 ( 过程控制 ). 8.1 模拟量 I/O 通道的组成. - PowerPoint PPT PresentationTRANSCRIPT
Ch.8 模拟量的输入输出
本章内容 模拟量输入输出通道的组成 D/A 转换器
原理及连接使用方法 A/D 转换器
原理及连接使用方法
模拟量 I/O 接口的作用: 实际工业生产环境——连续变化的模拟量
例如:电压、电流、压力、温度、位移、流量 计算机内部——离散的数字量
二进制数、十进制数 工业生产过程的闭环控制
概述
模拟量D/A传感器 执行元件A/D
数字量 数字量 模拟量
模拟量输入( 数据采集 )
模拟量输出( 过程控制 )
计算机
8.1 模拟量 I/O 通道的组成
模拟接口电路的任务模拟电路的任务
00101101
10101100工
业
生
产
过
程
传感器
放大滤波
多路转换&
采样保持
A/D
转换
放大驱动
D/A
转换输出接口
微
型
计
算
机执行机构
输入接口
物理量变换
信号处理
信号变换
I/O
接口
输入通道
输出通道
模拟量输入通道 传感器( Transducer )
非电量→电压、电流 变送器( Transformer )
转换成标准的电信号 信号处理( Signal Processing )
放大、整形、滤波 多路转换开关( Multiplexer )
多选一 采样保持电路( Sample Holder, S/H )
保证变换时信号恒定不变 A/D 变换器( A/D Converter )
模拟量转换为数字量
模拟量输出通道 D/A 变换器( D/A Converter )
数字量转换为模拟量 低通滤波
平滑输出波形 放大驱动
提供足够的驱动电压,电流
8.2 数 / 模( D/A )变换器 8.2.1 D/A 变换器的基本原理及技术指标
D/A 变换器的基本工作原理 组成:模拟开关、电阻网络、运算放大器 两种电阻网络:权电阻网络、 R-2R 梯形电阻网络 基本结构如图:
Vref
Rf
模拟开关电阻网络
VO
数字量∑
D/A 变换原理
运放的放大倍数足够大时,输出电压 Vo 与输入电压 Vin 的关系为:
fO in
RV = - V
R式中: Rf 为反馈电阻 R 为输入电阻 Vin
Rf
Vo
∑
R
若输入端有 n 个支路 , 则输出电压 VO 与输入电压 Vi 的关系为:
n
0 f ini=1 i
1V = -R V
R
Vin
Rf
VO
∑
R1式中: Ri 为第 i 支路的输
入电阻
Rn
…
令每个支路的输入电阻为 2iRf , 并令 Vin 为一基准电压 Vref ,则有
如果每个支路由一个开关 Si 控制, Si=1 表示Si 合上, Si=0 表示 Si 断开,则上式变换为
n n
0 f ref refi ii=1 i=1f
1 1V = -R V = - V
2 R 2
n
0 i refii=1
1V = - S V
2若 Si=1, 该项对 VO 有贡
献
若 Si=0, 该项对 VO 无贡献
2R
4R
8R
16R
32R
64R
128R
256R
Vref
Rf
VO
S1
S2
S3
S4
S5
S6
S7
S8
与上式相对应的电路如下 ( 图中 n=8) :
图中的电阻网络就称为权电阻网络
如果用 8 位二进制代码来控制图中的 S1~S8(Di=1时 Si 闭合; Di=0时 Si 断开 ) ,那么根据二进制代码的不同,输出电压 VO 也不同,这就构成了 8 位的 D/A 转换器。
可以看出,当代码在 0~ FFH 之间变化时,VO 相应地在 0~ -(255/256)Vref 之间变化。
为控制电阻网络各支路电阻值的精度,实际的 D/A 转换器采用 R-2R 梯形电阻网络( 见下页 ) ,它只用两种阻值的电阻 (R和2R) 。
R-2R 梯形电阻网络
Rf
ViV0
…Vref
n-1 2 1 0
2R 2R 2R2R
R R RVn-1 V2 V1 V0
2R
+
-
D/A 转换器的主要技术指标 分辨率( Resolution )
输入的二进制数每 ±1 个最低有效位 (LSB) 使输出变化的程度。
一般用输入数字量的位数来表示 : 如 8 位、 10 位例:一个满量程为 5V的 10位DAC,±1 LSB 的变化将使输出变化 5/(210-1)=5/1023=0.004888V=4.888mV
转换精度(误差) 实际输出值与理论值之间的最大偏差。 一般用最小量化阶⊿来度量,如 ±1/2 LSB 也可用满量程的百分比来度量,如 0.05% FSRLSB: Least Significant BitFSR: Full Scale Range)
转换时间
从开始转换到与满量程值相差 ±1/2 LSB 所对应的模拟量所需要的时间
t
V
1/2 LSB
tC
VFULL
0
8.2.2 典型 D/A 转换器 DAC0832
特性: 8 位电流输出型 D/A 转换
器 T 型电阻网络 差动输出
引线图见教材 p351
12345678910
20191817161514131211
DAC0832
CS
1WRAGND
3DI
2DI
1DI
0DIREFV
fbR
DGND 1OUTI2OUTI
7DI6DI5DI4DI
XFER
2WR
ILE
VCC
DAC0832 内部结构
输入数据 ~4 7
~13 16
19
12
18
17XFERWR2
WR1
CS
I LE &
≥ 1
≥ 1
LE1 LE2 Rfb
8 位输入寄存器
8 位DAC寄存器
8 位D/A转换器
VREF
I OUT2
I OUT1
Rfb
AGND( )模拟地
VCC(+5V +15V或 )20
10
3
9
11128
DAC0832框图DGND(数字地)
D0 D7 ~~
引脚功能 D7~ D0 :输入数据线 ILE :输入锁存允许 CS :片选信号 用于把数据写入到输入锁存器 WR1 :写输入锁存器 WR2 :写 DAC 寄存器 XFER :允许输入锁存器的数据传送到 DAC 寄存器 上述二个信号用于启动转换 VREF :参考电压, -10V~ +10V ,一般为 +5V或 +10V IOUT1、 IOUT2: D/A 转换差动电流输出,接运放的输入 Rfb :内部反馈电阻引脚,接运放输出 AGND、 DGND :模拟地和数字地
工作时序 D/A 转换可分为两个阶段:
CS=0、WR1=0、 ILE=1 ,使输入数据锁存到输入寄存器; WR2=0、 XFER=0 ,数据传送到 DAC 寄存器,并开始转换。
D0 D7~
CS
WR1
I LE(高电平)
WR2
XFER
(模拟输出电流变化)
写输入寄存器
写 DAC寄存器
工作方式 单缓冲方式
使输入锁存器或 DAC 寄存器二者之一处于直通。 CPU 只需一次写入即开始转换。控制比较简单。见教材 p352 图。
双缓冲方式(标准方式) 转换要有两个步骤:
将数据写入输入寄存器 CS=0、WR1=0、 ILE=1
将输入寄存器的内容写入 DAC 寄存器 WR2=0、XFER=0
优点:数据接收与 D/A 转换可异步进行; 可实现多个 DAC 同步转换输出——分时写入、同步转换
直通方式 使内部的两个寄存器都处于直通状态。模拟输出始终跟随输入变化。 不能直接与数据总线连接,需外加并行接口 (如 74LS373、 8255等 ) 。
双缓冲方式——同步转换举例
A10-A0
译码器
0832-1
0832-2
port1
port2
port3
输出方式
DAC0830 为电流输出型 D/A 转换器,要获得模拟电压输出时,需要外接一个运算放大器。
(1) 单极性模拟电压输出。如果参考电压为 +5 V ,则当数
字量 N从 00H至 FFH 变化时,对应的模拟电压 VO 的输出范围
是- 0~ 5 V ,如下图所示。 VREF
VFB
IOUT2
IOUT1
£
£«
AGND
VO
DAC
0830
0831
0832
DB
£«5 V
(2) 双极性模拟电压输出。如果要输出双极性电压,则需
在输出端再加一级运算放大器作为偏移电路,如下图所示。当
数字量 N从 00H至 FFH 变化时,对应的模拟电压 VO 的输出范
围是- 5~ +5 V 。
VREF
VFB
IOUT2
IOUT1
£
£«
AGND
VO
DAC
0830
0831
0832
DB
15 k£«5 V
7.5 k£
£«
15 k
VO
双缓冲方式的程序段示例
本例中三个端口地址的用途:port1 选择 0832-1 的输入寄存器
port2 选择 0832-2 的输入寄存器 port3 选择 0832-1和 0832-2的DAC 寄存器
MOV AL, data ; 要转换的数据送 AL
MOV DX, port1 ; 0832-1 的输入寄存器地址送 DX
OUT DX, AL ; 数据送 0832-1 的输入寄存器MOV DX, port2 ; 0832-2 输入寄存器地址送 DX
OUT DX, AL ; 数据送 0832-2 的输入寄存器MOV DX, port3 ; DAC 寄存器端口地址送 DX
OUT DX, AL ; 数据送 DAC 寄存器,并启动同步转换
HLT
D/A 转换器的应用 函数发生器
只要往 D/A 转换器写入按规律变化的数据,即可在输出端获得正弦波、三角波、锯齿波、方波、阶梯波、梯形波等函数波形。
直流电机的转速控制 用不同的数值产生不同的电压,控制电机的转速 其他需要用电压 / 电流来进行控制的场合
例子参见 p354-p356 。
应用举例【例 1 】 锯齿波的产生。
VREF
RFB
IOUT2
IOUT1
£
£«VO
£«5 VD0¡«D 7
DAC0830
ILE
CS
1WR
2WR
XFER
8255A
PA 0¡«PA 7
PB4
PB3
PB2
PB1
PB0
8086»ò
8088
控制程序清单如下:
; 8255A 初始化
MOV DX, 0E003H ; 8255A 的控制端口地址
MOV AL, 80H ;设置 8255A 的方式字
OUT DX, AL
; B 口控制 DAC 的转换
MOV DX, 0E001H ; 8255A的 B 口地址
MOV AL, 10H ;置 0830 为直通工作方式
OUT DX, AL
;生成锯齿波
MOV DX, 0E000H ;设置 DAC 端口号
MOV AL, 0H ;设置初值
L1 : OUT DX, AL ;向 DAC 送数据
INC AL ;输出数据加 1
NOP ;延时
JMP L1
通过 AL加 1 ,可得到正向的锯齿波。如要得到负向的锯
齿波,则只要将程序中的 INC AL 改为 DEC AL 即可。可以通
过延时的办法改变锯齿波的周期,若延迟时间较短,则可用
NOP 指令来实现;若延迟时间较长,则可用一个延时子程序。
延迟时间不同,波形周期不同,锯齿波的斜率就不同。
【例 2 】 三角波的产生。在原有硬件电路的基础上,换用下述程序即可产生三角波。
MOV DX, 0E000H
MOV AL, 0H ;输出数据从 0 开始L2: OUT DX, AL
INC AL ;输出数据加 1
JNZ L2 ; AL 是否加满?未满,继续MOV AL, 0FFH ;已满, AL 置全“ 1”
L3: OUT DX, AL
DEC AL ;输出数据减 1
JNZ L3 ; AL 是再减到“ 0” ?不是,继续JMP L2
8.3 模 / 数( A/D )转换器 用途
将连续变化的模拟信号转换为数字信号,以便于计算机进行处理。
常用于数据采集系统或数字化声音。 A/D 转换的四个步骤
采样→保持→量化→编码 采样 /保持:由采样保持电路( S/H)完成 量化 /编码:由 ADC 电路完成( ADC: AD 变换
器)
1) 采样和保持
采样 将一个时间上连续变化的模拟量转为时间上断续变化的
(离散的)模拟量。 或:把一个时间上连续变化的模拟量转换为一个脉冲串,脉冲的幅度取决于输入模拟量。
保持 将采样得到的模拟量值保持下来,使之等于采样控制脉
冲存在的最后瞬间的采样值。 目的: A/D 转换期间保持采样值恒定不变。
对于慢速变化的信号,可省略采样保持电路
采样保持电路( S/H)
由MOS管采样开关 T 、保持电容 Ch 和运放构成的跟随器三部分组成。
采样控制信号 S(t)=1 时, T导通, Vin向 Ch充电, Vc和 Vout 跟踪 Vin 变化,即对 Vin 采样。 S(t)=0 时, T截止, Vout 将保持前一瞬间采样的数值不变。
+
-
Ch
T VoutVin
采样控制
S(t)
采样保持电路的波形
Vin
S(t)
Vout
进行 A/D 转换时所用的输入电压,就是对保持下来的采样电压(每次采样结束时的输入电压)进行转换。
采样周期的确定
采样通常采用等时间间隔采样。 采样频率 fs 不能低于 2fimax( fimax 为输入
信号 Vin 的最高次谐波分量的频率); fs 的上限受计算机的速度、存储容量、器件
速度的限制。 实际中一般取 fs为 fimax 的 4-5倍。
2) 量化和编码 量化就是用基本的量化电平的个数来表示采样到模拟电压值。即把时间上离散而数值上连续的模拟量以一定的准确度变换为时间上、数值上都离散的具有标准量化级的等效数字值。(量化电平的大小取决于 A/D 变换器的字长)
只有当电压值正好等于量化电平的整数倍时,量化后才是准确值,否则量化后的结果都只能是输入模似量的近似值。这种由于量化而产生的误差叫做量化误差。量化误差是由于量化电平的有限性造成的,所以它是原理性误差,只能减小,而无法消除。为减小量化误差,根本的办法是减小量化电平(即增加字长)。
编码是把已经量化的模拟数值 (它一定是量化电平的整数倍 )用二进制码、 BCD 码或其它码来表示。
A/D 转换器的分类 根据 A/D 转换原理和特点的不同,可把 ADC
分成两大类:直接 ADC和间接 ADC。 直接 ADC 是将模拟电压直接转换成数字量,常用的
有: 逐次逼近式 ADC 、计数式 ADC 、并行转换式 ADC 等。
间接 ADC 是将模拟电压先转换成中间量,如脉冲周期 T 、脉冲频率 f 、脉冲宽度 τ 等,再将中间量变成数字量。常见的有:
单积分式 ADC 、双积分式 ADC, V/F 转换式 ADC 等。
各种 ADC 的优缺点 计数式 ADC :最简单,但转换速度最慢。 并行转换式 ADC :速度最快,但成本最高。 逐次逼近式 ADC :转换速度和精度都比较高,且比较简单,价格低,所以在微型机应用系统中最常用。
双积分式 ADC :转换精度高,抗干扰能力强,但转换速度慢,一般应用在精度高而速度不高的场合,如测量仪表。
V/F 转换式 ADC :在转换线性度、精度、抗干扰能力等方面有独特的优点,且接口简单、占用计算机资源少,缺点也是转换速度慢。在一些输出信号动态范围较大或传输距离较远的低速过程的模拟输入通道中应用较为广泛。
8.3.1 工作原理及技术指标 逐次逼近型 A/D 转换器
结构:由 D/A 转换器、比较器和逐次逼近寄存器SAR组成。见 P360页图。
Vi -
+逐次逼近寄存器
D/A 转换器
Vc
比较器
数字量输出
控制电路模拟量输入
工作原理
类似天平称重量时的尝试法,逐步用砝码的累积重量去逼近被称物体。 例如:用 8个砝码 20g , 21g ,…, 27g ,可以称出 1~ 255g 之 间的物体。现有一物体,用砝码称出其重量(假定重量为 176g )。
1) ADC从高到低逐次给 SAR 的每一位“置 1”(即加上不同权重的砝码), SAR 相当于放法码的称盘;
2)每次 SAR 中的数据经 D/A 转换为电压 VC ;3) VC 与输入电压 Vi 比较,若 VC≤Vi ,保持当前位的‘ 1’ ,
否则当前位‘置 0’ ;4)从高到低逐次比较下去,直到 SAR 的每一位都尝试完;5) SAR 内的数据就是与 Vi 相对应的 2 进制数。
主要技术指标 精度
量化间隔 ( 分辨率 ) = Vmax/ 电平数 ( 即满量程值 ) 例:某 8 位 ADC 的满量程电压为 5V ,则其分辨率为 5V/255=19.6mV
量化误差 : 用数字(离散)量表示连续量时,由于数字量字长有限而无法精确地表示连续量所造成的误差。( 字长越长,精度越高 )绝对量化误差 = 量化间隔 /2 = ( 满量程电压 /(2n-1))/2
相对量化误差 = 1/2 * 1/ 量化电平数目 * 100%
例:满量程电压 =10V, A/D 变换器位数 =10 位,则 绝对量化误差 ≈ 10/211 = 4.88mV
相对量化误差 ≈ 1/211 *100% = 0.049%
主要技术指标(续) 转换时间
转换一次需要的时间。精度越高(字长越长),转换速度越慢。
输入动态范围 允许转换的电压的范围。如 0 ~ 5V、 -
5V~+5V 、 0 ~ 10V等。
典型的 A/D 转换器简介 ADC0809
8 通道( 8 路)输入
8 位字长 逐位逼近型 转换时间 100μs 内置三态输出缓冲
器(可直接接到数据总线上)
外部引脚见教材p359
引脚功能
D7~D0 :输出数据线(三态)IN0~ IN7: 8 通道(路)模拟输入ADDA、ADDB、ADDC :通道地址(通道选
择)ALE :通道地址锁存START :启动转换EOC :转换结束,可用于查询或作为中断申请OE :输出允许(打开输出三态门)CLK :时钟输入( 10KHz~ 1.2MHz )VREF(+)、VREF(-) :基准参考电压
ADC0809 内部结构START EOC CLK OE
D7
D0
VREF(+) VREF(-)
ADDCADDBADDA
ALE
IN0
IN7
比较器
8 路模拟开关
树状开关
电阻网络
三态输出锁存
器
时序与控制
地址锁存
及译码
D/A
8个模拟输入通道
8 选 1逐位逼近寄存器
SAR
工作时序
启动地址锁存
ADDA ADDC
ALE/ START
EOC
OE
D0 D7
~
~
转换时间
①
② ③
④
⑤
ADC0809 的工作过程
根据时序图, ADC0809 的工作过程如下:①把通道地址送到 ADDA~ ADDC 上,选择一个模拟输入
端; ②在通道地址信号有效期间, ALE 上的上升沿使该地址锁
存到内部地址锁存器;③START 引脚上的下降沿启动 A/D 变换;
④变换开始后, EOC 引脚呈现低电平, EOC重新变为高
电平时表示转换结束;⑤OE 信号打开输出锁存器的三态门送出结果 。
ADC0809 与系统的连接 模拟输入端 INi
单路输入 模拟信号可连接到任何一个输入端; 地址线可根据输入固定连接;也可以由 CPU给一个固定地址。
多路输入 模拟信号按顺序分别连接到输入端; 要转换哪一路输入,就将其编号送到地址线上 ( 动态选择 ) 。
单路输入时
ADDCADDBADDA
IN4
ADC0809
输入
多路输入时
ADDCADDBADDA
IN0IN1IN2IN3IN4ADC0809
输入 0输入 1输入 2输入 3输入 4
CPU 指定通道号
+5V
地址线 ADDA-ADDC 多路输入时,地址线不能固定连接到+ 5V 或地线,而是要通过一
个接口芯片与数据总线连接。接口芯片可以选用: 锁存器 74LS273, 74LS373等(要占用一个 I/O 地址) 可编程并行接口 8255 (要占用四个 I/O 地址)
CPU 用一条OUT 指令把通道地址通过接口芯片送给 ADC0809
ADDCADDBADDA
IN0IN1IN2IN3IN4
ADC0809
输入
DB
74LS273
Q2Q1Q0CP
来自 I/O译码
D0-D7
ADDCADDBADDA
IN0IN1IN2IN3IN4
ADC0809
DB
8255
PB2PB1PB0CS
来自 I/O译码
D0-D7
A1A0
A1A0
用锁存器作为 ADC0809 的接口 用 8255 作为 ADC0809 的接口
数据输出线 D0-D7
内部已接有三态门,故可直接连到 DB 上 也可另外通过一个外部三态门与 DB 相连 上述两种方法均需占用一个 I/O 地址
D0-D7
ADC0809
DB
OE来自 I/O
译码
D0-D7
ADC0809
DB
OE
来自 I/O译码
直接与 DB 相连 通过三态门与 DB 相连
74LS244
+5V
DIDO
E1E2
地址锁存信号 ALE和启动转换信号 START 两种连接方法:
分别连接:用两个信号分别进行控制——需占用两个 I/O 端口或两个 I/O线 ( 用 8255时 ) ;
统一连接:用一个脉冲信号的上升沿进行地址锁存,下降沿实现启动转换——只需占用一个 I/O 端口或一个 I/O线 ( 用8255时 ) ,参见教材 p362 图。
ADC0809
ALE
START
独立连接
来自 I/O译码 1
来自 I/O译码 2
ADC0809
ALE
START
统一连接
来自 I/O译码
转换结束 EOC
软件延时等待 ( 比如延时 1ms)—— 不用 EOC 信号 CPU 效率最低,只能按最大转换时间延时 简单,容易实现
软件查询 EOC状态 EOC 通过一个三态门连到数据总线的 D0( 或D1、D2等 ) 三态门要占用一个 I/O 端口地址 CPU 效率低
把 EOC 作为中断申请信号,向CPU申请中断 在中断服务程序中读入转换结果,效率高
D0
IN0
A15-A0
IOR
IOW
D7-D0 D7-D0
EOC
OE
START
ALEADDCADDBADDA
译
码
器
ADC0809
一个连接实例(用查询方式)
模拟信号输入
进行一次 A/D 转换的程序 ( 以上图为例 ) 用延时等待的方法
……
MOV DX, start_port
OUT DX, AL ; 启动转换CALL DELAY_1MS ;延时 1ms
MOV DX, oe_port
IN AL, DX ;读入结果……
用查询 EOC状态的方法
……
MOV DX, start_port
OUT DX, AL ; 启动转换LL: MOV DX, eoc_port
IN AL, DX ;读入 EOC状态AND AL, 01H ;测试第 0位 (EOC状态位 )
JZ LL ;未转换完,则循环检测MOV DX, oe_port
IN AL, DX ;读入结果……
ADC芯片的应用例 1 编程启动、转
换结束中断处理
例 2 编程启动、转换结束查询处理
中断方式
D0~ D7
220h
IRQ2
A0~ A9 译码
Vcc
D0~ D7
EOC
ADDAADDBADDCALE
模拟输入( 0~ 5V)500KHzCLOCK
VREF(+)
+5V
IN0
OE
START
GND VREF(-)
IOR
IOW
主程序; 数据段adtemp db 0 ;给定一个临时变量; 代码段
…… ; 设置中断向量等工作
sti ; 开中断mov dx,220h
out dx,al ; 启动 A/D 转换…… ;其他工作
中断服务程序adint proc
sti ; 开中断push ax ; 保护寄存器push dxpush dsmov ax,@data ;设置数据段 DSmov ds,axmov dx,220hin al,dx ; 读 A/D 转换的数
字量mov adtemp,al ; 送入缓冲区
中断服务程序mov al,20h ; 发送 EOI命令out 20h,al
pop ds ;恢复寄存器pop dx
pop ax
iret ; 中断返回adint endp
查询方式
8 通道模拟输入( 0~ 5V )
Vcc
D7
A3~A9
D0~D7
D0~D7
OE
EOC
A0
A1
A2
ADDAADDBADDC
译码
500KHzCLOCK
START
GND
VREF(+)
VREF(-)
ALE
+5V
IN0IN1IN2IN3IN4IN5IN6IN7
220h~ 227h
238h~ 23fh
IOR
IOW
启动转换; 数据段
counter equ 8
buf db counter dup(0) ; 数据缓冲区; 代码段
mov bx,offset buf
mov cx,counter
mov dx,220h ;从 IN0 开始转换start1: out dx,al ; 启动 A/D 转换
push dx
查询读取mov dx,238h ;查询是否转换结束
start2: in al,dx ;读入状态信息test al,80h ;D7 = 1 ,转换结束
否 ?jz start2 ; 没有结束,继续查
询pop dx ; 转换结束in al,dx ;读取数据mov [bx],al ; 存入缓冲区inc bxinc dxloop start1 ; 转向下一个模拟通
道
进一步应考虑的问题 多个模拟通道时,程序怎样编写? ADC 位数大于 8 位应怎样处理? 用 8255 时程序应怎样编写?
以上三个问题留作思考题
作业
P364 8.4, 8.10, 8.11, 8.14