8255A应用举例
8255应用

(1) 硬件设计
8259A INTA INTR IR 0 INTA INT IR 2 IR 7 . .. . .. PC 3 PB 0~7 PC 7 主 PC 4 PC 6 机 系统总线 PC 5 PB 0~7 PC 2~5 PC 0~2 8255A PA 0~7 8255A PA 0~7
OBF STB ACK
LOOP RLOOP HLT;
DL50MS PROC PUSH CX MOV CX,0009H CCT: BBT: MOV AX,056CH DEC AX JNZ BBT
;延时子程序 ; ; ; ; ; ; ; ;
LOOP CCT POP RET CX
2. 查询方式的双机并行通信 甲乙两台微机之间并行传送1K字节数据。 甲机发送,乙机接收。甲机一侧的8255A采用 方式1工作,乙机一侧的8255A采用方式0工作。 两机的CPU与接口之间都采用查询方式交换 数据。
OUT DX,AL CALL DL50MS MOV AL, 0FH
;C口输出高5位编程地址和 编程控制信号 ;调50ms延时子程序 ;PC7置1控制字
MOV DL,0FEH OUT DX,AL INC INC BX DI ;PC7置1撤消编程电压 ;2764编程地址加1 ;编程数据源地址加1 ;8K字节是否写完
L: MOV IN AND JZ MOV MOV OUT INC DEC JNZ MOV INT BUFS
DX, 302H AL, DX AL, 08H L DX, 300H AL, [SI] DX, AL SI CX L AH, 4C00H 21H DB 1024个数据
; 8255A 状态口 ; 查发送中断请求INTRA=1? ; PC3=1? ; 若无中断请求, 则等待; ; 若有中断请求,则向A口写数 ; 8255APA口地址 ; 从内存取数 ; 通过A口向乙机发送第二个数据 ; 内存地址加1 ; 字节数减1 ; 字节未完, 继续 ; 已完, 退出 ; 返回DOS
8255A应用举例

七段数码管的字形代码表如下:
显示字形 g
f
e
dc
b
a 段码
0
0
1
1
11
1
1
3fh
1
0
1
1
00
0
0 30h
2
1
0
1
10
1
1 5bh
3
1
0
0
11
1
1 4fh
4
1
1
0
01
1
0 66h
data segment
org 100h
buff1 db 3fh, 30h, 5bh, 4fh,66h,6dh,7dh,07h ;定义0~7 的显示码
buff2 db 0feh,0fdh,0fbh,0f7h,0efh,0dfh,0bfh,7fh ;定义位码
data ends
code segment
A3 A2 A1 A0 0 00 0
340H
1 1 0 1 0 0 0 0 0 1 341H
∶
1 1 0 1 0 0 1 1 1 1 34FH
从上述分析中可以看出,指定地址范围内状态 不变的地址信号是A9 A8 A7 A6 A5 A4 它们的状 态分别是110100,这意味着A9~ A4上出现的信号状 态为110100,8255 A的CS必须为低电平。
下面讨论如何用74LS138译码器实现这一功能。
设计片选电路的基本原则是:用A9~ A4作为 74LS138的输入,用74LS138其中一个输出Yi去连 接8255的CS,当且仅当
微机原理 可编程接口芯片8255A及应用

第七章
参考程序片断: MOV AL, 10010000B ; 控制字 OUT 0F6H, AL ; 写入控制字 LP: IN AL, 0F0H ; 从A口读入开关状态 OUT 0F2H, AL ; B口控制LED,指示开关状态 CALL DELAY1S JMP LP
思考:
若地址大于FFH,则程序应该怎么改?
dp g f e d c b a
g
d
b
c
DP
g f e d c b a 1
阴 极
0
1
1
0
1
36
1
0
第七章
十六进制数共阴极的七段显示码表
十六进制数字
0 1 2 3 4 5 6
七段显示码
3FH 06H 5BH 4FH 66H 6DH 7DH
十六进制数字
8 9 A b C d E
七段显示码
7FH 6FH 77H 7CH 39H 5EH 79H
内部逻辑 6
端口C (低4位)
B 组B 端口
PC3~PC0
(8位)
PB7~PB0
CPU接口
外设接口
第七章
8255A与系统的连接示意图
7
第七章
3、各部分功能简介
数据端口
A、B、C:可用来和外设传送信息;每
个端口8位,通过编程设定其为输入口或输出口;
工作方式 0 1 8255数据端口功能表 B口 A口 C口
教材第九章内容
第七章
可编程外围接口芯片8255A及其应用
7.1 8255A的工作原理
一、8255A的结构和功能
二、8255A的控制字及初始化编程 三、8255A工作方式和C口状态字
可编程外围接口芯片8255A及其应用

方式2的方式控制字
D7 D6 D5 D4 D3 D2 D1 D0 1 1
端口A 方式
B组方式
0=方式0 1=方式1
PC2~PC0 1=输入 0=输出
端口B 1=输入 0=输出
方式2的控制信号
PC3 PA7 ~PA0
INTE1 INTE2 WR INTRA
PC7 PC6
PC4 PC5
OBFA ACKA STBA IBFA
二、 8255A的控制字
8255A控制字分为两类。
芯片各端口的方式选择控制字,它可以 使8255A的3个数据端口工作在不同的工作 方式。 C端口置位/复位控制字,它可以使C端口 中的任何一条口线进行置位或复位,而不 影响其他各位的状态。
1.方式控制字
2. 端口C置1/0控制字
D7 D6 D5 D4 D3 D2 D1 D0 0 000 001 010 011 100 101 110 111 PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 1=置1 0=置0
输出缓冲区满信号 外设收到数据,发响应信号 外设准备好数据,发选通信号 8255A收到数据,向外设 发输入缓冲区满信号
RD
PC2~PC0
I O
方式2时序
WR
OBFA INTRA ACKA STBA 3 tSIB IBFA 8 7 输入有效 输出数据 输出有效 输入数据 4 tSIT 5 6 1 2 tWOB tWIT tAOB
X
X
X
X
X
INTEB
IBFB
INTRB
2)方式1输出
① OBF(Output Buffer Full)输出缓冲器满信号, 低电平有效,输出。当它为低电平时,表示CPU 已将数据写到8255A的指定输出端口,即数据已 被输出锁存器锁存,并出现在端口数据线 PA7~PA0或PB7~PB0上,通知外设可将数据取 走。 ② ACK(Acknowledge):外设的应答信号,低 电平有效,由外设送给8255A。当它为低电平时, 表示CPU输出到8255A的A口或B口的数据已被外 设接受。
8255A的应用举例

(2)EOC
转换结束,为状态信号。本例假定A/D转换期间该信号为低电平,一旦转换结束,就变为高电平。
(3)OE(上划线)
输出允许,低电平有效。在A/D转换结束后,置该信号有效,可使转换数据通过内部的三态门出现在输出线上。
根据这两个转换器的控制和状态信号的需要,可将作为接口的8255A设置成方式0,连接如图6.13所示。A口作输出口,用来输出要进行D/A转换的数据;B口作输入口,用来输入A/D转换结果;c高4位口作输入口(仅用PC4),用来读:EOC状态;C低4位口作输出口,用置位/复位操作产生D/A、A/D转换所需的各种控制信号。
8255A的应用举例
作者:佚名文章来源:本站原创点击数:3337更新时间:2007-2-24 0:35:43
8255A的应用举例
1.8255A在PC系列机中的应用简况
在PC/XT机中用一片8255A来做三项工作:一是管理键盘,二是控制扬声器,第三是输入系统配置开关的状态。占用的I/0端口地址空间为60H~7FH,但实际使用60H~63H。
图6.14所示是进行D/A输出及采样模拟量的流程图。采样模拟量部分的“使PC3(OE)为低电平”一项可移到准备阶段去做,即让ADC的输出三态门一直为开放状态。
下面的程序段是做一些准备工作(具体工作在注释中说明):
例6.2使用8255A以方式1工作作打印机与CPU之间的接口。
8255A应用举例

4 8255A应用举例在很多应用系统中,用LED作状态指示器具有电路简单、功耗低、寿命长、响应速度快等特点。
LED显示器是由若干个发光二极管组成显示字段的显示器件,应用系统中通常使用7段LED显示器,如图8-15所示。
b)c)a)共阴型b)共阳型c)管脚分布图8-15 七段数码管以共阳极为例,各LED公共阳极接电源,如果向控制端a,b,c, …,g,dp送入00000011信号,则该显示器显示“0”字型。
控制显示各数码加在数码管上的二进制数据称为段码,显示各数码共阴和共阳七段LED数码管所对应的段码见表8-3。
表8-3 七段LED数码管的段码下面用8255A 作为LED 数码管及4位开关与CPU 的接口,要求按照开关的二进制编码状态,显示相应的数码。
如图8-16所示。
图8-16 80x86CPU 通过8255A 同开关与7段LED 显示器的接口设当开关K3、K2、K1、K0未合上时,各开关控制的位线为高电平1;开关接通时,各开关控制的位线为低电平0。
各开关状态、数字及LED 段码的关系如表8-4所示。
表8-4 开关状态、数字及LED 段码的关系例如:当K2未合上,K3、K1、K0均合上接通时状态为0100,表示数字4,显示代码应为99H。
设8255A端口地址为0FFFAH、0FFFBH、0FFFCH、0FFFDH。
源程序如下:DATA SEGMENTXSHDM DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80HDB 98H, 88H, 83H, 0C6H, 0A1H, 86H, 8EHCNT DB 10 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE , DS:DA TASTART: MOV AX,DA TAMOV DS,AX;以上为源程序结构通用部分.;下面为8255A初始化程序块MOV AL,82HMOV DX,0FFFDHOUT DX,ALLOP: MOV DL,0FBHIN AL,DX ;读B口AND AL,0FHMOV BX,OFFSET XSHDMXLATMOV DL,0FAHOUT DX,AL ;写入A口CALL DELAYJMP LOPMOV AH, 4CHINT 21HDELAY PROCMOV DX,0500HLOP1: MOV CX,0FFHLOP2: NOPNOPLOOP LOP2DEC DXJNZ LOP1RETDELAY ENDPCODE ENDSEND START。
可编程芯片8255A及其应用

8255A芯片在工业控制中的应用
在工业控制中,8255A芯片可以用于采集各种传感器的数据。
传感器数据采集
执行器控制
安全监控
自动化生产
通过编程,8255A芯片可以控制各种执行器,如电机、阀门等。
8255A芯片可以用于监控工业生产过程中的各种安全参数。
通过与PLC等其他工业控制设备的配合,8255A芯片可以实现自动化生产流程的控制和管理。
OUT 83H ;将累加器A的内容输出到83H端口
01
02
03
编程实例
HLT ;结束程序
编程实例
这是一个简单的8255A编程示例,用于初始化芯片并设置一个特定的端口。在这个例子中,我们使用汇编语言进行编程,通过`OUT`指令将累加器A的内容输出到83H端口,然后通过`HLT`指令结束程序。
01
02
03
04
05
根据项目需求和开发环境,选择合适的编程语言。
2.选择编程语言
使用所选的编程语言编写代码,实现8255A芯片的控制逻辑。
3.编写代码
完成基本功能后,进行全面的测试,并根据测试结果优化代码。
5.测试和优化
将代码编译成可在芯片上运行的格式,并通过仿真或实际硬件进行调试。
4.编译和调试
8255A芯片在微机接口中的应用
作为微机的接口,8255A芯片可以实现与其他设备或系统的数据通信。 通过8255A芯片,微机可以扩展其I/O端口,从而连接更多的外部设备。 在微机接口中,8255A芯片的并行处理能力可以提高数据处理速度。 通过编程,8255A芯片可以用于实时控制微机系统的某些功能。 数据通信 扩展I/O端口 并行数据处理 实时控制
可靠性更强
应用领域拓展
9.第九章 可编程外围接口芯片8255A及其应用

☀ 8086系统中,若8255的8根数据线接在系统数据线的低八位,8255占用连
续4个I/O偶地址:X 0, X 2, X 4 , X 6 A2 A1 A0 … 8086 A1 A0 0 … 8255 0 0 0 ……. 端口A (X 0) 0 1 0 ……端口B (X 2) 1 0 0 ……端口C (X 4) 1 1 0 …….控制口 (X 6)
1
1
0
1
C口
控制寄存器
◆ 8255A的A1A0、/RD、/WR、/CS组合起来实现的基本操作如表9-1所示。
表9-1
8255的基本操作
◆ 与地址总线的连接:与8253一样, ♣ 在8位数据总线CPU系统中,端口输入端A1A0分别与地址总线A1A0相连即可。 ♣ 在16位数据总线CPU系统中,地址总线A2A1连到8255A的A1A0端。若 8255A的 D7~D0接在CPU 的低8位数据线上,则要用偶端口地址来寻址8255A(A0=0);而 D7~D0 接在CPU 的高8位数据线上,则要用奇端口地址来寻址8255A(A0=1)。
二、8255A的控制字
8255A有两类控制字:
① 方式选择控制字(用于各个端口) ② 置位/复位控制字(用于对C口的任一位 的置位/复位操作) 这两类控制字,都被写入一个控制寄存器中。 8255A用控制字的D7位(=1或0)来区分这两类
控制字。 D7位 称为标志位(或特征位)
D7=1:方式选择控制字
第九章 可编程外围接口芯 片8255A及其应用
9-1 8255A的工作原理 9-2 8255A的应用举例
9-1 8255A的工作原理
一、8255A的结构和功能
8位数据端 口PA
端口 选择 地址 线
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
a
a b
f
b g c d
a
b
c
d
e f
g
e
c
e f com
d
g
com
(a)7段发光二极管标号
(b)对应电路图
(c)引脚分布
图2-1 共阴极7段数码管逻辑结构
从图2-1可以看出。当com端接低电平,a~g端 接高电平,对应的发光二极管就发亮。 如果想在7段数码管上显示数字0,需要在com 端接低电平,a 、 b 、 c 、 d 、 e 、f端接高电平, g端接低电平。 七段数码管的字形代码表如下:
从电路中可以得出,8255A 4个端口的地址 分别是: 340H(PA端口)、 344H (PB端口) 348H (PC端口)、 34CH(控制口)
程序的设计思路是先通过PB端口选中某个数 码管(使其公共端为低电平),然后再从PA端 口输出选中的数码管所对应的显示码,在完成当 前数码管显示后,显示下一个数码管,在完成一 轮显示后,开始下一轮的显示。
从上述分析中可以看出,指定地址范围内状态 不变的地址信号是A9 A8 A7 A6 A5 A4 它们的状 态分别是110100,这意味着A9~ A4上出现的信号 状态为110100,8255 A的CS必须为低电平。 下面讨论如何用74LS138译码器实现这一功能。 设计片选电路的基本原则是:用A9~ A4作为 74LS138的输入,用74LS138其中一个输出Yi去连 接8255的CS,当且仅当 A9~ A4=110100时, Yi才能变为低电平。
显示字形 0 1 2 3 4 5 6 7 g 0 0 1 1 1 1 1 0 f 1 1 0 0 1 1 1 0 e 1 1 1 0 0 0 1 0 d 1 0 1 1 0 1 1 0 c 1 0 0 1 1 1 1 1 b 1 0 1 1 1 0 0 1 a 1 0 1 1 0 1 1 1 段码 3fh 30h 5bh 4fh 66h 6dh 7dh 07h
图2-2 用74LS138译码器实现8255的片选电路
用一片8255A连接8个7段数码管。且使8个7 段数码管显示8个不同的数字。开始,似乎感到 有点困难。实际上,任何时刻只显示一个7段数 码管,其余7个7段数码管都没有显示状态,CPU 通过8255A逐个显示7段数码管,并在不同的7段 数码管上显示不同的数字。在逐个显示完8个数 码管后,又开始新一轮的逐个显示过程,当这个 循环周期间隔足够短时,由于人的眼睛有滞后效 应,使得人们发现每一个数码管都出于显示状态, 且显示不同的数字。
而A3、A2 的组合和各个端口地址的关 系也如上所示,由于A1、A0没有参与译码, 其值对访问端口没有影响。综合以上讨论可 以得出, PA 、PB、 PC和控制端口的地址 分别是260H、 264H、 268H和 26CH。
在确定工作方式控制字时必须知道, PA端口为方式0输出, PB端口为方式0输 入,而PC端口没有参与电路工作,其输入 输出方式随意,由此可确定控制字为82H。 10000010
例1 :CPU通过8255A控制8个开关和发光二
极管,要求发光二极管的亮灭和开关状态一 致,设计电路并编写程序。
解析:可以认为,处于方式0输出工作状态 的PA、PB、PC端口实际上等同一个锁存 器,而处于方式0输入工作状态的PA、 PB、PC端口实际上等同一个缓冲器。 电路如图所示。
图1 8255控制开关、发光二极管电路
控制电路工作并使其保证开关状态和 发光二极管亮灭一致的程序如下: MOV DX,26CH MOV AL, 82H OUT DX,AL MOV DX,264H IN AL,DX NOT AL MOV DX,260H OUT DX,AL
例2:
用一片8255A连接8个7段数码显示管,规定8255A的
端口地址范围为340H~34FH, 用74LS138译码器实现 8255A的片选电路,并根据电路编写在8个7段数码管上显 示数字0~7的程序。 解:在设计电路前,首先要了解7段数码管,掌握数码管显示 数字的原理。 图2-1给出了共阴极7段数码管逻辑结构图。
data segment org 100h buff1 db 3fh, 30h, 5bh, 4fh,66h,6dh,7dh,07h ;定义0~7 的显示码 buff2 db 0feh,0fdh,0fbh,0f7h,0efh,0dfh,0bfh,7fh ;定义位码 data ends code segment assume cs: code, ds: data start: mov ax, data mov ds, ax ; 初始化ds mov dx, 34Ch ;设置8255控制端口地址 mov al, 80h ;使8255的A口、B口、C口为方式0输出 out dx, al yyy1:mov si, offset buff1 ;设置显示码指针 mov di, offset buff2 ;设置控制码指针 mov cx, 8 ;每一轮循环中显示的数码管的数目
一片8255A只需4个端口地址,而题中给出的 地址范围由16个地址,这意味着低4位地址中有 些地址可以不参加地址译码。设计电路的第一部 还需要设计出片选电路。必须用指定地址范围内 状态不变的地址信号作为片选电路的输入信号。 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 1 1 0 1 0 0 0 0 0 0 340H 1 1 0 1 0 0 0 0 0 1 341H ∶ 1 1 0 1 0 0 1 1 1 1 34FH
首先根据电路确定8255A 4个端口的 地址。确定端口地址用下述方法进行,为 了能够访问8255A,必须使8255A的片选 信号CS=0, A9~A4的信号必须如下: A9 A8 A7 A 6 A5 A4 A3 A2 1 0 0 1 1 0 0 0 PA端口 0 1 PB端口 1 0 PC端口 1 1 控制端口
图2-2中,用A6、A5、A4 分别连接74LS138的
G 、 G2A 、G2B, 只有当A6A5A4 =100时
74LS138才能进行译码操作,用A9 、A8、 A7
分别 连接74LS138的C、B、A,而用Y6输出连接 8255的CS,这样,只有当A9 A8A7=110 时, Y6输出为低电平。
;选中一个数码管
;输出该数码管对应的显示码
;选择下一个数码管所对应的显示码 ;选择下一个数码管
;
;
显示下一个数码管 开始新的一轮的显示
mov ah, 4ch int 21h code ends end start
yyy2: mov dx, 340h mov al , 0 out dx, al mov dx , 344h mov al, [di] out dx, al mov dx, 340h mov al, [si] out dx, al inc si inc di loop yyy2 jmp yyy1
;先使所有数码管变黑