实验十三 可编程并行接口8255A芯片实验
- 格式:doc
- 大小:1.43 MB
- 文档页数:5
实验三 8255A接口实验一、实验目的掌握通过8255A并行口传输数据的方法,以控制发光二极管的亮与灭。
二、实验内容用8255作输出口,控制十二个发光二极管燃灭,模拟交通灯管理。
三、程序框图四、实验电路五、编程提示①通过8255A控制发光二极管PB3、PB0、PA5、PA2对应黄灯,PB1、PA6、PA3、PA0对应红灯,PB2、PA7、PA4、PA1对应绿灯,以模拟交通路灯的管理。
②要完成本实验,必须先了解交通路灯的亮灭规律,没有一个十字路口1、3为南北方向,2、4为东西方向,初始状态为四个路口的红灯全亮。
之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车。
延时一段时间后,1、3路口的绿灯熄灭,而1、3路口的黄灯开始闪烁,闪烁若干次以后,1、3路口红灯亮,而同时2、4路口的绿灯亮,2、4路口方向通车,延时一段时间后,2、4路口的绿灯熄灭,而黄灯开始闪烁,闪烁若干次以后,再切换到1、3路口方向,之后,重复上述过程。
③程序中设定好8255A的工作模式,及三个端口均工作在方式0,并处于输出状态。
④各发光二极管共阳极,使其点亮应使8255A相应端口的位清0。
六、实验步骤(1)按实验电路图连接线路:8255A PAO—L15 PA1—L14 PA2—L13 PA3—L11PA4—L10 PA5—L9 PA6—L7 PA7—L6PBO—L5 PB1—L3 PB2—L2 PB3—L1(2)运行实验程序L1~L12发光二极管模拟交通灯显示。
七、实验程序;----------------8255A并行口实验(3) 控制交通灯----------------CODE SEGMENTASSUME CS:CODE,DS:CODE,ES:CODEORG 32F0HPA EQU 0FFD8HPB EQU 0FFD9HPC EQU 0FFDAHPCTL EQU 0FFDBHH3: MOV AL,88HMOV DX,PCTLOUT DX,AL ;MOD:0,MOV DX,PAMOV AL,0B6HOUT DX,ALINC DXMOV AL,0DHOUT DX,ALCALL DELAY1P30: MOV AL,75HMOV DX,PAOUT DX,ALINC DXMOV AL,0DHOUT DX,ALCALL DELAY1CALL DELAY1MOV CX,08HP31: MOV DX,PAMOV AL,0F3HOUT DX,ALINC DXMOV AL,0CHOUT DX,ALCALL DELAY2MOV DX,PAMOV AL,0F7HOUT DX,ALINC DXMOV AL,0DHOUT DX,ALCALL DELAY2LOOP P31MOV DX,PAMOV AL,0AEHOUT DX,ALINC DXMOV AL,0BHOUT DX,ALCALL DELAY1CALL DELAY1MOV CX,08H P32: MOV DX,PAMOV AL,9EHOUT DX,ALINC DXMOV AL,07HOUT DX,ALCALL DELAY2MOV DX,PAMOV AL,0BEHOUT DX,ALINC DXMOV AL,0FHOUT DX,ALCALL DELAY2LOOP P32JMP P30 DELAY1: PUSH AXPUSH CXMOV CX,0030H DELY2: CALL DELAY2LOOP DEL Y2POP CXPOP AXRETDELAY2: PUSH CXMOV CX,8000HLOOP $POP CXRETCODE ENDSEND H3运行实验程序:在系统“P.”状态时,输入32F0,按EXEC键,L1~L12发光二极管模拟交通灯显示。
第 6 章可编程并行I/O接口8255A案例6.1:8255读取并显示开关状态1)要求:正确设定8255A并行端口的工作方式,设计电路并编制程序,实现将PB口的开关状态通过PA口的发光二极管显示出来。
2)目的:通过了解8255A芯片引脚的内部结构,掌握输入输出的实验方法,正确应用8255A的各个端口。
案例6.1实现——8255读取并显示开关状态1.实现过程设定8255A的PA口和PB口为方式0,并指定PB口所连接的开关为输入,PA口所连接的发光二极管为输出,通过编写程序,由8086CPU将PB口的开关状态读入并通过PA口输出,以显示开关的状态。
2.电路原理图的设计利用Proteus对本案例仿真连接如图 6.1所示。
该仿真电路以错误!未找到引用源。
作为基本的原理图。
采用74LS373作为地址锁存器保存端口地址,对于8255A的片选信号CS直接接地使其处于有效状态。
在程序中设定PB 为输入端口,PA为输出端口。
电路将8个开关的状态通过8255A的PB口送入CPU,经过处理后,将数据从8255A的PA送出到发光二极管进行显示。
例如,若开关k0处于闭合状态,则发光二极管D1应处于发光状态。
图 6.1 8255A读取开关状态并显示仿真效果图3.案例汇编程序设计该案例中所使用的程序代码如下所示。
CODE SEGMENT 'code'ASSUME CS:CODESTART: ;假设A口、B口、C口及控制端口地址分别为:20H, 22H, 24H, 26H MOV AL,82H ;控制字,1 0000 010,A口输出(初始输出全为0),B口输入OUT 26H,AL ;送控制端口N: IN AL,22H ;从B口读入OUT 20H,AL ;从A口输出JMP NCODE ENDS案例6.2:8255A实现键盘接口1)要求:正确设定8255A并行端口的工作方式,设计电路并编制程序,利用PC口的高4位和低4位实现键盘的扫描,并利用数码管显示对应键值。
8255并口实验8255A并行口实验(一)目的1. 掌握8255A和微机接口方法。
2. 掌握8255A的工作方式和编程原理。
8255A并行口实验(一)内容1、实验原理如实验原理图5-8所示,PC口8位接8个开关K1~ K8,PB口8位接8个发光二极管,从PC口读入8位开关量送PB口显示。
拨动K1~ K8,PB口上接的8个发光二极管L1~ L8对应显示K1~ K8的状态。
图5-82、实验线路连接(1)8255A芯片PC0~ PC7插孔依次接K1~ K8。
(2)8255A芯片PB0~PB7插孔依次接L1 ~ L8。
(3)8255A的CS插孔接译码输出070H-07FH插孔。
3、实验步骤(1) 按图5-8连好线路。
(2) 运行实验程序。
在系统显示"DVCC-86H"状态下,按任意键,显示器显示"-"。
按GO键,显示"1000 XX"输入F000 :B160再按EXEC键,在DVCC-8086H显示上显示器"8255-1",同时拨动K1~K8,L1~L8会跟着亮灭。
CODE SEGMENTASSUME CS:CODEIOCONPT EQU 0073HIOCPT EQU 0072HIOBPT EQU 0071HCONTPORT EQU 00DFHDA TAPORT EQU 00DEHDA TA1 EQU 0500HSTART: JMP IOLEDIOLED: CALL FORMA TCALL LEDDISPMOV AL,89HMOV DX,IOCONPTOUT DX,ALNOPNOPNOPIOLED1: MOV DX,IOCPTIN AL,DXMOV DX,IOBPTOUT DX,ALMOV CX,0FFFFHDELAY: LOOP DELAYJMP IOLED1LEDDISP:MOV AL,90HMOV DX,CONTPORTOUT DX,ALMOV BYTE PTR DS:[0600H],00LED1: CMP BYTE PTR DS:[0600H],07H JA LED2MOV BL,DS:[0600H]MOV BH,0HMOV AL,CS:[BX+DA TA1]MOV DX,DA TAPORTOUT DX,ALADD BYTE PTR DS:[0600H],01HJNZ LED1LED2: RETFORMA T: MOV BX,0MOV WORD PTR DS:[BX+0500H],4006HADD BX,2MOV WORD PTR DS:[BX+0500H],4040HADD BX,2MOV WORD PTR DS:[BX+0500H],6D6DHADD BX,2MOV WORD PTR DS:[BX+0500H],7F5BHRETCODE ENDSEND START8255A并行口实验(二)目的掌握通过8255A并行口传输数据的方法,以控制发光二极管的亮与灭。
8255A并行口实验㈠方波硬件实验一8255A并行口实验(1) 方波CODE SEGMENT ASSUME CS:CODE,DS:CODE,ES:CODEORG 32C0HH1: JMP STARTP1PA EQU 0FFD8HPB EQU 0FFD9HPC EQU 0FFDAHPCTL EQU 0FFDBH STARTP1:MOV DX, PCTLMOV AL, 80HOUT DX , ALMOV AL, 55HP11: MOV DX, PAOUT DX, ALINC DXOUT DX, ALINC DXOUT DX, ALMOV CX, 0800HLOOP $NOT ALJMP P11CODE ENDSEND H1实验目的掌握可编程I/O接口芯片8255的接口原理使用,熟悉对8255初始化编程和输入、输出软件的设计方法。
实验内容在8255A.B.C口用示波器测出波形。
实验步骤⑴在系统处于“P.”状态时,输入程序入口地址32C0,按EXEC 键,系统显示执行提示符“「”。
⑵用示波器观察8255 A.B.C口波形。
8255A并行口实验㈡PA输入、PB输出实验目的⑴掌握8255A和微机接口方法。
⑵掌握8255A的工作方式和编程原理。
实验内容用8255 PA作开关量输入口,PB作输出口。
编程提示8255A芯片简介8255A可编程外围接口芯片是Intel公司生产的通用并行接口芯片,它具有A、B、C三个并行接口,用+5V电源供电,能在以下三种方式下工作:方式0:基本输入/输出方式方式1:选通输入/输出方式方式2:双向选通工作方式使8255A端口A工作在方式0并作为输入口,读取K1—K8八个开关量,送PB口显示。
PB口工作在方式0作为输出口。
实验步骤⑴按实验电路图连接线路:①8255A芯片A口的PA0~PA7依次和开关量输入插孔K1~K8相连。
②8255A芯片B口的PB0~PB7依次接L1~L8⑵运行实验程序。
并行接口8255实验一、实验目的1.掌握可编程并行接口电路8255的工作原理及初始化方法2.掌握8255在实际应用中的硬件连接及编程应用二、实验要求根据实验室现有条件,针对实验任务,设计实验方案并进行实现三、实验内容通过使用8255,8253实现一个倒计时设备,具体的方法是,用户逐个打开开关,然后8255定时读取开关状态并输出给二极管,当所有灯都亮起时,输出一个高电平给Gate0,对8253而言,要求每1s查看一次用户是否摁下了所有开关,一旦是这样蜂鸣器就会响起来,然后给8253送一个锁存命令,查看计数器1和计数器0当前的计数值,锁存两个计数值,便于后期的计算和数据处理。
四、实验线路图其中,8255的各个端口分别是:F0H,F2H,F4H,F6H 8253的各个端口分别是:F8H,F9H,FAH,FBH 五、实验程序清单CSEG SEGMENTASSUME CS:CSEGSTART:;初始化8255和8253MOV DX,F6HMOV AL,1001000BOUT DX,ALMOV DX,FBHMOV AL,01110110BOUT DX,ALMOV AL,00110110B;选择8253计数器1MOV DX,F8HMOV AL,0OUT DX,ALMOV AL,10OUT DX,AL;选择8253计数器0MOV DX,FGHMOV AL,0OUT DX,ALMOV AL,10MOV CX,2000H;用CX延时,读取开关状态 NEXT:OUT DX,ALMOV DX,F2HIN DX,AL;输出开关状态,此时亮起灯,如果灯全亮起,蜂鸣器响起MOV DX,F4HOUT DX,ALLOOP NEXT;锁存两个计数器的计数值MOV AL,00110110BMOV DX,F8HOUT DX,ALMOV AL,01110110BMOV DX,F9HOUT DX,ALCSEG ENDSEND START六、实验总结及体会1.实验总结:本次实验中我设计了8086连接8253和8255的相关电路,并且与输出设备相连接,也重新复习了数电的知识,通过学习微机原理和汇编语言这门接近底层的语言我意识到代码与底层的交互是怎样实现的,也有利于我学习其他的高级语言。
实验七可编程并行接口芯片8255A的使用1一、实验目的了解可编程并行接口芯片8255的内部结构、工作方式、初始化编程及应用。
二、实验设备(1)显示器、鼠标、键盘各一件;(2)QTH-2008PC 32位微机教学实验仪一套。
三、实验说明1、8255A的内部结构:(1)数据总线缓冲器:这是一个双向三态的8位数据缓冲器,它是8255A与微机系统数据总线的接口。
输入输的数据、CPU输出的控制字以及CPU输入的状态信息都是通过这个缓冲器传送的。
(2)三个端口A,B和C:A端口包含一个8位数据输出锁存器和缓冲器,一个8位数据输入锁存器。
B端口包含一个8位数据输入/输出锁存器和缓冲器,一个8位数据输入缓冲器。
C端口包含一个8位数据输出锁存器及缓冲器,一个8位数据输入缓冲器(输入没有锁存器)。
(3)A组和B组控制电路:这是两组根据CPU输出的控制字控制8255工作方式的电路,它们对于CPU而言,共用一个端口地址相同的控制字寄存器,接收CPU输出的一字节方式控制字或对C口按位复位字命令。
方式控制字的高5位决定A组工作方式,低3位决定B 组的工作方式。
对C口按位复位命令字可对C口的每一位实现置位或复位。
A组控制电路控制A口和C口上半部,B组控制电路控制B口和C口下半部。
(4)读写控制逻辑:用来控制把CPU输出的控制字或数据送至相应端口,也由它来控制把状态信息或输入数据通过相应的端口送到CPU。
2、8255A的工作方式:方式0—基本输入输出方式;方式1—选通输入输出方式;方式2—双向选通输入输出方式。
3、8255A的控制字:图1 8255A方式控制字图2 C口按位置位/复位控制字四、实验原理图图3 可编程并行接口8255电路五、实验内容流水灯实验:利用8255的A口、B口循环点亮发光二极管。
六、实验步骤(1)实验连线该模块的WR、RD分别连到PC104总线接口模块的IOWR、IORD。
该模块的数据(AD0~AD7)、地址线(A0~A7)分别连到PC104总线接口模块的数据(D0~D7)、地址线(A0~A7)。
微机原理实验报告实验名称8255可编程并行接口实验一、实验目的1、掌握8255芯片结构及工作方式,2、熟悉8255并行口扩展的编程。
二、实验设备1、Lab6000p实验教学系统;2、IBM-PC机三、系统中的8255模块Lab6000p实验箱中的8255模块连线如下图所示:图1 8255模块的连线AD0~AD7、A0、A1、RESET、/WR、/RD已分别连至系统总线DB0~DB7、AB0、AB1、RESET、/IOW、/IOR;8255_CS、PA口、PB口、PC口引出留给用户连接。
三、实验内容和实验步骤1、8255基本输入输出方式――开关控制LED显示1)实验要求开关拨上LED亮,开关拨下LED灭。
2)电路连接图2 电路连接图8255_CS连至地址译码/CS0,PA口连至LED电平显示模块,PB口连至开关电路。
3)程序框图图4 程序框图4)程序代码见附录程序2.15)实验步骤1、在Lab6000p实验箱上完成连接电路;2、开启计算机电源,开启Lab6000p实验箱电源;3、启动WAVE6000软件;4、确认WAVE6000与Lab6000p连接;5、输入源代码;6、编译源代码(F9);7、单步运行源代码(F8),观察每条指令执行结果;8、连续运行程序,上下拨动开关观察LED显示情况。
2、8255选通输入方式――开关控制LED显示1)实验要求开关上的逻辑信号在选通信号有效时读入微处理器,并送到LED显示。
2)电路连接将选通信号(单脉冲)接到PC2,其余连线和实验1中的相同。
3)程序框图图5 程序框图4)程序代码见附录程序2.25)实验步骤1、在Lab6000p实验箱上完成连接电路;2、开启计算机电源,开启Lab6000p实验箱电源;3、启动WAVE6000软件;4、确认WAVE6000与Lab6000p连接;5、输入源代码;6、编译源代码(F9);7、单步运行源代码(F8),观察每条指令执行结果;8、连续运行程序,上下拨动开关观察LED显示情况。
实验十三可编程并行接口8255芯片实验
一、实验目的
1、了解8255芯片的结构和功能。
2、掌握8255初始化程序的设计方法。
3、学会8255和CPU信号的连接方法。
二、电路逻辑图
三、实验内容
第一题:
由8255A的A接口输出数据,驱动4个LED,使其顺序显示0--F的二进制状态,每个状态保持1秒钟。
源程序:
CODE SEGMENT
ASSUME CS:CODE
START:MOV DX,283H;向8255送控制字MOV AL,80H
OUT DX,AL
MOV CX,16;设置计数次数
MOV AL,00H;设置初始显示值L1:MOV DX,280H;A口输出
OUT DX,AL
CALL DELAY;延时1秒
INC AL;显示状态加1
LOOP L1;16次循环
MOV AH,4CH
INT 21H
DELAY PROC NEAR;1秒延时子程序PUSH CX
MOV BX,299H
FOR1:MOV CX,0FFFFH FOR2:LOOP FOR2
DEC BX
JNZ FOR1
POP CX
RET
DELAY ENDP
CODE ENDS
END START
第二题:
用8255方式1将4位开关量设置的二进制数由B口选通输入CPU,3秒钟后由A口选通输出送LED显示。
要求通过对状态字IBFB和OBFA的测试来控制程序运行。
STBB和ACKA 由消抖电路产生。
源程序:
CODE SEGMENT
ASSUME CS:CODE
START:MOV DX,283H;向8255送控制字
MOV AL,0A6H
OUT DX,AL
MOV DX,282H;读C口状态字,检测IBF
L1: IN AL,DX
AND AL,02H;和02H相与
JZ L1;为高时数据已锁存,向下继续
MOV DX,281H;读B口数据AGAIN:IN AL,DX
CALL DELAY;延时3秒
MOV DX,280H;通过A口输出
OUT DX,AL
MOV DX,282H;读C口状态
L2: IN AL,DX
AND AL,80H;检测OBF,为高说明ACK 信号已有,可返回主程序
JZ L2
MOV AH,4CH
INT 21H
DELAY PROC NEAR;延时3秒程序
PUSH CX
MOV BX,399H FOR1:MOV CX,0FFFFH FOR2:LOOP FOR2
DEC BX
JNZ FOR1
POP CX
RET DELAY ENDP CODE ENDS
END START
选做题一:
用8255A芯片设计一个输出接口,从键盘输入0~F的任意一个字符后,LED显示相应的值。
源程序:
CODE SEGMENT
ASSUME CS:CODE
START:MOV CX,16;设置循环次数
L1: MOV AH,01H;调用1号功能
INT 21H
CMP AL,39H;输入的数和39H比较
JBE NEXT;不大于则跳转
SUB AL,07H;大于要减去7H NEXT: SUB AL,30H;减去30H得到对应的数MOV BL,AL;存到BL中
MOV DX,283H;向8255送控制字
MOV AL,80H
OUT DX,AL
MOV AL,BL
MOV DX,280H;A口输出
OUT DX,AL
CALL DELAY;延时1秒
LOOP L1;16次循环
MOV AH,4CH
INT 21H
DELAY PROC NEAR;1秒延时子程序PUSH CX
MOV BX,299H
FOR1:MOV CX,0FFFFH
FOR2:LOOP FOR2
DEC BX
JNZ FOR1
POP CX
RET
DELAY ENDP
CODE ENDS
END START
选做题二:
用8255A芯片设计一个输入接口,将四位开关量的值显示在屏幕上。
源程序;
DATA SEGMENT
TABLE DB '0','1','2','3','4','5','6','7'
DB '8','9','A','B','C','D','E','F'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV CX,5;设置循环次数
NEXT:MOV DX,283H;向8255送控制字
MOV AL,0A6H
OUT DX,AL
MOV DX,282H;读C口状态字,检测IBF L1: IN AL,DX
AND AL,02H;和02H相与
JZ L1;为高时数据已锁存,向下继续
MOV DX,281H;读B口数据
IN AL,DX
CALL DELAY;延时3秒
MOV AH,0;屏蔽高四位
MOV SI,AX;送入SI中
MOV DL,[SI];把对应数值存入DL
MOV AH,02H;调用2号功能
INT 21H
LOOP NEXT
MOV AH,4CH
INT 21H
DELAY PROC NEAR;延时3秒程序
PUSH CX
MOV BX,199H
FOR1:MOV CX,0FFFFH
FOR2:LOOP FOR2
DEC BX
JNZ FOR1
POP CX
RET
DELAY ENDP
CODE ENDS
END START
选做题三:
用8255A芯片设计一个输入接口,当开关来回扳动一次后在屏幕上显示“1”,下一次来回扳动后在屏幕上显示“2”,……。
源程序:
CODE SEGMENT ASSUME CS:CODESTART:
MOV CX,5;设置循环次数
MOV BL,31H
NEXT: MOV DX,283H;向8255送控制字
MOV AL,0A6H
OUT DX,AL
MOV DX,282H;读C口状态字,检测IBF
L1: IN AL,DX
AND AL,02H;和02H相与
JZ L1;为高时数据已锁存,向下继续
MOV DX,281H;读B口数据
IN AL,DX
CALL DELAY;延时3秒
MOV DL,BL;把对应数值存入DL
MOV AH,02H;调用2号功能
INT 21H
INC BL;BL加1
LOOP NEXT
MOV AH,4CH
INT 21H
DELAY PROC NEAR;延时3秒程序
PUSH CX
PUSH BX
MOV BX,199H FOR1:MOV CX,0FFFFH FOR2:LOOP FOR2
DEC BX
JNZ FOR1
POP BX
POP CX
RET DELAY ENDP CODE ENDS
END START
四、实验总结
本次实验我们主要学习了8255A芯片的相关知识,,首先要弄清楚它的内部构造,各个端口的作用,以及8255A的几种方式选择控制字的功能,接下来是实验电路的连接。
在编写程序时积极动脑,根据题目要求,适当利用前面所学内容,如调用DOS功能等,编写起来还是挺简单的,关键是出现问题要细心耐心调试,有时候一个小小的分号就能导致整个程序不能成功运行。