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

单片机实验报告专业:电子信息工程班级:姓名:学号:指导教师:单片机实验报告实验项目名称:片内外清零、置位和数据块传送程序实验日期: 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 指出。
将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。
软件实验报告详细版.doc

本科实验报告课程名称:微机原理与接口技术邵芳琳姓名:控制学院学院(系):专业:自动化3140103307学号:指导教师:曹峥2016年11月11日实验一存储器块操作实验一、实验目的1.熟悉KEIL 集成调试环境和汇编程序的调试方法。
2.掌握存储器读写方法;3.了解内存块的移动方法;二、实验说明实验1 指定某块存储器的起始地址和长度,要求能将其内容赋值。
通过该实验学生可以了解单片机读写存储器的方法,同时也可以了解单片机编程、调试方法。
块移动是单片机常用操作之一,多用于大量的数据复制和图象操作。
例程2 给出起始地址,用地址加一方法移动块,将指定源地址和长度的存储块移到指定目标地址为起始地址的单元中去。
移动3000H 起始的256个字节到4000H 起始的256 个字节。
思考题1.如何将存储器块的内容置成某固定值(例全填充为0FFH)? 请用户修改程序,完成此操作。
将MOV A,#1H 改为MOV A,#FFH2.若源块地址和目标块地址有重叠,该如何避免?源块地址和目标块地址重叠部分数据压制堆栈中,当要使用重叠部分源数据时,直接从堆栈中弹出。
实验内容1.试编程将片内RAM 中的数据依次复制到片外RAM。
假设源数据区的首地址为40H,目的数据区的首地址为1000H,数据块长度为10H。
运行结果:2.两个16 位无符号二进制数分别存放在片外RAM 首址为2000H 和2002H 单元内,将它们相加,结果存入片内RAM 30H(低8 位)、31H(高8 位)。
运行前:运行后:1100+0011=1111运行结果正确。
实验二数值转换实验一、实验目的1.熟悉KEIL 集成调试环境和汇编程序的调试方法。
2.掌握简单的数值转换算法。
3.基本了解数值的各种表达方法。
4.掌握数值的加减法运算。
5.掌握用查表的方法将BCD 值转换成ASCII 值。
二、实验说明单片机系统内部运算用二进制,而输入输出常用十进制,以符合日常习惯,因此,数制转换是仪表设计中常用的程序之一。
《89C51单片机实验指导书》

89C51单片机实验指导书目录软件部分 (4)KEIL uVision软件的使用 (4)实验1 存储区数据设置 (11)一.实验目的 (11)二.实验内容 (11)三.实验步骤 (11)四.实验参考程序 (11)实验2 二进制BCD码转换 (13)一.实验目的 (13)二.实验内容 (13)三.实验步骤 (13)四.实验参考程序 (13)实验3 程序跳转表 (15)一.实验目的 (15)二.实验内容 (15)三.实验步骤 (15)四.实验参考程序 (15)实验4 内存块移动 (17)一.实验目的 (17)二.实验内容 (17)三.实验步骤 (17)四.实验参考程序 (17)实验5 数据排序 (19)一.实验目的 (19)二.实验内容 (19)三.实验步骤 (19)四.实验参考程序 (19)硬件部分 (21)实验一仿真器的使用 (21)一.实验目的 (21)二.实验内容 (21)实验1 I/0口输入输出实验 (22)一.实验目的 (22)二.实验内容 (22)三.实验原理图 (22)四.实验步骤 (22)实验2 广告灯实验 (23)一.实验目的 (23)二.实验内容 (23)三.实验原理图 (23)四.实验步骤 (23)实验3 定时器实验 (24)一.实验目的 (24)二.实验内容 (24)三.实验原理图 (24)四.实验步骤 (24)实验4 外中断实验 (25)一.实验目的 (25)二.实验内容 (25)三.实验原理图 (25)四.实验步骤 (25)实验5 动态扫描显示实验 (26)一.实验目的 (26)二.实验内容 (26)三.实验原理图 (26)四.实验步骤 (26)软件部分KEIL uVision软件的使用Keil uVision软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和C 语言的程序设计,界面友好,易学易用。
下面介绍Keil uVision软件的使用方法进入Keil uVision后,屏幕如下图所示。
实验一内部RAM数据传送程序设计

实验一内部RAM数据传送程序设计一、实验目的1.学习MCS-51微控制器汇编语言的编写。
2.了解51微控制器内部RAM的读写及调试方法。
二、实验设备用wave模拟软件进行实验.三、实验原理51微控制器片内RAM低128字节(00H~7FH)包含工作寄存器区(00H~1FH)、位操作区(20H~2FH)和数据区(30~7FH)。
对该128字节的RAM区,均可采用直接寻址和间接寻址方式,若采用间接寻址用R0或R1作间址寄存器。
特殊功能寄存器占用片内RAM地址空间80H~FFH,对它只能采用直接寻址方式。
数据传送指令是汇编语言程序设计的基本要素,数据块传送也是程序设计的基本技巧之四、实验内容及要求试编写程序:先把内部RAM的(30H~7FH)单元清零,然后将30H-7FH单元内55H的值. 五、实验步骤1.打开计算机,打开wave软件,进入仿真环境,选择软件模拟器,选择仿真器,仿真头选择,选择CPU。
2.打开“实验程序/8051程序/RAM.asm”程序3.按照程序注释设置断点。
4.点击工具条的运行按钮,程序运行到第一个断点处,打开窗口-data数据观察窗口,进行观察30H-7FH单元的值。
5.然后再点击运行按钮,程序会运行到第二个断点处,此时,观察30H-7FH单元的值变化。
六、实验报告要求1.整理实验程序程序,理解程序。
2.如果把程序1中(30H~7FH)单元的内容改为66H,如何修改程序。
3.理解数据指针:数据块传送若在内部RAM中进行,用什么作数据指针?若在外部RAM 或ROM中进行,用什么作数据指针?4.存储器和数据存储器的地址空间可以重叠,对此如何解释?七、实验参考程序ORG 0000HCLEAR: MOV R0,#30H ;30H送R0寄存器MOV R6,#50H ;4FH送R6寄存器(计数)CLR1: MOV A,#00H ;00送累加器AMOV @R0,A ;00送到30H-7FH单元INC R0 ;R0加1DJNZ R6,CLR1 ;不到4F个字节再清NOP ;此处设断点观察30H-7FH单元的值MOV R0,#30HMOV R6,#50HLOOP: MOV A,#55HMOV @R0,AINC R0DJNZ R6,LOOPAJMP $ ;此处设断点观察30H-7FH单元的值END图1实验二算术运算程序设计一、实验目的1.学习单片机算术运算、逻辑运算等指令。
微机原理与接口技术实验指导书(带程序)

《微机原理与接口技术》实验指导书计算机与信息工程系2012年9月目录实验概述............................................. 错误!未定义书签。
实验仪器使用简介 (5)实验项目一学生考试成绩统计实验 (11)实验项目一两个多位十进制数相减实验............... 1错误!未定义书签。
实验项目一 8259中断控制器实验.. (16)实验项目一具有优先通行权的十字路口交通灯控制设计 (21)实验项目一 8253定时器/计数器实验 (26)实验项目一继电器控制实验 (28)实验概述一、实验的目的本实验课是配合理论教学内容,帮助学生加深理解和掌握本门课程内容的重要手段。
由于本课程具有理论与实际相结合紧密的特点,通过实验使学生掌握微型计算机的原理及接口电路的设计应用技术。
二、实验前的准备工作1.了解所用的计算机系统(包括汇编编译系统)的性能和使用方法。
2.复习和掌握与本实验有关的DOS命令以及相关指令。
3.准备好上机所需的程序,切忌不编程或抄别人的程序去上机。
三、实验的步骤上机实验应一人一组,独立实验。
上机过程中出现的问题,除了是系统的问题以外,不要轻易举手问老师。
上机实验一般应包括以下几个步骤:1、编辑汇编语言源程序使用一种文本编辑软件(word、记事本、写字板等),编辑保存一个“文件名.ASM”的汇编语言源程序文件2、汇编源程序用宏汇编(MASM)对汇编源程序进行汇编,产生目标程序(文件名.OBJ3、连接程序用连接程序(LINK)将若干目标模块连同库子程序连接在一起,产生可执行文件(文件名.EXE)4、运行调试DEBUGDEBUG 程序是专门为汇编语言设计的一种调试工具,它通过单步、跟踪、断点和连续等方式为程序员提供了非常有效的调试手段。
格式:DEBUG [驱动器][路径][文件名][参数]四、实验报告实验报告应包括以下内容:实验目的、实验内容、程序清单、运行结果、对运行结果的分析以及本次调试程序所取得的经验。
任务2-RAM内部数据传送

4.c51数组的使用
c51数组格式: 数据类型 数组名 [常量表达式] = { 常量表达式 } ; 数据类型 数组名 [常量表达式1] ……[常量表达式n] ;
注意:
•数组和普通变量一样,要求先定义,后使用。 •每个数组中的数据单元只能是同一数据类型。 •方括号[]里的数不能是变量只能是常量。 •数组的下标是从0开始的而不是从1开始。 •只能逐个引用数组中的元素,不能一次引用整个数组。 •初值个数必须小于或等于数组长度 。
30H
通用 RAM区
80个字节
7FH 80H
增强型 SFR区 附加空间
间接寻址 直接寻址
访问
访问
FFH
SFR中的累加器A及程序状态字PSW
0000H
外部RAM (或I/O)
64K
FFFFH
RD
WR
2. c51变量定义格式
变量格式: [存储种类] 数据类型 [存储器类型] 变量名表;
存储种类:有4种,自动(auto)、外部(extern)、 静态(static)和寄存器(register),默认为自动类型。
c51数组示例
unsigned int xcount[10]; char inputstring[5]; float outnum[10],[10]; unsigned char LEDNUM[2]={12,35}; int Key[2][3]={{1,2,4},{2,2,1}}; unsigned char IOStr[]={3,5,2,5,3}; unsigned char code skydata[]={0x02,0x34,0x22,0x32,0x21,0x12};
单片机实验报告---数据块复制

将存放在片内 RAM 40H 开始的 16 个单元(地址为 40H 到 4FH)内容依次复制到片外 RAM 3000H 开始的 16 个单元(地址为 3000H 到 300FH)。
1. 打开 Keil,新建工程:Project/New Project,输入工程名,并保存;2. 选项选择器件:Atmel 的 89C52;3. 新建程序文本,并另存该文件为汇编文件格式:(1)“File/New”(2) File/Save As/键入欲使用的文件名及后缀名,即“文件名.asm”。
再单击“保存”;4. 添加该文件到工程:回到编辑界面后,单击“Target 1”前面的“+”号,然后在“Source Group 1”上单击右键,单击“Add File to Group ‘Source Group 1’”,选择刚才新建的汇编文件。
5. 在 keil 的汇编文件中输入程序代码,并编译,调试。
(1)写完代码后单击“Project”菜单,再在下拉菜单中单击“Built Target”选项(或者使用快捷键 F7),编译成功后(0 个 errors),(每次修改程序后都要重新编译下,才能生效)。
(2)再单击“Debug”菜单,在下拉菜单中单击“Start/Stop Debug Session”(或者使用快捷键 Ctrl+F5),点击 RUN 进行运行,或者按 F11 进行单步运行。
6. 观察运行结果:在 keil 的 view/memory window 窗口中输入 D:0x40、x:0x3000 等地址查看运行结果是否正确。
ORG 0000HSJMP MAINMAIN:MOV R1,#40HMOV A,#00HMOV R6,#10HMOV R7,#10H ;复制 16 个数据MOV R0,#40H ; 内部 RAM 开始地址MOV DPTR,#3000H ;外部 RAM 开始地址LOOP1:MOV @R1,A ; 内部 RAM 赋初值INC R1INC ADJNZ R6,LOOP1L1:MOV A,@R0MOVX @DPTR,A ;累加器传到外部 RAMINC R0 ;外部地址自加一INC DPTR ; 内部地址自加一DJNZ R7,L1 ;循环(R7 内容减 1 不等于 0,继续执行L1,等于 0,跳出循环,不再执行)END。
单片机原理与应的项目——数据块搬运

8051
8031
64KB
• 存储器小结:
MCS—51的程序存储器与数据存储器是分开的(属于哈佛结构),地址空间重迭,最 大可扩展到64KB。 1、程序存储器ROM (1)8031内部无程序存储器
(也称特殊功能寄存器)
1、SFR(80H~FFH)介绍:
※有2套地址
字节地址:只21个有效(其中仅11个有位地址)
位地址:只83位有效
其字节地址可被8整除。
※专用寄存器: A、B、 PSW、DPTR、SP。
※I/O接口寄存器: P0、P1、
字
P2、P3、SBUF、
节
TMOD、TCON、SCON …
(5) 数据指针DPTR (16位): 存放片外存储器地址,作为片外存储器的指针。
可分成两个8位寄存器DPH、DPL使用。
2. 专用寄存器的字节寻址
• 注意:
◆21个可字节寻址的专用寄存器是不连续地分散在 内部RAM高128单元之中,共83个可寻址位。尽管 还剩余许多空闲单元,但用户并不能使用。
◆在22个专用寄存器中,唯一一个不可寻址的PC。 PC不占据RAM单元,它在物理上是独立的,因此 是不可寻址的寄存器。
外部中断0(INT0)中断地址区 定时器/记数器0(T0)中断地址区 外部中断1(INT1)中断地址区 定时器/计数器1(T1)中断地址区 串行(RI/TI)中断地址区
中断服务程序存放方法:
(1)从中断地址区首地址开始,在中断地址区中直接存放; (2)从中断地址区首地址开始,存放一条无条件转移指令,
2.2.4 内部程序存储器
• 80C51内有4KB ROM,其地址为0000H~0FFFH(内部ROM)。 其中0000H~0002H是系统的启动单元。 系统复位后(PC)=0000H,开始取指令执行程序。 如果不从0000H开始,应存放一条无条件转移指令,以便直接 转去执行指定的程序。
单片机 移位操作 软件实验

实验五移位操作一、实验目的:掌握移位操作的方法,并理解左移或右移与乘除法运算的关系。
二、实验内容:双字节二进制数左移一位将两个内部RAM 31H和30H单元中的内容组成的双字节数通过C y左移一位。
功能示意图31H 30H(30H)=36H (31H)=54HORG 0000HCLR C (Cy)=00H 1字节MOV A ,30H (A)=(30H)=36H 2字节RLC A (A)=6CH 1字节MOV 30H, A (30H)=(A)=6CH 2字节MOV A,31H (A)=(31H)=54H (PSW)=01H (P)=01H 2字节MOV 31H, A (31H)=(A)=A8H 2字节SJMP $END多字节二进制数右移一位将三个内部RAM 32H 、31H 和30H 单元中的内容组成的三字节数通过C y 右移一位。
功能示意图(30H)=13H (31H)=42H (32H)=56HORG 0000HCLR C (Cy)=00H 1字节MOV A,32H (A)=(32H)=56H 2字节RRC A (A)=2BH 1字节MOV 32H,A (32H)=(A)=2BH 2字节MOV A,31H (A)=(31H)=42H 2字节32H31H30HMOV 31H,A (31H)=(A)=21H 2字节MOV A,30H (A)=(30H)=13H (PSW)=01H (P)=01H 2字节RRC A (A)=09H (PSW)=80H (Cy)=01H (P)=00H 1字节MOV 30H,A (30H)=(A)=09H 2字节SJMP $END思考题1、多于三个字节的移位操作如何进行?答:同理,通过C累加器,运用RRC或RLC命令实现移位操作。
若字节过多,可以加入循环。
详见实验七第一个程序段2、如果不通过C y如何移位?实现的功能有何不同?答:将RLC、RRC命令更改为RL、RR命令,这样就在不引起Cy 变化的情况下进行移位操作了。
单片机实验上机--实验五 内存块移动

实验五内存块移动一、实验目的1、了解内存块的移动方法2、加深对存储器读写的认识二、实验说明块移动是单片机常用操作之一,多用于大量的数据复制和图象操作。
本程序是给出起始地址,用地址加一方法移动块,将指定源地址和长度的存储块移到指定目标地址为起始地址的单元中去。
移动3000H-->4000H,256字节。
三、实验内容及步骤1、启动计算机,打开伟福仿真软件,进入仿真环境。
首先进行仿真器的设置,选择使用伟福软件模拟器。
2、打开TH5.ASM源程序进行编译,编译无误后,打开数据窗口(XDATA),观察地址3000H 起始256个字节存储块和4000H起始的256个字节存储块,若各单元内数据对应相同,则用键盘输入改变其中一块的数据,全速运行程序。
点击暂停按钮,观察两个存储块的数据,可以看到两块数据已相同,说明存储块已移动。
3、打开CPU窗口,选择单步或跟踪执行方式运行程序,观察CPU窗口各寄存器的变化,可以看到程序执行的过程,加深对实验的了解。
四、流程图及源程序1.源程序ORG 0MOV R0,#30HMOV R1,#00HMOV R2,#40HMOV R3,#00HMOV R7,#0LOOP: MOV DPH,R0MOV DPL,R1MOVX A,@DPTRMOV DPH,R2MOV DPL,R3MOVX @DPTR,AINC R1INC R3DJNZ R7,LOOPLJMP $END2.流程图结束五、思考题1.若源块地址和目标块地址有重叠,该如何避免?2.请思考给出块结束地址,用地址减一方法移动块的算法。
- 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.请思考给出块结束地址,用地址减一方法移动块的算法。