可编程并行接口实验(8255A方式1)
- 格式:doc
- 大小:115.50 KB
- 文档页数:5
可编程并行接口实验(8255A方式1)实验目的掌握8255A工作方式1的使用方法;进一步掌握编写中断服务程序的方法。
实验内容1.8255A选通行输出实验,具体要求:(1)设置8255A的A 口工作在方式1输出;(2)每按一次单脉冲按钮产生一个正脉冲使8255A产生一次中断;(3)设计中断服务程序:依次输出01H,02H,04H,08H,10H,20H,40H,80H。
使L0—L7依次发光。
2.8255A选通行输入实验,具体要求:(1)设置8255A的A 口工作在方式1输入;(2)每按一次单脉冲按钮产生一个正脉冲使8255A产生一次中断;(3)设计中断服务程序:读取开关表示的ASCII码,在屏幕上显示其对应的字符。
实验连线1实验内容1连线(1)8255A芯片的A口PA7~PA0连发光二极管L7~L0;(2)PC3连接IRQ;(3)PC6连接单脉冲发生器。
2实验内容2连线(1)8255A芯片的A口PA7~PA0连逻辑开关K7~K0;(2)PC3连接IRQ;(3)PC4连接单脉冲发生。
流程图这是试验2的流程图,实验1相似实验代码试验2的代码是在试验1的代码基础上稍作改动,这里只列出试验2的代码:ASSUME CS:CODE,DS:DATADATA SEGMENT ;数据段定义IOPORT EQU 5400H-280HIOPORT_CENT EQU 5000H ;9054芯片的I/O起始地址MASKZ EQU 0FBH ;8259A主片屏蔽码MASKC EQU 0F7H ;8259A从片屏蔽码INTNUM DW 0 ;保存ES的定义量INTNUMSE DW 0 ;保存BX的定义量DA TA ENDSSTACK1 SEGMENT STACK ‘STACK1’DB 50 DUP(?)STACK1 ENDSCODE SEGMENT ;代码段定义START:MOV DX,IOPORT+28BH ;根据实验连线,此次实验控制口为540BH MOV AL,0B0H ; 设置8255A的控制关键字(设置成方式1,端口A输入) OUT DX,ALCLI ;关中断MOV DX,IOPORT_CENT+68H ;设置9054芯片使能寄存器IN AX,DXOR AX,0900HOUT DX,AX;得到原中断向量并保存MOV AH,35H ;取中段向量MOV AL,73H ;针对本台计算机查表得出中断类型号为73HINT 21HMOV INTNUMSE,BX ;保存BXMOV AX, ES ;保存ESMOV INTNUM, AX;设置新中断向量MOV AX,CSMOV DS,AXMOV DX,OFFSET INTPROC ;设置新的中断向量MOV AL,073HMOV AH,25HINT 21H;设置中断屏蔽寄存器IN AL,21H ;8259A主片的中断屏蔽寄存器端口地址为21HAND AL,MASKZ ;中断屏蔽寄存器中主片相应位置1,本实验中第三位置1 OUT 21H,ALIN AL,0A1H ;8259A从片的中断屏蔽寄存器端口地址为0A1HAND AL,MASKCOUT 0A1H,AL ;中断屏蔽寄存器中从片相应位置1,本实验中第四位置1 STI ;开中断MOV AL,00001001B ;设置PC4为1MOV DX,IOPORT+28BHOUT DX,ALOUTER:MOV AH,01H ;判断是否有任意键按下INT 16HJZ OUTER ;没有键按下程序重复MOV AX, INTNUM ;恢复原中断向量MOV DS,AXMOV DX, INTNUMSEMOV AL,073HMOV AH,25HINT 21H;恢复中断屏蔽寄存器IN AL,21HOR AL,04HOUT 21H,ALIN AL,0A1HOR AL,08HOUT 0A1H,ALMOV DX,IOPORT_CENT+68H ;关闭9054IN AX,DXOR AX,0F6FFHOUT DX,AXMOV AH,4CH ;有键按下,程序结束,返回DOS界面INT 21H;中断服务子程序INTPROC:PUSH AX ;寄存器入栈保护PUSH BXPUSH CXPUSH DXPUSH DSSTI ;开中断MOV CX,0FFFFHH: LOOP HMOV DX,IOPORT+288H ;A口输入IN AL,DXMOV DL,AL ;输出开关所对应的字符MOV AH,02HINT 21HMOV AL,20H ;发出EOI结束中断OUT 20H,ALOUT 0A0H,ALCLI ;关中断POP DS ;寄存器出栈POP DXPOP CXPOP BXPOP AXIRET ;中断返回CODE ENDSEND START结果描述试验1:每按一次单脉冲,L0~L7依次发光。
《微型计算机接口技术》实验报告实验名称:可编程并行接口芯片8255应用(8255方式1、查询输出)姓名学号:班级:日期:广东外语外贸大学信息科学技术学院一、实验目的掌握8255方式1查询输入、输出时的使用及编程二、实验内容1、按照图示连接硬件(注意图中大多数线试验箱已经连好,只连接需要用户连接的部分,预习,参考PPT)2、编程:每按一次单脉冲按钮,ACK信号有效,8255内部输出准备好状态有效(INTR),查询输出一次数据,点亮、熄灭相应的发光二极管。
三、实验原理(8255方式1输出:结合结构图、时序图、状态字描述)8255是一片可编程并行I/O接口芯片,每片8255有两个8位的并行口(PA,PB)和两个4位并行口(PC的高、低四位),其中PA口可工作于方式0,1,2。
PB口工作于方式0,1。
PC口仅能工作于方式0。
在方式1中,将8255的三个端口分为了A、B两组,PA、PB两个口仍作为数据输入/输出口,而PC口则作为两部分,分别作为PA、PB口的联络信号。
8255A 方式1 A口输出过程由CPU响应中断开始,在中断中用OUT指令通过8255A 向外设输出数据,发出WR 信号;WR上升沿清除INTRA 中断请求信号,且使OBFA =“L”(有效),通知外设取数;当外设接受数据后,发出ACKA 应答信号,一方面使OBFA=“H”(无效),另一方面在ACKA信号的上升沿使INTRA=“H”(有效),以此向CPU发出新的中断请求,开始下一轮输出。
四、硬件设计及方案论证(完整图的信号线连接及作用:数据、地址、控制及外设线)硬件设计如图,其中:1.8255芯片中的数据总线D0—D7是和CPU的数据线直接相连的,从而CPU可以向8255发送命令、数据和8255芯片也可以向CPU发送状态、数据等等。
2.8255芯片中的A0和A1也是与CPU的地址总线直接相连,并且在控制字在以下几种情况有不同的设置,若A1A0= 00时,8255芯片中的PA口被选中,若A1A0=01时,8255芯片中的PB口被选中,若A1A0=10时,8255芯片中的PC口被选中,若A1A0=11时,则8255芯片的控制口被选中。
实验七8255 并行I/O扩展实验一、实验要求利用8255 可编程并行口芯片,实现输入、输出实验,实验中用8255PA 口作读取开关状态输入,8255PB 口作控制发光二极管输出。
二、实验目的1、了解8255 芯片结构及编程方法。
2、了解8255 输入、输出实验方法。
三、实验电路及连线1、Proteus 实验电路2、硬件验证实验硬件连接表四、实验说明1、8255A 芯片简介:8255A 可编程外围接口芯片是INTEL 公司生产的通用并行接口芯片,它具有A、B、C 三个并行接口,用+5V 单电源供电,能在以下三种方式下工作:方式0:基本输入/ 输出方式方式l:选通输入/ 输出方式方式2:双向选通工作方式2、使8255A 端口A 工作在方式0 并作为输入口,读取Kl-K8 个开关量,PB 口工作在方式0作为输出口。
五、实验程序流程图六、实验步骤1、Proteus 仿真a.在Proteus 中打开设计文档8255_STM.DSN;b.建立实验程序并编译,仿真;c.如不能正常工作,打开调试窗口进行调试。
参考程序:CODE SEGMENTASSUME CS:CODEIOCON EQU 8006HIOA EQU 8000HIOB EQU 8002HIOC EQU 8004H START:MOV AL,90HMOV DX,IOCONOUT DX,ALNOPSTART1:NOPNOPMOV AL,0MOV DX,IOAIN AL,DXNOPNOPMOV DX,IOBOUT DX,ALJMP START1 CODE ENDSEND START2、实验板验证a.通过USB 线连接实验箱b.按连接表连接电路c.运行PROTEUS 仿真,检查验证结果。
图一、产生500us方波图二、按键控制LED亮
图三、流水灯依次点亮4、实验程序流程框图和程序清单
程序一、
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP ZHP
ORG 0100H
MAIN: MOV DPTR, #03H
MOV A, #95H
MOVX @DPTR, A
MOV TMOD, #02H
SETB EA
SETB ET0
MOV TH0, #06H
图四、产生500us方波图五、按键控制LED亮
图六、流水灯依次点亮
6、实验总结
本次实验是使用8255扩展外部I/O口,在本次实验中,我认为最为重要的就是电路图的设计以及其地址的计算,在弄清楚该问题的情况下,本次实验就没有什么很大的问题了。
7、思考题
1、在8255PC口上外接8个发光二极管,利用8255PC口的置位/复位控制字控制其按某种规律变化。
程序三、
CJNE R1, #11H, ZHP。
实验六---8255并行输入输出一、实验目的1.了解并熟悉8255并行输入输出控制器的功能和工作原理;二、实验原理1.8255芯片介绍8255是一种常用的并行输入/输出接口芯片,可用于微处理机系统中的输入/输出控制输出,根据中文名可以看出,8255有三种工作方式即口A、口B和控制口。
8255所有的输入/输出都是双向的,它可以通过输入输出口的命令字来在不同的模式下工作。
在输出模式下,82555可以通过端口A、B控制外围设备的输出操作,在输入模式下,8255可以通过端口A、B实现对外围设备的输入操作。
控制口是用来控制8255写作模式或读作状态字,并对端口进行初始化操作。
8255在不同的模式下有不同的编程方法和操作方法,因此需要在实际应用中选择不同的工作模式。
8255有三个I/O端口A、B、C,每个端口都有8位。
这里解释一下控制端口的意义,地址为0B4H的控制端口是连续读或写8255内部状态寄存器的地址,而后面的一个读或写就表示读或写操作的类型,如果该端口被写入了“控制字”则8255按照控制字工作,否则会在该端口读出输入状态字。
在读或写操作的时候向控制端口写入的二进制数在图3-8中给出了。
表3-2:8255访问口定义地址口分类名称端口A0B0H输出Port A输入ControlCout端口Cin端口2.8255的编程方式方式0:即I/O挂接方式,这种方式下A、B、C三个端口为并行I/O口时,其与MCU的接线和编程方式与单片机内部I/O端口的连接和编程方式相同。
方式1:即输入输出口不一样。
在这种片内Ram中的地址空间0~7地址单元内写入相应的端口或方式的控制字后,该8255工作在相应的方式。
即:方式0:读出的是8位端口A的状态,写操作为将数据送到端口A;方式2:是把C口分配为两部分——高4位为输入,低4位为输出,它与方式1类似。
端口C的所有状态和很多控制功能都由C口寄存器存储。
方式2:“端口C字符型输入输出方式”,在这种方式下,端口C的8个位分成两部分,4个位作为输入的,4个位作为输出的。
实验五可编程并行接口(8255A)一.实验目的1.掌握8255A方式0的工作原理及使用方法二.实验内容1.按下面图4-1可编程并行口接口8255A电路连接线路,如下图所示:图4-1可编程并行口接口8255A2.编写程序,实现从PC口读入开关状态,然后在PA口输出开关状态。
编程可参考如下流程图:其中288H是8255A芯片的PA口地址。
三.编程提示1.PA口地址=(DC00H-280H)+288H=0DC08H,其余端口地址可依此类推。
下面是整个接口程序的参考源程序,请补充完整8255A并行口输出实验,8255A工作于方式0。
stack segment para stackX db 100 dup(?)stack endsdata segmentY db 100 dup(?)data endscode segment 'code'assume cs:code,ds:data,ss:stackstart: mov ax,datamov ds,ax____________ ;8255A初始化next: ___________ ;从PC口输入数据;从PA口输出数据__________以下语句是用于判断是否按下ESC键,如果按下则退出。
mov dl , 0ffHmov ah , 06Hint 21hjz next ;无键按下则继续从PC口读入数据mov ah , 4chint 21hcode endsend start2. 编译及运行将上述程序对应的工程建立在E:\wjyl\bxk目录下,编译、连接、构建后生成exe文件。
运行不能直接在WINXP系统下,必须在纯DOS系统下。
四.思考题1. 8255A的工作方式0的特点是什么?2.这个程序里有查询环节吗?如果有,作用是什么?。
XX学院实验报告实验名称姓名学号班级教师日期一、实验内容与要求1.1 实验内容本次实验分为如下2个子实验:(1)方式0练习实验:A,B口方式0输出,C口输入。
K0上推:16个LED灯从左到右流水。
K1上推:16个LED等从右向左流水。
K2上推:中间向两侧流水。
K3上推:两侧向中间流水。
(2)方式1练习实验:A口方式1输出,B口不用,C口控制口,每按KK1开关一下,LED灯流水一下,8次后程序结束。
1.2 实验要求本次实验中2个子实验的实验要求如下:(1)方式0练习实验:要求A,B口以方式0输出,并且C口输入。
当K0上推的时候,16个LED灯从左到右流水。
当K1上推的时候,16个LED等从右向左流水。
当K2上推的时候,16个LED灯从中间向两侧流水。
当K3上推的时候,16个LED灯从两侧向中间流水;(2)方式1练习实验:要求A口以方式1输出,C口作为控制口。
要求每当按KK1开关一下,LED灯流水一下,按8次后程序结束。
二、实验原理与硬件连线2.1 实验原理I/OPA7-PA0I/OPC7-PC4I/OPC3-PC0I/OPB7-PB0D0-D7图3-1 8255内部结构及外部引脚图并行接口是以数据的字节为单位与I/O设备或被控制的对象之间传递信息。
CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。
8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式0—基本输入/输出方式、方式1—选通输入/输出方式、方式2—双向选通工作方式。
8255的内部结构及引脚如图3-1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图3-2所示。
15 1 0 16 1 1 07 1 1 1图3-2 8255控制字格式8255实验单元电路图如图3-3所示:RD CS A1A0PC7PC6PC5PC4PC0PC1PC2PC3PB0PB1PB2PB3PB4PB5PB6PB7D7D6D5D4D3D2D1D0RST WR PA7PA6PA5PA4图3-3 8255实验单元电路图2.2 硬件连线(1) 方式0练习实验:8255单元中D0~D7分别与系统总线的XD0~XD7相连,A0~A1分别与系统总线的XA1~XA2相连,WR 、RD 、CS 分别与系统总线的IOW#、IOR#、IOY0(0600H)相连,PA0~PA7分别与开关及LED 显示单元的D0~D7相连,PB0~PB7分别与开关及LED 显示单元的D8~D15相连,PC0~PC3分别开关及LED 显示单元的K0~K3相连。
可编程并行接口实验(8255A方式1)
实验目的
掌握8255A工作方式1的使用方法;
进一步掌握编写中断服务程序的方法。
实验内容
1.8255A选通行输出实验,具体要求:
(1)设置8255A的A 口工作在方式1输出;
(2)每按一次单脉冲按钮产生一个正脉冲使8255A产生一次中断;
(3)设计中断服务程序:依次输出01H,02H,04H,08H,10H,20H,40H,80H。
使L0—L7依次发光。
2.8255A选通行输入实验,具体要求:
(1)设置8255A的A 口工作在方式1输入;
(2)每按一次单脉冲按钮产生一个正脉冲使8255A产生一次中断;
(3)设计中断服务程序:读取开关表示的ASCII码,在屏幕上显示其对应的字符。
实验连线
1实验内容1连线
(1)8255A芯片的A口PA7~PA0连发光二极管L7~L0;
(2)PC3连接IRQ;
(3)PC6连接单脉冲发生器。
2实验内容2连线
(1)8255A芯片的A口PA7~PA0连逻辑开关K7~K0;
(2)PC3连接IRQ;
(3)PC4连接单脉冲发生。
流程图
这是试验2的流程图,实验1相似
实验代码
试验2的代码是在试验1的代码基础上稍作改动,这里只列出试验2的代码:
ASSUME CS:CODE,DS:DATA
DATA SEGMENT ;数据段定义
IOPORT EQU 5400H-280H
IOPORT_CENT EQU 5000H ;9054芯片的I/O起始地址
MASKZ EQU 0FBH ;8259A主片屏蔽码
MASKC EQU 0F7H ;8259A从片屏蔽码
INTNUM DW 0 ;保存ES的定义量
INTNUMSE DW 0 ;保存BX的定义量
DA TA ENDS
STACK1 SEGMENT STACK ‘STACK1’
DB 50 DUP(?)
STACK1 ENDS
CODE SEGMENT ;代码段定义
START:
MOV DX,IOPORT+28BH ;根据实验连线,此次实验控制口为540BH MOV AL,0B0H ; 设置8255A的控制关键字(设置成方式1,端口A输入) OUT DX,AL
CLI ;关中断
MOV DX,IOPORT_CENT+68H ;设置9054芯片使能寄存器
IN AX,DX
OR AX,0900H
OUT DX,AX
;得到原中断向量并保存
MOV AH,35H ;取中段向量
MOV AL,73H ;针对本台计算机查表得出中断类型号为73H
INT 21H
MOV INTNUMSE,BX ;保存BX
MOV AX, ES ;保存ES
MOV INTNUM, AX
;设置新中断向量
MOV AX,CS
MOV DS,AX
MOV DX,OFFSET INTPROC ;设置新的中断向量
MOV AL,073H
MOV AH,25H
INT 21H
;设置中断屏蔽寄存器
IN AL,21H ;8259A主片的中断屏蔽寄存器端口地址为21H
AND AL,MASKZ ;中断屏蔽寄存器中主片相应位置1,本实验中第三位置1 OUT 21H,AL
IN AL,0A1H ;8259A从片的中断屏蔽寄存器端口地址为0A1H
AND AL,MASKC
OUT 0A1H,AL ;中断屏蔽寄存器中从片相应位置1,本实验中第四位置1 STI ;开中断
MOV AL,00001001B ;设置PC4为1
MOV DX,IOPORT+28BH
OUT DX,AL
OUTER:
MOV AH,01H ;判断是否有任意键按下
INT 16H
JZ OUTER ;没有键按下程序重复
MOV AX, INTNUM ;恢复原中断向量
MOV DS,AX
MOV DX, INTNUMSE
MOV AL,073H
MOV AH,25H
INT 21H
;恢复中断屏蔽寄存器
IN AL,21H
OR AL,04H
OUT 21H,AL
IN AL,0A1H
OR AL,08H
OUT 0A1H,AL
MOV DX,IOPORT_CENT+68H ;关闭9054
IN AX,DX
OR AX,0F6FFH
OUT DX,AX
MOV AH,4CH ;有键按下,程序结束,返回DOS界面
INT 21H
;中断服务子程序
INTPROC:
PUSH AX ;寄存器入栈保护
PUSH BX
PUSH CX
PUSH DX
PUSH DS
STI ;开中断
MOV CX,0FFFFH
H: LOOP H
MOV DX,IOPORT+288H ;A口输入
IN AL,DX
MOV DL,AL ;输出开关所对应的字符
MOV AH,02H
INT 21H
MOV AL,20H ;发出EOI结束中断
OUT 20H,AL
OUT 0A0H,AL
CLI ;关中断
POP DS ;寄存器出栈
POP DX
POP CX
POP BX
POP AX
IRET ;中断返回
CODE ENDS
END START
结果描述
试验1:每按一次单脉冲,L0~L7依次发光。
试验2:每按一次单脉冲,读取开关表示的ASCII码,在屏幕上显示其对应的字符。