微原硬件实验二:8255A并行接口应用_第1页
微原硬件实验二:8255A并行接口应用_第2页
微原硬件实验二:8255A并行接口应用_第3页
微原硬件实验二:8255A并行接口应用_第4页
微原硬件实验二:8255A并行接口应用_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

北京邮电大学微机原理硬件实验报告

实验二:8255A并行接口应用

专业:信息工程

学生姓名:XXX

学号:XXX

指导教师:XXX

完成时间:2013年11月29日

一、实验目的.....................................................................3

二、实验原理及内容...............................................................4

1.实验原理................................................................3

①8255的工作方式........................................................4

②工作方式选择字.........................................................4

③命令字与初始化编程.....................................................5

④注意事项...............................................................5

2.实验内容...............................................................4

①6位数码管静态显示.....................................................6

②6位数码管动态显示.....................................................6

③拓展功能...............................................................7

三、硬件连接图与软件程序流程图..................................................8

1.硬件连接图.............................................................7

①8255A并行接口.........................................................8

②数码管..................................................................9

2.程序流程图.............................................................9

①基本要求一流程图......................................................10

②基本要求二流程图......................................................12

四、源程序......................................................................13

1.基本要求一源代码..........................................................11

2.基本要求二源代码..............................................................12

五、实验结果....................................................................16

六、实验总结....................................................................17

1.段内VS段外.............................................................15

2.瞬间之误.................................................................15

3.接力跳远.....................................................................15

七、实验收获与心得体会.........................................................18

一、实验目的

1.掌握8255A的功能及方式0、1的实现。

2、熟悉8255A与CPU的接口,以及传输数据的工作原理及编程方法。

3.了解七段数码管显示数字的原理。

4.掌握同时显示多位数字的技术。

二、实验原理及内容

1.实验原理

①8255的工作方式

一片8255内部有3个端口,A口可以工作在方式0、方式1

或方式2,B口可以工作在方式0、方式1,C口可以工作在方

式0。方式0是基本型输入输出。这种方式和外设交换数据

时,8255端口与外设之间不使用联络线。方式1为选通型输

入/输出。用这种方式和外界交换数据时,端口和外设之间要

有联络信号。方式2是双向数据传送,仅A口有这项功能。

当A口工作在方式2时,B口仍可以工作在方式0或方式1,

但此时B口方式1只能用查询方式与CPU交换信息。

②工作方式选择字

8255工作方式选择字共8位(如图),存放在8255控制寄存器中。最高位D7为标志

位,D7=l表示控制寄存器中存放的是工作方式选择字,D7=0表示控制寄存器中存放的是C

口置位/复位控制字。

D7D6D5IMD3D2DIDO

00•方式0A口C口高四位0-^0BDC口低四位

101•方式11:»A1:入1•於]1:入1:入

卜•方式20:■出0:出0:出0:出

标志位A组B姐

图一:8255工作方式选择字

③命令字与初始化编程

8255有两个命令字,即方式选择控制字和C口置0/置1控制字,初始化编程的步骤是:

I、向8255控制寄存器写入“方式选择控制字”,从而预置端II的工作方式。

II、当端口预置为方式1或方式2时,再向控制寄存器写入“C口置0/置1控制字:这一操

作的主要目的是使相应端口的中断允许触发器置0,从而禁止中断,或者使相应端口的中断

允许触发器置1,从而允许端口提出中断请求。注意:“C口置0/置I控制字”虽然是对C

口进行操作,但是该控制字是命令字,所以要写入控制寄存器,而不是写入C口控制寄存

器。

III、向8255数据寄存器写入“数据”或从8255数据寄存器读出“数据二

④注意事项

在方式0输入/输出)下,以A口为输出口,B口为输出口,A口接六个共阴极数只管的

八位段码,高电平点亮数码管的某一段B口接数码管的位选(即要使哪个数码管亮),高电

平选中某一位数码管点亮,

8255A中A端口地址E800H

B端口地址E801H

C端口地址E802H

控制地址E8O3H

八段数码管的显示规律及数码管的位选规律自己查找,可用实验•中,学过的I、O命令来

做。

2、实验内容

①6位数码管静态显示

在数码管电路上静态地显示6位学号,当主机键盘按下任意键时,停止显示,返回

DOSo提示:该电路6个数码管的同名阳极段已经复接,当段选寄存器寄存了一个字型编码

之后,6个数码管都有可能显示出相同的数字。如果要使6个数码管“同时”显示不同的数

字,必须采用扫描显示的方法,通过选位寄存器选择某一位数码管,显示其数字(对应段值

为1),然后关闭此数码管,再选择下一位数码管进行显示;如果在一秒钟内,每一位数码管

都能显示30次以上,则人眼看到的是几位数码管同时在显示。实验证明,在扫描显示过程中,

每-•位显示延迟1ms是最佳选择。

②6位数码管动态显示

要求在数码管电路1—6位数码管上按图所示的规律,动态显示字符串HELLO,当主机

键盘按下任意键时结束。

图二:字符串动态显不小意图

提示:

I、本实验应在上面实验的基础上完成;

II、在数据段,按下列规律设置12个字型码:

MESGDB0,0,0,0,0.0,3DH,ODCH,8CH,8CH,OEDH,O

POINTDWMESG.......

POINT单元存放MESG单元的有效地址,程序取出POINT单元的内容一BX,然后用

BX间址取数送数码管电路,扫描显示6个字符。每过0.5s将POINT单元的内容加1,再将

POINT单元的内容一BX,…….POINT单元内容加I,使字符串显示的首地址向高地址移动

一个单元,从而使6位字符串向“左”移动一位,实现动态显示。

III、动态显示的速度可控制(快或慢),利用实验一读入端口的功能.

③拓展功能

完成一个扫描键盘(PC口)输入自己的学号,并在数码管上显示。

端口C地址E8O2H;

控制端口地址EE03H:

PC4,PC5.PC6.PC7接厅PC3.PC2.PC1.PCO接歹U

图三:键盘电路

提示:

3.识别闭合键的方法行扫描法是使键盘某一行线为低电平,其余为高电平,然后读取

列值,如列值中有某位位任电平,则表明行列交叉点处的键被按下;否则扫描下行,知道扫

完全部的行线为止。行反转法识别闭合键时,要将行线接一个并行口,先让他工作在输出方

式,将列线接另•个并行口,先让它工作在输入方式,程序使CPU通过输出端口往各行线上

全部送低电平,然后读入列线的值,如此时某键按下则必使某一列线值为0,然后程序再对

两个并行端口的工作方式进行设置,使行线工作在输入方式,列线工作在输出方式,并且将

刚才读得的列线值从列线所接的并行端口输出,再读取行线上的输入值,那么在闭合键所在

的行线上的值必定为0。这样,有按键时,可读得唯一的行值和列值。

4.设计时,行、列值应放在一个表中,通过查表确定按下的是哪个键。

5.键闭合时,注意加延时防抖动。

6.键松开时,加判断释放程序。

7.按下键盘某键能够返回系统。

三、硬件连接图与软件程序流程图

1、硬件连接图

①8255A并行接口

8255A并行接口

3C1

Tf

O.luF

pA0

cpA1

vccpA2

D0pA3

D1pA4

D2pA5

D3pA6

D4pA7

D5

D6

Dm7pB0

RpB1

pB2

宣pB3

pB4

AlpB5

AOpB6

RESpB7

pC0

pC1

pC2

EDTpC3

pC4

pC5

pC6

pC7

图四:8255A并行接口

②数码管

数码管

CCD

CCI

A

B

c

CCD

CCE

T

G

»

CCD

CCE

A

B

C

CCD

CCE

T

G

»

Ks1

A

B

C

CCD

CCI

T

G

DP

2、图五:数码管

3、程序流程图

①基本要求一流程图

诘束

图六:基本要求一流程图

②基本要求二流程图

C开始

四、图七:基本要求二

五、源程序

1.基本要求一源代码

datasegment

aequ0e800h;A端口(输出)作为数码管段选

bequ0e801h;B端口(输出)作为数码管位选

controlequ0e803h;控制端口

zeroequOcdh

nineequ79h

fiveequ0d9h

twoequ0f4h

oneequ21h

eightequOfdh

dataends

stacksegmentstack'stack'

stackends

codesegment

assumecs:code,ds:data,ss:stack

start:movax,data

movds,ax

movdx,control;dx:控制寄存器(暂时)

moval,80h;工作方式选择字

outdx.al

dispmacrox,y

moval,x

movdx,b

outdx.al

moval,y

movdx,a

outdx,al

callfarptrdelay;是否需要加入延时??

nop

moval,()()h

outdx,al

cndm

again:disp01h,two

disp()2h,one

disp04h.zero

disp08h,eight

disp10h,zero

disp20h,nine

movah,Obh;检测键盘按键

int21h

ernpal,()ffh

jnztemp

movah,4ch

inl21h

delayprocfar;延时子程序

pushex;入栈保护

pushax

pushbx

movcx,O3h;2的8次方=65536

loopl:nop;CPU空操作

movbx,O2h;cx*bx可以控制分频为1000Hz;OI8h

Ioop2:decbx;?????内层循环是否需要空操作

jnzloop2;当€^>0时,继续减一

looploopl当cx>0时,继续空操作

popbx;出栈恢复

popax

popex

ret

delayendp

temp:jmpagain

codeends

endstart

2.基本要求二源代码

datasegment

aequ0e800h

bequ0e801h

controlequ0ee03h

mesgdb0.0,0,0,O.O,3dh.Odch,8ch,8ch,Oedh.O;显示字符

pointdwmesg;

dataends

stacksegmentstack'stack*

db100dup(?)

stackends

codesegment

assumecs:code,ds:data.ss:stack

start:movax,data

movds,ax

movdx,control

moval,80h

outdx,al;8255初始化控制字

movsi,offsetmesg;si指向字符串首地址

addsi,06h;si指向第一个字母H

movbx,offsctmesg;bx是字符串首地址

dispmacrox,y;是否需要加入延时??

moval,x

movdx,b

outdx,al

moval,[si+y];应该把bx改成si?

movdx,a

outdx.al

callfarptrdelay

nop

moval.OOh

outdx,al

endm

again1:nop

movcx,54h海一个点亮lms,6个点亮6ms,0.5秒内亮500/6=83趟,转换

为54h

again2:decex

jnzloop3

movcx,54h;重新设置ex,应该与第38行保持一致

decsi

empbx,si

jnzloop3

addsi,06h

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论