单片机实验上机--实验五 内存块移动
单片机实验一片内外清零、数据块的传送

单片机实验报告专业:电子信息工程班级:姓名:学号:指导教师:单片机实验报告实验项目名称:片内外清零、置位和数据块传送程序实验日期: 2010-10-27 实验成绩:实验评定标准:1)实验内容否完整A()B()C()2)实验结果分析是否正确A()B()C()3)实验报告是否按照规定格式A()B()C()一、实验目的1、掌握汇编语言中对芯片内外存储器的清零,置位。
2、掌握8031 内部RAM 和外部RAM 之间的数据传送方法;掌握这两部分RAM 存贮器的特点与应用,掌握各种数据传送方法。
二、实验内容及要求1、将片内从50H开始的连续30个地址内容清零;将片外7000H_79FFH单元内容清零;将片内从20H开始的连续30个地址内容设置为0FEH。
2、试编写将外部的数据存贮区6030~607FH 的内容写入外部RAM 3030~307H 中。
三、实验步骤1、片内外清零、置位打开Keil程序,执行菜单命令“Project”→“New Project ”创建“片内外清零置位”项目,并选择单片机型号为AT89C51。
执行菜单命令“File”→“New ”创建文件,输入源程序,保存为“片内外清零置位.A51”。
在“Project”栏的File项目管理窗口中右击文件组,选择“Add Files to Group ‘Source Group1’”将源程序“片内外清零置位.A51”添加到项目中。
执行菜单命令“Project”→Options for Target ‘Target 1’”,在弹出的对话框中选择“Output”选项卡,选中“Greate HEX File”。
执行菜单命令“Project”→“Build Target 1”,编译源程序。
如果编译成功,则在“Outp ut Window”窗口中显示没有错误,并创建了,“片内外清零置位. HEX”文件。
执行菜单命令“Debug”→“Start/Stop Debug Seesion”,按键F11键,单步运行程序。
实现内存分配实验报告(3篇)

第1篇一、实验目的1. 理解操作系统内存分配的基本原理和常用算法。
2. 掌握动态分区分配方式中的数据结构和分配算法。
3. 通过编写程序,实现内存分配和回收功能。
二、实验环境1. 操作系统:Linux2. 编程语言:C语言3. 开发工具:GCC编译器三、实验原理1. 内存分配的基本原理操作系统内存分配是指操作系统根据程序运行需要,将物理内存分配给程序使用的过程。
内存分配算法主要包括以下几种:(1)首次适应算法(First Fit):从内存空间首部开始查找,找到第一个满足条件的空闲区域进行分配。
(2)最佳适应算法(Best Fit):在所有满足条件的空闲区域中,选择最小的空闲区域进行分配。
(3)最坏适应算法(Worst Fit):在所有满足条件的空闲区域中,选择最大的空闲区域进行分配。
2. 动态分区分配方式动态分区分配方式是指操作系统在程序运行过程中,根据需要动态地分配和回收内存空间。
动态分区分配方式包括以下几种:(1)固定分区分配:将内存划分为若干个固定大小的分区,程序运行时按需分配分区。
(2)可变分区分配:根据程序大小动态分配分区,分区大小可变。
(3)分页分配:将内存划分为若干个固定大小的页,程序运行时按需分配页。
四、实验内容1. 实现首次适应算法(1)创建空闲分区链表,记录空闲分区信息,包括分区起始地址、分区大小等。
(2)编写分配函数,实现首次适应算法,根据程序大小查找空闲分区,分配内存。
(3)编写回收函数,回收程序所占用的内存空间,更新空闲分区链表。
2. 实现最佳适应算法(1)创建空闲分区链表,记录空闲分区信息。
(2)编写分配函数,实现最佳适应算法,根据程序大小查找最佳空闲分区,分配内存。
(3)编写回收函数,回收程序所占用的内存空间,更新空闲分区链表。
3. 实验结果分析(1)通过实验,验证首次适应算法和最佳适应算法的正确性。
(2)对比两种算法在内存分配效率、外部碎片等方面的差异。
五、实验步骤1. 创建一个动态内存分配模拟程序,包括空闲分区链表、分配函数和回收函数。
MCS-51上机与实验

MCS-51单片机上机与实验
5
MCS-51上机一般过程
WAVE6000集成软件
编辑程序
编辑
汇编程序
汇编
调试程序
调试
手工编写 的源程序
EDIT
汇编语言 源文件(.ASM)
机器语言 目标文件(.HEX DEBUG8051 MASM51 .BIN)
烧写 (.HEX)
2013-8-4
MCS-51单片机上机与实验
6
使用WAVE6000几个应注意问题
• WAVE6000的运行方法:
– 通过项目:源程序---项目---编译---运行。 – 通过源程序直接运行:源程序---编译---运行。 – 通过目标文件:直接调入目标文件(.HEX)---打开CPU窗口--运行。
• WAVE6000安装或运行中的异常处理:
– 仿真器的设置是否到位?(会出现P0,P1…口无法编译等情 况) – 调入目标程序前,项目是否己关闭(文件---关闭)。如果没 有关闭则会出现不能编译打开的源文件的情况。 – REG窗口(内含R1,R2…等寄存器)找不到:窗口---CPU窗口。
– 原因:程序存储器中每个存储单元默认的值是FFH,即没 有写上代码机器码的单元的值都是FFH,而机器码FFH 对应的指令是MOV R7,A,所以运行没有写上代码机器 码的单元时,其实就是运行MOV R7,A指令.
• 单步与跟踪
– 单步:依次执行主程序中的每一条指令.但不跟踪函数或 过程的内部. – 跟踪:依次执行任一条指令,跟踪函数或过程的内部.
MOV A,40H SUBB A,#01H MOV 40H,A MOV A,41H SUBB A,#00H MOV 41H,A
2013-8-4
实验报告2(内存块移动与数据排序)

课程名称:单片机原理与嵌入式系统
实验名称:内存块移动与数据排序
实验报告
班级
姓名学号
同组人姓名
实验日期年月日
实验目的
通过上机编、调程序,加强对ASM51汇编语言的学习,掌握内存块移动与数据排程序的编制。
对程序编制能力、程序排错能力进行训练。
实验内容
编程实现以下任务:
1.将外部数据存储器2000H~202FH 中的48字节数据移动到2030H~205FH中。
2.将内部RAM 20H~2FH中的数据加以排序,大数在前,小数在后。
三、实验设备
PC机.
Lab2000P单片机仿真实验系统
四、调试通过的软件清单:
内存块移动程序清单
数据排序程序清单
五、实验收获、总结
六、思考题
内部RAM数据块移动
数据排序小数在前,大数在后。
LGSX-04A单片机、自动控制、计算机控制技术、信号与系统综合实验装置

LGSX-04A单片机、自动控制、计算机控制技术、信号与系统综合实验装置一、概述LGSX-04A单片机、自动控制、计算机控制技术、信号与系统综合实验装置由控制屏、实验挂箱、实验桌组成,通过单片机开发实训台可完成单片机的接口扩展、数据采集、数据显示、键盘控制、定时器、打印机接口等实验,配备有仿真器。
LGSX-04A单片机、自动控制、计算机控制技术、信号与系统综合实验装置设有电流型漏电保护器,控制屏若有漏电现象,漏电流超过一定值,即切断电源,对人身安全起到一定的保护。
LGSX-04A单片机、自动控制、计算机控制技术、信号与系统综合实验装置采用组件式结构,更换实验模块便捷。
如需扩展功能或开发新实验,只需添加实验模块挂箱即可,永不淘汰。
二、主要技术参数1、输入电源:AC220V±10% 50Hz2、工作环境:温度-10℃~+40℃相对湿度<85%(25℃)3、装置容量:200VA4、重量:100Kg5、外形尺寸(cm):160×75×1506、挂箱尺寸(mm):410×240×607、输出电源:有漏电、短路、过流保护A.~220V,通过安全插座输出B.直流稳压电源:±5V/1A ±12V/2A三、装置构成(一)实验屏:实验时放置实验挂箱,并提供实验电源,铁质双面亚光密纹喷塑结构。
(二)实验桌:钢木结构,桌面为防火、防水、耐磨高密度板,电脑桌连体设计,造型美观大方。
(三)实验模块:1、LGDP-01 单片机实验挂箱(一)LED点阵显示模块、点阵式字符液晶显示模块、8253定时计数器、A/D转换、D/A转换、V/F 转换、F/V转换、串引EEPROM、EEPROM、Flash Rom、SRAM、I2C总线接口2、LGDP-02 单片机实验挂箱(二)8251串行口扩展、232总线串行接口、单片机最小应用系统1、单片机最小应用系统2、拔码开关输出3、LGDP-03 单片机实验挂箱(三)ISD 1420语音控制、IC卡读写接口、实时时针/日历、USB接口、RS232转RS485接口4、LGDP-04 单片机实验挂箱(四)8279接口电路、8255 I/O扩展、8155 I/O扩展、动态扫描显示模块、转换接口、MC14433、整列式键盘实验模块5、LGDP-05 单片机实验挂箱(五)步进电机驱动程序示列、温度传感器与温度控制、汽车转弯信号灯/十字路口交通灯、数字频率计、看门狗6、LGDP-06 单片机实验挂箱(六)十六位逻辑电平显示、继电器控制接口、常用器件接口、八位逻辑电平输出、单次脉冲、扬声器、串引静态显示模块、查询式键盘。
实验二 数据块移动

实验二数据块移动一、实训目的1、掌握CPU对单片机片内和片外寻址方式的使用方法。
2、熟练掌握用几种不同的方法调试、运行程序。
二、实训内容块的移动是单片机常见操作之一,多用于大量的数据复制和图像操作。
本程序是编制数据搬家程序,要求先将单片机内部RAM的20H~2FH单元分别设置为00H、01H、……0FH;然后将单片机内部RAM的20H~2FH单元的数据搬到外部RAM的1000H~100FH单元中去。
三、程序流程四、实训参考程序ORG 0000HLJMP MOVEORG 0030HMOVE:MOV R0,#20H设置块的源地址返回设置块的目标地址设置移动长度从源地址取数保存到目标地址源地址加1目标地址加1是否移动完?NYMOV R2,#10HMOV A,#00HM1:MOV @R0,AINC R0INC ADJNZ R2,M1 ;将片内RAM的20H-2FH单元分别设置为00H-0FH★ MOV R0,#20HMOV DPTR,#1000HMOV R2,#10HM2:MOV A, @R0MOVX @DPTR,AINC R0INC DPTR ;将片内RAM的20H-2FH单元数据搬到DJNZ R2,M2 片外RAM的1000H-100FH单元LJMP 0030HEND五、程序调试步骤(1)建立一个工程项目文件:在Kile uVision2仿真软件中,执行菜单【Project】/【New project】,给项目文件取名并保存,选择单片机型号为AT89C51;(2)选择目标器件:右键Target1-Options for Target“ Target1”或选择【 Project】/ 【Options for Target“Target1”】对选项卡进行设置,在“Output”选项卡,选中“Create HEX File”;(3)新建一个源程序文件:在菜单File/New编辑窗口中输入源程序,在菜单File/Save中保存源程序文件,文件后缀为.asm;(4)把源程序文件添加到工程项目中单击工程项目【Target1】/【Source Group1】选择Add File to Group Source Group1,选择文件类型Asm Source File-单击Add按钮,添加完毕,关闭窗口;(5)编译程序选择【Project】/【Rebuild all target files】选项或单击工具栏中按钮,如果编译成功,显示编译成功的信息。
微机实验1(内存块的移动与清零)

否 是否清除完 是 结束
1
2.内存块移动 1. 进入 Wave6000,输入程序,并检查,保存程序。 2.“编译”程序。 3. 在指令“jmp $”处设断点。 4. “全速执行”程序。 5. 在“数据窗口(MEMOREY) ”查看: a)0400H、0401H、0402H 三个单元的内容,记录并分析实验结果。 b) 分别查看 0400H、0500H 开始 256 个单元的内容,记录并分析实验结果。
3
djnz ljmp end
r7, Loop $
;r7 自减 1 并判断是否等于 0,若不等则跳转到 Loop
六、实验结果分析 该实验达到了预期效果,实现了内存块的清零与内存块;该两个寄存器存放 4000h ;由 0 开始递减,可执行 256 次
cjne r1, #0ffh, Goon1 ;判断 r1 是否为 0xff,若不是则跳转到 Goon1 inc r0 ;r0 自增 1 Goon1: inc r1 ;r1 自增 1
cjne r3, #0ffh, Goon2 ; 判断 r3 是否等于 0xff, 若不是则跳转到 Goon2 inc r2 ;r2 自增 1 Goon2: inc r3 ;r3 自增 1
设置块的源地址
设置块的目标地址
设置移动长度
从源地址取数
保存到目标地址中
源地址加 1
否
目标地址加 1
是否移动完 是 结束
2
五、实验原始程序 1. 存储器块清零 Block equ 4000h
mov dptr, #Block ; 起始地址 mov r0, #0 ; 清 256 字节 clr a Loop: movx @dptr, a inc dptr djnz r0, Loop ljmp end 2. 内存块移动 mov mov mov mov mov Loop: mov mov movx mov mov movx dph, r0 dpl, r1 ;将 3000h 赋给 dptr a, @dptr dph, r2 dpl, r3 ;将 4000h 赋给 dptr @dptr, a r0, #30h r1, #00h r2, #40h r3, #00h r7, #0 $ ; 指向下一个地址 ; 记数减一
-单片机实验

实验一数据传送实验实验内容:将8031内部RAM 40H—4FH单元置初值A0H—AFH,然后将片内RAM 40H—4FH单元中的数据传送到片外RAM 9800H—980FH单元,再从片外RAM 9800H—980FH单元中的数据传送到片内RAM 50H—5FH单元。
将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。
源程序清单:ORG 0000HRESET: SJMP MAINORG 003FHMAIN: MOV R1,#40HMOV R2,#10HMOV A, #0A0HA1: MOV @R0,AINC R0INC ADJNZ R2,A1MOV R0, #40HMOV DPTR, #9800HMOV R2, #10HA2: MOV A, @R0MOVX @DPTR, AINC R0INC DPTRDJNZ R2,A2MOV R0, #50HMOV DPTR, #9800HMOV R2, #10HA3: MOVX A, @DPTRMOV @R0, AINC RINC DPTRDJNZ R2, A3LJMP 0000HEND思考题:1. 按照实验内容补全程序。
2. CPU 对8031内部RAM存储器和外部RAM存储器各有哪些寻址方式?内部RAM存储器寻址方式:直接寻址方式寄存器间接寻址基址变址寄存器间接寻址外部RAM存储器寻址方式:寄存器间接寻址基址变址寄存器间接寻址3. 执行程序后下列各单元的内容是什么?内部RAM 40H~4FH _________________________ 内部RAM 50H~5FH__________________________ 外部RAM 9800H~980FH______________________ 截图:实验二多字节十进制加法实验实验内容:多字节十进制加法。
加数首地址由R0 指出,被加数和结果的存储单元首地址由R1指出,字节数由R2 指出。
将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五内存块移动
一、实验目的
1、了解内存块的移动方法
2、加深对存储器读写的认识
二、实验说明
块移动是单片机常用操作之一,多用于大量的数据复制和图象操作。
本程序是给出起始地址,用地址加一方法移动块,将指定源地址和长度的存储块移到指定目标地址为起始地址的单元中去。
移动3000H-->4000H,256字节。
三、实验内容及步骤
1、启动计算机,打开伟福仿真软件,进入仿真环境。
首先进行仿真器的设置,选择使用伟福软件模拟器。
2、打开TH5.ASM源程序进行编译,编译无误后,打开数据窗口(XDATA),观察地址3000H 起始256个字节存储块和4000H起始的256个字节存储块,若各单元内数据对应相同,则用键盘输入改变其中一块的数据,全速运行程序。
点击暂停按钮,观察两个存储块的数据,可以看到两块数据已相同,说明存储块已移动。
3、打开CPU窗口,选择单步或跟踪执行方式运行程序,观察CPU窗口各寄存器的变化,可以看到程序执行的过程,加深对实验的了解。
四、流程图及源程序
1.源程序
ORG 0
MOV R0,#30H
MOV R1,#00H
MOV R2,#40H
MOV R3,#00H
MOV R7,#0
LOOP: MOV DPH,R0
MOV DPL,R1
MOVX A,@DPTR
MOV DPH,R2
MOV DPL,R3
MOVX @DPTR,A
INC R1
INC R3
DJNZ R7,LOOP
LJMP $
END
2.流程图
结束
五、思考题
1.若源块地址和目标块地址有重叠,该如何避免?
2.请思考给出块结束地址,用地址减一方法移动块的算法。