8255方式1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8255A作中断方式工作的字符打印机的接口,如下图所示:
原理图
打印机接口需要一个数据选通信号STB,故由CPU控制PC0来产生选通脉冲STB。OBF在此没有用,将它悬空就行了,ACK端连接打印机端。
PC3连到中断控制器8255A的中断请求信号输入端IR3。对应于中断类型号0BH,此中断对应的中断,向量放在00段2CH、2DH、2EH、2FH这4个单元中,8255A在系统程序中已完成初始化。
设8255A的端口地址为:
A端口:0C0H
B端口:0C2H
C端口:0C4H
控制口:0C6H
方式控制字为0A0H,因为B口未用,故取D3~D1位为0,其他各位的值使A 组工作于方式1,A端口为输出,作为输出。
在这个设计中,由中断处理子程序完成字符输出;而初始化程序完成对8255A设置方式控制字、设置中断向量、开放中断。主程序执行其它操作,并等待中断。
中断服务主程序入口标号为INTPR。所谓设置中断向量,就是把中断服务程序的入口地址(4字节的逻辑地址)写到中断向量表中由中断类型号指定的单元中。
在中断处理子程序中,设字符已放在主机的字符输出缓冲区,往A端口输出字符后,CPU用对C端口的置1/置0命令使输出负脉冲,从而将数据送入打印机。当打印机接收并打印字符后,发出回答信号ACK,由此清除了8255A 的“输出缓冲器满”信号,并使8255A产生新的中断请求。
软件设计
1、CPU启动打印机设备工作。
2、当打印机准备好一个字符输出时,把外设置为就绪状态。
3、I/O口在设备就绪时向CPU发出中断请求,需求服务。
4、CPU接到中断请求信号,暂停当前工作,响应中断,输入中断服务程序,服务程序实现发送下一个字符到I/O口并选通打印机。
5、CPU从中断服务。
6、重复2-5,直到所有的字符打印完关闭打印机
7、程序及流程图如下:
主程序:
MAIN: MOV AL,0A0H
OUT 0C6H,AL ;设置8255A的控制字
MOV AL,01H ;使选通无效
OUT 0C6H,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 0C6H,AL ;使8255A A口输出允许中断
MOV DI,OFFSET BUFF ;设置地址指针
MOV CX,99 ;设置计数器初值
MOV AL,[DI]
OUT 0C0H,AL ;输出一个字符
INC DI
MOV AL,00H
OUT 0C6H,AL ;产生选通
INC AL
OUT 0C6H,AL ;撤消选通
STI ;开中断
NEXT: HLT ;等待中断
LOOP NEXT ;修改计数器的值,指向下一个要输出的字符
HLT
中断服务子程序如下:
ROUTINTR:MOV AL,[DI]
OUT 0C0H,AL ;从A口输出一个字符
MOV AL,00H
OUT 0C6H,AL ;产生选通
INC AL
MOV 0C6H,AL ;撤消选通
INC DI ;修改地址指针
IRET ;中断返回