第1章 C51程序设计基础
C51语言入门

MCS-51单片机--C51基础陈茜茹Email:vickychenqian@ Email:vickychenqian@163com¾C51与标准C¾C51的数据类型和运算量¾C51的运算符¾程序结构¾函数¾其它数据类型•C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言了多种高级语言的特点并具备汇编语言的功能针对的语言日趋成熟成为的功能。
针对8051C语言日趋成熟,成为了专业化的实用高级语言。
很多硬件开发都用C语言编程,如:各种单片机、DSP、ARM等。
(1)C51中定义的库函数和标准C语言定义的库函数不同。
标准的C语言定义的库函数是按通用微型计算机来定义的,而C51中的库函数是按MCS-51单片机相应情况来定义的;(2)C51中的数据类型与标准C的数据类型也有一定的区别,在C51中还增加了几种针对MCS51单片机特有的数据类型;MCS-51(3)C51变量的存储模式与标准C中变量的存储模式不一样,C51中变量的存储模式是与MCS-51单片机的存储器紧密相关;MCS51)与标准的输入输出处理不一样,中的输入输出是(4C51C C51通过MCS-51串行口来完成的,输入输出指令执行前必须要对串行口进行初始化;(5)C51与标准C在函数使用方面也有一定的区别,C51中有专门的中断函数。
基本数据类型类型符号关键字数的表示范围所占位数(signed)int 3276832767有(signed) int 16-32768~32767(signed) short 16-32768~32767(i d)l 3221474836482147483647整型(signed) long -2147483648~214748364716unsigned int 0~65535065535无320~4294967295unsigned long int unsigned short int 160~65535fl t 34383438实型有float 32 3.4e-38~3.4e38有double 64 1.7e-308~1.7e308h128127字符型有char 8-128~127无unsigned char80~255¾长度根据其所指向的变量有所变化,1~3字节¾存放的是另外一个数据的地址g¾定义方法:unsigned int *da;sfr:特殊功能寄存器定义sfr16:sfr的16位数据定义sbit:可位寻址字节或sfr中位的定义bit:位变量定义例:sfr SCON = 0X98;sfr16 T2 = 0xCC;sbit OV = PSW^2;sbit OV=PSW^2;定义变量例:数据类型变量名unsigned int var1; unsigned intbit flags;unsigned char vector[10];用typedef或#define定义数据类型别名例1:typedef unsigned int uint;typedef unsigned int uint;uint var;uint var;例2:#define uchar unsigned char;uchar temp;说明变量所处单片机的存储区域名存储空间位置长度数据范围data直接寻址片内RAM低128B8位0~255 data 直接寻址片内RAM低128B 8位0~255bdata 可位寻址片内RAM(20-2FH) 1位0/1idata 间接寻址片全部内RAM 8位0~255pdata片外RAM低256B8位pdata 片外RAM低256B 8位0~255xdata片外RAM全部64K16位0~65535 xdata 片外RAM全部64K 16位code 程序ROM64K 16位0~65535定义变量例:数据类型[存储类型]变量名unsigned int data var1; unsigned intbit bdata flags;unsigned char code vector[10];不同的存储模式对变量默认的存储器类型不一样1.SMALL模式:小编译模式。
C51单片机的基础知识

5、可扩展性:系统应具备良好的扩展性,方便未来进行设备升级或扩容。
三、系统设计方案
1、硬件设备:包括服务器、网络交换机、音源设备、功放设备、扬声器等。 服务器应采用高性能、稳定的品牌服务器,以保证系统的稳定性和可靠性。网络 交换机应选择支持大带宽、低延时的产品,以保证广播信号的传输质量。音源设 备可选用数字音
首先应该从其内部结构及各部件关系入手,清楚其内部资源及怎样使用,然 后通过自己动手制作实践来加深印象,之后通过学习语言来掌握编程方法及技巧。 切记不要一开始就试图记忆太多的内容,这样只会增加你的负担,要知道“贪多 嚼不烂”。
先搞懂最基本的原理后再试着看懂其它扩展资料就会容易多了。之后要付诸 实践进行调试练习。在理解的基础上进行记忆,切勿死记硬背。
二、中断结构
C51单片机的中断系统主要包括以下几个部分:
1、中断源:C51单片机支持多个中断源,包括定时器/计数器,串行通信口, 外部中断等。每个中断源都有相应的中断标志,用于指示该中断源是否产生了中 断。
2、中断控制器:中断控制器是中断系统的核心部件,它负责管理各个中断 源的中断请求,根据优先级判断并处理。
二、系统需求分析
1、稳定性:系统应具备高度的稳定性,能够保证长时间的连续运行,避免 因设备故障或网络问题导致的广播中断。
2、可靠性:系统应具备可靠的备份机制,确保在主设备出现问题时,备份 设备能够迅速接管,保证广播的连续性。
3、易用性:系统应具备良好的用户界面,操作简单易懂,方便管理员进行 配置和管理。
五、C51与8051的区别
C51单片机是指一系列基于8051内核的单片机,各个生产厂商根据需要都会 在其基础上增加一些功能,但这与8051内核是相同的。所以很多人都习惯称其为 8051单片机。现在流行的很多开发板都是基于8051内核的。
教学课件PPT 89C51单片机的C51程序设计

程序存储器(64K字节)
对应MOVC @DPTR访问
可位寻址片内数据存储器(16字节,128位) 允许位和字节混合访问
间接寻址片内数据存储器(256字节)
可访问片内全部RAM空间
分页寻址片外数据存储器(256字节)
对应MOVX @R0访问
4.2 C51程序设计基础
C51存储类型定义举例:
unsigned char data x,y,z; /*在内部RAM区定义了3个无符号字节型变量x,y,z*/
40M/80M/100M,而且还有很多是单周期的。
4.2 C51程序设计基础
4.2.1 C51变量/常量存储类型
C51存储类型 对应89C51单片机存储器空间
data
直接寻址片内数据存储器(128字节)
xdata
片外数据存储器(64K字节)
说明 访问速度快 对应MOVX @DPTR访问
code bdata idata pdata
序号 语句
1
=
2
if
3
表达式1 ? 表达式2 : 表达式3
4
switch/case
5
while
6
do-while
7
for
8
函数
含义 赋值语句 条件语句 条件运算符 多分支语句 循环语句 循环语句 循环语句 模块化程序设计
4.2 C51程序设计基础
表4-6 常用语句
序号 语句
1
=
2
if
3
表达式1 ? 表达式2 : 表达式3
4.3 C51程序举例
例4:把外部数据RAM中从地址2000H单元开始的100个有符号 数逐一取出,若为正数则放回原单元,若为负数则求补后放回。
单片机C语言(模块一)

《单片机原理及应用(二)》模块一C51程序设计基础任务1:实例导航第二章C与80512.1 8051的编程语言1、8051的编程语言(四种):(1)BASIC语言(2)PL/M√(3)汇编语言√(4)C语言目前,汇编语言和C语言是广泛使用的两种单片机编程语言。
在未来的一段时间内,汇编语言和C语言还将同时存在,但从发展趋势看,C语言有逐渐取代汇编语言的可能。
最好的单片机编程者应是具有汇编语言基础,又精通C语言的。
2、C语言的优点(与汇编语言相比):(P41)(1)对单片机的指令系统不要求了解,仅要求对8051的存储器结构有所了解(2)寄存器的分配、不同存储器的寻址及数据类型等细节由编译器管理(3)程序有规范的结构,由不同的函数组成,这种方式可使程序结构化(4)编程及程序调试时间显著缩短,从而提高效率(5)提供库函数,具有较强的数据处理能力3、8051单片机C语言(单片机C51语言)了解一下单片机的种类:(查资料)2.2 Cx51编译器编译:C语言源程序转换成机器语言目标程序的过程,叫做编译。
编译器:能自动完成编译过程的一种计算机软件。
(1)C语言编译器(标准C)(2)C51编译器(经典8051单片机)(3)C x51编译器(经典8051单片机及派生产品)Cx51编译器完全遵照ANSI C语言标准,支持C语言的所有标准特征。
另外,还增加了可以直接支持8051结构的特征。
典型产品:KILE套装工具软件----------uVision2 集成开发环境的使用(P 302)例2-1:用uVision2软件编译调试一个C51程序(HELLO.C)基本步骤:(1)创建一个新项目(建在一个新文件夹下)并为项目选择一个CPU(此时会自动加入启动文件)(2)创建新程序文件(或打开旧程序文件)此例中,打开c:\kile\c51\examples\hello(3)将源文件添加到项目中此时还可修改工具选项(4)编译和链接项目(Build Target命令):翻译和链接源文件,并生成一个可以载入到uvision2调试器进行调试的绝对目标模块。
单片机技术及C51程序设计教学设计

单片机技术及C51程序设计教学设计一、前言单片机技术是现代电子技术领域的重要分支,广泛应用于各种电子设备和系统中。
本文旨在介绍单片机技术相关知识,并以C51为例探讨如何进行C51程序设计教学设计。
二、单片机技术概述单片机技术是指将CPU、ROM、RAM、I/O口和各种外设集成在一块芯片内,形成一种具有特定功能的微型计算机系统。
单片机技术的主要特点包括:1.模块化结构:各个功能模块紧密集成,简化了系统结构设计,提高了系统可靠性和稳定性。
2.体积小、功耗低:单片机本身结构简化,芯片体积小,功耗低,适用于电池供电系统。
3.可编程:单片机的芯片内集成了程序存储器(ROM)、数据存储器(RAM)和计时器等,可以通过程序的编程完成各种功能应用。
4.价格低廉:随着技术的进步和生产规模的扩大,单片机价格不断下降,已经成为现代电子产品的必备芯片之一。
单片机应用领域非常广泛,比如工控系统、医疗设备、家用电器、汽车电子、玩具等。
由于单片机技术比较复杂,因此需要深入学习。
三、基于C51的程序设计教学设计C51是一种基于8位单片机的嵌入式系统开发语言,它是一种高级汇编语言,提高了程序设计效率和可读性,支持结构化程序设计,适合于掌握控制流程和程序结构的初学者。
下面是基于C51的程序设计教学设计:1.设计目标本教学设计旨在帮助学生掌握C51程序设计语言,了解单片机内部结构和工作原理,从而熟悉单片机应用开发过程,提高实践能力和创新思维能力。
2.教学内容本教学设计的基本内容包括:1.单片机基础知识:单片机工作原理、单片机体系结构、单片机芯片类型、单片机系统开发环境和开发工具等。
2.C51程序设计语言:C51汇编语言的基本语法、关键字、标识符、数据类型和变量定义等。
3.C51程序设计实践:C51程序设计实例,包括流程控制、IO口控制、定时器控制、串口通信和EEPROM存储等。
3.教学方法本教学设计采用“理论讲解+实验实践”的教学方法,同时注重发挥学生的主观能动性,在理论讲解的同时引导学生亲自完成实验操作和程序设计。
单片机c51介绍

3.2 单片机的C51程序设计3.2.1 C51基础知识C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。
用C语言开发系统可以大大缩短开发周期,明显增强程序的可读性,便于改进、扩充和移植。
而针对8051的C语言日趋成熟,成为了专业化的实用高级语言。
一、C51的特点C语言作为一种非常方便的语言而得到广泛的支持,很多硬件开发都用C语言编程,如:各种单片机、DSP、ARM等。
C语言程序本身不依赖于机器硬件系统,基本上不作修改或仅做简单修改就可将程序从不同的单片机中移植过来直接使用。
C语言提供了很多数学函数并支持浮点运算,开发效率高,故可缩短开发时间,增加程序可读性和可维护性。
二. 单片机的C51与汇编ASM—51相比,有如下优点:(1)对单片机的指令系统不要求了解,仅要求对8051的存储器结构有初步了解;(2)寄存器分配、不同存储器的寻址及数据类型等细节可由编译器管理;(3)程序有规范的结构,可分成不同的函数,这种方式可使程序结构化;(4)提供的库包含许多标准子程序,具有较强的数据处理能力;(5)由于具有方便的模块化编程技术,使已编好程序容易移植;3.2.2 C51的基本数据类型当给单片机编程时,单片机也要运算,而在单片机的运算中,这个“变量”数据的大小是有限制的,不能随意给一个变量赋任意的值,因为变量在单片机的内存中是要占据空间的,变量大小不同,所占据的空间就不同。
所以在设定一个变量之前,必须要给编译器声明这个变量的类型,以便让编译3.2.3 C51的基本运算C语言的运算符分以下几种:1、算术运算符顾名思义,算术运算符就是执行算术运算的操作符号。
除了一般人所熟悉的程序范例:main(){int A,B,C,D,E,x,y;x=8;y=3;A=x+y;B=x-y;C=x*y;D=x/y;E=x%y;}程序结果A=11、B=5、C=24、D=2、E=22、关系运算符程序范例:main(){Int A,B,C,D,E,F,x,y;x=9;y=4;A=(x==y);B=(x!=y);C=(x>y);D=(x<y);E=(x>=y);F=(x<=y);}程序结果:A=0、B=1、C=1、D=0、E=1、F=0 3、逻辑运算符程序范例:main(){int A,B,C,x,y,z;x=9;y=8;z=10;A=(x>y)&&(y<z);B=(x==y)||(y<=z);C=!(x>z);}程序结果:A=0、B=1、C=14、位运算符位运算符与逻辑运算符非常相似,它们之间的差异在于位运算符针对变量中的每一位,逻辑运算符则程序范例:main(){char A,B,C,D,E,F,x,y;x=0x25;/*即0010 0101*/y=0x62; /*即0110 0010*/A=x&y;B=x|y;C=x^y;D=x~E=x<<3;F=x>>2}程序结果:0010 0101x: 0010 0101 x: 0010 0101 x: 0010 0101 x:~y: &0110 0010 y: |0110 0010 y: ^0110 0010 1101 1010 0010 0000 0110 0111 0100 0111即A=0x20 即B=0x67 即C=0x47 即D=0xda将x的值左移三位的结果为:0 0 1 0 0 1 0 10 0 1 0 0 1 0 1 0 0 0移出的三位“001”丢失,后面三位用0填充,因此运算后的结果是00101000B,即E=0x28。
C51基本语法

最新课件
8
1.2.2 变量 1.2.2.1变量类型 在程序运行中,其值可以改变的量称为变量
一个变量主要由两部分构成:一个是变量名, 一个是变量值。
每个变量都有一个变量名,在内存中占据一 定的存储单元(地址),并在该内存单元中存 放该变量的值。
最新课件
9
C51支持的变量通常有如下类型:
1. 位变量(bit)——位变量的值可以是1(true)或0(false)。与 805l硬件特性操作有关的位变量必须定位在8051CPU片内 存储区(RAM)的可位寻址空间中。
LARGE
参数及局部变量直接放入片外RAM(默认的存储类型是XDATA, 最大64KB);使用数据指针DPTR间接寻址。因此访问效率较低 且直接影响代码长度.
最新课件
16
1.2. 3 8051片内资源及位变量
1.2.3.1 特殊功能寄存器的C51定义
8051单片机的内部高128个字节为专用寄 存器区,其中51子系列有21个(52子系列 有26个)特殊功能寄存器(SFR),它们 离散的分布在这个区中,分别用于CPU并 行口、串行口、中断系统、定时/计数器等 功能单元及控制和状态寄存器。
2.浮点型常量。分为十进制和指数表示形式。十进制由数字 和小数点组成,如0.888,3345.345,0.0等,整数或小数部 分为0时可以省略0但必须有小数点。指数表示形式为: [±]数字[.数字]e[±]数字 [ ]中的内容为可选项,其中内容根据具体情况可有可无, 但其余部分必须有,如123e3,5e6,-1.0e-3。而e3,5e4.0则是 非法的表示形式。
4. 浮点型变量(float)——浮点型变量占4个字节(byte),许多 复杂的数学表达式都采用浮点变量数据类型。它用符号位 表示数的符号,用阶码和尾数表示数的大小。用它们进行 任何数学运算都需要使用由编译器决定的各种不同效率等 级的库函数。(补充存储格式)
单片机C51语言及程序设计

贰
壹
叁
C51编译器在头文件“REG51.H”中定义了全部sfr/sfr16和sbit变量。 用一条预处理命令#include <REG51.H>把这个头文件包含到C51程序中,无需重新定义即可直接使用它们的名称。
应用举例:
片内数据存储器,片外数据存储器和程序存储器。
通常下划线开头的标识符是编译系统专用的,因此在编写C语言源程序时一般不使用以下划线开头的标识符,而将下划线用作分段符。C51编译器规定标识符最长可达255个字符,但只有前32个字符在编译时有效,因此标识符的长度一般不要超过32个字符。
关键字是一种已被系统使用过的具有特定含义的标识符。用户不得再用关键字给变量等命名。C语言关键字较少,ANSI C标准一共规定了32个关键字,见表
变量名具有字母大小写的敏感性,如SUM和sum代表不同的变量。
【存储类别】 数据类型 【存储器类型】 变量名
变量名不得使用标准C语言和C51语言的关键字。
unsigned char data system_status = 0;
//定义system_status为无符号字符型自动变量,该变量位于data区中且初值为0。
sfr或sfr16型 51MCU中有21个SFR,如何定义与这些单元相关的变量?
例如,sfr P0 = 0x80; //定义P0口地址80H sfr PCON = 0x87; //定义PCON地址87H sfr16 DPTR=0x82; //定义DPTR的低端地址82H
单精度浮点数
for
程序语句
构成for循环结构
goto
程序语句
构成goto转移结构
if
程序语句
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
由此可见,在C51程序设计过程中,在满足数据要求的情况 下,应尽可能使用unsigned char变量和bit变量。signed char变 量虽然也只占用一个字节,但需要进行额外的操作来测试代 码的符号位,因此会降低代码执行效率。
14
江 阴 职 业 技 术 学 院 电 子 工 程 系
五、常量和变量
江 阴 职 业 技 术 学 院 电 子 工 程 系
第1章 C51 程序设计基础
江 阴 职 业 技 术 学 院 电 子 工 程 系
主要内容
一、C51概述 二、数据类型 三、常量和变量 四、运算符和表达式 五、C程序的基本结构 六、函数
2
江 阴 职 业 技 术 学 院 电 子 工 程 系
一、C51概述
常量是在程序运行过程中不能改 变值的量,常量的数据类型有整型、 浮点型、字符型、字符串型和位标量。
常量可用在不必改变值的场合,如固 定的数据表,字库等。
15
江 阴 职 业 技 术 学 院 电 子 工 程 系
常量的定义方式有几种:
#difine False 0x0; //用预定义语句可以定义常量 #difine True 0x1; //这里定义False为0,True为1 在程序中用到False编译时自动用0替换,同理True替换为1 unsigned int code a=100; //这一句用code把a定义在程序 存储器中并赋值 const unsigned int c=100; //用const定义c为无符号int常量 并赋值
8
江 阴 职 业 技 术 学 院 电 子 工 程 系
数据类型 unsigned char signed char unsigned int signed int unsigned long signed long
长
度
值
域
单字节 单字节 双字节 双字节 四字节 四字节
0~255 -128~+127 0~65535 -32768~+32767 0~4294967295 -2147483648~+2147483647
(3)sbit 位变量名=字节地址^位位置 sbit P1_1 = 0x90 ^ 1;
13
江 阴 职 业 技 术 学 院 电 子 工 程 系
变量数据类型的选择
在C51程序设计中,变量数据类型的定义极其重要,因为在 所有数据类型中只有bit和unsigned char两种数据类型可以直接 支持机器指令,对于其他的数据类型C51编译器都要进行一系 列复杂的变量数据和变量类型的处理,而这种处理将会对应 很长一段机器指令,最终会使程序变得复杂、庞大,运行速 度降低。
用 位标量声明 位标量声明
途
说
明
声明一个位标量或位类型的函数 声明一个可位寻址变量 声明一个特殊功能寄存器 声明一个16位的特殊功能寄存器 直接寻址的内部数据存储器 可位寻址的内部数据存储器
特殊功能寄存器声明 特殊功能寄存器声明 存储器类型说明 存储器类型说明
idata
pdata xdata code interrupt reentrant using
(一)C语言的特点
C语言简洁、紧凑,方便、灵活。一共只有32个关键字 运算符丰富,共有34种。 数据结构类型丰富(struct、union、enum 等)。 具有结构化的控制语句(if、for、switch、while 等)。 语法限制不太严格,程序设计自由度大。 生成目标代码质量高,程序执行效率高。 与汇编语言相比,用C语言写的程序可移植性好 C语言允许直接访问物理地址,能进行位(bit)操作,能 实现汇编语言的大部分功能,可以直接对硬件进行操作。 因此有人把它称为中级语言。
例1-1 流水灯
#include "REG51.H" main() {
int i,w;
TMOD=0x10; while(1) { w=0x01; // 灯的位置初值为01h // 置定时器1为方式1
for(i=0;i<8;i++)
{ P1=~w; w<<=1; delay(); // 循环点亮灯 // 点亮灯的位置移动 // 调用1 s延时
指针型本身就是一个变量,在这个变量中存放的指 向另一个数据的地址。这个指针变量要占据一定的 内存单元,对不同的处理器长度也不尽相同,在 C51中它的长度一般为1~3个字节。指针变量也具 有类型。
2. bit位标量
bit位标量是C51编译器的一种扩充数据类型,利用 它可定义一个位标量,但不能定义位指针,也不能 定义位数组。它的值是一个二进制位,不是0就是1, 类似一些高级语言中的Boolean类型中的True和 False。
}
} } 7
江 阴 职 业 技 术 学 院 电 子 工 程 系
二、数据类型
C语言的标识符和关键字 在C51编译器中,只支持标识符的前32位为有效标识, 故用户标识符不宜过长。 关键字则是编程语言保留的特殊标识符,它们具有固 定名称和含义,在程序编写中不允许标识符与关键字 相同。在KEIL uVision2中的关键字除了有ANSI C标 准的32个关键字外还根据51单片机的特点扩展了相关 的关键字。 表4-1,表中列出了KEIL uVision2 C51编译器所支 持的数据类型。
中断服务程序的现场保护和恢复,中断向量表的填写,是直接 与单片机相关的,都由C编译器代办;
提供常用的标准函数库,以供用户直接使用;
头文件中定义宏、说明复杂数据类型和函数原型,有利于程 序的移植和支持单片机的系列化产品的开发;
有严格的句法检查,错误很少,可容易地在高级语言的水平上 5 迅速地被排掉;
11
江 阴 职 业 技 术 学 院 电 子 工 程 系
3、 sfr特殊功能寄存器
sfr也是一种扩充数据类型,点用一个内存单元,值域为 0~255。利用它可以访问51单片机内部的所有特殊功能寄 存器。 如用sfr P1 = 0x90这一句定P1为P1端口在片内的寄存器, 在后面的语句中我们用以用P1 = 255(对P1端口的所有引 脚置高电平)之类的语句来操作特殊功能寄存器。 sfr关键子后面是一个要定义的名字,可任意选取,但要符 合标识符的命名规则,最好有一定的含义,如P1口可以用 P1。等号后面必须是常数(特殊寄存器直接地址),不允 许有带运算符的表达式,而且该常数必须在特殊功能寄存 器的地址范围之内(80H-FFH),具体可查看教材8051 内部RAM地址表。
19
江 阴 职 业 技 术 学 院 电 子 工 程 系
SMALL存储模式
所有缺省变量参数均装入内部RAM(与使用显 式的data关键字来定义结果相同)。使用该模比较少,遇到函数嵌套调用和函数
递归调用时必须小心,该模式适用于较小的程序。
20
江 阴 职 业 技 术 学 院 电 子 工 程 系
12
江 阴 职 业 技 术 学 院 电 子 工 程 系
4、sbit
sbit是C51中的一种扩充数据类型,利用它可以访问芯片内部的RAM中 的可寻址位或特殊功能寄存器中的可寻址位。
如要访问P1.1,定义方法有三: (1)sbit 位变量名=位地址 sbit P1_1 = Ox91; //把位的绝对地址赋给位变量。 同sfr一样sbit的位地址必须位于80H-FFH之间。 (2)Sbit 位变量名=特殊功能寄存器名^位位置 sfr P1 = 0x90; sbit P1_1 = P1 ^ 1; 当可寻址位位于特殊功能寄存器中时可采用这种方法
18
江 阴 职 业 技 术 学 院 电 子 工 程 系
存储器类型
说
明
data bdata idata pdata xdata code
直接访问内部数据存储器(128字节),访问速度最快 可位寻址内部数据存储器(16字节),允许位与字节混合访问 间接访问内部数据存储器(256字节),允许访问全部内部地址 分页访问外部数据存储器(256字节),用MOVX @Ri指令访问 外部数据存储器(64KB),用MOVX @DPTR指令访问 程序存储器(64KB),用MOVC @A+DPTR指令访问
LARGE存储模式
所有缺省变量可放在多达64 K字节的外部
以上两句它们的值都保存在程序存储器中,而程序存储器 在运行中是不允许被修改的,所以如果在这两句后面用了 类似a=110,a++这样的赋值语句,编译时将会出错。
16
江 阴 职 业 技 术 学 院 电 子 工 程 系
变量
变量就是一种在程序执行过程中其值能不断变化的量。变量必须 先定义后使用 标准C 定义一个变量的格式如下: [存储种类] 数据类型 变量名表 如auto int a;//存储种类分:auto,static,register,extern C 51定义一个变量的格式如下: [存储种类] 数据类型 [存储器类型] 变量名表 可选 必选 可选 必选 存储器类型的说明就是指定该变量在C51硬件系统中所使用的存 储区域,并在编译时准确的定位。
存储器类型说明
存储器类型说明 存储器类型说明 存储器类型说明 中断函数说明 再入函数说明 寄存器组定义
间接寻址的内部数据存储器
分页寻址的外部数据存储器 外部数据存储器 程序存储器 定义一个中断函数 定义一个再入函数 定义芯片的工作寄存器
10
江 阴 职 业 技 术 学 院 电 子 工 程 系
1.* 指针型
float *
bit sfr sfr16 sbit
四字节 1~3字节
位 单字节 双字节 位
±1.175494E-38~±3.402823E+38 对象的地址
0或1 0~255 0~65535 0或1