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

更新时间:2024-04-13 05:34:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

计算机原理-接口技术实验

实 验 报 告

实 验 人: 院(系):

学 号:

日 期:

专业(班级):

实验题目: [实验三]可编程并行接口(一)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:基本输入/输出方式(basic Input/Output)

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

A口和B口工作在方式0时,只能设置为以8位数据格式输入/输出; C口工作在方式0时,可以高4位和低4位分别设置为数据输入或数据输出方式。 方式0常用于与外设无条件数据传送或查询方式数据传送。

(2)方式1:单向选通输入/输出方式(strobe Input/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,定义为B 口的联络信号线INTRB, IBFB和本I/O线, 工作在方式0。

和IBFA, PC0, PC1和PC2

,剩余的PC6和PC7仍可以作为基

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

(strobe input):选通信号,输入,低电平有效。此信号由外设产生输

计算机原理-接口技术实验

入,当有效时,选通A口或B口的输入数据锁存器,锁存由外设输入的数 据,

供CPU读取。

IBF(input buffer full):输入缓冲器满信号,输出,高电平有效。当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接收到数 据)的条件下,在用以向CPU发出中断请求,待

后沿(由低变高)之后约300ns变为高电平,变为低电平后约400ns, INTR被撤销。

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

计算机原理-接口技术实验

PC3,PC6和PC7定义为A口联络信号线INTRA,定义为B口联络信号线INTRB, 本I/O 线,工作在方式0。

和,PC0, PC1和PC2

,剩余的PC4和PC5仍可以作为基

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

(output buffer full):输出缓冲器满指示信号,输出,低电平有效。 信号由8255发送给外设,当CPU将数据写入数据端口时,

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

(acknowledge input):应答信号,输入,低电平有效。

外设发送给8255,作为对收, 同时清除

信号。

信号由变为低

信号的响应信号,表示输出的数据已经被外设接

INTR:中断请求信号,输出,高电平有效。用于请求以中断方式传送数据。 方式1数据输出的时序如图7.9所示。当CPU向8255写入数据时,升沿后约650ns,

信号上

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

信号,作为对

信号的应答。

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

信号有效之后约350ns, 号在中断允 许触发器INTE为1且

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

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

计算机原理-接口技术实验

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

(3)方式2:双向选通输入/输出方式(bi-directional bus)方式2为双向选通输入/输出方式,是方式1输入和输出的组合,即同一端口的信号线既可以输入又可以输出。由于C口的PC7~PC3定义为A口工作在方式2时的联 络信号线,因此只允许A口工作在方式2,引脚信号定义如图7.10所示。

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

计算机原理-接口技术实验

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

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

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

,PC5定义为输入缓冲器

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

8255的控制信号与传输动作的对应关系: CS A1 A0 RD WR 传输 说明 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 1 1 1 1 1 0 0 0 数据从端口A送数据总线 数据从端口B送数据总线 数据从端口C送数据总线 数据从数据总线送端口A 数据从数据总线送端口B 数据从数据总线送端口C 如果D7为1,则由数据总线往控制寄存器写入控制0 1 1 1 0 字;如果D7为0,则由数据总线输入的数据作为对C端口的置1、置0命令。 1 0 0

3、8255初始化编程

8255的A,B,C三个端口的工作方式是在初始化编程时,通过向8255的控制

X X X X 1 1 0 1 1 D7~D0进入高阻状态 非法的信号组合 D7~D0进入高阻状态 X X 1 计算机原理-接口技术实验

端 口写入控制字来设定的。

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口置位/复位控制字的格式

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

8255 C口置位/复位控制字用于设置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

io8255a equ 288h ; A口的地址

io8255b equ 28bh ; 8255控制寄存器端口地址 io8255c equ 28ah ; C口的地址 code segment assume cs:code start:

mov dx,io8255b ;设8255为C口输入,A口输出 mov al,8bh out dx,al

inout: mov dx,io8255c ;从C口输入一数据 in al,dx

mov dx,io8255a ;从A口输出刚才自C口 out dx,al ;所输入的数据 mov dl,0ffh ;判断是否有按键 mov ah,06h int 21h

jz inout ;若无,则继续自C口输入,A口输出 mov ah,4ch ;否则返回 int 21h code ends end start

预计运行结果: 拨动开关 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),在七段数码管上显示出来。

g

g

8255

8255

(a) 静态显示连线图

图4.9-2

(b) 动态显示连线图

2、动态显示:使用右图的电路连接,段码不变,位码驱动输入端S1、S0接8255C口的PC1、PC0。编程在两个数码管上循环显示“00-99”。(选作)

五、 实验器材

实验所用器材

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

计算机原理-接口技术实验

五、实验分析与设计

1、按实验要求连线:

PA0~PA6----a~g(七段数码管的段码驱动输入端) S0----GND DP----GND (接地) CS----288H~28FH(片选信号) RD、WR、A0、A1在实验台内部已经连好

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

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

编写并运行程序:LED1.ASM

data segment

io8255a equ 288h ;A口的地址

io8255b equ 28bh ;8255控制寄存器端口地址

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

mesg1 db 0dh,0ah,'Input a num (0--9),other key is exit:',0dh,0ah,'$' data ends code segment

assume cs:code,ds:data start:

mov ax,data

S1----+5V (选中)

计算机原理-接口技术实验

mov ds,ax

mov dx,io8255b ;使8255的A口为输出方式 mov ax,80h out dx,al

sss: mov dx,offset mesg1 ;显示提示信息

mov ah,09h int 21h

mov ah,01 ;从键盘接收字符 int 21h

cmp al,'0' ;是否小于0 jl exit ;若是则退出

cmp al,'9' ;是否大于9 jg exit ;若是则退出

sub al,30h ;将所得字符的ASCII码减30H mov bx,offset led ;bx为数码表的起始地址 xlat ;求出相应的段码

mov dx,io8255a ;从8255的A口输出 out dx,al jmp sss ;转SSS exit: mov ah,4ch ;返回 int 21h code ends end start

预计运行结果:从电脑键盘上输入0-9,并在七段数码管上直接显示出来。

2、按实验要求连线:

PA0~PA6----a~g(七段数码管的段码驱动输入端) S1----PC1 S0----PC0 DP----GND (不工作)

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

计算机原理-接口技术实验

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

编写并运行程序:LED2.ASM

data segment

io8255a equ 28ah ; C口的地址

io8255b equ 28bh ; 8255控制寄存器端口地址 io8255c equ 288h ; A口的地址

led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码 buffer1 db 0,0 ;存放要显示的十位和个位 bz dw ? ;位码 data ends code segment

assume cs:code,ds:data start:

mov ax,data

mov ds,ax

mov dx,io8255b ;将8255设为A口输出 mov al,80h out dx,al

mov di,offset buffer1 ;设di为显示缓冲区 loop1: mov cx,030h ;循环次数 loop2: mov bh,02 lll: mov byte ptr bz,bh

push di dec di add di, bz

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

计算机原理-接口技术实验

pop di mov bh,0

mov si,offset led ;置led数码表偏移地址为SI add si,bx ;求出对应的led数码 mov al,byte ptr [si]

mov dx,io8255c ;自8255A的口输出 out dx,al

mov al,byte ptr bz ;使相应的数码管亮 mov dx,io8255a out dx,al push cx mov cx,100 delay:

loop delay ;延时 pop cx mov al,00h out dx,al

mov bh,byte ptr bz shr bh,1 jnz lll

loop loop2 ;循环延时 mov ax,word ptr [di] cmp ah,09 jnz set cmp al,09 jnz set mov ax,0000 mov [di],al mov [di+1],ah jmp loop1

计算机原理-接口技术实验

set: mov ah,01

int 16h

jne exit ;有键按下则转exit mov ax,word ptr [di] inc al aaa

mov [di],al ;al为十位 mov [di+1],ah ;ah中为个位 jmp loop1 exit: mov dx,io8255a

mov al,0 ;关掉数码管显示 out dx,al mov ah,4ch ;返回 int 21h code ends end start

预计运行结果: 在七段数码管上按秒循环显示 00-99。

六、思考题

1、小结七段数码管的编程方法。 ①静态显示驱动的编程方法:

静态驱动是指每个数码管的每一个段码都由一个I/O端口进行驱动。 因此编程驱动数码管显示,只需要将所要显示字符的对应段码输出到数码管的I/O端口即可。

②动态显示驱动的编程方法:

动态驱动是将所有数码管的 8个显示笔划\的同名端连

计算机原理-接口技术实验

在一起,当微处理器输出字形码时,所有数码管都接收到相同的字形码,只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。但只要扫描的速度足够快,就不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。

因此以动态显示的方式来编程驱动数码管,要先通过段控制端口送出段显示代码,然后通过位控制端口送出位显示代码,使得指定的数码管显示相应的数字。顺序地输出段码和码,依次让每个数码管显示数字,则通过重复频率和延时时间就可以得到各种显示效果。

七、实验心得

计算机原理-接口技术实验

[实验五]交通灯控制实验 一、实验目的

通过并行接口8255实现十字路口交通灯的模拟控制,进一步掌握对并行口的使用。

二、实验原理

十字交叉路口交通灯的联动规律:

(1) 南北路口的绿灯、东西路口的红灯同时亮30秒左右。 (2) 南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮。 (3) 南北路口的红灯、东西路口的绿灯同时亮30秒左右。 (4) 南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁若干次。 (5) 转(1)重复。

三、实验内容

实验预备:按要求连接实验台数据线,并打开TPC-USB实验机。注意检查硬件是否连接以及驱动是否正常安装。

1、如图连线,L7(红)、L6(黄)、L5(绿)作为南北路口的交通灯与PC7、PC6、PC5相连,L2(红)、L1(黄)、L0(绿)作为东西路口的交通灯与PC2、PC1、PC0相连。编程使六个灯按交通灯变化规律亮灭。

六、 实验器材

实验所用器材

1、TPC-USB通用微机接口实验系统(包含TPC-USB实验台及对应的TPC-USB实验系

计算机原理-接口技术实验

统集成开发环境) 4、 若干导线

五、实验分析与设计

按实验要求连线:

PC0~PC2----L0~L2(东西路口的红、黄、绿信号灯) PC5~PC7----L5~L7(南北路口的红、黄、绿信号灯) CS----288H~28FH(片选信号) 编写并运行程序:JTD.ASM

data segment

io8255a equ 28ah ;C口的地址

io8255b equ 28bh ;8255控制寄存器端口地址

portc1 db 24h, 44h, 04h, 44h, 04h, 44h, 04h ;六个灯可能的状态数据

;绿红,黄红,灭红,黄红,灭红,黄红,灭红 db 81h, 82h, 80h, 82h, 80h, 82h, 80h ;红绿,红黄,红灭,红黄,红灭,红黄,红灭 db 0ffh ; 结束标志

data ends code segment

assume cs:code,ds:data start:

mov ax,data mov ds,ax mov dx,io8255b mov al,90h

out dx,al ;设置8255为C口输出 mov dx,io8255a re_on: mov bx,0 on: mov al,portc1[bx]

cmp al,0ffh

计算机原理-接口技术实验

jz re_on

out dx,al ;点亮相应的灯 inc bx

mov cx,200 ;短延时参数赋值 test al,21h ;是否有绿灯亮 jz de1 ;没有,短延时 mov cx,2000 ;有,长延时 ;---延时开始---

de1: mov di,9000 ;di赋初值9000 de0: dec di ;减1计数

jnz de0 ;di不为0 loop de1 ;---延时结束---

push dx ;调用中断检测有无键按下 mov ah,06h mov dl,0ffh int 21h pop dx

jz on ;没有键按下,转到on exit: mov ah,4ch ;返回

int 21h code ends end start

预计运行结果:指示灯按交通灯规律进行亮灭。

六、思考题

按上面流程图编制的程序只能使红绿灯固定时间变化,不可改变,没有智能性。如果考虑到有大道和小道而且有检测车辆到来的敏感元件,考虑按照如下规律编写一个程序。

计算机原理-接口技术实验

1、 通常情况下,大道总是绿灯亮,小道总是红灯亮。

2、 若检测到小道来车后,经过10秒使小道变成绿灯亮,则大道应变为红灯亮。但是,为了使大道的车由动到停有一个准备的时间,在大道由绿灯亮变为红灯亮之前,要有4秒的黄灯亮的时间,即小道来车后,经过6秒大道由绿灯亮变为黄灯亮,再过4秒,大道由黄灯亮变为红灯亮,在这同时小道由红灯亮变为绿灯亮。 3、 在小道变绿灯亮后,如果大道没有来车,或来车但不到3辆车,则经过25秒小道变为黄灯亮,再经4秒小道由黄灯亮变为红灯亮,在这同时,大道由红灯亮变为绿灯亮。

4、 如果在小道绿灯亮期间,检测到大道已来3辆车,虽然小道亮绿灯的时间还不到25秒,当第三辆车达到后,小道立即换为黄灯亮,再经4秒小道由黄灯亮变为红灯亮,在这同时,大道由红灯亮变为绿灯亮。 [答]:

设计思路:

通过8255并行接口的工作方式0,用A口作为输入检测大道小道车辆情况,B口输出实现交通灯的模拟控制。

根据要求设计程序,接线如下图所示。 PB5~PB3----L5~L3(大道的交通灯) PB2~PB0----L2~L0(小道的交通灯)

大道的传感器(K1)----PA1 小道的传感器(K0)----PA0

用指示灯下面的开关器件代替敏感元件,开关器件开始均置于断开状态CS(片选信号)----218H~21FH

计算机原理-接口技术实验

编写并运行程序:

219h ;B口的地址 218h ;A口的地址 21bh ;8255控制寄存器端口地址 DATA SEGMENT

LL DB 0F3H, 0EBH, 0FBH, 0EBH, 0FBH, 0EBH, 0FBH

DB 0DEH, 0DDH, 0DFH, 0DDH, 0DFH, 0DDH, 0DFH ;交通灯的变化状态 DB 0FFH DATA ENDS CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE , DS:DATA

START: MOV AX , DATA MOV DS , AX

MOV DX , 21BH MOV AL , 90H

OUT DX , AL ;8255初始化,A为输入,B为输出。 ;-------------初始化完成------------- MOV DX , 219H RE_GO: MOV BX , 0

GO: MOV AL , LL[BX] ;以BX作为指针,在状态表中查找状态输出 CMP AL , 0FFH ;与结束标志作比较 JZ RE_GO

OUT DX , AL ;输出初始工作状态——大绿小红 MOV DX , 218H ;

IN AL , DX ;检测小道信号,即8255PA0口

AND AL , 01H

JZ GO ;小道无信号,返回GO,继续检测

MOV CX , 300 ;有信号,让大道维持3秒左右

BACK: CALL DELAY DEC CX JNZ BACK

0CCH 0D4H 0C4H 0D4H 0C4H 0D4H 0C4H 大绿小红 大黄小红 大灭小红 大黄小红 大灭小红 大黄小红 大灭小红 0E1H 0E2H 0E0H 0E2H 0E0H 0E2H 0E0H 大红小绿 大红小黄 大红小灭 大红小黄 大红小灭 大红小黄 大红小灭

计算机原理-接口技术实验

MOV DX , 219H

MOV CL , 6 ;大道黄灯闪烁3次,CL为循环次数 BACK2: INC BX ;BACK2 为黄灯闪烁循环 MOV AL , LL[BX] OUT DX , AL

MOV CH , 100 ;保持黄灯持续亮/灭 BB: CALL DELAY DEC CH JNZ BB DEC CL JNZ BACK2

INC BX ; MOV AL , LL[BX] OUT DX , AL

MOV CX , 1000 ;BACK3: CALL DELAY

MOV DX , 218H IN AL , DX

AND AL , 00000010B ; JNZ NEXT DEC CX JNZ BACK3

NEXT: MOV CL , 6 ; MOV DX , 219H BACK4: INC BX

MOV AL , LL[BX] OUT DX , AL

MOV CH , 100 ; CC: CALL DELAY DEC CH JNZ CC DEC CL JNZ BACK4

变换工作状态为----大红小绿 加入10秒左右的延迟

检测大道信号,即8255PA1口 大道到来3辆车,进入小道黄灯闪灭状态 保持黄灯持续亮/灭 计算机原理-接口技术实验

JMP RE_GO ;重新GO,完成交通灯的循环 MAIN ENDP

DELAY PROC ;延时子程序,输入参数CX MOV SI , 2000 DE1: MOV DI , 9000 DE0: DEC DI JNZ DE0 DEC SI

JNZ DE1 ; PUSH DX MOV AH , 06H MOV DL , 0FFH

INT 21H ; POP DX

JZ CON ; MOV DX , 219H MOV AL , 0FFH

OUT DX , AL ;EXIT: MOV AH , 4CH

INT 21H ;CON: RET DELAY ENDP CODE ENDS END START

通过双次循环完成延迟 调用系统功能,键盘输入给AL 判断有无键盘输入,无则返回主程序 若因意外退出,将全部路口置为红灯 返回DOS 计算机原理-接口技术实验

预计运行结果:运行后首先L3(大道绿灯)、L2亮(小道红灯)变亮,若不合上K0一直维持原状,将k0合上后,经过3秒维持原状延迟,L4(大道黄灯)闪灭2次,然后换L5(大道红灯)、L0(小道绿灯)变亮,若不合上K1,经过大约10秒后,L1(小道黄灯)闪灭2次,变回初始状态(L3(大道绿灯)、L2亮(小道红灯)亮),但是在10秒内合上K1,L1(小道黄灯)马上闪灭2次,切回初始主状态。一直等到K0合上后,才进入一个新的循环。在过程中要注意K0、K1的状态,用完后当复位。在运行过程中,键入任一字符,立即退出。

计算机原理-接口技术实验

[实验六] 可编程并行接口(二)8255方式1 一、实验目的

掌握8255工作方式1时的使用及编程;进一步掌握中断处理程序的编写。

二、实验原理

8255方式1的工作特点及编程方法:见实验三相关内容.

三、实验内容

实验预备:按要求连接实验台数据线,并打开TPC-USB实验机。注意检查硬件是否连接以及驱动是否正常安装。

1、按(1)图8255方式1的输出电路连好线路。

2、编程:每按一次单脉冲按钮产生一个正脉冲使8255产生一次中断请求,让CPU进行一次中断服务:依次输出01H、02H,04H,08H,10H,20H,40H,80H使L0~L7依次发光,中断8次结束。

(1)输出电路 (2)输入电路 3、按(2)图8255方式1输入电路,连好线路。

4、编程:每按一次单脉冲按钮产生一个正脉冲使8255产生一次中断请求,让CPU进行一次中断服务:读取逻辑电平开关预置的ASCII码,在屏幕上显示其对应的字符,中断8次结束。

四、实验器材

计算机原理-接口技术实验

实验所用器材

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

五、实验分析与设计

可编程并行接口8255方式1输出和方式1输入都分为主程序和中断服务程序两部分。

1、按实验要求连线:

PC3----IRQ(中断请求) PC6----单脉冲

PA0~PA7----L0~L7(发光二极管) CS----288H~28FH(片选信号) 编写并运行程序E8255-1o.ASM

code segment

assume cs:code start:

mov ax,cs mov ds,ax

mov dx,offset int_proc

mov ax,250bh ;设外部中断int_proc类型号为0BH int 21h mov dx,21h

in al,dx ;读中断屏蔽寄存器 and al,0f7h ;开放IRQ3中断 out dx,al

mov dx,28bh ;读8255控制寄存器 mov al,0a0h ;置8255为A口方式1输出 out dx,al

计算机原理-接口技术实验

mov al,0dh ;将PC6置位 out dx,al mov bl,1

ll: jmp ll ;循环等待

;中断服务程序 int_proc:

mov al,bl

mov dx,288h ;将AL从8255的A口输出 out dx,al mov al,20h

out 20h,al ;发送普通中断结束EOI命令 shl bl,1

jnc next ;中断次数小于8,返回主程序 in al,21h ;读中断屏蔽寄存器 or al,08h

out 21h,al ;关闭IRQ3中断 sti ;开中断 mov ah,4ch ;返回DOS int 21h next: iret code ends end start

预计运行结果:按一次单脉冲键,让CPU进行一次中断,使L0-L7依次发光,中断8次后结束。

2、按实验要求连线:

PA0~PA7----K0~K7(开关) PC3----IRQ(中断请求)

计算机原理-接口技术实验

PC4----单脉冲 CS----288H~28FH(片选信号)

编写并运行程序:E8255-1i.ASM

code segment

assume cs:code start:

mov ax,cs mov ds,ax

mov dx,offset int_proc

mov ax,250bh ;设外部中断int_proc类型号为0BH int 21h mov dx,21h

in al,dx ;读中断屏蔽寄存器 and al,0f7h ;开放IRQ3中断 out dx,al mov dx,28bh mov al,0b8h

out dx,al ;设8255为A口方式1输入 mov al,09h out dx,al

mov bl,8 ;BL为中断次数计数器 ll: jmp ll ;循环等待 int_proc: ;中断服务程序

mov dx,288h ;自8255A口输入一数据 in al,dx

mov dl,al ;将所输入的数据保存到DL mov ah,02h ;显示ASCII码为DL的字符 int 21h

mov dl,0dh ;回车 int 21h

mov dl,0ah ;换行

计算机原理-接口技术实验

int 21h mov dx,20h mov al,20h

out dx,al ;发出EOI结束命令 dec bl ;计数器减1 jnz next ;不为0则返回主程序 in al,21h ;读中断屏蔽寄存器 or al,08h

out 21h,al ;关IRQ3中断 sti ;开中断 mov ah,4ch ;返回DOS int 21h next: iret code ends end start

预计运行结果:按一次单脉冲键,让CPU进行一次中断,读取开关预置的值并在屏幕上显示,8次后结束。

六、思考题

1、小结8255方式1的工作特点,特别是输入和输出时的联络(握手)信号线的功能及相互之间的关系; [答]:

方式1利用一组选通控制信号控制A端口和B端口的数据输入输出。A口、B口作输入或输出口,C口的部分位用作选通控制信号。

以A口为例,当A口作输入口时,PC4,PC5,PC3分别定义为A口的INTRA信号线。其中,

,IBFA,

为选通信号;IBF为输入缓冲器满信号;INTR为中断

,INTR

请求信号。当A口作输出口时,PC6,PC7,PC3分别定义为A口的信号线。其中,

为应答信号;

为输出缓冲器满指示信号;INTR为中断

计算机原理-接口技术实验

请求信号。

2、总结中断服务程序的编程方法。 ①开中断和关中断

当CPU响应中断后,正要去执行中断服务程序时,可能有另一个新的中断源向它发出中断请求。为了不致造成混乱,在CPU的中断管理部件中必须有一个“中断屏蔽”触发器,它可以在程序的控制下置“1”(设置屏蔽),或置“0”(取掉屏蔽)。只有在“中断屏蔽”标志为“0”时,CPU才可以受理中断。当一条指令执行完毕CPU接受中断请求并作出响应时,它一方面发出中断响应信号INTA,另一方面把“中断屏蔽”标志置“1”,即关闭中断。这样,CPU不能再受理另外的新的中断源发来的中断请求。只有在CPU把中断服务程序执行完毕以后,它才重新使“中断屏蔽”标志置“0”,即开放中断,并返回主程序。 ②保护和恢复现场

为了在中断服务程序执行完毕以后,能够正确地返回到原来主程序被中断的断点(PC内容)而继续执行主程序,必须把程序计数器PC的内容,以及当前指令执行结束后CPU的状态(包括寄存器的内容和一些状态标志位)都保存到堆栈中去。这些操作叫做保存现场。 ③参数传递

一般只能采用存储单元传递参数. 外部中断是随机发生的. 所以系统进入服务程序时,除CS和IP寄存器外, 当前的运行状态,包括其他寄存器都是不可知的。想通过寄存器传递参数显然不行. 但是,寄存器的保妒和恢复还是必须的. ④发送中断结束命令

由于采用中断控制器管理可屏蔽中断,它采用普通中断结束方式,需要中断结束命令EOI. ⑤需要注意的问题

不要使用DOS 系统功能调用。 外部中断可能引起程序的重入l。例如,当主程序在执行-个DOS系统功能调用时,产生了外部中断。 外部中断服务程序又调用这个DOS 系统功能,就出现了重入。由于DOS 内核是不可重入的,所以这是不允许的。中断服务程序若要控制I/0设备。最好调用ROM -BIOS功能或者对I/O接

计算机原理-接口技术实验

口直接编程。

中断服务程序尽量短小,一般而言,外部中断的实时性很强,应主要处理较急迫的事务。因此,申断服务时间应尽量短,能够在主程序完成的任务,就不要由中断服务程序完成。这样,可以尽量减小对其他中断设备的影响。

七、实验心得

本文来源:https://www.bwwdw.com/article/qu0p.html

Top