8255应用
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1) 硬件设计
8259A INTA INTR IR 0 INTA INT IR 2 IR 7 . .. . .. PC 3 PB 0~7 PC 7 主 PC 4 PC 6 机 系统总线 PC 5 PB 0~7 PC 2~5 PC 0~2 8255A PA 0~7 8255A PA 0~7
OBF STB ACK
LOOP RLOOP HLT;
DL50MS PROC PUSH CX MOV CX,0009H CCT: BBT: MOV AX,056CH DEC AX JNZ BBT
;延时子程序 ; ; ; ; ; ; ; ;
LOOP CCT POP RET CX
2. 查询方式的双机并行通信 甲乙两台微机之间并行传送1K字节数据。 甲机发送,乙机接收。甲机一侧的8255A采用 方式1工作,乙机一侧的8255A采用方式0工作。 两机的CPU与接口之间都采用查询方式交换 数据。
OUT DX,AL CALL DL50MS MOV AL, 0FH
;C口输出高5位编程地址和 编程控制信号 ;调50ms延时子程序 ;PC7置1控制字
MOV DL,0FEH OUT DX,AL INC INC BX DI ;PC7置1撤消编程电压 ;2764编程地址加1 ;编程数据源地址加1 ;8K字节是否写完
L: MOV IN AND JZ MOV MOV OUT INC DEC JNZ MOV INT BUFS
DX, 302H AL, DX AL, 08H L DX, 300H AL, [SI] DX, AL SI CX L AH, 4C00H 21H DB 1024个数据
; 8255A 状态口 ; 查发送中断请求INTRA=1? ; PC3=1? ; 若无中断请求, 则等待; ; 若有中断请求,则向A口写数 ; 8255APA口地址 ; 从内存取数 ; 通过A口向乙机发送第二个数据 ; 内存地址加1 ; 字节数减1 ; 字节未完, 继续 ; 已完, 退出 ; 返回DOS
MOV OUT INC DEC JNZ MOV INT
AL, 00000111B DX, AL DI CX L1 AX, 4C00H 21H
; PC3 置“ 1” ; 内存地址加1 ; 字节数减1 ; 字节未完, 则继续 ; 已完, 退出 ; 返回DOS
BUFR DB 1024 DUP(?)
3. 中断方式的双机并行通信 主从两个微机进行并行传送, 主从两个微机进行并行传送, 共 传 送 256 个 字 节 。 主 机 一 侧 的 8255A采用方式 并且用中断方式 采用方式2并且用中断方式 采用方式 传送数据。从机一侧8255A工作于 传送数据。从机一侧 工作于 方式0,采用查询方式传送数据。 方式 ,采用查询方式传送数据。
; 开中断 ; 等待中断 ; 字节数−1 ; ; 返回DOS
T_R: PROC MOV MOV OUT
FAR DX, 303H AL, 08H DX, AL
; 复位PC4 (INTE1)
MOV AL,0CH;复位PC6(INTE2) OUT DX,AL CLI MOV IN MOV AND JZ DX, 302H AL, DX AH, AL AL, 20H OUTP ; 8255A C口 ; 读入C口内容 ; PC5=IBF=1? 是输入? ; 不是, 转OUTP
不可编程接口芯片适合于较简单的输入 输出要求。最简单的输入接口电路是输入缓 冲器,最简单的输出接口电路是输出锁存器。 使用可编程并行接口具有较好的灵活性, 这是因为可编程接口芯片的部分功能可由程 序来设定。同时可编程接口芯片的集成度较 高,可靠性也好,一个芯片内部包含了多个 输入输出端口,在许多场合中得到应用。
9.3 8255A应用举例
1. 用8255A作2764EPROM存储器编程接口 作 存储器编程接口 (1)接口电路设计 接口电路设计
2764
2764 是 8K×8bit 紫 外 线 可擦除EPROM存储器芯片, 其标准存取时间为250ns, 其引脚分布如图9-14所示, 其中:
A12 ~ A0:地址线 D7 ~ D0:数据线
3. 选用有效的数据传送方式 由于外部设备种类繁多,各种外设的形式 各异,其工作速度相差很大,信息传输速率悬 殊。为了保证CPU与外设在时间上的同步,并 行接口常用的数据传送方式有无条件传送方式、 程序查询方式、中断传送方式等三种。
无条件传送对硬件接口电路和程序设计要 求都较简单,但使用这种传送方式的前提是外 设应处于就绪状态。因此这种传送方式使用不 多,一般用于一些简单外设的操作,如七段显 示器、按键开关等。 程序查询方式是由CPU通过执行程序不断 读取外设状态,来确定是否执行输入或输出操 作与外设交换信息。因此采用程序查询方式, 接口电路不仅需要数据端口,还需要状态端口。
CE OE PGM
VPP
图9-14 2764EPROM引脚分布
用8255A作为8086CPU和2764EPROM存储 器编程的接口电路如图9-15所示。
D7 ~ D0 D7 ~ D0 AB 地址 译码 器 PA7 ~ PA0 PB7 ~ PB0 PC4 ~ PC0 A7 ~ A0 D7 ~ D0 A12 ~ A8
②乙机接收程序段: 乙机接收程序段
MOV MOV OUT MOV OUT MOV MOV DX, 303H AL, 10011000B DX, AL AL, 00000111B DX, AL DI, OFFSET BUFR CX, 3FFH ; 设置接收数据区的指针 ; 接收字节数 ; 置ACK=1 (PC3=1) ; 8255A命令口 ; 初始化工作方式字
(2)接口软件编程 接口软件编程 接口驱动程序包含发送程序和接收程序。
甲机发送程序段: ① 甲机发送程序段:
MOV MOV OUT MOV OUT MOV MOV MOV MOV OUT INC DEC DX, 303H AL, 10100000B DX, AL AL, 0DH DX, AL SI, OFFSET BUFS CX, 3FFH DX, 300H AL, [SI] DX, AL SI CX ; 8255A 命令口 ; 初始化工作方式字 ; 置发送中断允许INTEA=1 ; PC6=1 ; 设置发送数据区的指针 ; 发送字节数 ; 向A口写第一个数, 产生第 ; 一个OBF信号 ; 送给乙方, 以便获取乙方的 ; ACK信号 ; 内存地址加1 ; 传送字节数减1
CS
PC5 PC6 A1 A0 33 3DK4 200 +22V 3K PC7 3AX61
M /IO CPU A2 A1
CE PGM
VPP
2764 EPROM
图9-1接口软件编程 设8255A的端口地址为00F8H ~ 00FEH, 编程数据放在8000H开始的8K的缓冲器内, 参考程序如下:
DX, 303H AL, 0DH DX, AL AL, 09H DX, AL AL, 62H 20H, AL
; 8255A控制口 ; PC6(INTE1)=1 ; PC4(INTE2)=1 ; 8259A的OCW2=01100010B ; 中断结束
T_R
ENDP
人机交互接口
一般而言,并行接口的设计主要有以下几方面 需要考虑: 1. 选择合适的接口芯片 常用的并行接口芯片按功能可分为输入接口、 输出接口、输入输出接口三种;按结构可分为可 编程接口芯片和不可编程接口芯片二种。
IBF
PC 1 PC 7 PC 6 PC 0 从
机
图 9-17 中断方式的双机并行通信
(2) 软件设计 (主机一侧的编程 主机一侧的编程) 主机一侧的编程
⋮ ; 8255A初始化 MOV DX, 303H MOV AL, 0C0H OUT DX, AL MOV AL, 09H OUT DX, AL MOV AL, 0DH OUT DX, AL MOV SI, 3000H MOV DI, 410H MOV CX, 0FFH ⋮
L1: MOV IN AND JNZ MOV IN MOV MOV MOV OUT NOP NOP
DX, 302H AL, DX AL, 80H L1 DX, 300H AL, DX [DI], AL DX, 303H AL, 00000110B DX, AL
; 8255A PC口 ; 查甲机的OBF=0? ; (乙机的PC7=0) ; 即查甲机是否有数据发来 ; 若无数据发来,则等待; ; 若有数据, 则从A口读数 ; 8255A PA口地址 ; 从A口读入数据 ; 存入内存 ; 产生ACK信号, 并发回给甲机 ; PC3 置“ 0”
2.确定合理的I/O端口地址 确定合理的I/O端口地址 I/O
选择I/O端口地址包含两方面的问题: 不同I/O接口电路的地址分配和同一接口电 路中的端口地址分配。
针对每一个接口电路,根据需要除了数 据端口以外,可能还有状态端口和控制端口, 每个端口都要分配一个口地址。 在一个微机系统中,有不同的I/O接口电 路,每一个接口电路应对应不同的I/O口地址。 在接口电路设计中,要作充分考虑,避免地 址重叠。
; 8255A控制口 ; 方式字1100 0000B, A口方式2 ; 使PC4(INTE2)=1, 输入中断允许 ; 使PC6(INTE1)=1, 输出中断允许 ; 发送数据块首址 ; 接收数据块首址 ; 发送接收字节数
AGAIN: STI HLT DEC CX JNZ INT AGAIN MOV AX 4C00H 21H
INP:
MOV IN MOV INC
DX, 300H AL, DX [DI], AL DI AL, AH AL, 80H ;PC7=OBF=0? RETURN DX, 300H AL, [SI] DX, AL
OUTP: MOV AND JZ MOV MOV OUT
RETURN: MOV MOV OUT MOV OUT MOV OUT STI IRET
CE
10 9 8 7 6 5 4 3 25 24 21 23 2 20 22 27 1
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12
D0 D1 D2 D3 D4 D5 D6 D7
11 12 13 15 16 17 18 19
:片选线
OE:输出允许信号 PGM:编程脉冲输入 VCC、GND:+ 5V工作电源和地 VPP:+ 21V ± 0.5V编程电源
START: MOV BX,000H MOV DI, 8000H MOV CX,2000H MOV DX,00FEH MOV AL, 80H
;置2764初始地址 ;置编程数据源地址 ;置编程数据字节数 ;置8255A控制口地址 ;置8255A方式控制字,A、 B、C都工作在方式0 ;输出8255A方式控制字
(1)接口电路设计 接口电路设计 接口电路的连接如图9-16所示。
方式0
8255A 乙(接收) CPU PA0~7 PC7 PC3 PC4~6 PC0~2 PB0~7 未 用 PC0~5 OBF ACK
方式1
8255A PA0~7 PC7 PC6 PC8 PB0~7 甲(发送) CPU
甲机8255A是方式1发送,因此,把PA口 指定为输出,发送数据,而PC7 和PC6 引脚分 别固定作联络线 OBF和ACK 。乙机8255A是方 式0接收数据,故把PA口定义为输入,另外, 选用引脚PC7 和PC3 作联络线。虽然,两侧的 8255A都设置了联络线,但有本质的差别:甲 机8255A是方式1,其联络线是固定的,不可 替换的;乙机的8255A是方式0,其联络线是 不固定的,可以选择,比如可选择PC4 和PC1 、 或PC5、PC2等任意组合。
OUT
DX, AL
RLOOP:MOV AL, BL
;
MOV DL, 0F8H ;置8255A端口A地址 OUT DX, AL MOV AL, [DI] MOV DL, 0FAH OUT DX,AL MOV AL,BH MOV DL,0FCH ;置8255A端口B地址 ;B口输出编程数据字节 ; ;置8255A端口C地址 ;A口输出低8位编程地址