51单片机寻址内存的空间,不是靠总线而是靠指令的方式。
1:51有以下几个内存模块组成
ROM
Flash
RAM有------内部RAM的低128位(00-7F)
-------内部RAM的高128位(80-FF)---【89C51单片机没有这一段空间】
-------特殊功能寄存器(SFR)(80-FF)
------外部RAM 64K(0000-FFFF)
问题1:好多地址是重复的,当向80H写入一个数值,单片机怎么知道读的是内部的高128位RAM?还是SFR?还是外部64K的RAM呢?
答:指令。如果是直接寻址,访问的是SFR、如果是R0或者R1间接寻址,就是内部高128位RAM,如果是DPTR或者是R0,R1间接寻址,且配合的是MovX指令,那么就是访问外部64KRAM中的第80H个地址。(内部RAM和SFR地址是重复的,只能通过寻址方式来区分)
补充:
data 表示的是内部RAM的低128字节,可以直接寻址,速度比较快。
idata 表示内部RAM高128字节,只能是间接寻址,速度比data里的数据要慢。
pdata,xdata,pdata是外部RAM中的前256个,也就是外部RAM中的00--FF,只能MOVX 间接寻址,但是,因为可以用R0做为指针,所以,速度与idata是一样的。
关键字:51单片机 内存问题
引用地址:
51单片机的内存问题
推荐阅读最新更新时间:2024-03-16 16:11
51单片机外接ADC0808制作简易电压表
main.c #include reg52.h #define uchar unsigned char #define uint unsigned int sbit Start = P3^0; sbit EOC=P3^1; // sbit OE=P3^2 ; // uchar code table = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//段选 uchar code table_SMG = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};//位选 //------------
[单片机]
51单片机学习:LCD1602液晶显示实验
实验名称:LCD1602液晶显示实验 接线说明: 实验现象:下载程序后,LCD1602上显示字符信息 注意事项: ***************************************************************************************/ #include public.h #include lcd1602.h /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 ******
[单片机]
AT89C51单片机电话遥控报警器电路的设计
1 引 言 由于经济的快速发展,人们生活水平得到较大的提高,生活节奏也越来越快,为此家电遥控和家庭安全也为人们所需要和重视。以AT89C51单片机为核心通过电话进行电器遥控和报警装置主要解决这些问题。他的主要功能有:通过电话可以遥控16路电器通断,遥控路数可以根据需要进行扩展;可以实现电器调压调速控制,有密码设定,保密安全性好;有语言提示,避免盲目操作;可以取消已输入的操作命令;当单片机接收到家中天然气泄露、温度超限和失窃信号后会自动拨打预留电话并报告家中发生的情况。 2硬件电路设计 总体电路设计思路是:电话遥控报警器与家用电话采用并联方式,当有振铃信号时单片机开始记数,前10次铃声内若有人接电话,则遥控报警器被屏蔽,不影响正
[单片机]
基于51单片机的大气温度采集和记录系统
1 引 言 大气温度的测量具有重要意义, 一般是采用各种温度计进行人工测量, 并定时记录测量结果, 这种方法费时费工, 十分不便。本文提出了一种非常小巧的大气温度测量和记录装置, 能对范围为- 55 ℃ ~ + 125 ℃ 的温度进行定时自动测量, 同时记录测量结果, 精度最高可达0. 0625℃ 。 2 系统原理 系统结构如图1所示。系统主要由AT89C2051单片机和外围电路构成。其基本思想是由串行时钟芯片DS1306 提供时间基准, 由温度传感器DS18B20进行温度测量, 温度数据存储在DS2433中。AT89C2051单片机负责整个系统的协调控制。 AT89C2051是一款低电压, 高性能的CMOS 8位单片机, 片内含
[单片机]
51单片机入门点亮LED
一.keil新建单片机工程 1.单击”project”选项中的“new uvision project”,输入工程姓名。 2.挑选单片机类型,本系列以AT89C52单片机为政策,所以在Ateml中挑选AT89C52,右上角的方框不需求打勾,默许即可。右下角的”Description”便是对AT89C52单片机的描写,包括8位单片机,守时器和IO口数量,Flash容量等根柢信息。 点击OK往后,会出来一个对话框,意思是是不是复制主张代码到工程并增加文件,入门时期咱们的首要意图是了解单片机各个内置模块怎样运用,相应的C代码烧录后会有啥样的作用,这儿咱们选“否”就能够了。 3.建好工程往后,接
[单片机]
51单片机超声波测距数码管显示
超声波原理简单测距准确,应用广泛下面贴一个自己写的数码管程序,显示部分需要改,最近比赛写的我使用的是慧净开发板,共阴数码管 //超声波模块程序 //作者 : Z H //时间 2015/11/29 //Trig = P2^0 //Echo = P3^2 #include reg52.h #define uchar unsigned char #define uint unsigned int unsigned char code table ={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}; //0-9的码
[单片机]
51单片机中断号对应的中断
interrupt()interrupt n{} n 是表示中断对应的是中断号 外部中断0(INT0),对应中断号是0, 中断入口地址0003H 定时/计数器0(T1),对应中断号1 ,中断入口地址000BH 外部中断1(INT1),中断号2 入口地址0013H 定时/计数器1(T1)中断号3 入口地址001BH 串行口中(RI/TI)中断号4 入口地址0023H 这五个是AT89S51的,52还多了下面这个 定时/计数器2(T2)中断号5,入口地址002BH
[单片机]
51单片机中变量的定义及应用方法
变量就是一种在程序执行过程中其值能不断变化的量。要在程序中使用变量必须先用标识符作为变量名,并指出所用的数据类型和存储模式,这样编译系统才能为变量分配相应的存储空间。定义一个变量的格式如下: 在定义格式中除了数据类型和变量名表是必要的,其它都是可选项。存储种类有四种:自动(auto),外部(extern),静态(statIC)和寄存器(register),缺省类型为自动(auto)。 而这里的数据类型则是和我们在第四课中学习到的名种数据类型的定义是一样的。说明了一个变量的数据类型后,还可选择说明该变量的存储器类型。存储器类型的说明就是指定该变量在C51硬件系统中所使用的存储区域,并在编译时准确的定位。注意的是在AT89C51芯
[单片机]