中山大学计算机原理接口技术实验报告模板实验三四五六.docx

上传人:b****2 文档编号:3193549 上传时间:2023-05-05 格式:DOCX 页数:47 大小:564.90KB
下载 相关 举报
中山大学计算机原理接口技术实验报告模板实验三四五六.docx_第1页
第1页 / 共47页
中山大学计算机原理接口技术实验报告模板实验三四五六.docx_第2页
第2页 / 共47页
中山大学计算机原理接口技术实验报告模板实验三四五六.docx_第3页
第3页 / 共47页
中山大学计算机原理接口技术实验报告模板实验三四五六.docx_第4页
第4页 / 共47页
中山大学计算机原理接口技术实验报告模板实验三四五六.docx_第5页
第5页 / 共47页
中山大学计算机原理接口技术实验报告模板实验三四五六.docx_第6页
第6页 / 共47页
中山大学计算机原理接口技术实验报告模板实验三四五六.docx_第7页
第7页 / 共47页
中山大学计算机原理接口技术实验报告模板实验三四五六.docx_第8页
第8页 / 共47页
中山大学计算机原理接口技术实验报告模板实验三四五六.docx_第9页
第9页 / 共47页
中山大学计算机原理接口技术实验报告模板实验三四五六.docx_第10页
第10页 / 共47页
中山大学计算机原理接口技术实验报告模板实验三四五六.docx_第11页
第11页 / 共47页
中山大学计算机原理接口技术实验报告模板实验三四五六.docx_第12页
第12页 / 共47页
中山大学计算机原理接口技术实验报告模板实验三四五六.docx_第13页
第13页 / 共47页
中山大学计算机原理接口技术实验报告模板实验三四五六.docx_第14页
第14页 / 共47页
中山大学计算机原理接口技术实验报告模板实验三四五六.docx_第15页
第15页 / 共47页
中山大学计算机原理接口技术实验报告模板实验三四五六.docx_第16页
第16页 / 共47页
中山大学计算机原理接口技术实验报告模板实验三四五六.docx_第17页
第17页 / 共47页
中山大学计算机原理接口技术实验报告模板实验三四五六.docx_第18页
第18页 / 共47页
中山大学计算机原理接口技术实验报告模板实验三四五六.docx_第19页
第19页 / 共47页
中山大学计算机原理接口技术实验报告模板实验三四五六.docx_第20页
第20页 / 共47页
亲,该文档总共47页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

中山大学计算机原理接口技术实验报告模板实验三四五六.docx

《中山大学计算机原理接口技术实验报告模板实验三四五六.docx》由会员分享,可在线阅读,更多相关《中山大学计算机原理接口技术实验报告模板实验三四五六.docx(47页珍藏版)》请在冰点文库上搜索。

中山大学计算机原理接口技术实验报告模板实验三四五六.docx

中山大学计算机原理接口技术实验报告模板实验三四五六

实验报告

实验人:

学号:

日期:

院(系):

专业(班级):

实验题目:

[实验三]可编程并行接口

(一)8255方式0;[实验四]可编程并行接口8255与七段数码管实验;[实验五]交通灯控制实验;[实验六]可编程并行接口

(二)8255方式1

沉重悼念5.12汶川大地震遇难同胞!

[实验三]可编程并行接口

(一)8255方式0

一、实验目的

掌握8255方式0的工作原理及使用方法。

二、实验原理

8255的基本工作原理与使用方法:

并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。

CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。

8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:

方式0--基本输入/输出方式、方式1--选通输入/输出方式、方式2--双向选通工作方式。

8255的内部结构及引脚如图-1所示,8255工作方式控制字和C口按位置位/复位控制字格式如

图-2所示。

 

图-1:

8255内部结构及引脚图

 

(a)工作方式控制字(b)c口按位置位/复位控制字

1、8255的内部结构:

如图-1所示,8255的内部结构由以下4个部分组成:

(1)输入/输出端口A、B、C。

这三个端口均可看作是I/O端口,但它们的结构和功能也稍有不同。

A口和B口是一个独立的8位I/O口。

C口可以看作是一个独立的8位I/O口;也可以看作是两个独立的4位I/O口。

(2)A组和B组控制电路。

这是两组根据CPU命令控制8255工作方式的电路,这些控制电路内部设有控制寄存器,可以根据CPU送来的编程命令来控制8255的工作方式,也可以根据编程命令来对C口的指定位进行置位/复位的操作。

A组控制电路用来控制A口及C口的高4位;B组控制电路用来控制B口及C口的低4位。

(3)读/写控制逻辑。

它负责管理8255的数据传输过程,接收CS及RD、WR、RESET,还有来自系统地址总线的口地址选择信号A0和A1。

将这些信号组合后,得到对A组控制部件和B组控制部件的控制命令,并将命令发给这两个部件,以完成对数据、状态信息和控制信息的传输。

(4)数据总线缓冲器。

它是8位双向三态缓冲器,作为8255和CPU之间的数据接口,进行数据的输入/输出。

CPU的编程命令以及外设通过8255传送的工作状态等信息,都是通过它来传输的。

一般情况下数据总线缓冲器的8根数据线D7~D0是与8086CPU低8位数据线相连。

2、8255的工作方式:

(1)方式0:

基本输入/输出方式(basicInput/Output)

方式0是8255的基本输入/输出方式,其特点是与外设传送数据时,不需要设置专用的联络(应答)信号,可以无条件的直接进行I/O传送。

A,B,C3个端口都可以工作在方式0。

A口和B口工作在方式0时,只能设置为以8位数据格式输入/输出;C口工作在方式0时,可以高4位和低4位分别设置为数据输入或数据输出方式。

方式0常用于与外设无条件数据传送或查询方式数据传送。

(2)方式1:

单向选通输入/输出方式(strobeInput/Output)

方式1是一种带选通信号的单方向输入/输出工作方式,其特点是:

与外设传送数据时,需要联络信号进行协调,允许用查询或中断方式传送数据。

由于C口的PC0,PC1和PC2定义为B口工作在方式1的联络信号线,PC3,PC4和PC5定义为A口工作方式1的联络信号线,因此只允许A口和B口工作在方式1。

A口和B口工作在方式1,当数据输入时,C口的引脚信号定义如图7.6所示。

PC3,PC4和PC5定义为A口的联络信号线INTRA,

和IBFA,PC0,PC1和PC2定义为B口的联络信号线INTRB,IBFB和

,剩余的PC6和PC7仍可以作为基本I/O线,工作在方式0。

方式1输入联络信号的功能如下:

(strobeinput):

选通信号,输入,低电平有效。

此信号由外设产生输入,当

有效时,选通A口或B口的输入数据锁存器,锁存由外设输入的数据,供CPU读取。

IBF(inputbufferfull):

输入缓冲器满信号,输出,高电平有效。

当A口或B口的输入数据锁存器接收到外设输入的数据时,IBF变为高电平,作为对外设

的响应信号,CPU读取数据后IBF被清除。

INTR:

中断请求信号,输出,高电平有效,用于请求以中断方式传送数据。

为了能实现用中断方式传送数据,在8255内部设有一个中断允许触发器INTE,当触发器为“1”时允许中断,为“0”时禁止中断。

A口的触发器由PC4置位或复位,B口的触发器由PC2置位或复位。

方式1数据输入的时序如图7.7所示。

当外设的数据准备就绪后,向8255发送

信号以便锁存输入的数据,

的宽度至少为500ns,在

有效之后的约300ns,IBF变为高电平,并一直保持到

信号由低电平变为高电平,待CPU读取数据后约300ns变为低电平,表示一次数据传送结束。

INTR是在中断允许触发器INTE为1,且IBF为1(8255接收到数据)的条件下,在

后沿(由低变高)之后约300ns变为高电平,用以向CPU发出中断请求,待

变为低电平后约400ns,INTR被撤销。

A口和B口工作在方式1,当数据输出时,C口的引脚信号定义如图7.8所示。

PC3,PC6和PC7定义为A口联络信号线INTRA,

,PC0,PC1和PC2定义为B口联络信号线INTRB,

,剩余的PC4和PC5仍可以作为基本I/O线,工作在方式0。

方式1输出联络信号的功能如下:

(outputbufferfull):

输出缓冲器满指示信号,输出,低电平有效。

信号由8255发送给外设,当CPU将数据写入数据端口时,

变为低电平,用于通知外设读取数据端口中的数据。

(acknowledgeinput):

应答信号,输入,低电平有效。

信号由外设发送给8255,作为对

信号的响应信号,表示输出的数据已经被外设接收,同时清除

信号。

INTR:

中断请求信号,输出,高电平有效。

用于请求以中断方式传送数据。

方式1数据输出的时序如图7.9所示。

当CPU向8255写入数据时,

信号上升沿后约650ns,

有效,发送给外设,作为外设接收数据的选通信号。

当外设接收到送来的数据后,向8255回送

信号,作为对

信号的应答。

信号有效之后约350ns,

变为无效,表明一次数据传送结束。

INTR信号在中断允许触发器INTE为1且

信号无效之后约350ns变为高电平。

若用中断方式传送数据时,通常把INTR连到8259A的请求输入端IRi。

(3)方式2:

双向选通输入/输出方式(bi-directionalbus)方式2为双向选通输入/输出方式,是方式1输入和输出的组合,即同一端口的信号线既可以输入又可以输出。

由于C口的PC7~PC3定义为A口工作在方式2时的联络信号线,因此只允许A口工作在方式2,引脚信号定义如图7.10所示。

由图7.10可以看出,PA7~PA0为双方向数据端口,既可以输入数据又可以输出数据。

C口的PC7~PC3定义为A口的联络信号线,其中PC4和PC5作为数据输入时的联络信号线,PC4定义为输入选通信号

,PC5定义为输入缓冲器满IBFA;

PC6和PC7作为数据输出时的联络信号线,PC7定义为输出缓冲器满

,PC6定义为输出应答信号

;PC3定义为中断请求信号INTRA。

需要注意的是:

输入和输出公用一个中断请求线PC3,但中断允许触发器有两个,即输入中断允许触发器为INTE2,由PC4写入设置,输出中断允许触发器为INTE1,由PC6写入设置,剩余的PC2~PC0仍可以作为基本I/O线,工作在方式0。

8255的控制信号与传输动作的对应关系:

CS

A1

A0

RD

WR

传输说明

0

0

0

0

1

数据从端口A送数据总线

0

0

1

0

1

数据从端口B送数据总线

0

1

0

0

1

数据从端口C送数据总线

0

0

0

1

0

数据从数据总线送端口A

0

0

1

1

0

数据从数据总线送端口B

0

1

0

1

0

数据从数据总线送端口C

0

1

1

1

0

如果D7为1,则由数据总线往控制寄存器写入控制字;如果D7为0,则由数据总线输入的数据作为对C端口的置1、置0命令。

1

X

X

X

X

D7~D0进入高阻状态

0

1

1

0

1

非法的信号组合

0

X

X

1

1

D7~D0进入高阻状态

3、8255初始化编程

8255的A,B,C三个端口的工作方式是在初始化编程时,通过向8255的控制端口写入控制字来设定的。

8255由编程写入的控制字有两个:

方式控制字和置位/复位控制字。

方式控制字用于设置端口A,B,C的工作方式和数据传送方向;置位/复位控制字用于设置C口的PC7~PC0中某一条口线PCi(i=0~7)的电平。

两个控制字公用一个端口地址,由控制字的最高位作为区分这两个控制字的标志位。

(1)方式控制字的格式

8255工作方式控制字的格式如图7.11所示。

D0:

设置PC3~PC0的数据传送方向。

D0=1为输入;D0=0为输出。

D1:

设置B口的数据传送方向。

D1=1为输入;D1=0为输出.

D2:

设置B口的工作方式。

D2=1为方式1;D2=0为方式0。

D3:

设置PC7~PC4的数据传送方向。

D3=1为输入;D3=0为输出。

D4:

设置A口的数据传送方向。

D4=1为输入;D4=0为输出。

D6D5:

设置A口的工作方式。

D6D5=00为方式0,D6D5=01为方式1,D6D5=10或11为方式2。

D7:

方式控制字的标志位,恒为1。

  例如,将8255的A口设定为工作方式0输入,B口设定为工作方式1输出,C口没有定义,工作方式控制字为10010100B。

(2)C口置位/复位控制字的格式

8255C口置位/复位控制字的格式如图7.12所示。

8255C口置位/复位控制字用于设置C口某一位口线PCi(i=0~7)输出为高电平(置位)或低电平(复位),对各端口的工作方式没有影响。

D3~D1:

8种状态组合000~111对应表示PC0~PC7。

D0:

用来设定指定口线PCi为高电平还是低电平。

当D0=1时,指定口线PCi输出高电平;当D0=0时,指定口线PCi输出低电平。

D6~D4没有定义,状态可以任意,通常设置为0。

D7位作为标志位,恒为0。

例如,若把PC2口线输出状态设置为高电平,则置位/复位控制字为00000101B。

(3)8255初始化编程

8255的初始化编程比较简单,只需要将工作方式控制字写入控制端口即可。

另外,C口置位/复位控制字的写入只是对C口指定位输出状态起作用,对A口和B口的工作方式没有影响,因此只有需要在初始化时指定C口某一位的输出电平时,才写入C口置位/复位控制字。

【例1】设8255的A口工作在方式0,数据输出,B口工作在方式1,数据输入,编写初始化程序(设8255的端口地址为FF80H~FF83H)。

初始化程序如下:

   MOV  DX,0FF83H   ;控制寄存器端口地址为FF83H

   MOV  AL,10000110B  ;A口方式0,数据输出,B口方式1,数据输入

   OUT  DX,AL    ;将控制字写入控制端

【例2】将8255的C口中PC0设置为高电平输出,PC5设置为低电平输出,编写初始化程序(设8255的端口地址为FF80H~FF83H)。

初始化程序如下:

  MOV  DX,0FF83H        ;控制端口的地址为FF83H

  MOV  AL,00000001B       ;PC0设置为高电平输出

  OUT  DX,AL           ;将控制字写入控制端口

  MOV  AL,00001010B       ;PC5设置为低电平输出

  OUT  DX,AL           ;将控制字写入控制端口

三、实验内容

实验预备:

按要求连接实验台数据线,并打开TPC-USB实验机。

注意检查硬件是否连接以及驱动是否正常安装。

1.实验电路如下图,8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。

2.编程从8255C口输入数据,再从A口输出该数据,验证结果。

四、实验器材

实验所用器材

1、TPC-USB通用微机接口实验系统(包含TPC-USB实验台及对应的TPC-USB实验系统集成开发环境)

2、若干导线

五、实验分析与设计

1、按实验要求连线:

PC0~PC7----K0~K7(逻辑电平开关输入)CS----288H~28FH(片选信号)

PA0~PA7----L0~L7(LED显示电路输出)

RD、WR、A0、A1在实验台内部已经连好

编写并运行程序E8255.ASM

io8255aequ288h;A口的地址

io8255bequ28bh;8255控制寄存器端口地址

io8255cequ28ah;C口的地址

codesegment

assumecs:

code

start:

movdx,io8255b;设8255为C口输入,A口输出

moval,8bh

outdx,al

inout:

movdx,io8255c;从C口输入一数据

inal,dx

movdx,io8255a;从A口输出刚才自C口

outdx,al;所输入的数据

movdl,0ffh;判断是否有按键

movah,06h

int21h

jzinout;若无,则继续自C口输入,A口输出

movah,4ch;否则返回

int21h

codeends

endstart

预计运行结果:

拨动开关K,相应置“1”的开关所对应的灯L亮,否则灭。

六、思考题

1、小结8255方式0的特点;

①若A口、B口都工作在方式0,则此时8255的A口、B口两个8位数据口都可以作为输入口和输出口,但不能同时实现输入及输出。

C端口可以是一个8位的简单接口,也可以分为两个独立的4位端口。

②系统没有指定C口的某些线作为专门的信号联络线,但是用户可以自定义C口的某些线作为信号联络线。

③CPU和8255的A口、B口之间传送数据只能用程控方式(即无条件或查询方式),不能用中断方式。

④输出可以被锁存。

输入不能锁存。

读信号有效到数据稳定的时间内,应由输入设备解决数据锁存问题。

2、与前面简单并行接口实验相比较,总结8255的优缺点

①优点:

简单并行接口电路只能进行8个位的基本输出和输入。

而8255芯片通过编程控制寄存器,可以实现A,B,C三口输出和输入,并且不仅能以基本输入/输出的方式工作,而且可以使A,B口工作在选通的方式下。

所以与简单并行接口相比,8255芯片能够支持更多的外设,工作方式更为灵活。

②缺点:

由于8255需要初始化编程来确定工作方式,因此与简单并行接口相比,8255增加了程序的复杂性。

 

[实验四]可编程并行接口8255与七段数码管实验

一、实验目的

进一步熟悉可编程并行接口8255方式0的使用;掌握数码管显示数字的原理。

二、实验原理

七段数码管的工作原理:

1、LED数码管的工作原理

LED数码管由7个发光二极管组成,如图(a)所示,此外,还有一个圆点型发光二极管(在图中以h表示),用于显示小数点。

通过七段发光二极管亮暗的不同组合,可以显示多种数字、字母以及其它符号。

LED数码管中的发光二极管共有两种连接方法:

(1)共阴极接法:

把发光二极管的阴极连在一起构成公共阴极。

使用时公共阴极接地,这样阳极端输入高电平的段发光二极管就导通点亮,而输入低电平的则不点亮。

实验中使用的LED显示器为共阴极接法。

(2)共阳极接法:

把发光二极管的阳极连在一起构成公共阳极。

使用时公共阳极接+5V。

这样阴极端输入低电平的段发光二极管就导通点亮,而输入高电平的则不点亮。

为了显示数字或符号,要为LED显示器提供代码,因为这些代码是为显示字形的,因此称之为字形代码。

七段发光二极管,再加上一个小数点位,共计八段。

因此提供给LED显示器的字形代码正好一个字节。

若a、b、c、d、e、f、g、h,8个显示段依次对应一个字节的低位到高位,即D0、D1、D2、D3、D4、D5、D6、D7。

2、单个LED数码管的显示

由于发先工极管发光时.通泣的平均电流为1OmA-20mA,而通常的输出锁存器不能提供这么大的电流,所以LED各段必须接驱动电路.例如,对于共阴极数码管,阴极接地,则阳极要加驱动电路.驱动电路可由三极管构成,也可以采用小规模集成电路。

三、实验内容

实验预备:

按要求连接实验台数据线,并打开TPC-USB实验机。

注意检查硬件是否连接以及驱动是否正常安装。

1、静态显示:

按左图连接好电路,将8255的A口PA0~PA6分别与七段数码管的段码驱动输入端a~g相连,位码驱动输入端S1接+5V(选中),S0、dp接地(关闭)。

编程从键盘输入一位十进制数字(0~9),在七段数码管上显示出来。

2、动态显示:

使用右图的电路连接,段码不变,位码驱动输入端S1、S0接8255C口的PC1、PC0。

编程在两个数码管上循环显示“00-99”。

(选作)

五、实验器材

实验所用器材

1、TPC-USB通用微机接口实验系统(包含TPC-USB实验台及对应的TPC-USB实验系统集成开发环境)

3、若干导线

五、实验分析与设计

1、按实验要求连线:

PA0~PA6----a~g(七段数码管的段码驱动输入端)S1----+5V(选中)

S0----GNDDP----GND(接地)

CS----288H~28FH(片选信号)

RD、WR、A0、A1在实验台内部已经连好

实验台上的两个LED为共阴极结构,而位码用反相驱动器驱动,因此,S1接+5V使LED1被选中,S0接地使LED0未被选中(不工作)。

利用七段数码管的字型代码表:

 

编写并运行程序:

LED1.ASM

datasegment

io8255aequ288h;A口的地址

io8255bequ28bh;8255控制寄存器端口地址

leddb3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;显示代码表

mesg1db0dh,0ah,'Inputanum(0--9),otherkeyisexit:

',0dh,0ah,'$'

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movdx,io8255b;使8255的A口为输出方式

movax,80h

outdx,al

sss:

movdx,offsetmesg1;显示提示信息

movah,09h

int21h

movah,01;从键盘接收字符

int21h

cmpal,'0';是否小于0

jlexit;若是则退出

cmpal,'9';是否大于9

jgexit;若是则退出

subal,30h;将所得字符的ASCII码减30H

movbx,offsetled;bx为数码表的起始地址

xlat;求出相应的段码

movdx,io8255a;从8255的A口输出

outdx,al

jmpsss;转SSS

exit:

movah,4ch;返回

int21h

codeends

endstart

预计运行结果:

从电脑键盘上输入0-9,并在七段数码管上直接显示出来。

2、按实验要求连线:

PA0~PA6----a~g(七段数码管的段码驱动输入端)

S1----PC1S0----PC0DP----GND(不工作)

CS----288H~28FH(片选信号)RD、WR、A0、A1在实验台内部已经连好

通过交替选中LED1和LED0循环显示两位十进制数,位码驱动输入端S1、S0接8255AC口的PC1、PC0,通过C口的这两位交替输出1和0,以便交替选中LED1和LED0,从而实现两位十进制数的交替显示。

编写并运行程序:

LED2.ASM

datasegment

io8255aequ28ah;C口的地址

io8255bequ28bh;8255控制寄存器端口地址

io8255cequ288h;A口的地址

leddb3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;段码

buffer1db0,0;存放要显示的十位和个位

bzdw?

;位码

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movdx,io8255b;将8255设为A口输出

moval,80h

outdx,al

movdi,offsetbuffer1;设di为显示缓冲区

loop1:

movcx,030h;循环次数

loop2:

movbh,02

lll:

movbyteptrbz,bh

pushdi

decdi

adddi,bz

movbl,[di];bl为要显示的数

popdi

movbh,0

movsi,offsetled;置led数码表偏移地址为SI

addsi,bx;求出对应的led数码

moval,byteptr[si]

movdx,io8255c;自8255A的口输出

outdx,al

moval,byteptrbz;使相应的数码管亮

movdx,io8255a

outdx,al

pushcx

movcx,100

delay:

loopdelay;延时

popcx

moval,00h

outdx,al

movbh,byteptrbz

shrbh,1

jnzlll

looploop2;循环延时

movax,wordptr[di]

cmpah,09

jnzset

cmpal,09

jnzset

movax,0000

mov[di],al

mov[di+1],ah

jmploop1

set:

movah,01

int16h

jneexit;有键按下则转exit

movax,wordptr[di]

incal

aaa

mov[di],al;al为十位

mov[di+1],ah;ah中为个位

jmploop1

exit:

movdx,io8255a

moval,0;关掉数码管显示

outdx,al

movah,4ch;返回

i

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2