微机原理与接口技术
课程论文(设计)
学院 电子与信息工程
专业 电子信息工程
班级 07 级 2 班
姓名 王建丽
学号 20071305051
二 00 九 年 十二 月
1
模拟交通灯控制设计
摘要:利用可编程并行接口电路 Intel8255A 来设计下面论题所描述的模拟交通灯。先系统
的介绍 8255A 的基础,主要性能和内部结构,外部性能和控制字,编程等,然后讲述
了 8255A 的三种工作方式,最后是针对被轮提的设计电路和编程。
关键词:并行接口 8255A 程序设计 编程 模拟交通灯
论题:设有东西,南北两条干线,东西干线简称“A”,南北干线简称“B”,十字路口有两
组交通灯,仅对车辆直行进行交通管理,用 8255A 设计电路,按图 1 所示规则编程,
以模拟交通灯控制,遇有紧急情况时两条干线的红灯全亮,紧急情况解除后,恢复正
常控制。
图 1 模拟的交通灯管理规则
可编程并行接口电路 Intel 8255A:
1.8255A 的主要性能和内部结构
8255A 是为 Intel 公司的 80 系列微机配套的通用可编程并行接口芯片,具有三个可编
程的端口(A 端口、B 端口、C 端口),每个端口 8 条线,共有 24 条 I/O 引脚,也可分为
2 组工作,每组 12 条线,并有三种工作方式。
芯片的主要技术性能如下:(1)输入、输出电平与 TTL 电平完全兼容。
(2)时序特性好
(3)部分位可以直接置“1”、置“0”,便于实现控制接口使用。
(4)单一的+5V 电源。
8255A 的内部结构图和外引脚图见图 2。
从图中可以看到,8255A 主要由 4 部分组成。
1),三个独立的数据口:8255A 的三个数据的接口分别是 A 端口、B 端口、C 端口,它
们彼此独立,都是 8 位的数据口,用来完成和外设之间的信息交换。三个口在使用上有所
不同。
2
(a)
图 2
8255A 内部结构和引脚图
(b)
(a)8255A 内部结构 ;(b)8255A 外引脚图
1),A 组控制电路和 B 组控制电路:控制电路分为 A 组和 B 组控制两组,A 组控制电
路控制 A 端口和 C 端口的高 4 位(PC4~PC7)。B 组控制电路控制 B 端口和 C 端口的低 4
(PC0~PC3)。这两组控制电路的作用是:由他们的内部的控制寄存器接收 CPU 输出的方
式控制命令字,还接收来自读/写控制逻辑电路的读/写命令,根据控制命令决定 A 组和 B
组的工作方式和读/写操作。
2),读写控制逻辑电路:这部分电路是用来完成对 8255A 内部三个数据口的译码工作,
由 CPU 的地址总线 A1、A0 和 8255A 的片选信号 和
令,并将产生的控制命令传送给 A 组和 B 组的控制电路,从而完成对数据信息的传输控
制。
、 信号组合后产生控制命
3),数据总线缓冲器:这是一个双向、三态的 8 位数据总线缓冲器,是 8255A 和系统总
线相连接的通道,用来传送输入/ 输出的数据、CPU 发出的控制字以及外设的状态信息。
总之,8255A 与 CPU 之间的所有信息传输都要经过数据总线缓冲器。
2.8255A 的外部性能
8255A 是 40 条引脚的双列直插式芯片,引脚排列如图 2(b)所示。单一的+5V 电源,
使用时要注意它的+5V 电源引脚是第 26 脚,地引线是第 7 脚,它不像大多数 TTL 芯片电
源和地线在右上角和左下角的位置,除了电源和地线之外,其他引脚的信号按连接的功能
可分为两大组。
1),与 CPU 相连的引脚:
RESET(35PIN):芯片的复位信号,高电平时有效。
(6PIN):片选信号,低电平时有效。
(5PIN):读信号,低电平有效。
(36PIN):写信号,低电平有效。
3
A1、A0(8,9PIN):端口译码信号。
D7~D0(27~34PIN):双向三态 8 位数据线,与系统的数据总线相连接。
2),和外设端相连的引脚:
PA7~PA0(37~40PIN,1~4PIN):A 端口的输入/输出引脚
PB7~PB0 (25~18PIN):B 端口的输入/输出引脚
PC7~PC0 (10~13,17~14PIN):C 端口的输入/输出引脚
3.8255A 的控制字和编程
由 CPU 执行输出指令,向 8255A 的端口输出不同的控制字来决定它的工作方式。控制
字分为两种,分别称为方式选择控制字和端口 C 置 1/置 0 控制字。根据控制寄存器的 D7 位
的状态决定是哪一种控制字。
1) D7 位为“1”时,为方式选择控制字的标识位。它的格式如图 3 所示。
2) C 端口的置 1/置 0 控制字见图 4
图 4
8255A 的 C 端口的置 1/置 0 控制字
4.8255A 的工作方式
8255A 芯片有三种工作方式: 方式 0、方式 1、方式 2。 它通过对控制寄存器写入不
图 3 8255A 的方式选择控制字
同的控制字来决定其三种不同的工作方式。
方式 0 : 基本输入/输出
PA 7~0
PC 7~4
PC 3~0
PB 7~0
8
4
4
8
I /O
I /O
I /O
I /O
图 4 方式 0 引脚功能
4
如图 4 所示。该方式下的 A 口 8 位和 B 口 8 位可以由输入的控制字决定为输入或输出,
C 口分成高 4 位(PC7~PC4)和低 4 位(PC3~PC0)两组,也有控制字决定其输入或输出。 需
注意的是:该方式下,只能将 C 口其中一组的四位全部置为输入或输出。
方式 1 : 选通输入/输出
RD
8255
PA7~0
PC4
PC5
PC3
PC7~6
PB7~0
PC2
PC1
PC0
DATA
STBA
IBFA
INTRA
I/O
DATA
STBB
IBFB
WR
8255
PA7~0
PC7
PC6
PC3
PC5~4
PB7~0
PC2
PC1
PC0
DATA
OBFA
ACKA
INTRA
I/O
DATA
OBFB
ACKB
INTRB
图 5 方式 1 输入
INTRB
图 6 方式 1 输出
如图 5、6 所示。该方式又叫单向输入输出方式,它分为 A、B 两组,A 组由数据口 A
和控制口 C 的高 4 位组成,B 组由数据口 B 和控制口 C 的低 4 位组成。数据口的输入/输出
都是锁存的,与方式 0 不同,由控制字来决定它作输入还是输出。C 口的相应位用于寄存数
据传送中所需的状态信号和控制信息。
方式 2 : 双向输入输出
WR
RD
8255
PA7~0
PC7
PC6
PC5
PC4
PC3
PC2~0
DATA
OBF
ACK
IBF
STB
INTR
I/O
如图 7 所示。 本方式只有 A 组可以使用,此时 A 口为输入输出双向口,C 口中的 5 位
图 7 方式 2 双向输入输出
(PC3~PC7)作为 A 口的控制位。
5.论题设计
1)实验电路图如图 8 所示
2)设计思路:
(1)利用实验箱上的 8255A 电路、LED 显示电路和单脉冲发生器电路,按图 6 所示
构成实验电路,选择 8255A 的接口地址为 220H~227H。
(2)令 8255A 的 A 口工作在方式 0 输出,按图 5 的要求编写顺序控制程序,若 PAi
输出低电平,则相应的 LED 灯亮。例如,向 A 端口输出 35H,即可使 A 干线绿灯亮,B 干
线红灯亮,随后调用延时子程序使这一状态保持 5s,然后再变换成下一个状态,以此类推。
(3)遇到紧急情况时,按下单脉冲发生器的自复按钮,产生一个中断请求中止顺序控
制程序,使之转入 0AH 型中断服务程序,服务程序向 8255A 的 A 端口输出 2DH,使 A 干线,
B 干线的红灯全亮停止通行。紧急状况解除后,再次按下自复按钮,再次发出中断请求信号
使交通灯控制恢复正常。
(4)为了快捷地编写顺序控制程序,将图 5 所示的规则细分为 17 种状态,每一种状
5
态的延时时间以及需要向 A 端口写入的数据列入表 1 之中。编程时,在数据段设置两张表,
一张数据表,依次存入 16 种状态下需向 A 端口发送的数据;另一张是时间表,依次存放每
一种状态的延时时间。程序依次取出一个数据送 8255A 的 A 口,点亮相应的 LED,然后再
依次取出一个延时时间,调用延时子程序以保证这一状态下 LED 的点亮时间。
图 8 模拟交通灯管理实验电路
这种设计思路的优点:编程比较容易,而且,一旦修改交通规则,或者添加左拐弯、右
拐弯信号灯的时候,不需要改变控制程序,只要修改表的内容,修改数据段即可。
6.编程:
35H,3DH,35H,3DH,35H,3DH,35H,1DH
2EH,2FH,2EH,2FH,2EH,2FH,2EH,2BH,-1
5000,100,100, 100, 100, 100, 100,1000
5000, 100, 100, 100, 100, 100, 100,,1000
0
220H
223H
;8255 A 端口地址
;8255 控制端口地址
;用户堆栈区
DATA
MESG
TM
FLAG
A_8255
CON_8255
DATA
STACK
STACK
CODE
;FILENME:L433.ASM
SEGMENT
DB
DB
DW
DW
DB
EQU
EOU
ENDS
SENMENT
DB
ENDS
SEGMENT
ASSUME
STACK
100 DUP(?)
CS;CODM,DS;DATA
6
A 黄
PA5
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
状态 延时(s)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
5
0.1
0.1
0.1
0.1
0.1
0.1
1
5
0.1
0.1
0.1
0.1
0.1
0.1
5
紧急状态
BEG
XYZ:
LAST1:
LAST2:
MOV
MOV
CLI
CALL
CALL
CALL
STI
MOV
CMP
JE
MOV
MOV
CMP
JE
MOV
MOV
OUT
MOV
MOV
MUL
MOV
MOV
MOV
A 红
PA4
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
A 绿
PA3
0
1
0
1
0
1
0
1
1
1
1
1
1
1
1
1
B 黄
PA2
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
0
表 1 交通灯控制时序表
1
AX,DATA
DS,AX
I8255
I8259
WROA
SP,100
FLAG,-1
XYZ
SI,OFFSET MESG
DI,OFFSET TIME
BYTE PTR[SI],-1
LAST1
AL,[SI]
DX,A_8255
DX,AL
AX,[DI]
CX,1000
CX
CX,DX
DX,AX
AH,86H
7
B 红
PA1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
B 绿
PA0
1
1
1
1
1
1
1
1
0
1
0
1
0
1
0
1
1
十六进制数
35H
3DH
35H
3DH
35H
3DH
35H
1DH
2EH
2FH
2EH
2FH
2EH
2FH
2EH
2BH
2DH
;8255 初始化
;8259 允许用户中断
;改写 OAH 型中断向量
;开中断
;设置堆栈指针
;FLAG=-1 转
;数据
8255A 端口
;DX、AX=延时时间(us)
INT
INC
ADD
MOV
INT
JZ
CALL
MOV
INT
PROC
MOV
MOV
NOT
MOV
MOV
OUT
MOV
MOV
MOV
MOV
MOV
OUT
IRET
ENDP
PROC
MOV
MOV
OUT
RET
ENDO
PROC
IN
AND
OUT
IN
AND
OUT
RET
ENDP
PROC
RETURN:
;
SERVICE
EXIT:
SERVICE
;
I8255
I8255
;
I8259
18259
;
WROA
15H
SI
DI,2
AH,1
16H
LAST2
RESET
AH,4CH
21H
AX,DATA
DS,AX
FLAG
DX,A_8255
AL,2DH
DX,AL
BP,SP
AX,OFFSET XYZ
[BP],AX
[BP+2],CS
AL,20H
20H,AL
DX,CON_8255
AL,10000000B
DX,AL
AL,21H
AL,11111011B
21H,AL
AL,0A1H
AL,11111101B
0A1H,AL
8
;延时
;有键入?
;否;转
;屏蔽用户中断
;FLAG 单元取反
8255A 端口
;2DH
;两个红灯都亮
;令 BP=堆栈指针
;断点 XYZ 的偏移地址
;送栈顶单元
;段基址
;中断结束命令
;送主 8259
;返回断点 XYZ
栈顶+2 单元
;预置 A 端口方式 0 输出
;开放从 8259 中断
;开放用户中断
;改写 OAH 型中断向量