第10章8255A并行接口芯片.ppt
文本预览下载声明
lijianyi@ zhlljy@ 五.8255A的编程及应用 1.8255A的编程 对8255A的编程涉及到两个内容: ⑴写控制字设置工作方式等信息, ⑵使C口的指定位置位/复位的功能。 注:均写入控制端口 控制字格式及功能: 控制字要写入8255A的控制口,写入控制字之后,8255A才能按指定的工作方式工作。 8255A的控制字格式与各位的功能如下图所示。 例1: 某系统要求使用8255A的A口方式0输入,B口方式0输出,C口高4位方式0输出,C口低4位方式0输入。 则控制字为: 即91H 初始化程序为: MOV AL, 91H OUT CTRL_PORT,AL (2) C口的置位/复位功能 只有C口才有,它是通过向控制口写入按指定位置位/复位的控制字来实现的。C口的这个功能可用于设置方式1的中断允许,可以设置外设的启/停等。 按位置位/复位的控制字格式下图所示。 例2:A口方式2 要求发两个中断允许,即PC4和PC6均需置位。B口方式1要求使PC2置位来开放中断。则初始化程序为: MOV AL,0C4H OUT CTRL_PORT,AL ;设置工作方式 MOV AL,09H OUT CTRL_PORT,AL;PC4置位,A口输入允许中断 MOV AL,0DH OUT CTRL_PORT,AL;PC6置位,A口输出允许中断 MOV AL, 05H OUT CTRL_PORT,AL;PC2置位;B口输出允许中断 2.接口应用举例 例3 利用8255A的A口方式0与微型打印机相连,将内存缓冲区BUFF中的字符打印输出。试完成相应的软硬件设计。(CPU为8088) 分析: 首先我们分析一下打印机的工作。微型打印机和主机之间的接口采用并行接口。 它的工作流程是:主机将要打印的数据送上数据线,然后发选通信号。打印机将数据读入,同时使BUSY线为高,通知主机停止送数。这时,打印机内部对读入的数据进行处理。处理完以后使ACK有效,同时使BUSY失效,通知主机可以发下一个数据。 硬件连线如下图: 编制程序如下: DATA SEGMENT BUFF DB This is a print program!,$ DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START:MOV AX, DATA MOV DS, AX MOV SI,OFFSET BUFF MOV AL, 88H ;8255A初始化,A口方式0,输出 OUT 03H, AL ; C口高位方式0输入,低位方式0输出 MOV AL, 01H; OUT 03H,AL ;使PC0置位,即使选通无效 WAIT: IN AL, 02H;从C口读取打印机状态信息 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 M
显示全部