可编程并行接口芯片8255A有哪几种工作方式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
可编程并行接口芯片8255A有哪几种工作方式?每种工作方式有何特点?
【解答】
方式0:没有固定得用于应答式传送得联络信号线,CPU可以采用无条件传送方式与8255A交换数据。
方式1:有专用得中断请求与联络信号线,因此,方式1通常用于查询传送或中断传送方式。
方式2:PA口为双向选通输入/输出或叫双向应答式输入/输出。
9、28255A得方式选择控制字与C口按位控制字得端口地址就是否一样?8255A怎样区分这两种控制字?写出端口A作为基本输入,端口B作为基本输出得初始化程序。
【解答】8255A得方式选择控制字与C口按位控制字得端口地址就是一样得,通过控制字得最高位D7进行区分:D7=1时,为方式选择控制字;D7=0时,为C口按位控制字。
初始化程序段如下:
MOV DX,PORT ;PORT为端口地址
MOV AL,10010000B
OUT DX,AL
9、3某8255A得端口地址范围为03F8H~03FBH,A组与B组均工作在方式0,A口作为数据输出端口,C 口低4位作为状态信号输入口,其它端口未用.试画出该片8255A与系统得连接图,并编写初始化程序。
【解答】
连接图如下:
图9-1 8255A与系统得连接图
程序如下:
MOV AL,81H
MOV DX,03FBH
OUT DX,AL
9、4试按以下要求对8255A进行初始化编程:
(1)设端口A、端口B与端口C均为基本输入/输出方式,且不允许中断。
请分别考虑输入/输出。
(2)设端口A为选通输出方式,端口B为基本输入方式,端口C剩余位为输出方式,允许端口A中断。
(3)设端口A为双向方式,端口B为选通输出方式,且不允许中断。
【解答】(1)端口A、端口B与端口C均为基本输入/输出方式,则为方式0,任何一个口都可用于输入或输出,可出现16种组合,这里只举出2种组合。
若端口A、B为数据输入口;C口得低4位为控制信号输出口,高4位为状态信号输入口,程序段如下:MOV AL,10011010B
MOVDX,PORT ;PORT为端口地址
OUT DX,AL
MOV AL,00001100B ;设PC6为中断信号控制引脚,PC6=0,禁止中断
OUT DX,AL
若端口A、B为数据输出口;C口得高4位为控制信号输出口,低4位为状态信号输入口,程序段如下: MOVAL,10000000B
MOV DX,PORT ;PORT为端口地址
OUT DX,AL
MOV AL,00001100B ;设PC6为中断信号控制引脚,PC6=0,禁止中断
OUT DX,AL
(2)端口A为选通输出方式,方式1;端口B为基本输入方式,程序段如下:
MOVAL,10100010B
MOV DX,PORT ;PORT为端口地址
MOV AL,00001101B ;设PC6为中断信号控制引脚,PC6=1,允许中断
OUT DX,AL
(3)端口A为双向方式,方式2;端口B为选通输出方式,程序段如下:
MOV AL,11000100B
MOV DX,PORT ;PORT为端口地址
OUT DX,AL
MOV AL,00001100B ;设PC6为中断信号控制引脚,PC6=0,禁止中断
OUT DX,AL
9、5 采用8255A作为两台计算机并行通信得接口电路,请画出查询式输入/输出方式工作得接口电路,并写出查询式输入/输出方式得程序.
【解答】甲机得8255A就是方式1发送,端口PA为输出,发送数据,而PC7与PC6引脚分别固定作联络线与。
乙机得8255A就是方式0接收数据,故把端口PA定义为输入,另外,选用引脚PC7与PC3作为联络线.接口电路如图9-2:ﻫ图9-2 查询方式得双机通信
查询式输入/输出方式得程序如下:
;甲机发送得程序段
MOV DX,303H ; 8255A命令端口
MOV AL,l010000B ; 初始化工作方式字
OUT DX,AL
MOV AL,0DH ;置发送允许INTEA=1
OUT DX,AL
MOV SI,OFFSET BUFS ; 设置发送数据区得指针
OUT CX,3FFH ;发送字节数
MOV DX,300H ;向端口A写第1个数,产生第1个信号
MOV AL,[SI] ; 送给乙机,以便获取乙机得信号
OUT DX,AL
INC SI ;内存地址加1
DECCX ; 传送字节数减1
LOP:MOV DX,302H;8255A状态端口(端口C)
IN AL,DX ; 查发送中断请求INTRSA=1
AND AL,08H ; 就是否PC3=l
JZ LOP ; 若无中断请求则等待;若有向端口A写数
MOV DX,300H ; 8255A端口PA地址
MOV AL,[SI];从内存取数
OUTDX,AL ;通过端口A向乙机发送第2个数据
INC SI ;内存地址加1
DEC CX ; 字节数减1
JNZLOP ; 字节未完,继续
MOV AH,4CH ; 己完,退出
INT 21H ;返回DOS
BUFS DB …;定义1024个数据
;乙机接收得程序段
MOV DX,303H ;8255A命令端口
MOV AL,l0011000B;初始化工作方式字
MOV AL,00000111B ;置=1(PC3=1)
OUT DX,AL
MOVDI,OFFSET BUFR; 设置接收数据区得指针
MOV CX,3FFH ;接收字节数
L1: MOV DX,302H ; 8255A端口PC
INAL,DX ;查甲机得=0?(乙机得PC7=0)
AND AL,80H ;查甲机就是否有数据发来
JNZ L1 ; 若无数据发来,则等待;若有数据,则从端口A读数
MOV DX,300H;8255A端口PA地址
INAL,DX ;从端口A读入数据
MOV [DI],AL ;存入内存
MOV DX,303H ; 产生信号,并发回给甲机
MOV DX,00000110B ;PC3置“0”
OUT DX,AL
INC DI ; 内存地址加1
DECCX ;字节数减1
JNZ L1 ;字节未完,则继续
MOV AX,4C00H;己完,退出
INT 21H;返回DOS
BUFR DBl024 DUP(?);接收数据缓冲区
10、7以图10-10所示得连接形式为例,设系统工作过程中以查询方式发送数据,而以中断方式接收数据,数据位8位,偶校验,2位停止位,波特率为4800HZ,请编写程序段对8250得初始化,并编写相应得中断服务子程序。
【解答】时钟频率为1、8432MHz,波特率为4800bps,故除数波特率因子为0018H,8250得初始化如下:;设置波特率
MOV AL,10000000B ;DLAB=1
MOVDX,3FBH ;通信控制寄存器地址
OUT DX,AL ;写入通信控制寄存器
MOV AL,18H;置4800波特率除数低位
MOV DX,3F8H
OUT DX,AL ;写入除数锁存器低位
MOV AL,00 ;置4800波特率除数高位
MOVDX,3F9H
OUT DX,AL ;写入除数锁存器得高位
;设置字符数据格式
MOV AL,00011111B ;设置数据格式
MOV DX,3F8H
OUT DX,AL ;写入通信控制寄存器
MOV DX, 3FCH
MOV AL,0BH
OUT DX,AL ;初始化MODEM寄存器
MOV DX,3F9H ;初始化中断允许寄存器
MOV AL,01H ;允许接收数据寄存器满产生中断
STI
中断服务子程序如下:
RECEIVE:PUSH AX
PUSH BX
PUSH DX
PUSH DS
MOV DX,3FDH
IN AL,DX
TEST AL,DX
TEST AL,IEH
JNZ ERROR
MOV DX,3F8H
IN AL,DX
AND AL,7FH
MOV BX,OFFSET REVBUF
MOV [BX],AL
MOV DX,INTRR
MOV AL,20H ;发中断结束命令EOI给8259
OUT 0A0H,AL
OUT 20H,AL
JMP QUIT
ERROR:……
QUIT: POP DS
POPDX
POP BX
POP AX
STI
IRET
【解答】目前计算机中使用得键盘分为编码键盘与非编码键盘。
PC系列键盘具有两个基本特点:第一就是按键均为无触点得电容开关第二就是PC系列键盘属于非编码键盘。
11、3 说明键盘接口电路得种类与基本工作原理,试设计一个键盘中断调用程序,从键盘输入10个连续得字符。
【解答】目前PC机上常用得键盘接口有3种,一种就是老式得直径13mm得PC键盘接口;第二种就是最常用得直径8mm得PS/2键盘接口;第三种就是USB接口得键盘.
PC系列键盘不就是由硬件电路向CPU输出按键所对应得ASCII码值,而就是由单片机扫描程序识别按键得当前位置,然后向键盘接口输出该键得扫描码。
按键得识别、键值得确定以及键代码存入缓冲区等工作全部由软件完成。
设输入得字符存入620H内存单元,键盘中断调用程序如下:
MOVCX,10
MOVSI,620H
NEXT:MOVAH,0
INT 16H
MOV [SI],AL
INC SI
LOOPNEXT
11、4 与PC键盘发生关联得就是哪两类键盘中断程序?它们各自得特点就是什么?
【解答】计算机系统与键盘发生联系通过硬件中断09H或软件中断16H。
特点:硬件中断09H就是由按键动作引发得中断。
在此中断中对所有键盘进行了扫描码定义。
软件中断16H就是BIOS中断调用得一个功能。