51 单片机数据存储

发布者:WhisperingWish最新更新时间:2022-07-07 来源: csdn关键字:单片机  数据存储 手机看文章 扫描二维码
随时随地手机看文章

从数据存储类型来说,8051系列有片内、片外程序存储器,片内、片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code、data、xdata、idata以及根据51系列特点而设定的pdata类型,使用不同的存储器,将使程序执行效率不同,在编写C51程序时,最好指定变量的存储类型,这样将有利于提高程序执行效率(此问题将在后面专门讲述)。与ANSI-C稍有不同,它只分SAMLL、COMPACT、LARGE模式,各种不同的模式对应不同的实际硬件系统,也将有不同的编译结果。


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


data:  固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小。


idata:  固定指前面0x00-0xff的256个RAM,其中前128和data的128完全相同,只是因为访问的方式不同。idata是用类似C中的指针方式访问的。汇编中的语句为:    mox ACC,@Rx.(不重要的补充:c中idata做指针式的访问效果很好)。


xdata:  外部扩展RAM,一般指外部0x0000-0xffff空间,用DPTR访问。


pdata: 外部扩展RAM的低256个字节,地址出现在A0-A7的上时读写,用movx ACC,@Rx      读写。这个比较特殊,而且C51好象有对此BUG,建议少用。但也有他的优点,具体用法属于中级问题,这里不提。


单片机C语言unsigned char code table[] code 是什么作用?


  code的作用是告诉单片机,我定义的数据要放在ROM(程序存储区)里面,写入后就不能再更改,其实是相当与汇编里面的寻址MOVX(好像是),因为C语言中没办法详细描述存入的是ROM还是RAM(寄存器),所以在软件中添加了这一个语句起到代替汇编指令的作用,对应的还有data是存入RAM的意思。


  程序可以简单的分为code(程序)区,和data (数据)区,code区在运行的时候是不可以更改的,data区放全局变量和临时变量,是要不断的改变的,cpu从code区读取指令,对data区的数据进行运算处理,因此code区存储在什么介质上并不重要,象以前的计算机程序存储在卡片上,code区也可以放在rom里面,也可以放在ram里面,也可以放在flash里面(但是运行速度要慢很多,主要读flash比读ram要费时间),因此一般的做法是要将程序放到flash里面,然后load到 ram里面运行的;DATA区就没有什么选择了,肯定要放在RAM里面,放到rom里面改动不了。


bdata如何使用它呢?

若程序需要8个或者更多的bit变量,如果你想一次性给8个变量赋值的话就不方便了,(举个例子说说它的方便之处,想更深入的了解请在应用中自己琢磨)又不可以定义bit数组,只有一个方法


char bdata MODE;

sbit MODE_7 = MODE^7;

sbit MODE_6 = MODE^6;

sbit MODE_5 = MODE^5;

sbit MODE_4 = MODE^4;

sbit MODE_3 = MODE^3;

sbit MODE_2 = MODE^2;

sbit MODE_1 = MODE^1;

sbit MODE_0 = MODE^0;

8个bit变量MODE_n 就定义好了,这是定义语句,Keilc 的特殊数据类型。记住一定要是sbit不能 bit MODE_0 = MODE^0;赋值语句要是这么些C语言就视为异或运算


//-------------------------------------------------------------------------------------------------------------------------------------------

image.png

keil生成的文件:

.plg:编译器编译结果

.hex和.bin:可执行文件

.map和.lst:链接文件

.o:目标文件

.crf、.lnp、.d和.axf:调试文件

.opt:保存工程配置信息

.bak:工程备份文件


M51文件,startup文件。


bit :是指0x20-0x2f的可位寻址区


关键字:单片机  数据存储 引用地址:51 单片机数据存储

上一篇:51单片机软件复位函数
下一篇:51单片机学习笔记0 -- 仿真软件安装(Protues8.0)

推荐阅读最新更新时间:2024-11-17 10:30

用PIC16F87X单片机实现高分辨率频率计的一种方法
1 引言 随着电子技术的迅速发展,以单片机为控制核心的控制器件,已经全面渗透到测试仪器和计量检定的各个方面。同时,频率计作为一种常用工具,在工程技术和无线电测量、计量等领域的应用十分广泛。本文介绍了一种以PIC16F87X系列单片机为控制器的高分辨率频率计的实现方法。 该方法设计的频率计主要用来测量脉冲频率。它采用LCD图形液晶显示,清晰度高,可视范围广,可外接晶体频率源,具有测量速度快、分辨率高的优点。 2 设计原理 PIC16F877A单片机内部集成有捕捉/比较/脉宽调制PWM (CCP)模块。当CCP工作在捕捉(capture)方式时,可捕捉外部输入脉冲的上升沿或下降沿,并产生相应的中断。 PIC16F877A单片
[单片机]
基于51单片机对自动打铃系统的设计
51单片机自动打铃C语言程序: #include “reg51.h” #include “intrins.h” #define uchar unsigned char #define uint unsigned int uchar code DSY_CODE[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//共阴极总段// uchar DSY_BUFFER[]={0,0,0xBF,0,0,0xff,0,0};//时间显示时-分 模式 uchar DSY_BUFFER1[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf
[单片机]
基于<font color='red'>51</font><font color='red'>单片机</font>对自动打铃系统的设计
89C51单片机的步进电动机用于玻璃管加热系统的设计
1 前言 步进电机是一种将电脉冲信号转换成相应的角位移或线位移的电磁机械装置,是一种输出与输入数字脉冲对应的增量驱动元件,具有快速启动和停止的能力。但大多数设计人员常常习惯于用逻辑电路实现复杂的步进电机的控制,虽然已经取得很大成效,但实现起来成本高、费时多,而且一旦组成了电路,就很难再改动,因此不得不完全重新设计控制器。微处理器与微计算机的先进技术和低廉的价格,给步进电机的控制开创了一个新的局面[1]。人们完全可以借助于软件来对步进电机实施控制,从而实现复杂而成本又不高的控制系统,同时还可以很灵活地通过改变程序来改变控制方案。为此,我们基于89C51单片机设计了步进电机控制器用于玻璃管加热系统。该控制器具有线路简洁、性能良好、成本
[单片机]
89C<font color='red'>51</font><font color='red'>单片机</font>的步进电动机用于玻璃管加热系统的设计
ARM发布 Keil 微控制器样机系统
ARM公司(伦敦证交所:ARM;纳斯达克:ARMH)近日在于美国加州圣何塞举行的嵌入式系统大会(ESC)上发布了Keil™ 微控制器样机系统(MPS: Microcontroller Prototyping System),能够对单一产品中的ARM® Cortex™-M系列处理器以及用户定义的外设进行评估和样机建立。Keil MPS是首个包含了全速的、FPGA形式的Cortex-M0或Cortex-M3处理器的样机系统,能够同第三方外设IP集成,为硬件和软件应用开发提供一个原型建立样机。 MPS使得ARM合作伙伴能够在无需获得处理器RTL的情况下就能够实施Cortex-M系列系统,这意味着不同的处理器能够被进行评估,从而选出最适
[单片机]
半导体需求持续攀升!应用材料一季营收达51.6亿美元
半导体生产设备厂商应用材料(Applied Materials)于当地时间2月18日公布的财报显示,到1月底止的年度第一季(上季)营收为51.6 亿美元,同比增长24%,优于分析师预期。 应用材料CEO Gary Dickerson表示:“我们看到,上季半导体部门的需求持续攀升,总体经济和产业趋势都推动了多个市场和多种应用的半导体消费。得益于广泛的产品组合和技术创新的影响力,公司有着强大的发展势头。” 另外,应用材料预测第二季的营收将达 53.9亿美元,调整后每股盈余预估在1.44美元到1.56美元之间,优于市场预期的1.27美元。
[手机便携]
瑞萨电子与SEGGER合作,支持RX65N/RX651 MCU 用户使用emWin GUI
电子网消息,全球领先的半导体解决方案供应商瑞萨电子株式会社和软硬件及嵌入式系统开发工具领先供应商SEGGER今日宣布,双方将通力协作,为使用瑞萨电子新型RX65N/RX651微控制器(MCU)的商用客户免费提供功能强大的SEGGER emWin GUI软件包。开发人机界面(HMI)或任何RX65N/RX651设备型系统的工程师将获得使用emWin库版本(包括其全套工具)的免费许可证。 emWin嵌入式GUI软件与使用专有操作系统的单任务和多任务环境兼容,或与任何商用RTOS(如SEGGER的embOS)兼容。embOS专为实现超低功耗而设计,可用于任何电池供电应用。作为一种工业标准,emWin在包括工业、医疗、消费、智能家居、
[半导体设计/制造]
51---数码管
1.什么是数码管 1.1、几方面看数码管 (1)作用:数码管是显示器件,用来显示数字的 (2)分类:单个(1位)、联排(2位、4位、8位) 1.2、工作原理 (1)亮灭原理(其实就是内部的照明LED,一颗数码管内部有七个led) (2)显示数字(甚至文字)原理:利用内部的LED的亮和灭让外部的组成数字的笔画显示或者不显示,人看到的就是不同的数字。 1.3、共阳极和共阴极数码管 (1)驱动方法的差异。必须清楚一个数码管内部的8颗LED是独立驱动的。如果8颗LED的正极接在一起接到VCC上(负极分别接到单片机的不同引脚),这种接法就叫共阳极。反之如果8颗LED负极接在一起然后接到GND(正极就分别接到单片机的不同引脚
[单片机]
<font color='red'>51</font>---数码管
【MCS-51】内部资源及工作时序
51单片机是一种广泛应用于嵌入式系统中的芯片,具有极高的性价比和通用性。了解51单片机内部资源及其工作时序对于理解其基本原理和实现应用功能非常重要。本文将从51单片机的内部资源、存储器结构、时钟体系以及工作时序等方面进行介绍。 1. 内部资源 在51单片机内部,主要包含以下几个模块: (1) CPU:51单片机的CPU采用8051核心,支持各种通用指令和算术运算,并且具有很好的中断处理能力。 (2) 存储器:51单片机内部具有RAM、ROM、EEPROM三种类型的存储器。其中,RAM 可以用于存放变量、栈和寄存器等数据;ROM 存储程序代码和常量;EEPROM 可以保存数据并实现数据的可擦写。 (3) 定时器/计数器:51单片
[单片机]
【MCS-<font color='red'>51</font>】内部资源及工作时序
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved