最新东南大学微机原理微机系统与接口实验五六实验报告自动化学院.docx

上传人:b****6 文档编号:5548851 上传时间:2022-12-19 格式:DOCX 页数:22 大小:3.18MB
下载 相关 举报
最新东南大学微机原理微机系统与接口实验五六实验报告自动化学院.docx_第1页
第1页 / 共22页
最新东南大学微机原理微机系统与接口实验五六实验报告自动化学院.docx_第2页
第2页 / 共22页
最新东南大学微机原理微机系统与接口实验五六实验报告自动化学院.docx_第3页
第3页 / 共22页
最新东南大学微机原理微机系统与接口实验五六实验报告自动化学院.docx_第4页
第4页 / 共22页
最新东南大学微机原理微机系统与接口实验五六实验报告自动化学院.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

最新东南大学微机原理微机系统与接口实验五六实验报告自动化学院.docx

《最新东南大学微机原理微机系统与接口实验五六实验报告自动化学院.docx》由会员分享,可在线阅读,更多相关《最新东南大学微机原理微机系统与接口实验五六实验报告自动化学院.docx(22页珍藏版)》请在冰豆网上搜索。

最新东南大学微机原理微机系统与接口实验五六实验报告自动化学院.docx

最新东南大学微机原理微机系统与接口实验五六实验报告自动化学院

 

东南大学

 

《微机实验及课程设计》

实验报告

 

实验五8253计数器/定时器

实验六8255并行输入输出

 

姓名:

学号:

08011

专业:

自动化实验室:

计算机硬件技术

实验时间:

2012年04月27日报告时间:

2013年05月15日

评定成绩:

审阅教师:

一.

实验目的

实验五:

1)掌握计数器/定时器8253的基本工作原理和编程应用方法;

2)了解掌握8253的计数器/定时器典型应用方法

实验六:

1)掌握8255方式0的工作原理及使用方法,利用直接输入输出进行控制显示;

2)掌握8段数码管的动态刷新显示控制;

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

二.实验内容

实验五:

必做:

5-1将计数器0设置为方式0,计数初值为N(小于等于0FH),用手动的方式逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化。

(参考程序p63)

5-2将计数器0、1分别设置在方式3,计数初值设为1000,用逻辑笔观察OUT0电平的变化。

(参考程序p64)

实验六:

(1)8255方式0:

简单输入输出实验电路如图一,8255C口输入接逻辑电平开关K0~K7,编程A口输出接LED显示电路L0~L7;用指令从C口输入数据,再从A口输出。

图一8255简单输入输出

(2)编程将A口L0-L7控制成流水灯,流水间隔时间由软件产生;流水方向由K0键在线控制,随时

可切换;流水间隔时间也可由K4~K7键编码控制,如0000对应停止,0001对应1秒,1111对应15秒,大键盘输入ESC键退出。

(3)8段数码管静态显示:

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

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

图二单管静态显示

(4)8段数码管动态显示:

按图三连接好电路,七段数码管段码连接不变,位码驱动输入端S1、S0接8255C口的PC1、PC0。

编程在两个数码管上显示“56”。

图三双管动态显示

二.实验原理与接线

实验五:

5-1参考图3.6-1虚线连接电路,将计数器0设置为方式0,计数器初值为N(N≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)

●8253的CS接280H

●8253的GATE0接+5V

●8253的CLK0接单脉冲1或2

●8253的OUT0接逻辑笔(高电平LED12亮,低电平LED13亮)

5-2按图3.6-2连接电路,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1Hz)

●8253的CS接280H

●8253的GATE0和GATE1接+5V

●8253的CLK0接1MHz

●8253的OUT0接CLK1

●8253的OUT1接逻辑笔

编辑提示:

1、8253定时器0地址280h

8253定时器1地址281h

8253定时器2地址282h

8253控制口地址283h

2、实验参考程序中的口地址和代号是随意的,看程序的时候要注意。

实验六:

八段式LED数码管的符号和引脚

共阴极七段数码管字型数码

实验接线图

实验接线图(静态显示)

♦PA0~PA6分别接数码管的a~g

♦PC0~PC7分别逻辑电平开关的K0~K7

♦位选端S1接+5V

♦位选端S0接地

♦数码管dp端接地

实验接线图(动态显示)

♦PA0~PA6分别接数码管的a~g

♦位选端S0、S1接8255C口的PC0、PC1端

编程提示:

1、实验台的七段数码管为共阴性,段码同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码的输入端高电平选中。

2、8255的A口、B口、C口和控制口的端口地址分别为288H~28BH。

编程首先要设置控制字输出到控制口。

3、逻辑电平开关向上拨到“1”时输出高电平;向下拨到“0”时输出低电平。

4、动态显示时应先从A口输出段码,然后再从C口输出位码,然后应该延时一段时间才能看到数码管的显示。

其中段码需要查表

Leddb3fh,06h,…………71h

位码分别为:

左边的数码管xxxxxx10

右边的数码管xxxxxx01

5、动态显示时为了使两个数码管的字符可以同时看到,应注意延时的时间。

6、注意字符变换之间应使段位全灭,避免影子。

四.实验源程序(主要部分)和流程图

实验五:

源程序:

5-1将计数器0设置为方式0,计数初值为N(小于等于0FH),用手动的方式逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化。

(参考程序p63)

ioportequ0b800H-0280H;tpc卡中设备的io地址

io8253aequioport+283H;8253控制寄存器地址

io8253bequioport+280H;计数器0地址

stackssegmentstack

db100dup(?

stacksends

codesegment

assumecs:

code,ss:

stacks

mainprocfar

start:

movax,stacks

movss,ax

moval,10h;设置8253通道0为工作方式0,二进制计数

movdx,io8253a

outdx,al

movdx,io8253b;送计数初值为0FH

moval,0fh

outdx,al

ZZZ:

inal,dx;读计数初值

calldisp;调显示子程序

pushdx

movah,06h

movdl,0ffh

int21h

popdx

jzZZZ

movah,4ch;退出

int21h

mainendp

dispprocnear;显示子程序

pushdx

andal,0fh;首先取低四位

movdl,al

cmpdl,9;判断是否<=9

jlenum;若是则为'0'-'9',ASCII码加30H

adddl,7;否则为'A'-'F',ASCII码加37H

num:

adddl,30h

movah,02h;显示

int21h

movdl,0dh;加回车符

int21h

movdl,0ah;加换行符

int21h

popdx

ret;子程序返回

dispendp

codeends

endstart

实验现象:

计数器:

当手动输入单脉冲时,屏幕显示F,E,D,C,B,A……1,然后输出逻辑笔显示一个高电平。

原因:

计数器:

程序中设定的计数初值为0FH,故从0FH递减至1计数,每计完一次,输出一个高电平。

 

上图为计数过程中逻辑笔红灯亮。

5-2将计数器0、1分别设置在方式3,计数初值设为1000,用逻辑笔观察OUT0电平的变化。

(参考程序p64)

ioportequ0b800h-0280h;tpc卡中设备的io地址

io8253aequioport+280h;计数器0地址

io8253bequioport+281h;计数器1地址

io8253cequioport+283h;8253控制寄存器地址

stackssegmentstack

db100dup(?

stacksends

codesegment

assumecs:

code,ss:

stacks

mainprocfar

start:

movax,stacks

movss,ax

movdx,io8253c;向8253写控制字

moval,36h;使0通道为工作方式3

outdx,al

movax,1000;写入循环计数初值1000

movdx,io8253a

outdx,al;先写入低字节

moval,ah

outdx,al;后写入高字节

movdx,io8253c

moval,76h;设8253通道1工作方式2

outdx,al

movax,1000;写入循环计数初值1000

movdx,io8253b

outdx,al;先写低字节

moval,ah

outdx,al;后写高字节

movah,4ch;程序退出

int21h

mainendp

codeends

endstart

定时器:

逻辑笔输出频率为1Hz的信号。

 

定时器:

初始信号为1MHz,经过2级1000~0的记数,频率变为原来的1000000倍,即1Hz,实现1s的周期信号。

流程图:

实验六:

1.8255简单输入输出程序

ioportequ0b800h-0280h;tpc卡中设备的io地址

io8255aequioport+288h;8255A口地址

io8255bequioport+28bh;8255控制寄存器端口地址

io8255cequioport+28ah;8255C口地址

stackssegmentstack

db100dup(?

stacksends

codesegment

assumecs:

code,ss:

stacks

mainprocfar

start:

movax,stacks

movss,ax

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;否则返回DOS

int21h

mainendp

codeends

endstart

实验现象:

开关K0~K7的高低电平分别表示1和0,设置K0~K7的值,在流水灯L0~L7中用灯的亮与灭来显示。

下图将k0,k1设置为高电平,对应的灯亮起。

2.流水灯

start:

movax,stacks

movss,ax

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

moval,8bh

outdx,al

inout:

movcl,01h

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

inal,dx

testal,01

jneright;k0为高电平时向右

jmpleft;k0为低电平时向左

right:

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

inal,dx

andal,11110000b;判断高四位

cmpal,00h;判断延时,ah=00时停止,ah=10时延时移动显示

jeright

moval,cl

calldelay1

rolcl,1

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

inal,dx

testal,01

jneright;k0为高电平时向右

jmpleft

left:

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

inal,dx

andal,11110000b;判断高四位

cmpal,00h;判断延时,ah=00时停止,ah=10时延时移动显示

jeleft

moval,cl

calldelay1

rorcl,1

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

inal,dx

testal,01

jneright;k0为高电平时向右

jmpleft

delay1procnear

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

outdx,al;所输入的数据

calldelay

moval,0

outdx,al

calldelay

ret

delay1endp

DELAYPROCNEAR;延迟子程序

pushcx

pushbx

movbx,0fffh

cc:

movcx,0ffffh

ccc:

loopccc

decbx

jnzcc

popbx

popcx

ret

DELAYENDP

codeends

endstart

实验现象:

流水灯的流水方向可由K0键控制,K0为高电平时向左,K0为低电平时向右。

但是流水间隔时间可由K4~K7来控制,但按ESC键也不能退出流水灯。

虽然我们尝试修改了代码,不过最后还是没能实现按下esc退出。

3.8段数码管静态显示程序段:

start:

movax,stacks

movss,ax

movax,data

movds,ax

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

moval,80h

outdx,al

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

loop2:

movbh,02

lll:

movbyteptrbz,bh

pushdi

decdi

adddi,bz

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

popdi

moval,0

movdx,io8255a

outdx,al

movbh,0

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

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

moval,byteptr[si]

movdx,io8255c;自8255A的口输出

outdx,al

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

movdx,io8255a

outdx,al

movcx,3000

delay:

loopdelay;延时

movbh,byteptrbz

shrbh,1

jnzlll

movdx,0ffh

movah,06

int21h

jeloop2;有键按下则退出

movdx,io8255a

moval,0;关掉数码管显示

outdx,al

movah,4ch;返回

int21h

codeends

endstart

实验现象:

从键盘输入一个0~9的数字后数码管中显示出该数字。

键入的数字6:

数码管显示6:

4.8段数码管动态显示程序段

datasegment

ioportequ0c800h-0280h

io8255aequioport+288h

io8255bequioport+28bh

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

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

',0dh,0ah,'$'

dataends

stackssegmentstack

db100dup(?

stacksends

codesegment

assumecs:

code,ds:

data,ss:

stacks

start:

movax,stacks

movss,ax

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;返回DOS

int21h

codeends

endstart

实验现象:

两个数码管动态显示出“56”。

流程图

图四8255简单输入输出程序流程图图五8255动态显示56程序流程图

五.提高与创新研究

实验五:

1.图3.6-2系统中最大定时时间为多长,如果需要获得20秒的精确定时该如何处理?

CLK0:

0.0000001s

CLK1、OUT0:

0.0001s

CLK2、OUT1:

1s

所以最大定时时间为一秒。

如果要获得20秒的精确定时应将OUT1接CLK2,OUT2接输出,当OUT2输出20个方波时,为20s。

2.计数器选用方式三的原因:

应要将OUT0接CLK1,所以输出最好为占空比为1:

1的方波,而只有方式3输出为占空比为1:

1的方波,故选用方式三。

实验六:

递增00~99计数器

在电路图3的基础上,编程实现递增00~99计数器(选作与探索实验一),编程如下:

datasegment

ioportequ0e000h-0280h

io8255aequioport+28ah

io8255bequioport+28bh

io8255cequioport+288h

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

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

bzdw?

;位码

dataends

stackssegmentstack

db100dup(?

stacksends

codesegment

assumecs:

code,ds:

data,ss:

stacks

start:

movax,stacks

movss,ax

movax,data

movds,ax

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

moval,80h

outdx,al

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

loop1:

movcx,0300h;循环次数

loop2:

movbh,02

diy:

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,0ffffh;如果显示过快,可更改cx值为最大0ffffh

delay:

loopdelay;延时

popcx

movbh,byteptrbz

shrbh,1

jnzdiy

looploop2;循环延时

movax,wordptr[di]gg

cmpah,09

jnzset

cmpal,09

jnzset

(一)创业机会分析movax,0000

(一)对“漂亮女生”饰品店的分析mov[di],al

图1-1大学生月生活费分布mov[di+1],ah

jmploop1

set:

movah,01

int16h

jneexit;有键按下则转exit

movax,wordptr[di]

现在是个飞速发展的时代,与时俱进的大学生当然也不会闲着,在装扮上也不俱一格,那么对作为必备道具的饰品多样性的要求也就可想而知了。

incal

aaa

mov[di],al;al为十位

(3)个性体现mov[di+1],ah;ah中为个位

jmploop1

exit:

movdx,io8255a

moval,0;关掉数码管显示

outdx,al

movah,4ch;返回DOS

int21h

codeends

我们长期呆在校园里,对社会缺乏了解,在与生意合作伙伴应酬方面往往会遇上困难,更不用说商业上所需经历的一系列繁琐手续。

他们我们可能会在工商局、税务局等部门的手续中迷失方向。

对具体的市场开拓缺乏经验与相关的知识,缺乏从职业角度整合资源、实行管理的能力;endstart

六.实验结果以及遇到的问题和解决办法

实验五:

但这些困难并非能够否定我们创业项目的可行性。

盖茨是由一个普通退学学生变成了世界首富,李嘉诚是由一个穷人变成了华人富豪第一人,他们的成功表述一个简单的道理:

如果你有能力,你可以从身无分文变成超级富豪;如果你无能,你也可以从超级富豪变成穷光蛋。

实验五的目的主要是通过实验对芯片8253的工作机理有了更加清楚地认识。

通过本次实验,我熟悉了8253定时器/计数器的内部工作原理,透彻理解了8253的方式控制字,状态字等功能的实现原理,这是本次实验最大的收获!

并且,掌握了对8253的初始化以及运行的过程,让我对于课本上讲的8253的工作方式有了更深刻的体会。

大学生的消费是多种多样,丰富多彩的。

除食品外,很大一部分开支都用于。

服饰,娱乐,小饰品等。

女生都比较偏爱小饰品之类的消费。

女生天性爱美,对小饰品爱不释手,因为饰品所展现的魅力,女人因饰品而妩媚动人,亮丽。

据美国商务部调查资料显示女人占据消费市场最大分额,随社会越发展,物质越丰富,女性的时尚美丽消费也越来越激烈。

因此

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

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1