8255A的工作方式及其初始化编程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

8255A的工作方式及其初始化编程

【例7.1】设8255A的A口工作在方式0,数据输出,B口工作在方式1,数据输入,编写初始化程序(设8255A的端口地址为FF80H~FF83H)。

初始化程序如下:

MOV DX, 0FF83H ; 控制寄存器端口地址为FF83H

MOV AL, 10000110B ; A口方式0, 数据输出, B口方式1, 数据输入

OUT DX, AL ; 将控制字写入控制端

【例7.2】将8255A的C口中PC0设置为高电平输出,PC5设置为低电平输出,编写初始化程序(设8255A的端口地址为FF80H~FF83H)。

初始化程序如下:

MOV DX, 0FF83H ; 控制端口的地址为FF83H

MOV AL, 00000001B ; PC0设置为高电平输出

OUT DX, AL ; 将控制字写入控制端口

MOV AL, 00001010B ; PC5设置为低电平输出

OUT DX, AL ; 将控制字写入控制端口

8255A应用举例

8255A作为通用的8位并行通信接口芯片,用途非常广泛,可以与8位、16位和32位CPU相连接,构成并行通信系统。下面通过几个例子来讨论8255A在应用系统中的接口设计方法及编程技巧。

【例7.3】8255A连接开关和LED显示器的接口电路设计。要求:8255A的A口连接四个开关K3~K0,设置为方式0输入,B口连接一个共阴极LED显示器,设置为方式0输出,将A口四个开关输入的16种状态0H~0FH送B口输出显示。画出接口电路连接图,并编制汇编语言源程序实现上述功能。

分析:本题是8255A方式0应用的一个实例。根据题意,接口电路如图7.13所示。8255A的D7~D0, , 与CPU的D7~D0, , 对应连接,A0和A1与CPU的地址线A0和A1连接,与译码器输出端连接,A口的PA3~PA0连接四个开关K3~K0,其输入有16种组合状态,即0000~1111(0H~0FH),B口经过74LS07(集电极开路六正向高压驱动器)驱动之后与LED显示器连接,可输出一位十六进制数0~F。

图7.13 8255A LED显示器接口电路

8255A的端口地址由地址线A0, A1和片选信号的逻辑组合确定,若CPU的地址线A2, A3, A4连接译码器(如3-8译码器)的输入,译码器的输出端接至,把未连接的CPU的地址线A15~A5的状态设定为1,则可确定8255A的四个端口地址为FFE0H~FFE3H。如图7.14所示,LED显示器由八个发光二极管组成,其中,七个发光二极管分别对应a, b, c, d, e, f, g七个段,另外一个发光二极管为小数点dp。LED有共阳极和共阴极两种结构,共阳极LED的二极管阳极均接+5V,输入端为低电平时,二极管导通发亮;共阴极LED的二极管阴极均接地,输入端为高电平时,二极管导通发亮。因此,通过七段组合可以显示0~9和A~F所对应的七段显示代码,见表7.2。

图7.14 LED显示器

在本例中采用共阴极LED,当A口输入K3~K0的状态为0011B时,B口对应输出七段显示代码为4FH,则LED显示数字3。

显示程序如下:

DATA SEGMENT

LIST DB 3FH, 06H, 5BH, 4FH, …, 71H; 共阴极七段显示代码表

DATA ENDS

CODE SEGMENT

ASSUME CS: CODE, DS: DA TA

START: MOV AX, DA TA

MOV DS, AX

MOV AL, 90H ; 控制字A口方式0输入, B口方式0输出

MOV DX, 0FFE3H ; 控制口地址

OUT DX, AL ; 将控制字写入控制端口

L0: MOV DX, 0FFE0H ; A端口地址

IN AL, DX ; 读取A口开关状态

AND AL, 0FH ; 屏蔽A口高4位

MOV BX, OFFSET LIST ; 共阴极七段显示代码表的首地址送给BX

AND AX, 00FFH ; 屏蔽AX的高位字节, 保留A口的开关状态

ADD BX, AX ; 形成显示字符的代码地址

MOV AL, [BX] ; 取出显示代码送给AL

MOV DX, 0FFE1H ; B端口地址

OUT DX, AL ; 显示代码送B口显示

CALL DELAY ; 调显示延时子程序

JMP L0 ; 循环显示

DELAY PROC ; 显示延时子程序

PUSH CX

PUSH AX

MOV CX, 0010H

T1: MOV AX, 0010H

T2: DEC AX

JNZ T2

LOOP T1

POP AX

POP CX

RET ; 子程序返回

CODE ENDS

END START

此程序是循环显示程序,可由Ctrl+C强迫中断。

【例7.4】8255A作为并行打印机的接口。

要求:将8255A的A口连接一个并行打印机,工作在方式1,数据输出,采用查询方式将内存输出缓冲区BUFFER中的100H个字节数据送打印机输出,设计接口电路,编制打印驱动程序。

分析:8255A连接打印机的接口电路如图7.15所示。

由于8255A的A口以方式1工作,因此将8255A的PA7~PA0与打印机的数据线D7~D0连接,PC7作为输出信号与打印机的数据选通信号引脚相连,PC6作为输入信号与打印机的应答信号相连,PC4用来查询打印机的忙信号BUSY的状态。在这里应该注意,当CPU输出数据时,8255A产生一个低电平有效的输出信号,当8255A接收到一个响应信号时,才能恢复为高电平。另一方面,打印机需要一个数据选通信号才能接收数据,而是一个低脉冲信号,因此直接将与相连,将会因为互相等待而产生“死锁”。采

相关文档
最新文档