哈尔滨工业大学单片机实验报告 - 图文(精)

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

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

H a r b i n I n s t i t u t e o f T e c h n o l o g y 单片机原理与应用 实验报告 学生姓名: 学号: 班级: 通信工程 专业: 任课教师: 所在单位:

电子与信息工程学院 2013年5月

软件实验

在软件实验部分,通过实验程序的调试,使学生熟悉MCS-51的指令系统,了解程序设计过程,掌握汇编语言设计方法以及如何使用实验系统提供的调试手段来排除程序错误。

实验一清零程序 一、实验目的

掌握汇编语言设计和调试方法,熟悉键盘操作。 二、实验内容

把2000~20FFh的内容清零。 三、程序框图

四、实验过程 1、LED环境

⑴在“P.”状态下按“0→EV/UN”,装载实验所需的代码程序。

⑵在“P.”状态下键入0640,然后按“STEP”或“EXEC”进入实验项目的调试与运行。

2、PC环境

在与PC联机状态下,编译、连接、下载PH51\\se01.asm,用连续或单步方式运行程序。

3、运行结果检查

⑴在单步运行时,每走一步可观察其运行结果。

⑵在连续运行状态下,应按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出用户运行状态返回监控,然后再用相应的命令键观察与检查2000~20FFH中执行程序前后的内容变化。

五、实验结果及分析 实验前截图:

实验后截图:

实验源程序: ORG 0640H SE01: MOV R0,#00H

MOV DPTR,#2000H ;(2000H送DPTR LOO1: MOVX @DPTR,A ;0送(DPTR INC DPTR ;DPTR+1 INC R0 ;字节数加1

CJNE R0,#00H,LOO1 ;不到FF个字节再清

SJMP $ END

实验问题:2000H~20FFh中的内容是什么?

解答:实验运行之前,2000H~20FFh中的内容是随机分配的;在执行完清零程序之后,

2000H~20FFh中的内容都变为0. 实验二拆字程序 一、实验目的

掌握汇编语言设计和调试方法。 二、实验内容

把2000h的内容拆开,高位送2001h低位,低位送2002h低位,2001h、2002h高位清零,一般本程序用于把数据送显示缓冲区时用。

三、程序流程

四、实验步骤

1、LED环境

⑴在“P.”状态下按“0→EV/UN”,装载实验所需的代码程序。

⑵在“P.”状态下键入0660,然后按“STEP”或“EXEC”进入实验项目的调试与运行。

2、PC环境

在与PC联机状态下,编译、连接、下载PH51\\se02.asm,用连续或单步方式运行程序。

3、运行结果检查

⑴在单步运行时每走一步可观察其运行结果。

⑵在连续运行状态下,应按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出用户运行状态返回监控,然后再用相应的命令键观察与检查2000~2002h中内容变化情况。

五、实验结果及分析

先保存2000H,在利用SWAP语句将2000H高低位交换;然后利用ANL语句把交换后的2000H单元的高位给屏蔽,将高低位交换后的2000H单元的地位送给2001H,最后将2000H交换之前的高位屏蔽,低位送入2002H。

实验前后截图如下:

六、实验源程序

ORG 0000;

MOV DPTR,#2000H; MOVX A,@DPTR; ANL A,#0FH; MOV R1,A; MOVX A,@DPTR; SWAP A; ANL A,#0FH; INC DPTR; MOVX @DPTR,A; INC DPTR; MOV A,R1; MOVX @DPTR,A; END;

如果将2001h、2002h高位置1,程序该如何修改?

修改方法很多,例如在2001H、2002H单元中加上1100H。 实验三拼字程序 一、实验目的

进一步掌握汇编语言设计和调试方法。

二、实验内容

把2000h、2001h的低位分别送入2002h高低位,一般本程序用于把显示缓冲区的数据取出拼装成一个字节。

三、程序流程

四、实验步骤 1、LED环境

⑴在“P.”状态下按\装载实验所需的代码程序。

⑵在“P.”状态下键入0680,然后按“STEP”或“EXEC”进入实验项目的调试与运行。

2、PC环境

在与PC联机状态下,编译、连接、下载PH51\\se03.asm,用连续或单步方式运行程序。

3、运行结果检查

⑴在单步运行时每走一步可观察其运行结果。

⑵在连续运行状态下,应按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出用户运行状态返回监控,然后再用相应的命令键观察与检查2002h内容变化情况。

五、实验结果及分析 实验前后截图如下:

六、实验源程序 ORG 0000H;

MOV DPTR,#2000H; MOVX A,@DPTR; ANL A,#0FH; SWAP A; MOV R1,A; INC DPTR; MOVX A,@DPTR; ANL A,#0FH; ORL A,R1;

INC DPTR; MOVX @DPTR,A; END; 七、实验问答

1、运行程序后2002h的最终内容是?从实验后的截图中可以看出为:06. 实验四数据区传送子程序 一、实验目的

掌握RAM中的数据操作。 二、实验内容

把R2、R3源RAM区首址内的R6、R7字节数据传送到R4、R5目的RAM区。

三、程序流程

四、实验步骤

1、LED环境

⑴在“P.”状态下按“0→EV/UN”,装载实验所需的代码程序。

⑵对R2、R3所定义的源地址单元从首址开始依次写入00、11、22、……、0FF。

⑶在“P.”状态下键入07B0,然后按“STEP”或“EXEC”进入实验项目的调试与运行。

2、PC环境

在与PC联机状态下,编译、连接、下载PH51\\se04.asm,用连续或单步方式运行程序。

3、运行结果检查

⑴在单步运行时每走一步可观察其运行结果。

⑵在连续运行状态下,应按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出用户运行状态返回监控,然后再用相应的命令键检查由R4、R5所定义的目的地址单元。

五、实验结果及分析 实验前后截图如下:

六、实验源程序 ORG 07B0H MOV R2,#20H MOV R3,#00H MOV R4,#20H MOV R5,#90H MOV R6,#00H MOV R7,#00H START: CLR C MOV DPL,R3

MOV DPH,R2 ;建立源程序首址 MOVX A,@DPTR ;取数 MOV DPL,R5

MOV DPH,R4 ;目的地首址 MOVX @DPTR,A INC R3 ;源地址加1 MOV A,R2 ACALL ADB MOV R2,A

INC R5 ;目的地址加1 MOV A,R4 ACALL ADB MOV R4,A INC R7 ;转移数加1 MOV A,R6 ACALL ADB MOV R6,A

CJNE R6,#00H,START CJNE R7,#2FH,START ADB: ADDC A,#00H CLR C RET END 七、实验问答

1、R4、R5所定义的目的地址单元内容是什么? 从截图中可以看出 R4、R5中为:01 、09. 实验六查找相同数个数 一、实验目的

熟悉汇编语言编程。 二、实验内容

在2000~200Fh中查出有几个字节是零,把个数放在2100h中。 三、程序框图

四、实验步骤 1、LED环境

⑴在“P.”状态下按“0→EV/UN”,装载实验所需的代码程序。 ⑵在2000~200Fh的若干单元中填入零

⑶在“P.”状态下键入0AA0,然后按“STEP”或“EXEC”进入实验项目的调试与运行。

2、PC环境

在与PC联机状态下,编译、连接、下载PH51\\se06.asm,用连续或单步方式运行程序。

3、运行结果检查

⑴在单步运行时每走一步可观察其运行结果。

⑵在连续运行状态下,应按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出用户运行状态返回监控,然后再用相应的命令键观察与检查2100h中是几个单元数。

五、实验结果及分析 实验前后截图如下:

六、实验源程序 ORG 2000H; MOV R0,#0FH; MOV R1,#00H; MOV DPTR,#2000H; START:MOVX A,@DPTR; JNZ LOOP; INC R1;

LOOP:INC DPTR; DJNZ R0,START; MOV A,R1;

MOV DPTR,#2100H; MOVX @DPTR,A; END; 实验七无符号双字节快速乘法子程序 一、实验目的

掌握MCS-51汇编语言程序设计方法。 二、预备知识

本程序是利用单字节的乘法指令,根据下面的公式进行乘法运算的: (R2 R3×(R6 R7

= ((R2×28+(R3×((R6×28+(R7

= (R2×(R6×216+(R2×(R7+(R3×(R6×28+(R3*(R7 三、实验内容

将(R2 R3和(R6 R7中双字节无符号整数相乘,积送R4 R5 R6 R7中。 四、程序框图

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

Top