8255a简介 下载本文

OUT 03H, AL ; C口高位方式0输入,低位方式0输出

MOV AL, 01H;

OUT 03H,AL ;使PC0置位,即使选通无效

WAIT: IN AL, 02H

TEST AL, 80H ;检测PC7是否为1即是否忙 JNZ WAIT ; 为忙则等待 MOV AL,[SI]

CMP AL,'$' ;是否结束符 JZ DONE ; 是则输出回车

OUT 00H,AL ;不是结束符,则从A口输出 MOV AL,00H OUT 03H, AL MOV AL, 01H

OUT 03H,AL ;产生选通信号

INC SI ;修改指针,指向下一个字符 JMP WAIT

DONE: MOV AL,0DH

OUT 00H,AL ;输出回车符 MOV AL, 00H OUT 03H,AL MOV AL, 01H OUT 03H,AL ;产生选通

WAIT1: IN AL, 02H

TEST AL, 80H ;检测PC7是否为1即是否忙 JNZ WAIT 1 ; 为忙则等待 MOV AL,0AH

OUT 00H,AL ;输出换行符 MOV AL, 00H OUT 03H,AL MOV AL, 01H OUT 03H,AL ;产生选通 MOV AH,4CH INT 21H

CODE ENDS END START

【例4】 将上例中8255A的工作方式改为方式1,采用中断方式将BUFF开始的缓冲区中的100个字符从打印机输出。(假设打印机接口仍采用Centronics标准)。

分析:仍用PC0作为打印机的选通,打印机的ACK作为8255A的A口,ACK8255A的中断

13

请求信号(PC3)接至系统中断控制器8259A的IR3,其它硬件连线同上例,如图7-15所示。

图9-6 中断方式硬件连线

8255A的控制字为:1010XXX0 PC0置位: 00000001 即 01H PC0复位: 00000000 即 00H

PC6置位: 00001101 即 0DH ,允许8255A的A口输出中断

由硬件连线可以分析出,8255A的4个口地址分别为:00H,01H,02H,03H。 假设8259A初始化时送ICW2为08H,则8255A A口的中断类型码是0BH,此中断类型码对应的中断向量应放到中断向量表从2CH开始的4个单元中。 主程序:

MAIN: MOV AL,0A0H

OUT 03H,AL ;设置8255A的控制字 MOV AL,01H ;使选通无效 OUT 03H,AL XOR AX,AX MOV DS,AX

MOV AX,OFFSET ROUTINTR MOV WORD PTR [002CH],AX

MOV AX,SEG ROUTINTR

MOV WORD PTR [002EH],AX ;送中断向量 MOV AL,0DH

OUT 03H,AL ;使8255A A口输出允许中断 MOV DI,OFFSET BUFF ;设置地址指针 MOV CX,99 ;设置计数器初值 MOV AL,[DI]

OUT 00H,AL ;输出一个字符

14

INC DI

MOV AL,00H

OUT 03H,AL ;产生选通 INC AL

OUT 03H,AL ;撤消选通 STI ;开中断

NEXT: HLT ;等待中断

LOOP NEXT ;修改计数器的值,指向下一个要输出的字符 HLT

中断服务子程序如下:

ROUTINTR:MOV AL,[DI]

OUT 00H,AL :从A口输出一个字符 MOV AL,00H

OUT 03H,AL :产生选通 INC AL

MOV 03H,AL ;撤消选通 INC DI :修改地址指针 IRET :中断返回

【思考】 是否可以采用A口的OBF作为打印机的选通信号?如可以的话,软件该如何修改?是否可用打印机的BUSY作为8255的A口ACK ? 【习题与思考】

1.试分析8255A方式0、方式1和方式2的主要区别,并分别说明它们适合于什么应用场合。

2.当8255A的A口工作在方式2时,其端口B适合于什么样的功能?写出此时各种不同组合情况的控制字。

3.若8255A的端口A定义为方式0,输入;端口B定义为方式1,输出;端口C的上半部定义为方式0,输出。试编写初始化程序。(口地址为80H~83H)

4.假设一片8255A的使用情况如下:A口为方式0输入,B口为方式0输出。此时连接的CPU为8086,地址线的A1、A2分别接至8255A的A0、A1,而芯片的CS来自A3A4A5A6A7=00101,试完成8255A的端口地址和初始化程序。

15

9.3 微机与键盘的接口

一、矩阵式键盘的结构

在微型机系统中,键盘是一种最常用的外设,它由多个开关组合而成。可以用来制造键盘的按键开关有好多种,最常用的有机械式、薄膜式、电容式和霍尔效应式等4种。机械式开关较便宜,但压键时会产生触点抖动,即在触点可靠地接通前会通断多次,而且长期使用后可靠性会降低。薄膜式开关可做成很薄的密封单元,不易受外界潮气或环境污染,常用于微波炉、医疗仪器或电子秤等设备的按键。电容式开关没有抖动问题,但需要特制电路来测电容的变化。霍尔效应按键是另一种无机械触点的开关,具有很好的密封性,平均寿命高达1亿次甚至更高,但开关机制复杂,价格很贵。计算机上用的键盘一般都用机械式开关。

对于大多数的键盘,按键被排成行和列的矩阵。下面以机械式开关构成的16个键的键盘为例,来讨论键盘接口的工作原理,这种原理对采用其它类型的开关的键盘也是适用的。

设16个键分别为16进制数字0~9和A~F,键盘排列、连线及接口电路如下图所示。16个键排成4行×4列的矩阵,接到微型机的一对端口上。端口由8255A构成,其中端口A作输出,端口B作输入。矩阵的4条行线接到输出端口A的PA3~PA0,用程

序能改变这4条行线上的电平。4条列线连到输人端口B的PB3~PB0,4条行线还同时接到输人端口B的PB7~PB4上。这样,用输入指令读取B口状态时,可同时读取键盘的行列信号。

16