一.实验目的要求:

1.通过Keil的Debug调试内存读写的单片机程序,理解单片机内部各内存区域的划分;

2.理解绝对地址访问关键字的意义和使用方法;

3.进一步掌握在Keil中进行单片机程序调试的一般方法。

二.实验内容:

通过Keil的Debug调试一个内存读写的单片机程序,观察内存数据的变化。

三.实验过程:

  • 在keil里完成下列代码的调试,注意代码格式,请列写表格给出下列各个变量的地址和值各是多少。
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
void test_memory(void) {uchar idata ivar1;uchar xdata *xdp;        char data *dp;                     uchar idata *idp;        xdp=0x1000;          *xdp=0x5A;          dp=0x61;                *dp=0x23;                idp=&ivar1;           *idp=0x16;
}
void main(void){while(1){test_memory();while(1);}
}

调试过程:

我们可以在右下角的watch1里面输入想要查看的变量名,从而可以看到其数值与地址。如下图:

可以看到,现在他们的数值都是?????

当我们进行调试。

可以看到,各个变量所对应的数值与地址。

        代码分析:

#include <reg51.h>

表示这是基于51单片机结构进行的实验。

    uchar idata ivar1;uchar xdata *xdp;        char data *dp;                     uchar idata *idp;

以上语句都为定义变量语句。只不过在变量类型与变量名之间,又加了一个内存区间。

它限制了变量储存在一定的区块内。

如 ivar1变量是存储在idata这个内存区块内。

    xdp=0x1000;          *xdp=0x5A;          dp=0x61;                *dp=0x23;

这是简单的赋值语句,只不过加入了指针内容。但也很好理解。

简单讲一下,

给xdp这个指针类型赋了一个0x1000的地址,接着在0x1000所指向的内存空间赋了一个值0x5A。

如图:

 idp=&ivar1;           *idp=0x16

这行代码把ivar1的地址赋给了idp。

接着给idp所指向的地址赋予了0x16的值。也就是给ivar1赋了0x16的值。

  • 编写程序实现将内部RAM中的一段数据复制到另一RAM空间。编程参考:首先设置源的首地址和目的首地址,再设置数据块的长度,设置一个变量,先从源读取一个字节,再写入到目的地址中,如此循环,直至到数据块的长度。

参考代码:

/*内存复制,把RAM空间20H-2FH空间的数据首先写入00~0F,然后把
该氛围内的数据传送到外部RAM 1000H~1000FH区域*/
#include "reg51.h"
#include "absacc.h"
/*******************************************************
在程序中,用“#include<absacc.h>”即可使用其中定义的宏来
访问绝对地址,包括:CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD
************************************************************/
void main (void)
{unsigned char i;for(i = 0; i < 16; i++){DBYTE[0x20+i] = i;}for(i = 0; i < 16; i++){XBYTE[0x1000+i] = DBYTE[0x20+i];}while(1);
}
  • 对代码进行改写,使用指针访问的方法,完成相同功能。请给出代码和调试过程。

参考代码:

#include <reg51.h>
#include <absacc.h>
#define uchar unsigned char
#define uint unsigned int
void main (void)
{unsigned char i;uchar xdata *x;char data *d;d = 0x20;x = 0x1000;for(i = 0; i < 16; i++){*d = i;d++;}d = 0x20;for(i = 0; i < 16; i++){*x = *d;x++;d++;}while(1);
}

单片机实验-存储器实验相关推荐

  1. 计算机组成原理实验——存储器

    计算机组成原理实验--存储器 实验题目:存储器 预习内容: 1.多层次的存储器 ⑴存储器概述 ①存储器的分类 ②存储器的分级 ③主存储器的技术指标 ⑵SRAM存储器 ①基本的静态存储元阵列 ②基本的S ...

  2. 单片机广告灯实验总结_温州很强的ly51s单片机程序开发公司

    温州很强的ly51s单片机程序开发公司 sdthfsfd 温州很强的ly51s单片机程序开发公司 "时,表示波特率自适应工作正确完成,如图所示,可以进行参数设置和校准操作.这也是为什么晶振的 ...

  3. 模电数电单片机综合开发系统实验装置QY-MS535K

    一.设备简介 QY-MS535K模电数电单片机综合开发系统实验装置集实验和开发为一体,容51/88/196于一身,增添了数字电路.模拟电子技术实验.这一崭新的系统实现了专业基础课(模拟.数字电路).专 ...

  4. 单片机炫彩灯实训报告_51单片机呼吸灯实验报告.doc

    51单片机呼吸灯实验报告.doc 呼吸灯1功能与技术分析呼吸灯就是让LED灯的闪烁像呼吸一样,时呼时吸,时亮时暗,利用LED的余辉和人眼的暂留效应,看上去和人的呼吸一样.可以展示出各种酷炫的图像.11 ...

  5. 山东大学单片机原理与应用实验 汇编程序实验2

    一.实验题目 汇编程序实验2 二.实验要求 片内RAM30H开始的32个单元中分布着随机的有符号8位二进制数,按从小到大的顺序进行排序,排序后的数据仍然保存到30H开始的32个单元中(低地址存放小数据 ...

  6. 单片机开发应用技术实验装置QY-DPJ13A

    一.装置简介 QY-DPJ13A单片机开发应用技术综合实验装置由控制屏.实验挂箱.实验桌组成,可完成单片机的接口扩展.数据采集.数据显示.键盘控制.定时器.打印机接口等实验,配备有仿真器.装置设有电流 ...

  7. 单片机微机开发实验系统,QY-JXSY38

    匈牙利籍数学家冯·诺依曼在方案的设计上做出了重要的贡献.1946年6月,他又提出了"程序存储"和"二进制运算"的思想,进一步构建了计算机由运算器.控制器.存储器 ...

  8. 计算机原理存储器实验报告,计算机组成原理存储器实验报告.doc

    文档介绍: 福建农林大学计算机与信息学院信息工程类实验报告 系: 计算机系专业: 计算机科学与技术年级: 2007级 姓名: 学号: 实验课程: 计算机组成原理 实验室号:__ 实验设备号: 1 实验 ...

  9. 单片机c语言实验,单片机实验C语言编程.doc

    单片机实验C语言编程.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文档所 ...

  10. c语言跑马灯实验报告,单片机跑马灯实验

    一.实验目的 1. 熟悉HNIST-2型单片机系统相关硬件电路,程序下载方法: 2. 掌握采用汇编语言与C语言开发单片机系统的程序结构: 3. 掌握51系列单片机通用I/O口的使用. 二.实验前准备 ...

最新文章

  1. Keil 汇编窗口无法设置断点,disassembly显示错误,Keil汇编解析错误
  2. iOS开发之简单画板实现
  3. class std::vectorclass std::basic_stringchar,struct std::char_traitschar,class std::allocatorch
  4. skip page cache - SAP gateway的调试
  5. .NET应用如何优雅的实现功能定时开关
  6. 是谁干的 linux找嫌疑人
  7. 星巴克、喜茶们左右围守 瑞幸的大师故事还能讲多久
  8. h.264 视频解码的一点小经验
  9. Tomcat学习总结(11)——Linux下的Tomcat安全优化
  10. Web前端工作笔记005---浏览器内核介绍
  11. ❤️大佬都在学什么?Python爬虫分析C站大佬收藏夹,跟着大佬一起学, 你就是下一个大佬❤️!
  12. ftp服务器向所有主机发送文件,文件传输FTP
  13. python词云图输出(附代码)
  14. 基于osgEarth的空间态势三维场景视点控制与卫星轨道绘制
  15. 计算机等级考试准考证打河南,2019年河南牧院计算机等级考试准考证打印时间...
  16. 学生成绩排名预测(DC)
  17. 2023年腾讯云轻量应用服务器配置价格表(CPU/系统盘/流量/节点)
  18. 你觉得iPhone 13能成为下一个iPhone 6s吗?
  19. QRCODE 根据url生成二维码图片
  20. linux的常用备份方法,Linux系统下常用的数据备份方法

热门文章

  1. proteus仿真串口
  2. h5页面预览pdf文件_H5 页面如何查看 PDF 文件
  3. ArcGIS与GIS知识:ARCGIS中坐标转换及地理坐标、投影坐标的定义以及投影分度带的划分
  4. WEB前端学习day-6-盒子,浮动,学成在线案例
  5. A股退市公司名单及情况(1997-2020年)
  6. 2015 年度新增开源软件排名 TOP100
  7. 6个免费视频、音频素材网,视频剪辑必备
  8. 图片放大后变模糊了怎么办?
  9. windows图片查看器背景颜色更改
  10. leetcode *1818. 绝对差值和(2021.7.14)