单片机中的各个存储区符号及用法
单片机C语言 必知的数据存储与程序编写知识 附单片机应用编程知识介绍
一、五大内存分区内存分成5个区,它们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。
1、栈区(StaCk):FIFo就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。
里面的变量通常是局部变量、函数参数等。
2、堆区(heap):就是那些由new分配的内存块,它们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。
如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。
3、自由存储区:就是那些由malloc等分配的内存块,它和堆是十分相似的,不过它是用free 来结束自己的生命。
4、全局/静态存储区:全局变量和静态变量被分配到同一块内存中,在以前的C语言中,全局变量又分为初始化的和未初始化的,在C++里面没有这个区分了,他们共同占用同一块内存区。
5、常量存储区:这是一块比较特殊的存储区,它们里面存放的是常量,不允许修改(当然,你要通过非正当手段也可以修改,而且方法很多)code/data/stack内存主要分为代码段,数据段和堆栈。
代码段放程序代码,属于只读内存。
数据段存放全局变量,静态变量,常量等,堆里存放自己malloc或new出来的变量,其他变量就存放在栈里,堆栈之间空间是有浮动的。
数据段的内存会到程序执行完才释放。
调用函数先找到函数的入口地址,然后计算给函数的形参和临时变量在栈里分配空间,拷贝实参的副本传给形参,然后进行压栈操作,函数执行完再进行弹栈操作。
字符常量一般放在数据段,而且相同的字符常量只会存一份。
二、C语言程序的存储区域1、由C语言代码(文本文件)形成可执行程序(二进制文件),需要经过编译-汇编-连接三个阶段。
编译过程把C语言文本文件生成汇编程序,汇编过程把汇编程序形成二进制机器代码,连接过程则将各个源文件生成的二进制机器代码文件组合成一个文件。
2、C语言编写的程序经过编译-连接后,将形成一个统一文件,它由几个部分组成。
单片机内部存储器结构与数据存取方法详解
单片机内部存储器结构与数据存取方法详解单片机是一种集成了处理器、内存和外设等功能于一体的微电子器件,广泛应用于各种电子设备中。
其中,内部存储器是单片机的核心组成部分之一。
本文将详细介绍单片机内部存储器的结构和数据存取方法。
一、单片机内部存储器的结构单片机的内部存储器主要包括随机存取存储器(RAM)和只读存储器(ROM)两部分。
1. 随机存取存储器(RAM)RAM是单片机内部的易失性存储器,用于存储数据、程序临时数据和运行时数据。
单片机内部的RAM可以根据存取速度和使用要求的不同,分为片内RAM 和片外RAM两种。
片内RAM是单片机芯片内部集成的存储器,速度较快。
它可以分为片内可读写RAM(RW-RAM)和片内只读RAM(RO-RAM)两种类型。
片内可读写RAM可以被程序读取和修改,存储媒介是电容或电子触发器。
而片内只读RAM则只能被程序读取,不能被修改。
片内RAM的容量相对较小,一般在几十到几百字节之间。
片外RAM是连接在单片机芯片外部的存储器,速度较慢。
它可以进一步分为静态随机存取存储器(SRAM)和动态随机存取存储器(DRAM)两种类型。
SRAM是基于触发器构建的,数据存储在触发器中,读写速度快且无需刷新。
DRAM则是基于电容构建的,存储数据需要定期刷新,但容量较大。
2. 只读存储器(ROM)ROM是单片机内部的非易失性存储器,用于存储程序和常量数据。
ROM的内容在出厂时就被写入,一般无法被程序修改。
单片机内部的ROM可以分为只读存储器(ROM)和可编程只读存储器(PROM)两种类型。
ROM存储器内容固定不变,其中包含了单片机的初始化程序和系统代码。
PROM存储器则可以通过特殊的编程操作烧写程序和数据,但一旦写入后无法擦除和修改。
这类存储器在生产流程中被用于定制特殊功能的单片机。
二、单片机内部存储器的数据存取方法单片机内部存储器的数据存取方法根据存储器的类型和连接方式而有所不同。
1. RAM的数据存取方法对于片内RAM,数据的存取可以通过直接读写特定的RAM地址来实现。
单片机 程序分区
单片机程序分区
单片机程序通常可以分为多个分区,下面是一些常见的分区及其功能介绍:
- 栈区:用于存放临时创建的局部变量、函数调用时的入口参数以及函数返回时的返回值。
此外,const 定义的局部变量也会存放在栈区。
- 堆区:用于存放程序运行中被动态分布的内存段,可通过 malloc 等函数实现动态分配。
使用 malloc 分配的内存需要用 free 进行释放,否则可能会导致内存泄漏。
- 全局区(静态区):由.bss 段和.data 段组成,可读可写。
- .bss 段:未初始化的全局变量存放在.bss 段。
初始化为0 的全局变量和静态变量也存放在.bss 段。
.bss 段不占用可执行文件空间,其内容由操作系统初始化。
- .data 段:已经初始化的全局变量存放在.data 段。
静态变量也存放在.data 段。
.data 段占用可执行文件空间,其内容由程序初始化。
- 常量区:用于存放字符串常量。
常量区的内容不可修改。
- 代码区:用于存放程序执行代码。
字符串常量也可能存放在代码区。
不同的单片机可能会有不同的程序分区,具体分区的划分和使用方法可能会因单片机型号和程序需求而有所不同。
单片机符号表
PC = progammer counter //程序计数器ACC = accumulate //累加器PSW = progammer status word //程序状态字SP = stack point //堆栈指针DPTR = data point register //数据指针寄存器IP = interrupt priority //中断优先级IE = interrupt enable // 中断使能TMOD = timer mode //定时器方式(定时器/计数器控制寄存器) ALE = alter (变更,可能是) 寄存器控制PSEN = progammer saving enable //程序存储器使能(选择外部程序存储器的意思)EA = enable all(允许所有中断)完整应该是enable all interrupt PROG = progamme (程序) SFR = special funtion register //特殊功能寄存器TCON = timer control //定时器控制PCON = power control //电源控制MSB = most significant bit//最高有效位LSB = last significant bit//最低有效位CY = carry //进位(标志)AC = assistant carry //辅助进位OV = overflow //溢出ORG = originally //起始来源DB = define byte //字节定义EQU = equal //等于DW = define word //字定义E = enable //使能OE = output enable //输出使能RD = read //读WR = write //写中断部分:INT0 = interrupt 0 //中断0INT1 = interrupt 1//中断1T0 = timer 0 //定时器0T1 = timer 1 //定时器1TF1 = timer1 flag //定时器1 标志(其实是定时器1中断标志位)IE1 = interrupt exterior //(外部中断请求,可能是)IT1 = interrupt touch //(外部中断触发方式,可能是)ES = enable serial //串行使能ET = enable timer //定时器使能EX = enable exterior //外部使能(中断)PX = priority exterior //外部中断优先级PT = priority timer //定时器优先级PS = priority serial //串口优先级助记符号的记忆方法表格列举法把44个指令助记符按功能分为五类,每类列表记忆。
单片机笔记-寄存器、引脚及其英文名称缩写
单片机笔记-寄存器、引脚及其英文名称缩写在单片机开发过程中,我们常常会涉及到寄存器和引脚的使用。
寄存器是用于存储和处理数据的重要组成部分,而引脚则是用于连接外部设备和单片机的接口。
了解寄存器、引脚及其英文名称缩写是学习和理解单片机编程的重要一步。
一、寄存器寄存器是单片机中的一种特殊功能寄存器,它们用来存储特定的信息,如状态、控制和数据等。
寄存器的使用是通过对其地址进行读/写操作来实现的。
在单片机中,存在着许多不同的寄存器,下面是一些常见的寄存器及其英文名称缩写:1. 状态寄存器(Status Register) - SR状态寄存器用于存储和显示一些跟运算或处理结果有关的标志位,如进位标志位、溢出标志位、零标志位等。
通过对状态寄存器的读写,可以获取或设置这些标志位的值。
2. 数据寄存器(Data Register) - DR数据寄存器用于存储临时数据,如中间计算结果或输入/输出数据等。
读写数据寄存器时,可以进行数据的读取或写入操作。
3. 控制寄存器(Control Register) - CR控制寄存器用于控制某些外设或特定功能的工作方式,如时钟控制寄存器、中断控制寄存器等。
写入或读取控制寄存器可以实现对相应功能的配置和控制。
4. 地址寄存器(Address Register) - AR地址寄存器用于存储指令和数据的地址信息。
在程序执行过程中,地址寄存器可以用于指示当前要执行的指令或要读取/写入数据的地址。
二、引脚引脚是单片机的外部接口,通过引脚可以与其他电子元件或设备进行连接和通信。
引脚的使用通常包括输入输出、中断触发、时钟输入等功能。
下面是一些常见的引脚及其英文名称缩写:1. 电源引脚(Power Pin) - VCC、GND电源引脚用于提供单片机的供电电源。
其中,VCC用于给单片机提供正电源,而GND则是单片机的接地端。
2. 输入引脚(Input Pin) - IN输入引脚用于接收外部信号。
单片机电路图符号大全
单片机电路图符号大全1. 引言单片机(Microcontroller Unit,简称MCU)是一种集成了处理器核心、存储器、外设和各种接口功能于一体的微型计算机系统。
为了方便电路工程师和软件开发人员理解和设计单片机电路,单片机电路图符号成为了必备的工具。
本文将为大家介绍一些常用的单片机电路图符号,以帮助大家更好地理解和使用单片机。
2. 常用符号2.1. 单片机单片机在电路图中通常用一个方框表示,方框内写上单片机的型号或代号,如:单片机型号: STM32F103C8T62.2. 电源单片机系统需要一个稳定的工作电源来供电。
在电路图中,常用的电源符号包括直流电源和电池符号。
直流电源通常用一组“+”和“-”表示,电池则用长方形表示,并在上方标注电池的电压等级,如:+5V - 电源电池:3V2.3. 晶振晶振是单片机中常用的外设之一,用于提供时钟信号以使单片机能够正常工作。
在电路图中,晶振一般用一个园形表示,并标注其频率,如:晶振:16MHz2.4. 电容电容在单片机电路中常用于抑制噪声、滤波和稳压等功能。
在电路图中,电容通常用一个并联的直线和两条短直线表示,如:电容:10uF2.5. 电阻电阻在单片机电路中用于限制电流、调节电压等功能。
在电路图中,电阻通常用一段波浪线表示,并标注其阻值,如:电阻:10K2.6. 连接线连接线在电路图中用于表示信号的连接关系。
连接线通常为直线,其两端连接的元件之间有连接点,如:----连接线----2.7. 开关开关在单片机电路中用于控制电路的通断。
在电路图中,开关通常用一个具有两个连接点的矩形表示,并用箭头标识其通断状态,如:开关:开开关:关2.8. LEDLED在单片机电路中用于指示电路的工作状态。
在电路图中,LED通常用一个具有两个连接点的矩形表示,并用箭头标识流经LED的正负电流方向,如:LED2.9. 直流电机直流电机在单片机电路中用于产生转动或震动。
在电路图中,直流电机通常用一个具有两个连接点的小圆圈表示,如:DC Motor3. 结论本文介绍了一些常用的单片机电路图符号,这些符号在单片机电路设计过程中起到了重要作用。
单片机存储空间区
单片机自身带有 4 KB ROM程序存储器,128 B RAM 数据存储器。
程序存储器:
单片机有16位的地址总线即可寻址空间为64KB(216=210x26=64KB 0x0000~0xFFFF)
内部数据存储器:
单片机有256 B的内部数据存储器:128 B(0x00~0x7F)为内部随机存储器;128 B(0x80~0xFF)的特殊功能寄存器SFR(分散到各个功能部件中,并没有统一到一个 128B的存储器中,所以这128B寄存器物理上不存在 ,除了定义的特殊寄存器地址外, 其他地址不能使用)。
单片机存储空间区分
单片机存储空间区分
数据缓存器ຫໍສະໝຸດ 位寻址区4组工作寄存器区
单片机存储空间区分
SP
单片机存储空间区分
• 内部数据存储器RAM
全局变量:在静态存储区分配空间,作用于全局 局部变量(auto):在堆栈里分配空间,作用于局部 静态(static)局部变量:在静态存储区分配空间,作用于局部(只在定 义该变量的函数内有效 )
片外扩展 RAM
P2口寻址
数据指针寻址
256B 页面
64KB
慢
慢
5.Code
片内/外 ROM
数据指针寻址
64KB
慢
6. BANK0 ~ BANK31
单片机存储空间区分
• data
固定指向单片机内部存储器128B RAM中0x00~0x7F,速度最快生成的 代码最小,由于受到空间大小的限制,一般存放局部变量,因为局部变量的空 间是可以覆盖的(某个函数的局部变量占用的空间在退出该函数时就被释放 了,由别的函数的局部变量覆盖)。 ★Keil c里遇到未调用的函数,编译器就将其认为可能是中断函数,函数 里面的局部变量占用的空间就不释放,同全局变量一样处理。
单片机元器件符号大全
单片机元器件符号大全引言单片机(Microcontroller)是一种集成电路,它集成了处理器、存储器和输入输出设备,用于控制电气或机械设备。
在单片机的程序设计中,我们需要使用到各种元器件符号以表示电路中的元件,以便更好地理解和设计电路。
本篇文档将介绍一些常用的单片机元器件符号,以帮助读者能够快速理解和使用它们。
1. 电源符号•电池符号:表示电路中的电池作为电源。
常见的电池符号为正极和负极之间带有短横线的直线段。
•直流电源符号:表示电路中的直流电源。
常见的直流电源符号为一条平行于水平线的直线段。
•交流电源符号:表示电路中的交流电源。
常见的交流电源符号为一个带有波浪线的平行于水平线的直线段。
2. 开关符号•普通开关符号:表示电路中的普通开关。
常见的普通开关符号为一个带有手柄的曲线,手柄所在位置表示开关的状态。
•压力开关符号:表示电路中的压力开关。
常见的压力开关符号为一个带有两条平行线的弯曲箭头,并在箭头上标有触发压力值。
3. 按钮符号•常开按钮符号:表示电路中的常开按钮,即按下按钮后断开电路。
常见的常开按钮符号为一个带有手柄的水平线段和一个开口的圆弧。
•常闭按钮符号:表示电路中的常闭按钮,即按下按钮后闭合电路。
常见的常闭按钮符号为一个带有手柄的水平线段和一个带有填充的圆弧。
4. 连接线符号•实线符号:表示电路中的实线连接。
常见的实线符号为一条实线。
•虚线符号:表示电路中的虚线连接。
常见的虚线符号为一条短横线和一条间断的直线段。
5. 电容符号•固定电容符号:表示电路中的固定电容。
常见的固定电容符号为一个平行的矩形,矩形中带有两个竖直的平行线段。
•可变电容符号:表示电路中的可变电容。
常见的可变电容符号为一个平行的矩形,矩形中带有一条弯曲的平行线段。
6. 电感符号•固定电感符号:表示电路中的固定电感。
常见的固定电感符号为两个相交的实线圆圈。
•可变电感符号:表示电路中的可变电感。
常见的可变电感符号为两个相交的虚线圆圈。
51单片机片内存储器详解
51单片机内部存储器分布关系
单片机运行期间,128X8 bit 的片内数据存储区并不是完全开放的,只有20H~7FH共96字节(开放区+位寻址区)开放给用户使用。
○1注:一个比特就是一个二进制数的最小单元。
即一个比特只能拥有一个值,不是0就是1,所以如果我给你一个值0,你可以说它就是一个比特,如果我给你两个(00),你就可以说它们是两个比特。
1Byte=8bit
当单片机上电复位时,工作寄存器R0~R7映射片内数据存储器的00H~07H,即工作寄存器组的第0组。
工作寄存器R0~R7除了映射片内数据存储器的地址00H~07H 外,还可以映射其余的地址08H~1FH。
当R0~R7映射到其他地址时,工作寄存器用不同组别来称呼。
AT89551单片机默认工作组寄存器是第
0组,通过改变程序状态字PSW的第3位(RS0)和第4位(RS1),其关系如下表:。
单片机元器件符号大全
单片机元器件符号大全
很抱歉,我是一名语言模型AI,无法呈现图片,但以下是一
些常用的单片机元器件符号:
1. 电源符号:+V和-G
2. 晶体振荡器:晶体加两个电容,形成一个反馈电路
3. 晶振启动电容:启动电容
4. 电解电容:一个线圈上有一个箭头,表明正极和负极的方向
5. 二极管:一个三角形和一条垂直箭头
6. 限流电阻:一个金属片,两条线引出
7. 光电耦合器:两个箭头分别指向LED和光敏电阻
8. 集成运算放大器(Op-Amp):三角形,箭头指向反馈端
9. 双向电压转换器:一个三角形和两个箭头,分别指正和负输入端
10. 集成开关:一个小圆圈和一个箭头,箭头指向控制端
11. 变阻器:一个可旋转的圆圈,带有一个箭头,箭头指向可
调电阻端
12. 电位器:一个线圈,带有一个箭头,箭头指向可调电阻端
13. 拉丝开关:一个矩形,两条线引出,标示通电或断电
14. MOSFET:三角形和两个箭头,一个是源极,一个是漏极。
15. NPN晶体管:一个三角形和一个箭头(箭头指向基极)
这仅是常用元器件符号的简易列表,如果您需要更详细的信息,请参考电子工程和电子设计教科书。
单片机各寄存器汇总
TMOD不能进行位寻址,只能用字节传送指令设置定时器工作方式,低半节定义定时器0,高半字节定义定时器1。复位时,TMOD所有位均为0,定时器处于停止工作状态。
定时/计数器控制寄存器中断请求标志寄存器TCON(P183)
TCON的作用是控制定时器的启/停,标志定时器的溢出和中断情况。定时器控制寄存器TCON各位格式如下:TCON(88H)
当GATE=0时,只要控制TR1置1,即可启动定时器T1开始工作;
当GATE=1时,除需要将TR1置1外,还要使INT1引脚为高电平,才能启动相应的定时器开始工作。
M1
M0
工作方式
功能描述
0
0
方式0
13位计数器
0
1
方式1
16位计数器
1
0
方式2
自动再装入8位计数器
1
1
方式3
定时器1:停止计数
位6C/—T——T1的功能选择位。ﻫ当C/—T=0时,T1为定时器方式;
P2
A0H
P2口锁存器
SBUF
99H
串行口锁存器
SCON
98H
串行口控制寄存器
P1
90H
P1口锁存器
TH1
8DH
定时器/计数器1(高8位)
TH0
8CH
定时器/计数器1(低8位)
TL1
8BH
定时器/计数器0(高8位)
TL0
8AH
定时器/计数器0(低8位)
TMOD
89H
定时器/计数器方式控制寄存器
TCON
位2C/T——T1的功能选择位。
当C/—T=0时,T0为定时器方式;
当C/—T=0时,T0为计数器方式;
单片机的存储器类型及使用方法
单片机的存储器类型及使用方法单片机是一种集成了处理器、存储器和周边电路等功能于一体的微型电子器件。
它常被用于各种电子设备中,如电视、手机、空调等。
而存储器是单片机中用于存储程序指令和数据的重要组成部分。
本文将介绍单片机的存储器类型及其使用方法。
一、存储器类型单片机的存储器可以分为两种类型:随机存储器(RAM)和只读存储器(ROM)。
1. 随机存储器(RAM)随机存储器是一种临时性存储器,它用于存储单片机执行程序时所需要的数据。
RAM可以被反复擦写和读取,具有读写速度快的特点。
在单片机中,有两种常见的RAM类型:静态随机存储器(SRAM)和动态随机存储器(DRAM)。
静态随机存储器(SRAM)是一种以触发器为基本单元的存储器,具有数据保存时间长的特点。
它适用于需要频繁读写操作的应用场景,如缓存存储器。
动态随机存储器(DRAM)是一种以电容和晶体管为基本单元的存储器,具有存储密度高的特点。
它适用于存储大容量数据的应用场景,如图片、音频等。
2. 只读存储器(ROM)只读存储器是一种永久性存储器,它存储了单片机的固定程序和数据。
ROM的内容一旦编程就无法修改,具有防止数据丢失的特点。
在单片机中,有多种类型的ROM可供选择,如可擦写可编程只读存储器(EPROM)、电可擦写只读存储器(EEPROM)和闪存存储器等。
可擦写可编程只读存储器(EPROM)是一种使用紫外线擦写和编程的ROM,具有多次擦写和编程的特点。
它适用于开发阶段和需要频繁更新程序的应用场景。
电可擦写只读存储器(EEPROM)是一种使用电信号擦写和编程的ROM,具有擦写和编程操作简单的特点。
它适用于少量数据存储和频繁更新的应用场景。
闪存存储器是一种基于半导体存储技术的ROM,具有存储容量大、擦写和编程速度快的特点。
它广泛应用于各种电子设备中,如智能手机、数码相机等。
二、存储器使用方法单片机的存储器使用方法包括存储器的读取和写入操作。
1. 存储器的读取在单片机中,存储器的读取操作是通过地址总线和数据总线实现的。
51单片机符号
51单片机符号51单片机符号是指汇编语言中使用的一些特殊符号,用于表示各种意义和功能的指令、寄存器、内存地址等。
本文将介绍一些常见的51单片机符号及其功能。
1. "#""#"符号在51单片机中表示立即数,用于将一个常数直接作为操作数。
例如,可以使用MOV A, #10来将立即数10移动到寄存器A中。
2. "@""@"符号在51单片机中表示内部RAM空间的一个地址,用于指定直接寻址方式。
例如,可以使用MOV A, @R0来将内部RAM空间R0中的值移动到寄存器A中。
3. "A""A"符号在51单片机中表示累加器,用于进行一些算术和逻辑运算。
例如,可以使用ADD A, B来将A寄存器与B寄存器中的值相加。
4. "R0-R7""R0-R7"符号在51单片机中表示寄存器,由8个通用寄存器组成,用于存储临时数据。
可通过MOV R0, R1将寄存器R1中的值移动到寄存器R0中。
5. "DPTR""DPTR"符号在51单片机中表示数据指针,用于存储外部数据的地址。
可以将数据指针与数据寄存器相结合,进行一些数据传输和存储操作。
6. "C""C"符号在51单片机中表示进位标志,用于指示一些算术和逻辑运算的进位情况。
例如,可以使用JNC指令根据C标志的状态进行条件跳转。
7. "P""P"符号在51单片机中表示奇偶标志,用于指示某些操作的结果是奇数还是偶数。
例如,在进行某些位操作时,可以根据P标志的状态决定是否进行跳转。
8. "OV""OV"符号在51单片机中表示溢出标志,用于指示一些算术和逻辑运算是否发生溢出。
C51常用数据类型
C51常用数据类型在C51单片机编程中,常用数据类型是指用于存储不同类型数据的变量类型。
C51常用数据类型包括整型、字符型、浮点型和指针型。
下面将详细介绍每种数据类型的特点和用法。
1. 整型数据类型整型数据类型用于存储整数值,包括有符号整型和无符号整型。
有符号整型可以表示正数、负数和零,而无符号整型仅能表示非负数(正数和零)。
C51常用的整型数据类型有:- char:有符号字符型,占用1个字节(8位),表示范围为-128到127。
- unsigned char:无符号字符型,占用1个字节(8位),表示范围为0到255。
- int:有符号整型,占用2个字节(16位),表示范围为-32768到32767。
- unsigned int:无符号整型,占用2个字节(16位),表示范围为0到65535。
- long:有符号长整型,占用4个字节(32位),表示范围为-2147483648到2147483647。
- unsigned long:无符号长整型,占用4个字节(32位),表示范围为0到4294967295。
整型数据类型适合于存储整数值,如计数器值、传感器数据等。
2. 字符型数据类型字符型数据类型用于存储单个字符,采用ASCII码表示。
C51常用的字符型数据类型是char,占用1个字节(8位)。
字符型数据类型适合于存储字母、数字、标点符号等单个字符。
3. 浮点型数据类型浮点型数据类型用于存储带有小数部份的数值。
C51常用的浮点型数据类型是float,占用4个字节(32位)。
浮点型数据类型适合于存储需要进行精确计算的数值,如测量数据、传感器数据等。
4. 指针型数据类型指针型数据类型用于存储变量的地址。
C51常用的指针型数据类型是指针变量名加之"*"符号。
指针变量存储的是内存地址,可以通过指针访问该地址上存储的数据。
指针型数据类型适合于需要直接操作内存地址的情况,如动态内存分配、函数指针等。
单片机中的各个存储区符号及用法
单片机C语言code与data的作用单片机C语言unsigned char code table[] code 是什么作用?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:分页的外部数据存储区本文来自CSDN博客,转载请标明出处:/erazy0/archive/2009/09/20/4573196.aspxdata ---> 可寻址片内rambdata ---> 可位寻址的片内ramidata ---> 可寻址片内ram,允许访问全部内部rampdata ---> 分页寻址片外ram (MOVX @R0) (256 BYTE/页)xdata ---> 可寻址片外ram (64k 地址范围)code ---> 程序存储区 (64k 地址范围),对应MOVC @DPTRconst 表示本数组不可修改数组为常量数组code 表示本数组生成后是在ROM区中同样不可修改idata 表示数组生成后在在0x00~0xff的256个RAM中,使用指针寻址具体的参考下面data,bdata,idata,pdata,xdata,code存储类型与存储区bit是在内部数据存储空间中 20H .. 2FH 区域中一个位的地址,或者 8051 位可寻址 SFR 的一个位地址。
单片机符号含义
符号含义Rn R0~R7寄存器n=0~7Direct 直接地址,内部数据区的地址RAM(00H~7FH)SFR(80H~FFH) B,ACC,PSW,IP,P3,IE,P2,SCON,P1,TCON,P0@Ri 间接地址Ri=R0或R1 8051/31RAM地址(00H~7FH) 8052/32RAM地址(00H~FFH)#data 8位常数#data16 16位常数Addr16 16位的目标地址Addr11 11位的目标地址Rel 相关地址bit 内部数据RAM(20H~2FH),特殊功能寄存器的直接地址的位指令介绍指令字节周期动作说明一、算数运算指令1.ADD A,Rn 1 1 将累加器与寄存器的内容相加,结果存回累加器2.ADD A,direct 2 1 将累加器与直接地址的内容相加,结果存回累加器3.ADD A,@Ri 1 1 将累加器与间接地址的内容相加,结果存回累加器4.ADD A,#data 2 1 将累加器与常数相加,结果存回累加器5.ADDC A,Rn 1 1 将累加器与寄存器的内容及进位C相加,结果存回累加器6.ADDC A,direct 2 1 将累加器与直接地址的内容及进位C相加,结果存回累加器7.ADDC A,@Ri 1 1 将累加器与间接地址的内容及进位C相加,结果存回累加器8.ADDC A,#data 2 1 将累加器与常数及进位C相加,结果存回累加器9.SUBB A,Rn 1 1 将累加器的值减去寄存器的值减借位C,结果存回累加器10.SUBB A,direct 2 1 将累加器的值减直接地址的值减借位C,结果存回累加器11.SUBB A,@Ri 1 1 将累加器的值减间接地址的值减借位C,结果存回累加器12.SUBB A,#data 2 1 将累加器的值减常数值减借位C,结果存回累加器13.INC A 1 1 将累加器的值加114.INC Rn 1 1 将寄存器的值加l15.INC direct 2 1 将直接地址的内容加116.INC @Ri 1 1 将间接地址的内容加117.INC DPTR 1 1 数据指针寄存器值加1说明:将16位的DPTR加1,当DPTR的低字节(DPL)从FFH溢出至00H时,会使高字节(DPH)加1,不影响任何标志位18.DEC A 1 1 将累加器的值减119.DEC Rn 1 1 将寄存器的值减120.DEC direct 2 1 将直接地址的内容减121.DEC @Ri 1 1 将间接地址的内容减122.MUL AB 1 4 将累加器的值与B寄存器的值相乘,乘积的低位字节存回累加器,高位字节存回B寄存器说明:将累加器A和寄存器B内的无符号整数相乘,产生16位的积,低位字节存入A,高位字节存入B寄存器。
单片机指令符号
单片机指令符号单片机(Microcontroller)是一种集成了处理器核心、存储器、输入/输出接口和其他外设的微型计算机系统。
不同的单片机有不同的指令集架构和指令符号。
以下是一些常见的单片机指令符号的示例:1.MOV(Move):将数据从一个寄存器或内存位置复制到另一个寄存器或内存位置。
2.ADD(Addition):将两个数据相加,并将结果存储在目标位置。
3.SUB(Subtraction):从一个数据中减去另一个数据,并将结果存储在目标位置。
4.AND(Logical AND):对两个数据进行逻辑与操作,并将结果存储在目标位置。
5.OR(Logical OR):对两个数据进行逻辑或操作,并将结果存储在目标位置。
6.JMP(Jump):无条件跳转到指定的内存地址或程序指令。
7.JZ(Jump if Zero):如果最近的计算结果为零,则跳转到指定的内存地址或程序指令。
8.JNZ(Jump if Not Zero):如果最近的计算结果不为零,则跳转到指定的内存地址或程序指令。
9.CALL(Call Subroutine):调用子程序,并将返回地址存储在堆栈中。
10.RET(Return):从子程序中返回,并将返回地址从堆栈中取回。
11.CLR(Clear):将指定寄存器或内存位置清零。
12.NOP(No Operation):空操作,不执行任何操作。
这些指令符号是示例,实际使用的指令符号取决于使用的单片机的架构和指令集。
每个单片机都有其独特的指令集,用于控制和操作其内部的寄存器、内存和外设等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机C语言code与data的作用
单片机C语言unsigned char code table[] code 是什么作用?
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:分页的外部数据存储区
本文来自CSDN博客,转载请标明出处:/erazy0/archive/2009/09/20/4573196.aspx
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 存储器地址。