微机原理实验报告25756.docx

上传人:b****6 文档编号:5737903 上传时间:2022-12-31 格式:DOCX 页数:23 大小:1.04MB
下载 相关 举报
微机原理实验报告25756.docx_第1页
第1页 / 共23页
微机原理实验报告25756.docx_第2页
第2页 / 共23页
微机原理实验报告25756.docx_第3页
第3页 / 共23页
微机原理实验报告25756.docx_第4页
第4页 / 共23页
微机原理实验报告25756.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

微机原理实验报告25756.docx

《微机原理实验报告25756.docx》由会员分享,可在线阅读,更多相关《微机原理实验报告25756.docx(23页珍藏版)》请在冰豆网上搜索。

微机原理实验报告25756.docx

微机原理实验报告25756

微型计算机原理及单片机

实验报告

 

班级:

学号:

姓名:

实验一汇编语言程序设计

1分支程序设计实验

1.1.1实验目的

1.掌握分支程序的结构。

2.掌握分支程序的设计、调试方法。

1.1.2实验设备

PC机一台,TD-PITE实验装置一套。

1.1.3实验内容

设计一数据块间的搬移程序。

设计思想:

程序要求把内存中一数据区(称为源数据块)传送到另一存储区(成为目的数据块)。

源数据块和目的数据块在存储中可能有三种情况,如图1.1所示。

(a)(b)(c)

图1.1源数据块与目的数据块在存储中的位置情况

对于两个数据块分离的情况,如图1.1(a),数据的传送从数据块的首地址开始,或从数据块的末地址开始均可。

但是对于有重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭到破坏,可有如下结论:

当源数据块首地址<目的块首地址时,从数据块末地址开始传送数据,如图1.14(b)所示。

当源数据块首地址>目的块首地址时,从数据块首地址开始传送数据,如图1.14(c)所示。

实验程序流程图如图1.5所示。

1.1.4实验程序如下

SSTACKSEGMENT

STACKDW64DUP(?

SSTACKENDS

CODESEGMENT

ASSUMECS:

CODE

START:

MOVCX,0010H图1.5程序流程图

MOVSI,6000H

MOVDI,7000H

CMPSI,DI

JAA2

ADDSI,CX

ADDDI,CX

DECSI

DECDI

A1:

MOVAL,[SI]

MOV[DI],AL

DECSI

DECDI

DECCX

JNEA1

JMPA3

A2:

MOVAL,[SI]

MOV[DI],AL

INCSI

INCDI

DECCX

JNEA2

A3:

JMPA3

CODEENDS

ENDSTART

1.1.5实验步骤

1.按流程图编写实验程序,经编译、链接无误后装入系统。

2.用E命令在以SI为起始地址的单元中填入16个数。

3.运行程序,待程序运行停止。

4.通过D命令查看DI为起始地址的单元中的数据是否与SI单元中数据相同。

5.通过改变SI、DI的值,观察在三种不同的数据块情况下程序的运行情况,并验证程序的功能。

1.1.6实验结果

图1图2

图3图4

 

图5

2.循环程序设计实验

1.2.1实验目的

1.加深对循环结构的理解。

2.掌握循环结构程序设计的方法以及调试方法。

1.2.2实验设备

PC机一台,TD-PITE实验装置一套。

1.2.3实验内容

计算S=1+2×3+3×4+4×5+…+N(N+1),直到N(N+1)项大于200为止。

编写实验程序,计算上式的结果,参考流程图如图1.6所示。

1.2.4实验程序

SSTACKSEGMENTSTACK

DW64DUP(?

)图1.6程序流程图

SSTACKENDS

CODESEGMENT

ASSUMECS:

CODE

START:

MOVDX,0001H

MOVBL,02H

A1:

MOVAL,BL

INCBL

MULBL

ADDDX,AX;结果存于DX中

CMPAX,00C8H;判断N(N+1)与200的大小

JNAA1

A2:

JMPA2

CODEENDS

ENDSTART

1.2.5实验步骤

(1)编写实验程序,编译、链接无误后装入系统。

(2)运行程序,待程序运行停止。

(3)运算结果存储在寄存器DX中,查看结果是否正确。

(4)可以改变N(N+1)的条件来验证程序功能是否正确,但要注意,结果若大于0FFFFH将产生数据溢出。

1.2.6实验结果

 

实验二8255并行接口实验

2.1实验目的

1.学习并掌握8255的工作方式及其应用。

2.掌握8255典型应用电路的接法。

2.2实验设备

PC机一台,TD-PITE实验装置一套。

2.3实验内容

查询式输入输出实验。

编写程序,使8255的A口为输入,B口为输出,完成拨动开关到数据灯的数据传输。

要求将一开关设为总开关,由此开关来决定数据灯的显示是否随开关相应改变。

2.4实验步骤

查询输入输出实验

本实验使8255端口A工作在方式0并作为输入口,端口B工作在方式0并作为输出口。

用一组开关信号接入端口A,端口B输出线接至一组数据灯上,然后通过对8255芯片编程来实现输入输出功能。

具体实验步骤如下述:

(1)实验接线图如图2.1所示,按图连接实验线路图。

(2)编写实验程序,经编译、连接无误后装入系统。

(3)运行程序,改变拨动开关,同时观察LED显示,验证程序功能。

图2.18255基本输入输出实验接线图

2.5实验程序

SSTACKSEGMENTSTACK

DW32DUP(?

SSTACKENDS

CODESEGMENT

ASSUMECS:

CODE

START:

MOVDX,0646H;控制端口地址0646H送DX,因为8255的cs端口接I0Y1

对应的编址空间是0640H—067FH,所以这里是0646H。

MOVAL,90H;方式选择控制字送AL

OUTDX,AL;方式选择控制字输给8255A的控制端口,完成端口A工

作在方式0并作为输入口,端口B工作在方式0并作为输出口。

AA1:

MOVDX,0640H;控制端口A地址0640H送DX

INAL,DX;将端口A连接的开关的对应状态送给AL

TESTAL,80H;检测AL的最高位

JZAA1;如果为0则跳到AA1

CALLDELAY

MOVDX,0642H;控制端口A地址0642H送DX

OUTDX,AL;将AL的数据送到8255的端口B,从而使其连接的LED的灯发光

JMPAA1

DELAY:

PUSHCX

MOVCX,0F00H

AA2:

PUSHAX

POPAX

LOOPAA2

POPCX

RET

CODEENDS

ENDSTART

2.6实验结果

实验三.8254定时/计数器应用实验

3.1实验目的

1.掌握8254的工作方式及应用编程。

2.掌握8254典型应用电路的接法。

3.2实验设备

PC机一台,TD-PITE实验装置一套。

3.3实验内容

计数应用实验。

编写程序,应用8254的计数功能,使用单次脉冲模拟计数,使每当按动‘KK1+’5次后,产生一次计数中断,并在屏幕上显示学号末两位。

3.4实验单元电路图

8254实验单元电路图如下图所示:

图3.18254实验电路原理图

3.5实验程序

实验程序清单(A82541.ASM)

A8254EQU06C0H

B8254EQU06C2H

C8254EQU06C4H

CON8254EQU06C6H

SSTACKSEGMENTSTACK

DW32DUP(?

SSTACKENDS

CODESEGMENT

ASSUMECS:

CODE,SS:

SSTACK

START:

PUSHDS

MOVAX,0000H

MOVDS,AX

MOVAX,OFFSETIRQ7;取中断入口地址

MOVSI,003CH;中断矢量地址

MOV[SI],AX;填IRQ7的偏移矢量

MOVAX,CS;段地址

MOVSI,003EH

MOV[SI],AX;填IRQ7的段地址矢量

CLI

POPDS;初始化主片8259

MOVAL,11H

OUT20H,AL;ICW1

MOVAL,08H

OUT21H,AL;ICW2

MOVAL,04H

OUT21H,AL;ICW3

MOVAL,01H

OUT21H,AL;ICW4

MOVAL,6FH;OCW1

OUT21H,AL

;8254

MOVDX,CON8254

MOVAL,10H;计数器0,方式0

OUTDX,AL

MOVDX,A8254

MOVAL,04H

OUTDX,AL

STI

AA1:

JMPAA1

IRQ7:

MOVDX,A8254

MOVAL,04H

OUTDX,AL

MOVAX,014DH

INT10H;显示字符M

MOVAX,0120H

INT10H

MOVAL,20H

OUT20H,AL;中断结束命令

IRET

CODEENDS

ENDSTART

3.6实验结果

实验四.数据采集实验

4.1实验目的

1.掌握8254的工作方式及应用编程。

2.掌握8254典型应用电路的接法。

4.2实验设备

PC机一台,TD-PITE实验装置一套。

4.3实验内容

要求实现三角波的产生,并且用示波器查看波形。

4.4硬件连线图

4.5实验程序

IOYOEQU0600H

DA0832EQUIOYO+00H*2

STACKSEGMENTSTACK

DW32DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,SS:

STACK

START:

MOVAX,00H

MOVDX,DA0832

moval,00h

AA1:

OUTDX,AL

CALLDELAY

INCAL

CMPAL,0FFH

JZAA2

JMPAA1

AA2:

OUTDX,AL

CALLDELAY

DECAL

CMPAL,00H

JZAA1

JMPAA2

DELAY:

PUSHCX

MOVCX,03FFH

AA3:

PUSHAX

POPAX

LOOPAA3

POPCX

RET

CODEENDS

ENDSTART

4.6实验步骤

4.7实验结果

实验五.求和程序设计

5.1实验目的

1.熟悉KEIL的软件使用环境及单片机C51语言编程;

2.掌握C51环境下内存地址的访问方法及循环程序的实现方法。

5.2实验设备

PC机一台

5.3实验内容

内容:

编写十个字节求和程序。

要求:

十个加数在片内RAM区20H~29H单元;

结果存放在片内RAM区30H,31H区。

5.4实验程序

#include

voidmain()

{

inti,sum=0;

for(i=0;i<10;i++)

{

sum+=DBYTE[0x20+i];

}

DBYTE[0x30]=sum/256;

DBYTE[0x31]=sum%256;

while

(1);

}

5.5实验步骤

开机启动KeilC51软件进入μVision2集成开发环境,确认89C51处于软件仿真状态。

完成程序的设计、编辑、编译、连接。

进入DEBUG方式,打开存储器Memory1窗口,在窗口Address栏键入D:

20H;点击鼠标右键,选择最后一项ModifyMemory,输入十个加数。

调试和运行程序并记录存储器Memory1,D:

30H窗口实验结果。

5.6实验结果

实验六.基于PROTEUS的60S倒计时器设计

6.1实验目的

1.熟悉PROTEUS的软件使用环境及单片机C51语言编程;

2.掌握C51环境下定时中断、并行接口及LED的显示方法。

6.2实验设备

PC机一台

6.3实验内容

60S倒计时器,利用LED显示秒数。

6.4实验电路图

6.5实验程序

#include

unsignedcharnum,t,n;

unsignedcharcode;

table[]={0xc0,0x90,0x80,0xf8,0x82,0x92,0x99,0xb0,0xa4,0xf9};

unsignedcharcodetable1[]={0x92,0x99,0xb0,0xa4,0xf9,0xc0};

voidmain()

{

num=0;t=0;TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

P2=0xc0;

P0=0x82;

while

(1)

{

if(t==10)

{

t=0;num++;

if(num==10)num=0;

P2=table[num];

if(num==1)

{

P0=table1[n];n++;

}

}

if(n==6)

{

if(num==0)

while

(1);

}

}

}

voidexter0()interrupt1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

t++;

}

6.6实验步骤

开机启动KeilC51软件进入μVision2集成开发环境,确认89C51处于软件仿真状态。

完成程序的设计、编辑、编译、连接、生成HEX文件。

启动ISIS软件链接仿真电路图,下载HEX文件,进行仿真。

6.7实验结果

实验七.外中断实验

7.1实验目的

1.掌握外中断的工作方式及应用编程。

2.掌握并行接口及LED显示器的典型应用电路。

7.2实验设备

PC机一台,TD-PITE实验装置一套。

7.3实验内容

要求实现外部按键一次(利用KK1按键),LED显示器的值加1。

7.4实验程序

#include

#include

unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

intnum=0;

sbits1=P2^0;

sbits2=P2^1;

sbits3=P2^2;

voiddelay();

voiddisplay(intnum);

voidmain()

{

IT0=1;

EA=1;

EX0=1;

s3=1;

while

(1)

{

display(num);

}

}

voiddelay()

{

unsignedcharj;

for(j=0;j<60;j++);

}

voiddisplay(intnum)

{

unsignedcharbitge,bitshi;

intge,shi;

shi=num%100/10;

ge=num%10;

bitshi=table[shi];

bitge=table[ge];

s1=0;s2=1;

P1=bitshi;//10位

delay();

s1=1;s2=0;

P1=bitge;//个位

delay();

}

voidbreak_timer()interrupt0

{

num=num+1;

}

7.6实验步骤

开机启动KeilC51软件进入μVision2集成开发环境,确认89C51处于软件仿真状态。

完成程序的设计、编辑、编译、连接。

进入DEBUG方式,按几次KK1按键,观察LED显示器的值。

7.7实验结果

实验八.静态存储器扩展实验

8.1实验要求

1.复习单片机扩展外部数据存储器的方法。

2.复习常用数据存储器芯片的引脚功能。

8.2实验设备

PC机一台,TD-PITE实验装置一套。

8.3实验目的

1.进一步熟悉单片机仿真实验软件KeilC51调试硬件的方法。

2.掌握单片机系统中存储器扩展的方法。

3.掌握单片机内部RAM和外部RAM之间数据传送的特点。

8.4实验内容

根据实验平台的单元电路,构建一个硬件系统,并编写实验程序实现如下功能:

在单片机内部一段连续RAM空间30H~3FH中写入初值00H~0FH,然后将这16个数传送到RAM的0000H~000FH中,最后再将外部RAM的0000H~000FH空间的内容传送到片内RAM的40H~4FH单元中。

传送结果通过KeilC51软件观察。

8.5实验单元电路及连线

8.6实验程序

#include

sfrAUXR=0x8E;

voidmain()

{

unsignedchari;

AUXR=0x02;

for(i=0;i<=15;i++)

DBYTE[0x30+i]=38;

for(i=0;i<=15;i++)

XBYTE[0x0000+i]=DBYTE[0x30+i];

for(i=0;i<=15;i++)

DBYTE[0x40+i]=XBYTE[0x0000+i];

while

(1);

}

8.7实验步骤

1.打开存储器观察窗口,在存储器#1的Address中输入D:

0x30,在存储器#2的Address中输入X:

0x0000来监视存储器空间。

2.可单步运行程序,观察存储器内容的变化,或在伪停机指令和处设置断点再运行程序,验证实验功能。

8.8实验结果

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

当前位置:首页 > 经管营销

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

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