微机接口 8255并行接口实验报告
微机原理8255实验报告

四、 实验过程中遇到的问题:在第一次编写完成后,我们调试失败了,通 过检查,发现程序有一个指令编写错误,纠正后,程序仍然编译失败, 连续好几次都没有成功,后来通过向同学请教,发现我们在改正之前没 有进行复位,导致错误没有纠正,按照正确的过程改正后,终于调试成 功了,我们看到随着电脑屏幕上的程序一条条执行,LED 灯准确地将开 关的状态输出,实验终于成功了。
微机原理与接口技术实验报告
姓名
学号
专业年级
实验题目
8255 并行接口实验
实验目的 实验内容
通过实验了解 8255 的工作原理,并在实验中熟悉 8255 的初始化编程,巩固学
习的理论知识,将理论转化为实践。
实验题 1 编写程序,使得逻辑电平开关的变化在发光二极管上显示出来。即当 开关 ki 置于 L 时,对应发光二极管 LEDi 点亮;置于 H 时熄灭
实验题 2 编写程序,使得当开关 k1 置于 L 时,LED1~LED2 皆亮; k1 置于 H 时, LED1~LED2 皆灭
实验分析
一、首先按照以下的实验连线将电路连接好: CS8255 CS0 PA0~PA1 开关 K1~K2 PB0~PB1 发光二极管 LED1~LED2
二、(打开实验箱电源)PC 机运行 8086 调试软件 TECH86---串口 COM3 或 COM4—PREST 键 编辑程序,单步运行,调试程序 调试通过后,全速运行程序,观看实验结果
start
实验二:
assume cs:code
code segment public
org
实验二_8255并行接口应用实验

实验二_8255并行接口应用实验一、实验目的1. 熟悉8255并行接口的功能和应用。
2. 掌握8255并行接口的控制字的含义和编写方法。
3. 熟悉并行接口的IO读写操作。
二、实验仪器1. PC机2. AT8051开发板4. 其他配件线路三、实验原理8255芯片是Intel公司提供的一种通用并行接口芯片。
它可以实现外围设备、传感器的控制、数据的输入/输出等功能,是一种非常实用的通用接口芯片。
8255是一个三端口、24线单片并行接口芯片,它可以直接连接CPU总线或I/O总线,采用AHB (AMBA High-Performance Bus)总线。
总线与8255之间的通讯方式采用输入/输出端口的方式,在CPU访问8255时,必须指定8255的端口地址。
CPU在访问8255时,AV(地址有效)为高电平,同时CS和RD为有效低电平。
8255所使用的端口地址由登录的端口号选择器(P0、P1、P2)决定。
8255的主要特点:a. 具有3个通用I/O端口,每个端口有8位,共有24条I/O线。
b. 可以通过外部信号线与中间件或总线连接。
c. 具有3种基本工作方式:安装、双向缓冲装置和输入输出方式。
d. 为减少芯片引脚数,端口地址用地址寄存器低端口号器(P0,P1)来指定。
端口的寄存器编号可以选择0或1。
e. 以可编程方式控制I/O端口。
f. 内接有二进制计数器,可用于计时和计数应用。
2. 编程实现原理本次实验中,我们将用8051的C语言编程,控制8255进行I/O读写操作。
在编程时,我们将根据需要设置8255的控制字,并利用控制字来控制8255的输入输出。
同时,在控制8255的I/O读写操作中,我们还需将相应的端口地址赋值给端口指针,以实现读写操作。
3. 硬件连接我们将在AT8051开发板上搭建实验电路,具体如下:a. 8255芯片的输入输出口A、B、C分别连接到LED灯,以控制LED灯的开关状态。
b. AT8051开发板的P0、P1、P2分别连接到8255的A1、A0、CS/WR、RD/CS口线,以进行8255的读写操作。
微机接口实验报告8255并口控制器实验

微机接口实验报告8255并口控制器实验8255并口控制器实验一.实验目的:1,掌控8255的工作方式和应用领域编程;2,掌控8255的典型应用领域电路三相。
二.实验设备pc微机一台,td―pit+实验系统一套。
三.实验内容:编写程序,并使8255的a口味输入b口为输出,顺利完成敲击控制器至数据等的数据传输。
建议:只要敲击控制器,数据灯的现实就可以发生改变。
四.实验原理:并行接口就是以数据的字节为单位与i/o设备或被掌控对象之间传输信息。
cpu和USB之间的数据传输总是循序的。
8255并行控制器具有abc三个并行接口,用+5v但电源供电,能在一下三种方式下工作:方式一:基本输出|出来方式方式二:选道输出|出来方式方式三:双向选项工作方式五.实验步骤:1.证实从pc着急带出的两根扁平电缆已经相连接在实验平台上。
2.相连接实验先例参照右图:3.运行check成功内需,查看i/o空间始地址。
4.利用查出的地址编写程序,然后便于链接。
5.运行程序,拨动开关,看数据灯显示是否正确。
六.编程与调试:1.使用ckeck程序找到ioyo空间始址:dcooh2.编写程序:ioyoequodcoohaaequioyo+0*4bbequioyo+1*4ccequioyo+2*4modeequioyo+1*4stack1seqme ntstackdw256dup(?)stack1endscodeseqmentassumecs:code,ss:stack1stack:movbx,odcoohnext:movdx,bbinal,dxoutdx,almovah,1in t16hjznextmovah,40hint21hcodeendsendsstart3.编程,链接,运转程序七.实验结果:运转程序后,数据灯随着控制器的变化而变化,即为控制器拨打时,数据灯亮,控制器断裂时,数据灯攻灭。
八.实验总结:通过本次实验,对8255并口控制器存有了一定的介绍,掌控了掌控8255的工作方式和应用领域编程,掌控8255的典型应用领域电路三相。
微机接口技术实验报告并行接口实验

微机接口技术实验报告并行接口实验系别: 计算机科学与技术完成时间:2012-5-15一、实验目的1.熟悉并行接口电路;2.掌握8255并行接口芯片及8253定时器的应用及其编程技术。
二、实验内容及要求通过对8255芯片的编程,使得实验台上的步进电机按顺时针或逆时方向转动,同时扬声器(模拟电子琴)做高8度和低8度循环发音:1. 控制步进电机转动和电子琴发音;2.使用K0控制步进电机顺逆时针转动和电子琴发高低音;3.使用K1控制步进电机和电子琴速度(分快和慢两种速度);4.使用K2启动和停止步进电机转动和电子琴发音。
三、实验原理1、可编程并行芯片8255A并行接口即同时在多根I/O线上,以数据字节或字为单位实现CPU通过I/O端口与I/O 设备或被控制对象之间的信息传递,如计算机与打印机,A/D和D/A转换器,开关量接口等。
8255及其改进型8255A是最广泛应用的并行I/O接口。
8255A的主要性能参数如下:(1)8255A内共有4个端口,分别为口A、口B、口C和控制端口。
前三个端口为8位并行I/O端口,常用于传送数据信息;控制端口是用于接收CPU送来的控制命令,即控制字。
(2)8255A芯片可以三种不同的工作方式与I/O设备进行数据传输,具体方式由控制字来设定。
(3)8255与CPU之间交互信息可以使用中断方式进行。
它内部有三个中断源,分别产生与方式1(1个)和方式2(2个)中。
(4)8255A所有信号与TTL信号兼容,可直接与CPU的三总线连接使用。
(5)8255A使用单一的+5V电源,单项时钟。
8255A的三种工作方式:方式0——基本的输入/输出方式,方式1——选通的输入/输出方式,方式2——双向的输入/输出方式。
本次实验采用方式0,将口A和口B作为输出,分别控制步进电机的旋转和电子琴的发音,口C作为控制输入端。
根据端口编址及寻址方式,设定端口A的地址为288H,端口B地址为289H,端口C地址为28AH,控制端口的地址为28BH。
微机原理实验 可编程并行接口 8255 实验

2、8255A的工作方式:
方式0—基本输入输出方式;方式1—选通输入输出方式;方式2—双向选通输入输出方式
3、8255A的状态字:
图1可编程并行接口8255电路
五、实验电路及连线
1、流水灯实验:
(1)实验连线
该模块的WR、RD分别连到MCU主模块的WR、RD。
该模块的数据(AD0~AD7)、地址线(A0~A7)分别连到MCU主模块的数据(AD0~AD7)、地址线(A0~A7)。
8255模块选通线CS连到MCU主模块的地址A15。
8255的PA0~PA7连到发光二极管的L0~L7。
(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口下半部
(2) I/O输入输出实验:利用8255的A口读取开关状态,8255的B口把状态送发光二极管显示
四、实验原理
1、8255A的内部结构:
(1)数据总线缓冲器:这是一个双向三态的8位数据缓冲器,它是8255A与微机系统数据总线的接口。输入输的数据、CPU输出的控制字以及CPU输入的状态信息都是通过这个缓冲器传送的。
微机原理实验报告并口实验

微机原理实验报告——并口实验一、实验目的本实验旨在通过并口实验,了解和掌握微机原理中并口的基本原理、工作方式以及编程操作方法,通过实际操作并口实验,巩固并深化对微机原理的理解。
二、实验原理并口是微机原理中的一种常见的输入输出接口,并具有较高的灵活性和通信能力。
并口的基本结构包括数据寄存器和状态寄存器,通过使能信号对并口进行控制。
在并口实验中,通过编写相应的程序,实现将数据并行输入并通过并口输出的功能。
实验中主要使用的是8255芯片实现并口的控制。
三、实验器材1. IBM PC机或兼容机2. 8255芯片3. 连接线缆四、实验步骤1. 将8255芯片连接到计算机的并口接口,确保连接正确稳固。
2. 打开计算机并进入操作系统。
3. 编写并口控制程序。
在程序中,首先需要设置8255芯片为输出模式,然后通过与8255芯片对应的数据寄存器将需要输出的数据写入,并通过使能信号控制数据传输。
4. 运行编写好的程序,观察程序运行的结果。
五、实验结果与分析通过实验发现,在编写并口控制程序的过程中,需要正确设置8255芯片的工作模式和相应的寄存器,否则无法实现正确的数据传输。
其中,使能信号的控制也是关键的一步,通过正确的控制使能信号,才能实现数据的传输与输出。
六、实验总结通过本次并口实验,我们深入学习和掌握了微机原理中并口的基本原理和工作方式。
实验中我们了解到,在编写并口控制程序时需要对8255芯片的寄存器进行正确的设置,以确保数据传输和输出的正确性。
并口具有很高的灵活性和通信能力,能够广泛应用于各种数据输入输出的需求中。
然而,本次实验仅是对并口实验的基础性操作,实际应用中还需要根据具体需求进行更复杂的编程和控制。
为了更好地应用并口,建议在掌握基本操作的基础上,进一步学习并口的高级应用和相关技术。
最后,本次实验不仅提高了我们对微机原理的理解,也加深了我们对硬件与软件配合的理解。
通过实际动手实验,我们更加深入地理解了微机原理并口实验的基本原理与操作方法。
8255可编程并行接口(基本输入输出、动静态七段数码管、竞赛抢答器)微机原理实验报告

微机实验报告书学号: XXXXX 姓名: XXXXX 班级: XXXXX同组名单: XXXXXXXXX 实验日期: 5实验题目: 8255可编程并行接口实验目标: 1、掌握8255方式0的工作原理及使用方法。
2、进一步掌握中断处理程序的编写。
3、掌握数码管显示数字的基本原理。
4、了解微机化竞赛抢答器的基本原理。
实验步骤:实验一、 8255A的基本输入输出图1. 8255A的基本输入输出接线图实验步骤如下:(1)实验电路如图1,8255A的C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。
(2)编程从8255A的C口输入数据,再从A口输出。
实验二、七段数码管图2. 七段数码管接线图实验步骤如下:(1)静态显示:按图2(a)连接好电路,将8255A的A口PA0~PA6分别与七段数码管的段码驱动输入端a~g相连,位码驱动输入端S1接+5V(选中),S0、dP接地(关闭)。
编程从键盘输入一位十进制数字(0~9),在七段数码管上显示出来。
(2)动态显示:按图2(b)连接好电路,七段数码管段码连接不变,位码驱动输入端S1接+5V(选中),S0接8255A的C口的PC1。
编程在两个数码管上显示“56”。
实验三、竞赛抢答器图3. 竞赛抢答器电路图实验步骤如下:图3位竞赛抢答器(模拟)的原理图,逻辑开关K0~K7代表竞赛抢答按钮0~7号,当某个逻辑电平开关置“1”时,相当于某组抢答按钮按下。
在七段数码管上将其组号(0~7)显示出来。
程序框图:实验一:实验二:实验三:程序清单:;*************************;;* 8255A的基本输入输出 *;;*************************;IOPORT EQU0E400H-280HIO8255A EQU IOPORT+288HIO8255B EQU IOPORT+289HIO8255C EQU IOPORT+28AHIO8255K EQU IOPORT+28BHCODE SEGMENTASSUME CS:CODESTART:MOV DX,IO8255K ;对8255进行设定,A输出,C输入MOV AL,10001001BOUT DX,ALINPUT:MOV DX,IO8255C ;从C输入IN AL,DXMOV DX,IO8255A ;从A输出OUT DX,ALMOV DL,0FFH ;判断是否有按键MOV AH,06HINT21HJZ INPUT ;若无,则继续C输入,A输出MOV AH,4CH ;否则,返回DOSINT21HCODE ENDSEND START;************************************;;*键盘输入数据(0-9)控制LED数码管显示*;;************************************;DA TA SEGMENTIOPORT EQU 0E400H-280HIO8255A EQU IOPORT+288HIO8255B EQU IOPORT+289HIO8255C EQU IOPORT+28AHIO8255K EQU IOPORT+28BHLED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHMESG1 DB 0DH,0AH,'Input a num (0--9),other key is exit:',0DH,0AH,'$'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DA TAMOV DS,AXMOV DX,IO8255K ;使8255的A口为输出方式MOV AX,10000000BOUT DX,ALSSS: MOV DX,OFFSET MESG1 ;显示提示信息MOV AH,09HINT 21HMOV AH,01 ;从键盘接收字符INT 21HCMP AL,'0' ;是否小于0JL EXIT ;若是则退出CMP AL,'9' ;是否大于9JG EXIT ;若是则退出SUB AL,30H ;将所得字符的ASCII码减30HMOV BX,OFFSET LED ;BX为数码表的起始地址XLAT ;求出相应的段码MOV DX,IO8255A ;从8255的A口输出OUT DX,ALJMP SSS ;转SSSEXIT: MOV AH,4CH ;返回INT 21HCODE ENDSEND START;******************************;;* LED数码管实验动态显示“56”*;;******************************;DA TA SEGMENTIOPORT EQU 0E400H-280HIO8255A EQU IOPORT+288HIO8255B EQU IOPORT+289HIO8255C EQU IOPORT+28AHIO8255K EQU IOPORT+28BHLED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;段码BUFFER1 DB 6,5 ;存放要显示的个位和十位BZ DW ? ;位码DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DATAMOV DS,AXMOV DX,IO8255K ;将8255设为A口输出MOV AL,80HOUT DX,ALMOV DI,OFFSET BUFFER1 ;设di为显示缓冲区LOOP2: MOV BH,02LLL: MOV BYTE PTR BZ,BHPUSH DIDEC DIADD DI, BZMOV BL,[DI] ;bl为要显示的数POP DIMOV AL,0MOV DX,IO8255COUT DX,ALMOV BH,0MOV SI,OFFSET LED ;置led数码表偏移地址为SIADD SI,BX ;求出对应的led数码MOV AL,BYTE PTR [SI]MOV DX,IO8255A ;自8255A的口输出OUT DX,ALMOV AL,BYTE PTR BZ ;使相应的数码管亮MOV DX,IO8255COUT DX,ALMOV CX,3000DELAY: LOOP DELAY ;延时MOV BH,BYTE PTR BZSHR BH,1JNZ LLLMOV DX,0FFHMOV AH,06INT 21HJE LOOP2 ;有键按下则退出MOV DX,IO8255CMOV AL,0 ;关掉数码管显示OUT DX,ALMOV AH,4CH ;返回INT 21HCODE ENDSEND START;***************;;* 模拟抢答器 *;;***************;DA TA SEGMENTIOPORT EQU 0E400H-280HIO8255A EQU IOPORT+288HIO8255B EQU IOPORT+289HIO8255C EQU IOPORT+28AHIO8255K EQU IOPORT+28BHLED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;数码表DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DATAMOV DS,AXMOV DX,IO8255K ;设8255为A口输出,C口输入MOV AL,10001001BOUT DX,ALMOV BX,OFFSET LED ;使BX指向段码管首址SSS: MOV DX,IO8255CIN AL,DX ;从8255的C口输入数据OR AL,AL ;比较是否为0JE SSS ;若为0,则表明无键按下,转sssMOV CL,0FFH ;cl作计数器,初值为-1 RR: SHR AL,1INC CLJNC RRMOV AL,CLXLATMOV DX,IO8255AOUT DX,ALMOV DL,7 ;响铃ASCII码为07MOV AH,2INT 21HWAI: MOV AH,1INT 21HCMP AL,20H ;是否为空格JNE EEE ;不是,转eeeMOV AL,0 ;是,关灭灯MOV DX,IO8255AOUT DX,ALJMP SSSEEE: MOV AH,4CH ;返回INT 21HCODE ENDSEND START运行结果:实验一:当逻辑开关K0~K7中的一个或几个打开时,对应的LED灯就会亮起来,即利用8255A实现了基本的输入输出控制。
微机原理实验报告(8255并口实验)

深圳大学实验报告课程名称:微型计算机技术实验项目名称:8255并行接口实验学院:信息工程学院专业:电子信息工程指导教师:报告人:学号:班级:实验时间:实验报告提交时间:教务处制一,实验目的1,学习并掌握8255 的工作方式及其应用。
2,掌握8255 典型应用电路的接法。
3,掌握程序固化及脱机运行程序的方法。
二,实验设备PC机器一台,TD-PITE实验装置一套,导线若干,另外PC与TD-PITE实验装置连接线。
三,实验内容1,基本输入输出实验。
编写程序,使8255 的A 口为输入,B 口为输出,完成拨动开关到数据灯的数据传输。
要求只要开关拨动,数据灯的显示就发生相应改变。
2,流水灯显示实验。
编写程序,使8255 的A 口和B 口均为输出,数据灯D7~D0 由左向右,每次仅亮一个灯,循环显示,D15~D8 与D7~D0 正相反,由右向左,每次仅点亮一个灯,循环显示。
四实验内容及步骤1. 基本输入输出实验本实验使8255 端口A 工作在方式0 并作为输入口,端口 B 工作在方式0并作为输出口。
实验接线图如图6 所示,按图连接实验线路图。
用一组开关信号接入端口A,端口 B 输出线接至一组数据灯上,然后通过对8255 芯片编程来实现输入输出功能。
2. 流水灯显示实验:使8255 的A 口和B 口均为输出,数据灯D7~D0 由左向右,每次仅亮一个灯,循环显示,D15~D8 与D7~D0 正相反,由右向左,每次仅点亮一个灯,循环显示。
实验接线图如下图所示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
浙江工业大学计算机学院实验报告实验名称 8255并行接口实验姓名徐洁学号 ************班级计科1301班教师雷艳静日期 2015/12/31一、实验内容与要求1.1 实验内容8255方式0实验一:从8255端口C输入数据,再从端口A输出,即TPC-USB平台按逻辑电平开关K0~K7通过编程使端口C接收,然后再通过端口A输出到LED显示电路L0~L7,这样逻辑电平开关的值就可以通过8255芯片显示在LED显示电路上。
8255方式1输出实验:编程实现每按一次单脉冲按钮产生一个正脉冲,使8255产生一次中断,让CPU进行一次中断服务:依次输出01H、02H、04H、08H、10H、20H、40H、80H 使LED显示电路L0~L7依次发光,中断8次结束。
8255方式1输入实验:编程实现每按一次单脉冲按钮产生一个正脉冲使8255产生一次中断请求,让CPU进行一次中断服务,读取逻辑电平开关预置的ASCII码,在屏幕上显示其对应的字符,中断8次结束。
1.2 实验要求(1) 具有一定的汇编编程的基础,能编写一些基本语句来实现实验。
实验前根据实验流程图,写出对应代码;(2) 要了解8255A并行接口芯片内部结构和外部引脚,理解8255芯片的工作方式和程序设计方法;(3) 熟悉实验平台TPC-USB了解各个接口的名称与功能,进行实验时能快速并正确地连接好实验电路;(4) 8255方式0实验一:连接PC与TPC-USB平台,用微机实验软件运行程序,用TPC-USB平台上的逻辑电平开关与LED显示电路观察,LED显示的值与逻辑电平开关设的值对应;(5) 8255方式1输出实验:连接PC与TPC-USB平台,用微机实验软件运行程序,手按单脉冲按钮,观察LED显示电路能依次发光,按8次后,中断结束,程序结束;(6) 8255方式1输入实验:连接PC与TPC-USB平台,用微机实验软件运行程序,用TPC-USB平台的逻辑电平开关设置一个ASCII码,按一次单脉冲,屏幕就能显示该ASCII码对应的字符,变更逻辑电平的开关,按一次单脉冲,屏幕就会显示变更的ASCII码对应的字符。
这样操作N次之后,中断结束,程序结束。
二、实验原理与硬件连线2.1 实验原理1、8255A的内部结构:图1 8255A内部结构图(1)数据端口:端口A:内含一个8位的输入、输出锁存器/缓冲器,用作输入或输出时,其数据均可得到锁存。
端口B:内含一个8位的输出锁存器/缓冲器和一个8位的输入缓冲器(输入无锁存)。
端口C:内含一个8位的输出锁存器/缓冲器和一个8位的输入缓冲器(输入无锁存)。
●可作为一个独立的8位端口,也可分成两个4位端口。
●可用作数据输入/输出端口,也可作为控制/状态端口(联络信号),配合A、B端口一起工作。
●具有按位置位/复位功能。
(2)端口的输入/输出及其工作方式:8255A可通过软件编程来分别设定每个端口的输入/输出及其工作方式。
A口:有3种工作方式:方式0(基本输入/输出)、方式1(选通输入/输出)、方式2(双向输入/输出)。
B口:有2种工作方式:方式0、方式1C口:可设置为并口或按位置位/复位工作方式。
(3)A 组和B 组控制逻辑:A口和C口的高4位构成A组,由A组控制逻辑控制。
B口与C口的低4位构成B组,由B组控制逻辑控制。
A、B两组控制电路内部均有控制寄存器,用来接收CPU发来的读/写控制信号和控制字,并按控制字确定各端口的工作方式。
(4)数据总线缓冲器:8位三态双向缓冲器,与系统数据总线相连,用于CPU与8255A之间传送数据、命令和状态信息。
(5)读/写控制逻辑:接收CPU发来的地址信号和控制信号,转变为各种命令送到A、B组控制逻辑,对端口进行相应的操作。
2、8255A的工作方式:(1)方式0——基本输入/输出:A口、B口、C口的高4位和低4位均可独立地被设置为输入或输出。
8255A与CPU之间没有固定的应答联络信号,可用于无条件传送或查询方式传送。
单向I/O:一次初始化只能指定端口作为输入或作为输出,不能指定其同时既作为输入又作为输出。
采用查询方式传送时,可以将端口A、端口B作为数据端口,用端口C存放外部设备状态信息,用于CPU查询。
(2)方式1输入:当端口A作为方式1输入时,端口C的PC3、PC4、PC5作为端口A的联络控制信号。
当端口B作为方式1输入时,端口C的PC0、PC1、PC2作为端口B的联络控制信号。
PC6、PC7则可作为输入/输出数据口使用,如图2所示。
各控制信号的定义如下。
注意:方式1下C口复位/置位功能与PC口引脚的功能无任何关系。
方式1 (端口A )方式1 (端口B )STB A IBF AINTR A STB B IBF BINTR B图2 方式1输入时,端口对应的控制信号STB :输入选通信号。
有效时,可将数据从外设输入到A 口或B 口的锁存器中。
IBF :输入缓冲器满信号,是对STB 的响应。
有效时,对CPU :表示8255端口有数据,通知CPU 进行读取。
对外设:表示CPU 还未取走数据,阻止外设发新数据。
INTE :中断允许信号。
INTE=1时允许8255向CPU 发中断请求。
PC 4 =1允许A 口中断;PC 2 =1允许B 口中断。
该信号通过C 口置位/复位来实现。
INTR :中断请求信号。
INTR=1时,CPU 可从端口读取数据。
读取后INTR 自动清除。
(3)方式1输出:当端口A 作为方式1输出时,端口C 的PC3、PC7、PC6作为端口A 的联络控制信号。
当端口B 作为方式1输出时,端口C 的PC0、PC1、PC2作为端口B 的联络控制信号。
PC4、PC5则可作为输入/输出数据口使用,如图3所示。
各控制信号的定义如下。
方式1 (端口A )方式1 (端口B )ACK A OBF AINTR A ACK B OBF BINTR B图3 方式1输出时,端口对应的控制信号OBF:输出缓冲器满。
有效时,表CPU已把数据输出到8255。
对外设:通知外设取走数据。
对CPU:阻止CPU发新数据。
ACK:外设的应答信号。
外设取走数据后,向8255发应答信号,并使OBF无效,此时CPU 可发新数据。
INTE:中断允许信号。
为1时允许8255向CPU发中断请求。
PC6 =1允许A口中断;PC2 =1允许B口中断。
该信号通过C口置位/复位来实现。
INTR:中断请求信号。
为1时请求CPU向8255发数据。
3、8255A的编程:(1)方式选择控制字:实验时:方式0:端口C输入,端口A输出对应的控制字为:10001011B=8bH;方式1输出:端口A方式1输出对应的控制字为:10100000B=0a0H;方式1输入:端口A方式1输入对应的控制字为:10111000B=0b8H;(2)端口C置位/复位控制字:注意:尽管该控制字针对C 口进行操作,但必须写入控制端口,而不是写入C 口对应的地址。
实验时:PC6置位:对应的控制字:00001101B=0dH ; PC4置位:对应的控制字:00001001B=09H ;(3)8255A 初始化编程:向8255A 的控制端口写入方式选择控制字后即可完成初始化,然后CPU 就可以访问A 、B 、C 数据端口,进行数据输入/输出。
2.2 硬件连线(1)8255方式0实验一:8255端口C 接逻辑电平开关K0~K7,端口A 连接LED 显示电路L0~L7。
连接实验电路如图4所示。
设置8255C口输入A口输出从C口输入数据将此数据自A口输出有键按下吗?结束K0K1K2K3K4K5K6K7288HL0L1L2L3L4L5L6L7NY图4 TPC-USB 平台8255方式0实验一连接图(2)8255方式1输出实验:端口A 连接LED 显示电路L0~L7,连接实验电路如图5所示。
图5 TPC-USB平台8255方式1输出实验电路连接图(3)8255方式1输入实验:端口A接逻辑电平开关K0~K7。
连接实验电路如图6所示。
图6 TPC-USB平台8255方式1输入实验电路连接图三、设计思路、步骤和程序流程图3.1 设计思路本次实验做的是丙型接口实验,需要用到8255并行接口芯片,了解芯片的内部结构后,理解芯片的工作原理,8255芯片的工作方式有多种,所做的实验是方式0和方式1,理解了工作方式后,便可根据8255芯片的初始化编程步骤画出程序流程图,再根据流程图,写出实验程序。
根据实验连接图连接好电路,运行程序,便可达到并行传送的目的。
实验一:通过mov dx,28ah in al,dx读入C端口的字,即读入C端口的开关预置的值,又通过mov dx,288H out dx,al 把从C端口读入的字送到A端口,所以A端口相应的灯会亮。
实验二:每按一次单脉冲按钮,产生一次中断请求,通过mov al,bl mov dx,288h out dx,al 将bl的值从8255的A口输出,由于bl初始化为01H,每一次中断以后执行shl bl,1 将bl左移一位,即01H变成02H,依次变成04H、08H、10H…….所以L0~L7会依次发光。
实验三:每按一次单脉冲按钮,产生一次中断请求,通过mov dx,288h in al,dx自8255端口A读入实验平台逻辑电平处的数据,又通过mov dl,al mov ah,02h int 21h 将数据在屏幕上输出。
bl初始化为8,每执行一次中断bl减1,所以N次以后退出。
3.2 实验步骤(1) 连接实验电路如图4所示,8255端口C接逻辑电平开关K0~K7,端口A连接LED显示电路L0~L7;(2) 根据图7所示的流程图,编程,运行,观察开关的值与LED的值是否对应;(3) 连接实验电路如图5所示;(4) 根据图8所示的流程图,编程,运行,观察LED的亮灭情况;(5) 连接实验电路如图6所示;(6) 根据图9所示的流程图,编程,运行,观察逻辑开关的值和屏幕上显示的字符。
3.3 程序流程图PC0PC1PC2PC3PC4PC5PC6PC7PA0PA1PA2PA3PA4PA5PA6PA7CSK0K1K2K3K4K5K6K7288HL0L1L2L3L4L5L6L7U18 8255图7TPC-USB 平台8255方式0实验一的程序流程图(a )输出主程序 (b )输出中断服务程序图8 TPC-USB 平台8255方式1输出实验的程序流程图(a)主程序(b)输入中断服务程序图9 TPC-USB平台8255方式1输入实验的程序流程图四、程序清单与执行结果4.1 程序清单(1)8255方式0实验一代码:CODE SEGMENTASSUME CS:CODESTART:MOV DX,28BH ;设8255为C口输入,A口输出MOV AL,8BHOUT DX,ALIN_OUT:MOV DX,28AH ;从C口输入一数据IN AL,DXMOV DX,288H ;从A口输出刚才自C口所输入的数据OUT DX,ALMOV DL,0FFH ;判断是否有按键MOV AH,06HINT 21HJZ IN_OUT ;若无,则继续自C口输入,A口输出MOV AH,4CH ;否则返回DOSINT 21HCODE ENDSEND START(2)8255方式1输出实验代码:CODE SEGMENTASSUME CS:CODESTART:MOV AX,SEG IRQ3_INT ;中断程序入口地址送中断向量表MOV DS,AXMOV DX,OFFSET IRQ3_INTMOV AX,250BH ;设置中断向量程序INT 21HIN AL,21H ;读取中断屏蔽字AND AL,0F7H ;开放IRQ3中断OUT 21H,ALMOV DX,28BH ;设置8255端口A方式1输出MOV AL,0A0HOUT DX,ALMOV AL,0DH ;将8255的PC6置位OUT DX,ALMOV BL,01H ;BL赋初值1WIN:JMP WIN ;循环等待IRQ3_INT: ;中断服务程序MOV AL,BL ;将BL中的数从端口A输出MOV DX,288HOUT DX,ALMOV AL,20H ;发中断结束命令OUT 20H,ALSHL BL,1 ;BL左移一位JNC NEXT ;JNC对进位位进行判断,若CF!=1,跳转IN AL,21H ;恢复屏蔽字OR AL,08H ;禁止IRQ3中断OUT 21H,ALSTI ;STI 允许中断发生CLI 禁止中断发生MOV AH,4CH ;返回DOSINT 21HNEXT:IRET ;中断返回CODE ENDSEND START(3)8255方式1输入实验代码:CODE SEGMENTASSUME CS:CODESTART:MOV AX,SEG IRQ3_INT ;中断程序入口地址送中断向量表MOV DS,AXMOV DX,OFFSET IRQ3_INTMOV AX,250BH ;设置中断向量程序INT 21HIN AL,21H ;读取中断屏蔽字AND AL,0F7H ;开放IRQ3中断OUT 21H,ALMOV DX,28BH ;设置8255端口A方式1输入MOV AL,0B8HOUT DX,ALMOV AL,09H ;将8255的PC4置位OUT DX,ALMOV BL,20 ;设置中断次数WIN:JMP WIN ;循环等待IRQ3_INT: ;中断服务程序MOV DX,288H ;从A端口输入数据IN AL,DXMOV DL,ALMOV AH,02H ;输出DL中的字符到屏幕INT 21HMOV DL,0DH ;回车INT 21HMOV DL,0AH ;换行INT 21HMOV AL,20H ;中断结束命令OUT 20H,ALDEC BLJNZ NEXTIN AL,21H ; N次中断已到,恢复屏蔽字OR AL,08H ;禁止IRQ3中断OUT 21H,ALSTI ;开中断MOV AH,4CH ;返回dos系统INT 21HNEXT:IRET ;中断返回CODE ENDSEND START4.2 执行结果(1)8255方式0实验一:注:LED灯的亮灭取决于逻辑电平开关,当开关置1时,灯亮;当开关置0时,灯灭(2)8255方式1输出实验:注:当程序刚运行时,只有最右边的灯L0亮,之后按一次单脉冲按钮,L1亮,接着L2亮,这样往左移动,直到L7亮,程序结束。