code的作用是告诉单片机,我定义的数据要放在ROM(程序存储区)里面,写入后就不能再更改,其实是相当与汇编里面的寻址MOVC(好像是),因为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里面改动不了。
附:
c51中的存储类型
code :程序存储区(64KB),
data :可直接寻址的内部数据存储区(128B)
idata:不可直接寻址的内部数据存储区(256B)
bdata:可位寻址内部数据存储区(16B)
xdata:外部数据存储区(64KB)
pdata:分页的外部数据存储区
原文地址:http://zhaowenqing1760.blog.163.com/blog/static/3640927120113263533699/
data ---> 可寻址片内ram bdata ---> 可位寻址的片内ram idata ---> 可寻址片内ram,允许访问全部内部ram pdata ---> 分页寻址片外ram (MOVX @R0) (256 BYTE/页) xdata ---> 可寻址片外ram (64k 地址范围) code ---> 程序存储区 (64k 地址范围),对应MOVC @DPTR
const 表示本数组不可修改 数组为常量数组 code 表示本数组生成后是在ROM区中 同样不可修改 idata 表示数组生成后在在0x00~0xff的256个RAM中,使用指针寻址 具体的参考下面 data,bdata,idata,pdata,xdata,code存储类型与存储区 bit是在内部数据存储空间中 20H .. 2FH 区域中一个位的地址,或者 8051 位可寻址 SFR 的一个位地址。 code是在 0000H .. 0FFFFH 之间的一个代码地址。 data是在 0 到 127 之间的一个数据存储器地址,或者在 128 .. 255 范围内的一个特殊功能寄存器(SFR)地址。 idata是 0 to 255 范围内的一个 idata 存储器地址。 xdata 是 0 to 65535 范围内的一个 xdata 存储器地址。
关键字:单片机 C语言 code data
引用地址:
单片机C语言code与data的作用
推荐阅读最新更新时间:2024-03-16 14:38
单片机MSP430学习笔记
通过430一年的学习遇到的很多问题,也收获了很多,以下是学习中遇到的一些问题,和解决方法,还有很多没有整理出来,慢慢整理中。。。。 一、多源中断问题 #pragma vector = PORT2_VECTOR __interrupt void port2(void) { switch(P2IV) { case P2IV_P2IFG6: P2IFG &=~BIT6; P1OUT ^= BIT0;break; //LED1 亮灭 case P2IV_P2IFG7: P2IFG &=~BIT7; P1OUT ^= BIT1;break; //
[单片机]
单片机汇编语言和最常用的高级语言分析
单片机的编程语言很多,大致分成三类:机器语言、汇编语言、高级语言。机器语言由于繁琐容易出错,一般用户已经不再使用。下面分别对单片机汇编语言和最常用的高级语言进行分析。 单片机的汇编语言 汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少,程序执行效率高,由于它一条指令就对应一条机器码,每一步的执行动作都很清楚,并且程序大小和堆栈调用情况都容易控制,调试起来也比较方便。但是不同的类型的单片机,其汇编语言可能有点差异,所以不易移植,因为他们的指令系统是有区别的。但懂得汇编语言可帮助了解影响任何语言效率的特殊规定。例如,懂得汇编语言指令就可以使用在片内ram作变量的优势,因为片
[单片机]
51单片机C中关于.c文件和.h文件
1)h文件作用 1 方便开发:包含一些文件需要的共同的常量,结构,类型定义,函数,变量申明; 2 提供接口:对一个软件包来说可以提供一个给外界的接口(例如: stdio.h)。 2)h文件里应该有什么 常量,结构,类型定义,函数,变量申明。 3)h文件不应该有什么 变量定义, 函数定义。 4)extern问题 对于变量需要extern; 对于函数不需要因为函数的缺省状态是extern的.如果一个函数要改变为只在文件内可见,加static。 5)include包含问题 虽然申明和类型定义可以重复,不过推荐使用条件编译。 #ifndef _FILENAME_H, #define _FILENAME_H ……
[单片机]
基于单片机SPI器件的串口控制
0 引 言 串行外设接口(Serial Peripheral InteRFace,SPI)是一种高速同步串行输入/输出端口,近年来广泛应用于移位寄存器、D/A转换器、A/D转换器、串行E2PROM、LED显示驱动器等外部设备的扩展。SPI接口可以共享,便于组成带多个SPI接口器件的系统。其传送速率可编程,连接线少,具有良好的扩展性。 1 SPI接口介绍 SPI是摩托罗拉公司推出的一种同步串行通信接口,用于微处理器、微控制器和外围扩展芯片之间的串行连接,现已发展成为一种工业标准。目前,各半导体公司推出了大量的带有SPI接口的具有各种各样功能的芯片,如RAM,E2PROM,FLASH ROM,A/D转换器、D
[单片机]
基于AT89C52单片机的智能液体卸料控制器的设计
0引言 液体物料的运输是日常运输活动中的主要内容之一,例如各种油料,液体酸、硫酸铜溶液等液体化工原料。当前液体物料运输车的装卸料操作主要是通过人工按一定的组合顺序来控制阐门的打开和关闭,这种方式操作复杂、劳动强度大。对于油料运输车,除了装,卸料外,往往还存在给其它车辆进行加油的操作,需要对油量进行计量。在一些易燃、易爆液料运输过程中,安全性差也是一个急需解决的问题。针对以上问题,本设计采用微控制器和智能传感器组成控制系统,从而实现了液体物料运输车卸料过程的白动控制和运输过程中的安全警报。 1系统原理 该卸料系统南嵌入式微控制器及相应的控制软件、油泵、气动阀门F1~F5、阀门状态检测开关、流量计量装置组成,其原理图如图l所示。
[单片机]
5-基于51单片机的仓库三路温度检测调节系统设计
具体实现功能 具体功能: 1、采用三个DS18B20温度传感器测温并用LCD1602显示三个温度值,并显示三路温度平均值; 2、按键为设置按键、加键和减键,可设置上下限温度控制范围; 3、当平均温度值超过设定的上或下限时,相应的指示灯亮,同时相应的继电器吸合,继电器可以驱动负载工作; 4、当平均温度值超过设定的上限时,继电器吸合,风扇转动表示降温; 5、当平均温度值低于设定的下限时,继电器吸合,加热膜工作表示升温。 单片机介绍 51单片是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C51为众多
[单片机]
基于PIC单片机设计的热水控制器
引言
当前市场上的热水控制器基本上采用双金属片温控,控温精度低、可靠性差、功能单一。随着微电子技术的发展,单片微处理器功能日益增强,价格低廉,在各方面得到广泛应用。在热水控制器中应用单片机,具有设计简单、可靠性高、功能易扩展等优点。
热水控制器主要实现对水温的控制,并满足不同用户的个性需求。因此一个较完善的控制器应具有以下功能:
水温的测量与显示;
水量的测量与显示;
用户设定功能(如水温设定,定时设定等);
对电加热管的控制功能;
一些功能键(如定时自动加水,恒温控制,手动加水,手动加热等)。
安全措施(漏电检测,安全失效保护,限温保护等)。
[单片机]
基于PL3000单片机的学生公寓用电管理系统设计
0 引言 近年来,我国高等教育规模迅速扩大,在校生成倍增加,而后勤发展相对滞后,高校学生宿舍用电管理难等问题格外突出。一是大量学生宿舍电量计费仍然停留在老式的电度表计量阶段,计量精度低,人工抄表效率低、易出错,且对欠费用户很难有效管理。二是对学生使用违禁电器无法自动识别,产生很大的安全隐患。因此设计一种带有精确计量、智能控制、恶性负载识别、分时段限功率送电等功能的智能控电系统有着十分重要的意义。本文给出了采用福星晓程PL3000单片机的具有上述功能的控制系统设计方案,本产品已在本地进入了推广阶段。 1 硬件电路设计 1.1 控制系统总体方案 每个用户端由一个多功能电表完成用电计量计费和管理,上位计算机将相关用电控制参数传送
[单片机]