当前位置:   article > 正文

c语言建模存储器,51单片机C语言学习笔记3: 存储器结构

51单片机用c'写16位地址

MCS-51单片机在物理结构上有四个存储空间:

1、片内程序存储器

2、片外程序存储器

3、片内数据存储器

4、片外数据存储器

但在逻辑上,即从用户的角度上,8051单片机有三个存储空间:

1、片内外统一编址的64K的程序存储器地址空间(MOVC)

2、256B的片内数据存储器的地址空间(MOV)

3、以及64K片外数据存储器的地址空间(MOVX)

在访问三个不同的逻辑空间时,应采用不同形式的指令(具体我们在后面的指令系统学习时将会讲解),以产生不同的存储器空间的选通信号。

程序内存ROM

寻址范围:0000H ~ FFFFH 容量64KB

EA = 1,寻址内部ROM;EA = 0,寻址外部ROM

地址长度:16位

作用: 存放程序及程序运行时所需的常数。

七个具有特殊含义的单元是:

0000H —— 系统复位,PC指向此处;

0003H —— 外部中断0入口

000BH —— T0溢出中断入口

0013H —— 外中断1入口

001BH —— T1溢出中断入口

0023H —— 串口中断入口

002BH —— T2溢出中断入口

L3Byb3h5L2h0dHAvc3BhY2UuZWRuY2hpbmEuY29tL1VwbG9hZC8yMDA5LzQvNy9kNjRhZWU4ZS0wYWVhLTQ2ZDQtYmRiYi00NjIzNjY4OWM5NmIuSlBH.jpg

注意:

①但要注意的是8051内部数据存储器是256byte(字节)。访问低128B可以直接寻址也可以间接寻址,访问8052内部数据存储器高128B时只能间接寻址(MOV @R0、@R1、DPTR),访问特殊功能寄存器区SFR时只能直接寻址(MOV A,80H)。

L3Byb3h5L2h0dHAvc3BhY2UuZWRuY2hpbmEuY29tL1VwbG9hZC8yMDA5LzQvNy9kMGQxNjEzYS1mN2JmLTQwMDQtYmEzMy1iNDY4OWMzZmU2OTguSlBH.jpg

②外部RAM是通过单片机外部总线连接的,有可能在片内。如STC89C58RD+有1280B(字节) 位于片内的外部SRAM。再可以通过这个图了解51单片机的存储器结构

L3Byb3h5L2h0dHAvc3BhY2UuZWRuY2hpbmEuY29tL1VwbG9hZC8yMDA5LzQvNy84NmRjNzUyNy05MWU4LTRhNDMtYWRiZC1iZTIwMWY0NmQxYjkuSlBH.jpg

变量定义及其存储模式

C语言中变量要“先声明后使用”。

变量定义格式:

[存储种类]  数据类型  [存储器类型]  变量名表;

存储种类:自动(auto)、外部(extern)、静态(static)、寄存器(register)

存储器类型:

data   可直接寻址的片内数据存储器RAM(128字节)。1个或2个指令周期,访问速度较快。

bdata  可位寻址的片内数据存储器RAM(16字节)。

idata   间接访问的片内数据存储器RAM(256字节)。

pdata  分页寻址的片外存储器RAM(256字节)——不常用。

xdata  片外数据存储器RAM(64k字节)至少3个指令周期。

code   程序存储器ROM(64k字节)

L3Byb3h5L2h0dHAvc3BhY2UuZWRuY2hpbmEuY29tL1VwbG9hZC8yMDA5LzQvNy8yZTk5YzEyZC1lYjJjLTRhNmQtYTY0NC1iOWZmYjg2MzkwMzAuSlBH.jpg

注意:访问片内数据存储器(data,bdata,idata)比访问片外数据存储器(xdata,pdata)相对要快一些,因此可将经常使用的变量至于片内数据储存器,而将规模较大的,或不常使用的数据至于片外数据储存器中。

如果在变量定义时略去存储类型标识符,编译器会自动选择默认的存储类型。编译时使用的存储器模式small、compact或large来规定默认存储器类型。

SMALL:参数及局部变量放入片内数据存储器(data);

COMPACT:参数及局部变量放入分页片外数据存储器(pdata);

LARGE: 参数及局部变量放入片外数据存储器(xdata);

L3Byb3h5L2h0dHAvc3BhY2UuZWRuY2hpbmEuY29tL1VwbG9hZC8yMDA5LzQvMTIvZjliMjlmMzUtZGM1ZS00OTc1LWFjYWYtNWIwNTRmMmVmMWJmLkpQRw==.jpg

Keil中Option for Target ‘Target 1’选项

51单片机外部程序存储器(ROM)和外部数据存储器(RAM)的总线扩展电路图

L3Byb3h5L2h0dHAvc3BhY2UuZWRuY2hpbmEuY29tL1VwbG9hZC8yMDA5LzQvNy80OTM1M2YwZS05ZGNlLTQxYTUtODU0Mi03MGMxNjI1NmJmOGMuSlBH.jpg

参考资料:

1)8051单片机的存储器结构

2)Keil C51 Compiler Basics - The 8051 Architecture

3)单片机C语言日记九——登山的人 ednchina blog

4)在51系列中data,idata,xdata,pdata的区别

51单片机C语言学习笔记6:51单片机C语言头文件及其使用

很多初学单片机者往往对C51的头文件感到很神秘,而为什么要那样写,甚至有的初学者喜欢问,P1口的P为什么要大写,不大写行不行呢?其实这个是在头文件中用sfr定义的,现在定义好了的是这样的 sfr P1 ...

51单片机C语言学习笔记8:单片机C51编程规范

1.单片机C51编程规范- 前言  为了提高源程序的质量和可维护性,从而最终提高软件产品生产力,特编写此规范. 2.单片机C51编程规范-范围 本标准规定了程序设计人员进行程序设计时必须遵循的规范.本 ...

51单片机C语言学习笔记4:keil C51绝对地址访问

在利用keil进行8051单片机编程的时,常常需要进行绝对地址进行访问.特别是对硬件操作,如DA AD 采样 ,LCD 液晶操作,打印操作.等等.C51提供了三种访问绝对地址的方法: 1. 绝对宏:  ...

51单片机C语言学习笔记5:include的区别

#include #include "myfile_h" #include 是预处理器标识符.<>表示是标准的工程.标准的头文件.查 ...

51单片机C语言学习笔记7:关于.c文件和.h文件

1)h文件作用 1 方便开发:包含一些文件需要的共同的常量,结构,类型定义,函数,变量申明: 2 提供接口:对一个软件包来说可以提供一个给外界的接口(例如: stdio.h). 2)h文件里应该有什么 ...

Go语言学习笔记十: 结构体

Go语言学习笔记十: 结构体 Go语言的结构体语法和C语言类似.而结构体这个概念就类似高级语言Java中的类. 结构体定义 结构体有两个关键字type和struct,中间夹着一个结构体名称.大括号里面 ...

2017-04-21周C语言学习笔记

C语言学习笔记:... --------------------------------- C语言学习笔记:学习程度的高低取决于.自学能力的高低.有的时候生活就是这样的.聪明的人有时候需要.用笨的方法 ...

HTML语言学习笔记(会更新)

# HTML语言学习笔记(会更新) 一个html文件是由一系列的元素和标签组成的. 标签: 1. 表示该文件为超文本标记语言(HTML)编写的.成对出 ...

2017-05-4-C语言学习笔记

C语言学习笔记... ------------------------------------ Hello C语言:什么是程序:程序是指:完成某件事的既定方式和过程.计算机中的程序是指:为了让计算机执 ...

随机推荐

HttpClient异步调用WEB服务

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net ...

实现支持在Mac OS的最小大化的过渡效果

实现支持在Mac OS的最小大化的过渡效果,该源码是刚刚在源码天堂那个网站上转载过来的,个人感觉还不错的,大家可以学习一下吧. 源码下载:http://code.662p.com/view/2250. ...

C++中引用的本质是什么?

一般的教材上讲到引用时,都是说“引用是对象的一个别名”.我认为这种定义是不清晰的,不利于初学者理解引用.至少我自己曾经被这个定义困扰了一段时间.到底什么是“别名”? 实际上,引用的实质是位于xxxxx ...

MVC Unit Testing学习笔记

MVC Unit Testing 参考文档: 1.http://www.asp.net/mvc/overview/testing 2.http://www.asp.net/mvc/tutorials/ ...

WPF 数字小键盘Themes

移动端 像素渲染流水线与GPU Hack

什么是 像素渲染流水线 web页面你所写的页面代码是如何被转换成屏幕上显示的像素的.这个转换过程可以归纳为这样的一个流水线,包含五个关键步骤: 1.JavaScript:一般来说,我们会使用JavaS ...

JAVA常用集合源码解析系列-ArrayList源码解析(基于JDK8)

文章系作者原创,如有转载请注明出处,如有雷同,那就雷同吧~(who care!) 一.写在前面 这是源码分析计划的第一篇,博主准备把一些常用的集合源码过一遍,比如:ArrayList.HashMap及 ...

Sql Server——运用代码创建数据库及约束

在没有学习运用代码创建数据库.表和约束之前,我们只能用鼠标点击操作,这样看起来就不那么直观(高大上)了. 在写代码前要知道在哪里写和怎么运行: 点击新建查询,然后中间的白色空白地方就是写代码的地方了. ...

br-lan、eth0、eth1及lo (转)

如果你的设备含有不少于1个的LAN接口,那这个设备在不同的接口之间可能有一个被称为交换(switch)的特殊连接.大多数的内部构造如下图所示: Linux 系统下输入ifconfig命令,会有如下输出 ...

hdu1172(枚举)

中文题,题意就不解释了. 思路:因为答案一定是四位数,所以只要枚举1000-9999,如果符合所有条件,那么保存一下答案,记录一下答案的个数,如果答案是唯一的,那么输出它,否则,就不确定. 代码如下: ...

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/456089
推荐阅读
相关标签
  

闽ICP备14008679号