http://qsyang.yeah.net
现代微机原理与接口技术
1
综 合 练 习
http://qsyang.yeah.net
现代微机原理与接口技术
2
例 1 假设有一个 4× 4的矩阵键盘通过并行接口芯片 8255与微机相连。 8255的 A口作为输出口,与键盘的行线相连; B口为输入口,与键盘列线相连。
设 8255A口地址为 60H,B口地址为 61H,控制寄存器地址为 63H,请编写键盘扫描程序。
http://qsyang.yeah.net
现代微机原理与接口技术
3
http://qsyang.yeah.net
现代微机原理与接口技术
4
程序如下:
mov al,82h
out 63h,al
begin,mov al,0 ;检查是否有键按下
out 60h,al
wait,in al,61h
and al,0fh
cmp al,0fh
jz wait ;无键按下,继续等待
http://qsyang.yeah.net
现代微机原理与接口技术
5
sm,mov dl,4; 行数送 dl
mov al,0feh;扫描码,0行为 0
mov ch,0 ;键号初值为 0
srow,out 60h,al ;扫描一行
rcl al,1 ;修改扫描行
mov ah,al ; 保存下次要扫描的扫描码
in al,61h ;读列线状态
and al,0fh
cmp al,0fh ;是否有列线为 0
jnz scol ;有列线为 0转到 scol
http://qsyang.yeah.net
现代微机原理与接口技术
6
add ch,4 ;否则键号+ 4
mov al,ah ;取回行扫描码
dec dl ;行数减 1
jnz srow ;继续扫描行
jmp begin
scol,rcr al,1
jnc proce ;该列为 0,转处理程序
inc ch ;否则键号+ 1,
jmp scol ;继续查找
proce,……
http://qsyang.yeah.net
现代微机原理与接口技术
7
思考题如何将上题改成中断方式?假设任意键按下后,
会通过 8259的 IR5向 CPU发中断请求,另外,
8255的端口地址是 60H~ 63H,8259的端口地址是 20H~ 21H,使用 74LS138译码器,请修改原图
,使其满足题目要求,并要给出译码电路。然后写出相应的键盘扫描程序。
http://qsyang.yeah.net
现代微机原理与接口技术
8
&
&
PC7
IR5
CS去 138 PPICS
A0
A1
A0
A1
8259
INT INTR
CS INTRCS
A0 A0
http://qsyang.yeah.net
现代微机原理与接口技术
9
Y0
Y7
A
B
C
G2B
G2A
G1
15
14
13
12
11
10
9
7
1
2
3
4
5
6
74LS138
A5
A6
A7
A8
A9
AEN’
INTRCS
PPICS 去 8255
去 8259
138译码电路部分
http://qsyang.yeah.net
现代微机原理与接口技术
10
例 2.频率计数器设计用 8254计数外来信号频率 fIN(fCLK=1MHz)。
用 T/C1产生基准时钟间隔,采用方式 1; T/C0采用方式 0对外来信号计数; OUT1控制 GATE0来停止计数。
CLK0
GATE0
OUT0
CLK1
GATE1
OUT1
CLK2
GATE2
OUT2
D0~D7
A1
A0
RD
WR
CS
信号
fCLK
TRG
EOC
返回下页 返回下二页
http://qsyang.yeah.net
现代微机原理与接口技术
11
思路:
T/C1产生 10ms的基准时间间隔,然后通过 OUT1控制 T/C0计数,用 fIN=(N-M+1)/10ms*1000Hz 公式来计算。其中 N是 T/C0的初始值,M是计数基准时间到时的 T/C0当前计数值。
为了辅助控制,我们用 8255A口初始化为输出,其中位 0为 TRG,用来控制计数器 1的 GATE。 8255B口初始化为输入,其中位 0接到 OUT1脚,通过对该位的不断查询,来确定 10ms是否结束,结束后,根据 T/C0
的计数数值进行计算。
http://qsyang.yeah.net
现代微机原理与接口技术
12
OUT PIO0,0 ; TRG=0
MOV AL,01110010B ; T/C1
OUT 43H,AL
MOV AH,2710H ; 间隔为 10ms( 2710H= 10000)
OUT 41H,AL
MOV AL,AH
OUT 41H,AL
MOV AL,00110000B ; T/C0
OUT 43H,AL
MOV AL,00H ; 初值为 65536
OUT 40H,AL
OUT 40H,AL; STC产生一个脉冲
OUT PIO0,2 ; TRG=1,开始计数返回下页转上页
http://qsyang.yeah.net
现代微机原理与接口技术
13
S1,IN AL,PIO1 ; 循环读 EOC
JZ S1 ; 等到 EOC=1才退出循环
IN AL,40H
MOV AH,AL
IN AL,40H
XCHG AH,AL ; AX为当前计数值
http://qsyang.yeah.net
现代微机原理与接口技术
14
fIN=(N-M+1)/t=((65536-AX+1 )/10)*1000Hz
注意,10ms时 M应大于 0。
T/C在 0方式时经过一个 CLK后才将初值写到 CE中。
所以实际计数值应该在 T/C0的当前值基础上加 1。
思考 1,采用简化电路,用读回命令实现的方法能否很精确?(同时锁存两个计数器的值)。
思考 2,为得到精确的 fIN,需增大时间间隔,在时间间隔内 M=0怎么办?
转上二页 转上页思考 3,如何利用 8255来设计一个电路,时 T/C0最后的计数值就是实际计数值而不需要加 1?
思考 4,可否采用中断方式,硬件怎么改,软件如何写?
http://qsyang.yeah.net
现代微机原理与接口技术
15
例 3 请设法利用一个 8255和若干基本门电路,将 8254方式 0的计数外部脉冲 fclk的个数从 n+ 1转变成 n。
http://qsyang.yeah.net
现代微机原理与接口技术
16
步骤 1:初始化 T/C0,写计数初值步骤 2:令 PC0=1,利用 PC1发一个脉冲 (0→1,1→0)
步骤 3:令 PC0=0,PC1=1.
& ≥1
GATE0
PC0
PC1
fclk
CLK0
PC2
PC3WR#
PC5CS#
A0 PC6
PC7A1
OUT0
PA0~PA7D0~D7
http://qsyang.yeah.net
现代微机原理与接口技术
17
&≥1
GATE0
PC0
PC1
fclk
CLK0
PC2
PC3WR#
PC5CS#
A0 PC6
PC7A1
OUT0
PA0~PA7D0~D7
步骤 1:初始化 T/C0,写计数初值步骤 2:令 PC0=0,利用 PC1发一个脉冲 (0→1,1→0)
步骤 3:令 PC0=1,PC1=0.
http://qsyang.yeah.net
现代微机原理与接口技术
18
信号
TRG
≥1 &
STC
GATE1
CLK0;应在 T/C0初值写完后,送其到 CE
OUT PIO0,1 ; STC 0→1
OUT PIO0,0 ; STC 1→0
例 2中思考 3的解决办法:
http://qsyang.yeah.net
现代微机原理与接口技术
19
例 4 某串行输入输出外设引线如图所示,其引线功能说明如下:
DI为串行输入,DO是串行输出; CLK为串行输入输出时钟,每一个时钟周期可输入或输出一位数据。 CS#为片选信号,低电平有效。
DI
DO
CLK
CS#
假设外设接口地址为 PC机接口地址 03FCH~03FFH,请用 8255
芯片完成该芯片到系统总线的连接,并按照你的连接,编写将 BL中的数据按先低后高的顺序输出到外设中。
http://qsyang.yeah.net
现代微机原理与接口技术
20
http://qsyang.yeah.net
现代微机原理与接口技术
21
03FCH
http://qsyang.yeah.net
现代微机原理与接口技术
22
http://qsyang.yeah.net
现代微机原理与接口技术
23
例 5 两台 PC机采用异步串行方式传送数据。字符数据位 7位,停止位 1位,偶校验,波特率为 2400bps,要求:
1.按照 RS- 232C电平标准 给出传送字符 A
( ASCII码为 41H)时的波形图(完整一帧数据),并标明 MARK和 SPACE电平。
2.如果不间断地连续传送字符串
,HELLO_WORLD”,请计算所给波特率下传送该字符串需要的时间。
http://qsyang.yeah.net
现代微机原理与接口技术
24
注意题目要求的是符合 RS-232电平标准,RS232
是负逻辑,该题的关键是要将异步通信协议和
RS232的负逻辑结合起来注意字符串最后还有一个结束字符‘ \0’
http://qsyang.yeah.net
现代微机原理与接口技术
25
例 5 两个机器希望通过 8255的方式 1进行通信,
请设计其电路。根据你的电路编写读写程序。
PA0~PA7
PA0~PA7
PB0~PB7
PB0~PB7
PC4
PC5
PC1
PC2
PC3
PC0
PC2
PC1
PC5
PC4
OBF#
OBF#
ACK#
ACK#
STB#
STB#
IBF
IBF
PC3
PC0
8255 8255
http://qsyang.yeah.net
现代微机原理与接口技术
26
编程思路:
首先应该将 8255的 A口和 B口初始化成方式 1的输入和输出,并允许两种中断(输入中断和输出中断)。
数据的读写都是在中断处理中去完成。
http://qsyang.yeah.net
现代微机原理与接口技术
27
例 7已知 8253端口地址为 80~83H,CLK2频率为 5MHz,执行如下程序后,完成如下要求:
MOV AL,0B7H ; 10110111B
OUT 83H,AL
LOOP,MOV AL,00H
OUT 82H,AL
MOV AL,50H
OUT 82H,AL
CALL DM5 ; 调用延时 5ms延时子程序
MOV AL,00H
OUT 82H,AL
MOV AL,25H
OUT 82H,AL
CALL DM5
JMP LOOP
http://qsyang.yeah.net
现代微机原理与接口技术
28
1.写出该通道的工作方式,说明输出的波形特征、频率及持续时间。
2.画出输出波形示意图。
答:通道 2工作在方式 3下输出方波,先输出
1KHz的方波 5毫秒,然后是 2KHz的方波 5毫秒,
然后又是 1KHz的方波 5毫秒,…… 如此反复。
http://qsyang.yeah.net
现代微机原理与接口技术
29
例 8使用 8255A(端口地址 60H~63H)实现对
74LS138的检测功能。要求如下:
1.画出检测电路图( 8255A的译码电路省略),
并说明设计思路。
2.编写检测功能的完整程序。
http://qsyang.yeah.net
现代微机原理与接口技术
30
15Y0
Y7
A
B
C
G2B
G2A
G1
14
13
12
11
10
9
7
1
2
3
4
5
6
74LS138
PA0
PB7
………… PA1PA2
PB0
PC2
PC1
PC0
编程提示,用 8255的 PC口和 PA口做 138的控制信号和输入信号,然后读 8255的 PB口(也就是 138的 Y0~Y7的输出),看该 138的输出与输入以及控制信号之间的关系是否符合 138的真值表。
http://qsyang.yeah.net
现代微机原理与接口技术
31
例 9 为测试某飞行体的速度,在一定距离上放置两个传感器,当飞行体穿过传感器的时候,传感器会输出一脉冲,
希望有一种办法比较精确地测出两个脉冲之间的时间,
从而得知飞行速度。 请给出思路。
思路:用双稳态触发器将以上波形改成如下的正脉冲,
用这个正脉冲作为 8253计数器的 GATE控制信号。即
GATE高电平的时候开始计数,GATE低电平的时候结束计数,只要得到正脉冲之间计数的次数,再根据 CLK中来的脉冲频率,就可以计算这段时间的事件间隔。然后用两个传感器之间的距离除以这个时间就得到了速度值。
http://qsyang.yeah.net
现代微机原理与接口技术
32
例 10请设计一个 8088的最小模式下的系统,系统中包括 8088CPU和
8255,8259,8253几个接口芯片和适当的译码电路。其中 1)
8254的计数器 1工作在方式 3,其输出接到 8259的 IR0,产生每秒
20次的中断( 8253的 CLK0接 1.19MHz信号); 2)利用 8255设计一个 4× 4的无编码键盘,该键盘任一个键按下后,均能向 8259
的 IR2提出中断请求。要求:
( 1) 绘制电路设计简图,要求必要的信号线要连接正确 。
( 2) 按你的电路图,说明 3个接口芯片中各个端口的地址 。
( 3) 编写 8253和 8255的初始化程序 。
( 4) 编写键盘中断处理程序中的扫描键盘片段 。
http://qsyang.yeah.net
现代微机原理与接口技术
33
进行接口电路设计的时候要注意:
首先 要弄清楚接口芯片各个引脚的输入输出特性和他们的有效电平定义,分清哪些引脚是对 CPU一侧的,哪些是对外设一侧的。
其次 要正确连接各引脚,
对于 CPU一侧,通常接口芯片的数据线 D7~D0要和系统的数据总线相连,从而和 CPU的数据总线相连,控制总线中大部分要考虑和 CPU或 8288中发出的控制信号相连,主要是 IOW#,IOR#等,
片选线 CS#一般和译码电路有关,使用地址线的高位利用相关译码电路(如 2- 4译码器,3- 8译码器等)得到相应地址范围的片选信号。地址低位根据题目要求正确的和接口新片的地址引脚相连。
对于外设一侧,注意输出信号的特点,将该侧的控制信号正确的和外设相连,同时还要注意将正确的数据线 (如果有)连好。这里我们要正确的理解外设的 含义,外设一侧的外设可以是外部设备,同时也可以是另一个接口芯片,比如 8259的外设中断请求线就由可能是和 8254,8255或 8250的某个输出线连接。
再次 要特别注意不同引脚线相连时候电平定义是否匹配,是否要加反相器或其他中间过渡电路。
http://qsyang.yeah.net
现代微机原理与接口技术
34
对于此类大综合的题目,拿到题后大家不要紧张,首先要弄清楚一共有几个部分,然后再一个部分一个部分的设计。比如本题,首先 要将 8088的有关连线连接起来,
其中,AD0~AD7由于是地址数据复用线,所以,需要再其上连上 373锁存器,该锁存器在地址期将地址锁存,从而得到地址信号中的 A0~A7,AD0~AD7同时也作为 8位数据线接到其他几个接口芯片上。需要使用的控制线主要是读写线,中断请求和应答线等。 其次 要设计好地址译码电路,以便在不同的地址段使能不同的接口芯片。
本题可以使用一个 2- 4译码器,我们这里使用的还是 138
译码器,注意留下足够的地址线低端,供接口芯片直接连接来访问片内端口。最后,按照题目要求,来连接好其他的接口芯片,主要是接好数据线,片选线,读写控制线,和各种用到的输出线和其他控制线。
http://qsyang.yeah.net
现代微机原理与接口技术
35
答,1) 电路图如图 。
2)按照电路图 8253的地址范围为,000~ 00FH
8259的地址范围是 010H~ 01FH,8255的地址范围是 020
~ 02FH。
3) 8253初始化程序
MOV AL,01110110B ;计数器 1,方式 3
OUT 03H,AL
MOV AX,59500 ;产生 20Hz方波
OUT 01H,AL
MOV AH,AL
OUT 01H,AL
8255的初始化:
MOV AL,10000011B; A口方式 0输出,B口方式 0输入,C口上半输出下半输入。
OUT 023H,AL
http://qsyang.yeah.net
现代微机原理与接口技术
36
4)键盘扫描程序参见课本 P222页的有关部分,不过要注意:
扫描前要先执行
MOV AL,00001110B; PC7为 0,屏蔽中断
OUT 023H,AL
扫描完后要执行
MOV AL,00001111B; PC7为 1,允许中断
OUT 023H,AL
现代微机原理与接口技术
1
综 合 练 习
http://qsyang.yeah.net
现代微机原理与接口技术
2
例 1 假设有一个 4× 4的矩阵键盘通过并行接口芯片 8255与微机相连。 8255的 A口作为输出口,与键盘的行线相连; B口为输入口,与键盘列线相连。
设 8255A口地址为 60H,B口地址为 61H,控制寄存器地址为 63H,请编写键盘扫描程序。
http://qsyang.yeah.net
现代微机原理与接口技术
3
http://qsyang.yeah.net
现代微机原理与接口技术
4
程序如下:
mov al,82h
out 63h,al
begin,mov al,0 ;检查是否有键按下
out 60h,al
wait,in al,61h
and al,0fh
cmp al,0fh
jz wait ;无键按下,继续等待
http://qsyang.yeah.net
现代微机原理与接口技术
5
sm,mov dl,4; 行数送 dl
mov al,0feh;扫描码,0行为 0
mov ch,0 ;键号初值为 0
srow,out 60h,al ;扫描一行
rcl al,1 ;修改扫描行
mov ah,al ; 保存下次要扫描的扫描码
in al,61h ;读列线状态
and al,0fh
cmp al,0fh ;是否有列线为 0
jnz scol ;有列线为 0转到 scol
http://qsyang.yeah.net
现代微机原理与接口技术
6
add ch,4 ;否则键号+ 4
mov al,ah ;取回行扫描码
dec dl ;行数减 1
jnz srow ;继续扫描行
jmp begin
scol,rcr al,1
jnc proce ;该列为 0,转处理程序
inc ch ;否则键号+ 1,
jmp scol ;继续查找
proce,……
http://qsyang.yeah.net
现代微机原理与接口技术
7
思考题如何将上题改成中断方式?假设任意键按下后,
会通过 8259的 IR5向 CPU发中断请求,另外,
8255的端口地址是 60H~ 63H,8259的端口地址是 20H~ 21H,使用 74LS138译码器,请修改原图
,使其满足题目要求,并要给出译码电路。然后写出相应的键盘扫描程序。
http://qsyang.yeah.net
现代微机原理与接口技术
8
&
&
PC7
IR5
CS去 138 PPICS
A0
A1
A0
A1
8259
INT INTR
CS INTRCS
A0 A0
http://qsyang.yeah.net
现代微机原理与接口技术
9
Y0
Y7
A
B
C
G2B
G2A
G1
15
14
13
12
11
10
9
7
1
2
3
4
5
6
74LS138
A5
A6
A7
A8
A9
AEN’
INTRCS
PPICS 去 8255
去 8259
138译码电路部分
http://qsyang.yeah.net
现代微机原理与接口技术
10
例 2.频率计数器设计用 8254计数外来信号频率 fIN(fCLK=1MHz)。
用 T/C1产生基准时钟间隔,采用方式 1; T/C0采用方式 0对外来信号计数; OUT1控制 GATE0来停止计数。
CLK0
GATE0
OUT0
CLK1
GATE1
OUT1
CLK2
GATE2
OUT2
D0~D7
A1
A0
RD
WR
CS
信号
fCLK
TRG
EOC
返回下页 返回下二页
http://qsyang.yeah.net
现代微机原理与接口技术
11
思路:
T/C1产生 10ms的基准时间间隔,然后通过 OUT1控制 T/C0计数,用 fIN=(N-M+1)/10ms*1000Hz 公式来计算。其中 N是 T/C0的初始值,M是计数基准时间到时的 T/C0当前计数值。
为了辅助控制,我们用 8255A口初始化为输出,其中位 0为 TRG,用来控制计数器 1的 GATE。 8255B口初始化为输入,其中位 0接到 OUT1脚,通过对该位的不断查询,来确定 10ms是否结束,结束后,根据 T/C0
的计数数值进行计算。
http://qsyang.yeah.net
现代微机原理与接口技术
12
OUT PIO0,0 ; TRG=0
MOV AL,01110010B ; T/C1
OUT 43H,AL
MOV AH,2710H ; 间隔为 10ms( 2710H= 10000)
OUT 41H,AL
MOV AL,AH
OUT 41H,AL
MOV AL,00110000B ; T/C0
OUT 43H,AL
MOV AL,00H ; 初值为 65536
OUT 40H,AL
OUT 40H,AL; STC产生一个脉冲
OUT PIO0,2 ; TRG=1,开始计数返回下页转上页
http://qsyang.yeah.net
现代微机原理与接口技术
13
S1,IN AL,PIO1 ; 循环读 EOC
JZ S1 ; 等到 EOC=1才退出循环
IN AL,40H
MOV AH,AL
IN AL,40H
XCHG AH,AL ; AX为当前计数值
http://qsyang.yeah.net
现代微机原理与接口技术
14
fIN=(N-M+1)/t=((65536-AX+1 )/10)*1000Hz
注意,10ms时 M应大于 0。
T/C在 0方式时经过一个 CLK后才将初值写到 CE中。
所以实际计数值应该在 T/C0的当前值基础上加 1。
思考 1,采用简化电路,用读回命令实现的方法能否很精确?(同时锁存两个计数器的值)。
思考 2,为得到精确的 fIN,需增大时间间隔,在时间间隔内 M=0怎么办?
转上二页 转上页思考 3,如何利用 8255来设计一个电路,时 T/C0最后的计数值就是实际计数值而不需要加 1?
思考 4,可否采用中断方式,硬件怎么改,软件如何写?
http://qsyang.yeah.net
现代微机原理与接口技术
15
例 3 请设法利用一个 8255和若干基本门电路,将 8254方式 0的计数外部脉冲 fclk的个数从 n+ 1转变成 n。
http://qsyang.yeah.net
现代微机原理与接口技术
16
步骤 1:初始化 T/C0,写计数初值步骤 2:令 PC0=1,利用 PC1发一个脉冲 (0→1,1→0)
步骤 3:令 PC0=0,PC1=1.
& ≥1
GATE0
PC0
PC1
fclk
CLK0
PC2
PC3WR#
PC5CS#
A0 PC6
PC7A1
OUT0
PA0~PA7D0~D7
http://qsyang.yeah.net
现代微机原理与接口技术
17
&≥1
GATE0
PC0
PC1
fclk
CLK0
PC2
PC3WR#
PC5CS#
A0 PC6
PC7A1
OUT0
PA0~PA7D0~D7
步骤 1:初始化 T/C0,写计数初值步骤 2:令 PC0=0,利用 PC1发一个脉冲 (0→1,1→0)
步骤 3:令 PC0=1,PC1=0.
http://qsyang.yeah.net
现代微机原理与接口技术
18
信号
TRG
≥1 &
STC
GATE1
CLK0;应在 T/C0初值写完后,送其到 CE
OUT PIO0,1 ; STC 0→1
OUT PIO0,0 ; STC 1→0
例 2中思考 3的解决办法:
http://qsyang.yeah.net
现代微机原理与接口技术
19
例 4 某串行输入输出外设引线如图所示,其引线功能说明如下:
DI为串行输入,DO是串行输出; CLK为串行输入输出时钟,每一个时钟周期可输入或输出一位数据。 CS#为片选信号,低电平有效。
DI
DO
CLK
CS#
假设外设接口地址为 PC机接口地址 03FCH~03FFH,请用 8255
芯片完成该芯片到系统总线的连接,并按照你的连接,编写将 BL中的数据按先低后高的顺序输出到外设中。
http://qsyang.yeah.net
现代微机原理与接口技术
20
http://qsyang.yeah.net
现代微机原理与接口技术
21
03FCH
http://qsyang.yeah.net
现代微机原理与接口技术
22
http://qsyang.yeah.net
现代微机原理与接口技术
23
例 5 两台 PC机采用异步串行方式传送数据。字符数据位 7位,停止位 1位,偶校验,波特率为 2400bps,要求:
1.按照 RS- 232C电平标准 给出传送字符 A
( ASCII码为 41H)时的波形图(完整一帧数据),并标明 MARK和 SPACE电平。
2.如果不间断地连续传送字符串
,HELLO_WORLD”,请计算所给波特率下传送该字符串需要的时间。
http://qsyang.yeah.net
现代微机原理与接口技术
24
注意题目要求的是符合 RS-232电平标准,RS232
是负逻辑,该题的关键是要将异步通信协议和
RS232的负逻辑结合起来注意字符串最后还有一个结束字符‘ \0’
http://qsyang.yeah.net
现代微机原理与接口技术
25
例 5 两个机器希望通过 8255的方式 1进行通信,
请设计其电路。根据你的电路编写读写程序。
PA0~PA7
PA0~PA7
PB0~PB7
PB0~PB7
PC4
PC5
PC1
PC2
PC3
PC0
PC2
PC1
PC5
PC4
OBF#
OBF#
ACK#
ACK#
STB#
STB#
IBF
IBF
PC3
PC0
8255 8255
http://qsyang.yeah.net
现代微机原理与接口技术
26
编程思路:
首先应该将 8255的 A口和 B口初始化成方式 1的输入和输出,并允许两种中断(输入中断和输出中断)。
数据的读写都是在中断处理中去完成。
http://qsyang.yeah.net
现代微机原理与接口技术
27
例 7已知 8253端口地址为 80~83H,CLK2频率为 5MHz,执行如下程序后,完成如下要求:
MOV AL,0B7H ; 10110111B
OUT 83H,AL
LOOP,MOV AL,00H
OUT 82H,AL
MOV AL,50H
OUT 82H,AL
CALL DM5 ; 调用延时 5ms延时子程序
MOV AL,00H
OUT 82H,AL
MOV AL,25H
OUT 82H,AL
CALL DM5
JMP LOOP
http://qsyang.yeah.net
现代微机原理与接口技术
28
1.写出该通道的工作方式,说明输出的波形特征、频率及持续时间。
2.画出输出波形示意图。
答:通道 2工作在方式 3下输出方波,先输出
1KHz的方波 5毫秒,然后是 2KHz的方波 5毫秒,
然后又是 1KHz的方波 5毫秒,…… 如此反复。
http://qsyang.yeah.net
现代微机原理与接口技术
29
例 8使用 8255A(端口地址 60H~63H)实现对
74LS138的检测功能。要求如下:
1.画出检测电路图( 8255A的译码电路省略),
并说明设计思路。
2.编写检测功能的完整程序。
http://qsyang.yeah.net
现代微机原理与接口技术
30
15Y0
Y7
A
B
C
G2B
G2A
G1
14
13
12
11
10
9
7
1
2
3
4
5
6
74LS138
PA0
PB7
………… PA1PA2
PB0
PC2
PC1
PC0
编程提示,用 8255的 PC口和 PA口做 138的控制信号和输入信号,然后读 8255的 PB口(也就是 138的 Y0~Y7的输出),看该 138的输出与输入以及控制信号之间的关系是否符合 138的真值表。
http://qsyang.yeah.net
现代微机原理与接口技术
31
例 9 为测试某飞行体的速度,在一定距离上放置两个传感器,当飞行体穿过传感器的时候,传感器会输出一脉冲,
希望有一种办法比较精确地测出两个脉冲之间的时间,
从而得知飞行速度。 请给出思路。
思路:用双稳态触发器将以上波形改成如下的正脉冲,
用这个正脉冲作为 8253计数器的 GATE控制信号。即
GATE高电平的时候开始计数,GATE低电平的时候结束计数,只要得到正脉冲之间计数的次数,再根据 CLK中来的脉冲频率,就可以计算这段时间的事件间隔。然后用两个传感器之间的距离除以这个时间就得到了速度值。
http://qsyang.yeah.net
现代微机原理与接口技术
32
例 10请设计一个 8088的最小模式下的系统,系统中包括 8088CPU和
8255,8259,8253几个接口芯片和适当的译码电路。其中 1)
8254的计数器 1工作在方式 3,其输出接到 8259的 IR0,产生每秒
20次的中断( 8253的 CLK0接 1.19MHz信号); 2)利用 8255设计一个 4× 4的无编码键盘,该键盘任一个键按下后,均能向 8259
的 IR2提出中断请求。要求:
( 1) 绘制电路设计简图,要求必要的信号线要连接正确 。
( 2) 按你的电路图,说明 3个接口芯片中各个端口的地址 。
( 3) 编写 8253和 8255的初始化程序 。
( 4) 编写键盘中断处理程序中的扫描键盘片段 。
http://qsyang.yeah.net
现代微机原理与接口技术
33
进行接口电路设计的时候要注意:
首先 要弄清楚接口芯片各个引脚的输入输出特性和他们的有效电平定义,分清哪些引脚是对 CPU一侧的,哪些是对外设一侧的。
其次 要正确连接各引脚,
对于 CPU一侧,通常接口芯片的数据线 D7~D0要和系统的数据总线相连,从而和 CPU的数据总线相连,控制总线中大部分要考虑和 CPU或 8288中发出的控制信号相连,主要是 IOW#,IOR#等,
片选线 CS#一般和译码电路有关,使用地址线的高位利用相关译码电路(如 2- 4译码器,3- 8译码器等)得到相应地址范围的片选信号。地址低位根据题目要求正确的和接口新片的地址引脚相连。
对于外设一侧,注意输出信号的特点,将该侧的控制信号正确的和外设相连,同时还要注意将正确的数据线 (如果有)连好。这里我们要正确的理解外设的 含义,外设一侧的外设可以是外部设备,同时也可以是另一个接口芯片,比如 8259的外设中断请求线就由可能是和 8254,8255或 8250的某个输出线连接。
再次 要特别注意不同引脚线相连时候电平定义是否匹配,是否要加反相器或其他中间过渡电路。
http://qsyang.yeah.net
现代微机原理与接口技术
34
对于此类大综合的题目,拿到题后大家不要紧张,首先要弄清楚一共有几个部分,然后再一个部分一个部分的设计。比如本题,首先 要将 8088的有关连线连接起来,
其中,AD0~AD7由于是地址数据复用线,所以,需要再其上连上 373锁存器,该锁存器在地址期将地址锁存,从而得到地址信号中的 A0~A7,AD0~AD7同时也作为 8位数据线接到其他几个接口芯片上。需要使用的控制线主要是读写线,中断请求和应答线等。 其次 要设计好地址译码电路,以便在不同的地址段使能不同的接口芯片。
本题可以使用一个 2- 4译码器,我们这里使用的还是 138
译码器,注意留下足够的地址线低端,供接口芯片直接连接来访问片内端口。最后,按照题目要求,来连接好其他的接口芯片,主要是接好数据线,片选线,读写控制线,和各种用到的输出线和其他控制线。
http://qsyang.yeah.net
现代微机原理与接口技术
35
答,1) 电路图如图 。
2)按照电路图 8253的地址范围为,000~ 00FH
8259的地址范围是 010H~ 01FH,8255的地址范围是 020
~ 02FH。
3) 8253初始化程序
MOV AL,01110110B ;计数器 1,方式 3
OUT 03H,AL
MOV AX,59500 ;产生 20Hz方波
OUT 01H,AL
MOV AH,AL
OUT 01H,AL
8255的初始化:
MOV AL,10000011B; A口方式 0输出,B口方式 0输入,C口上半输出下半输入。
OUT 023H,AL
http://qsyang.yeah.net
现代微机原理与接口技术
36
4)键盘扫描程序参见课本 P222页的有关部分,不过要注意:
扫描前要先执行
MOV AL,00001110B; PC7为 0,屏蔽中断
OUT 023H,AL
扫描完后要执行
MOV AL,00001111B; PC7为 1,允许中断
OUT 023H,AL