![第三章C51数据与运算_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-1/3/d83b714e-0673-41ff-9d5c-e5868c596453/d83b714e-0673-41ff-9d5c-e5868c5964531.gif)
![第三章C51数据与运算_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-1/3/d83b714e-0673-41ff-9d5c-e5868c596453/d83b714e-0673-41ff-9d5c-e5868c5964532.gif)
![第三章C51数据与运算_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-1/3/d83b714e-0673-41ff-9d5c-e5868c596453/d83b714e-0673-41ff-9d5c-e5868c5964533.gif)
![第三章C51数据与运算_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-1/3/d83b714e-0673-41ff-9d5c-e5868c596453/d83b714e-0673-41ff-9d5c-e5868c5964534.gif)
![第三章C51数据与运算_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-1/3/d83b714e-0673-41ff-9d5c-e5868c596453/d83b714e-0673-41ff-9d5c-e5868c5964535.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章第三章 C51数据与运算数据与运算3.1 数据与数据类型数据与数据类型3.2 常量与变量常量与变量3.3 C51数据的存储类型与数据的存储类型与8051存储结构存储结构3.4 8051特殊功能寄存器及其特殊功能寄存器及其C51定义定义3.5 8051并行接口及其并行接口及其C51定义定义3.6 位变量及其位变量及其C51定义定义3.7 C51运算符、表达式及其规则运算符、表达式及其规则3.1 数据与数据类型数据与数据类型数据结构+算法=程序。 C语言的数据结构是以数据类型形式出现的。C51数据类型与标准C数据类型的最大不同之处:位型。在程序对用到的所有数据必须指定其数据类型。位型(bit
2、)字符型(char)整型(int)长整型(long)浮点型(float)双精度浮点型(double)数组类型(array)结构体类型(struct)共用体(union)枚举(enum)基本类型构造类型指针类型空类型数据类型C51数据类型的取值范围:数据类型的取值范围:数据类型数据类型长度(长度(bit)长度(长度(byte)值域范围值域范围bit10,1unsigned char810255signed char81128127unsigned int162065535signed int162 3276832767unsigned float32404294967295signed floa
3、t324 21474836482147483647float3241.176E-383.40E+38(63.40E+38(6位数字位数字) )double6481.176E-383.40E+38(103.40E+38(10位数字位数字) )一般指针一般指针243存储空间存储空间0655353.2 常量与变量常量与变量 C语言中数据有常量和变量之分 常量:字面常量:如12,4.6,A 符号常量:用标识符代表常量 常量定义: #define 常量名 常量值 #define CONST 60 变量:变量名(内存中存贮单元的地址,符号地址) 变量定义:数据类型 变量名; int result; 习惯上
4、,常量名用大写,变量名用小写(C语言区分大小写) 符号常量与变量的区别:在作用域内,常量的值不能改变,也不能用等号赋值。 标识符:用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列均称为标识符。 C语言规定:标识符只能由字母、数字和下划线三种字符组成,且第一字符必须为字母。 在C语言中,要求对所用到的变量作强制定义,也就是“先定义,后使用”。3.2.1 整型数据一、整型常量(整常数)的表示方法:1. 十进制整数:如:12,02. 八进制整数:以0开头的数是八进制数。 如0123,即(123)8,-0113. 十六进制整数:以0 x开头。如0 x57,-0 x12二、整型变
5、量1. 分类:根据数值的范围分为:基本整型、短整型、长整型u 基本整型:以int表示。signed int,unsigned intu 短整型:以short int 或short表示。 signed short int,unsigned short intu 长整型:以long int 或long表示。 signed long int, unsigned long int2. 定义类型标识符 变量名3. 数据溢出int a,b;a=32767; /*0111*/b=a+1; /*1000,b=-32768溢出,但运行时并 不报错,注意*/三、整型常量的类型1. 值在-3276832767范围内
6、的整数,认为是int型。2. 超过上述范围,而在-231(231-1)范围内的整数,认为是long型。3. 整常量后面加一个字母u,认为是unsigned int型(最高位不作符号位)4. 整常量后面加一个字母l或L,认为是long型。如123L。3.2.2 实型数据一、实型常量的表示方法1. 十进制小数形式:由数字和小数点组成(必须有小数点)。如:.123,123.,123.02. 指数形式:如123e3或123E3代表123103。e之前必须有数字,e后面的指数必须为整数。规范化的指数形式:e之前的小数部分中,小数点左边有且仅有一位非零数字。如1.23e2二、实型变量1. 分类:单精度(f
7、loat):4byte,67位有效数字 双精度(double):8byte,1516位有效数字 长双精度(long double):10byte,较少用2. 定义:类型标识符 变量名;三、实型常量的类型:一般作为双精度来处理,可在数后面加f或F来表示单精度。3.2.3 字符型数据一、字符常量: 用单引号括起来的一个字符。如a,F,$ C还允许用一咱特殊形式的字符常量,就是用一个“”开头的字符序列。如:printf(“ ab ct derftgn”); n代表一个换行符,是一种控制字符。在屏幕上是不能显示的。在程序中也无法用一个一般形式的字符表示,只能采用特殊形式表示,称为转义字符。意思是后面的
8、字符转换成另外的意义,常用的以开头的特殊字符如下表:字符形式含义ASCII代码n换行,将当前位置移到下一行开头10t水平制表(跳到下一个tab位置)9b退格,将当前位置移到前一列8r回车,将当前位置移到本行开头13f换页,将当前位置移到下页开头12反斜杠字符92单引号字符 39”双引号字符34ddd1到3位8进制所代表的字符如012换行101字符Axhh1到2位16进制所代表的字符二、字符变量定义形式:char 变量名;注意:一个字符变量只能存放一个字符,不能存放字符串。三、字符数据在内存中的存储形式和使用方法 字符数据以ASCII码存储。既可以以字符形式输出,也可以以整数形式输出。也可以对字
9、符数据进行运算。例:main() char c1,c2;c1=97; c2=98;/*相当于c1=a; c2=b;*/printf(“%c%cn”,c1,c2);/*以字符形式输出 ab*/printf(“%d%dn”,c1,c2);/*以整数形式输出 97 98*/ 例:大小写字母转换main()char c1,c2; c1=a;c2=b;c1=c1-32;c2=c2-32;printf(“%c%c”,c1,c2); 字符型数据和整型数据可以相互赋值。 字符变量的最高位作为符号位,即signed char。可定义无符号字符型变量,unsigned char型。 为书写方便,常使用简化的缩写形
10、式来定义变量的类型。 方法:在源程序开头用define说明。例:#define uint unsigned int # define uchar unsigned char uchar c1; uint result;四、字符串常量用一对双引号括起来的字符序列。如:”china”,”How do you do.”,”a”,”12.3”可以输出一个字符串。如printf(“How do you do.”);C规定:在每一个字符串的结尾加一个字符串结束标志,以使系统判断字符串是否结束。以字符0作为字符串结束标志,由系统自动添加。不能将字符串赋给字符变量。C语言没有专门的字符串变量,使用字符数组存放
11、字符串。3.2.4 位变量 标识符为bit 位变量的值可以是1或0 bit型变量只占用一位存储单元,位于内部RAM的可位寻址区 对于可位寻址的SFR空间的字节,可以字义特殊位变量标识该字节的某一位,这种位变量类型的标识符为sbit3.3 C51数据的存储类型数据的存储类型 C51定义的任何数据类型必须以一定的存储类型定位在8051的某一存储区中,否则没有任何实际意义。存储类型与存储空间的对应关系data直接寻址片内数据存储区,访问速度快(128字节)bdata可位寻址片内数据存储区,允许位与字节混合访问(16字节)idata间接寻址片内数据存储区,可访问片内全部RAM地址空间(256字节)pd
12、ata分页寻址片外数据存储区(256字节),由MOVX Ri访问xdata寻址片外数据存储区(64K字节),有MOVX DPTR访问code寻址代码存储区(64K字节),有MOVC DPTR访问 例:#define uchar unsigned charuchar data a1;bit bdata flag;uchar xdata s=3,4,7,2,45,8;uchar code table10=0 x3f,0 x06,0 x5b,0 x4f, 没有指定存储类型时,由编译系统的存储模式将其存于缺省(默认)存储空间。 C51编译器的存储模式包括:SMALL,COMPACT,LARGE。 C5
13、1编译器的存储模式一般为小模式,缺省存储类型为data3.4 8051特殊功能寄存器及其特殊功能寄存器及其C51定义定义 21个SFR分布在片内RAM的高128字节中,对SFR的操作只能作直接寻址方式,其中有11个或位寻址的寄存器。 在C51中,SFR及其可位寻址的位是通过关键字sfr和sbit 来定义的。这种定义方法与标准C不兼容,只适用于C51。 注意: sfr和sbit 只能在函数外使用,一般放在程序开头。例:sfr PSW=0 xD0; /*定义PSW寄存器地址为D0H*/sfr TMOD=0 x89; PSW是可位寻址的SFR,其中各位的定义用sbit例:sbit CY=0 xD7;
14、 /*定义位CY(其位地址为D7H)*/sbit AC=0 xD06;sfr PSW=0 xD0;sbit RS0=PSW3 大部分特殊功能寄存器及其可位寻址的位的定义在reg51.h、reg52.h等相应的头文件中已经给出。使用时需在源文件中包含相应的头文件,即或作用SFR及其可位寻址的位。对于未定义的位,在使用前必须先定义。 例:#include “reg51.h”sbit P10=P10;sbit P12=P12;main()P10=1;P12=0;PSW=0 x08;/*等价的定义RS0=1;RS1=0;*/if(OV=1)3.5 8051并行接口及其并行接口及其C51定义定义单片机内
15、部并行口用sfr定义,外部并行口的定义如何定义?用指针定义,指针的定义在absacc.h头文件中例如:#include “absacc.h”#define PA XBYTE0 xffec/*将PA定义为外部I/O口,地址为0 xffec */main()PA=0 x3A; /*将数据3AH写入地址为0 xffec的存储单元或I/O端口*/3.6 位变量及其位变量及其C51定义定义1. 位变量的定义:关键字bit来定义,它的值是一个二进制位。例:bit lock;bit dirention;/*将lock,direction定义为位变量*/2. 对位变量的限制: 不能定义位变量指针 不能定义位变
16、量数组 位变量说明中可以指定存储类型,位变量的存储类型只能是bdata3. 可位寻址对象:即可以字节寻址也可以位寻址。其存储类型只能是bdata。使用时,先定义字节变量的数据类型和存储类型,然后使用sbit关键字定义其中可独立寻址访问的位变量。例:int bdata a;char bdata b4;sbit a0=a0;sbit a12=a12;sbit b03=b03; sbit b36=b36;3.7 C51运算符、表达式及其规则运算符、表达式及其规则 运算符就是完成某种特定运算的符号。运算符按其表达式中与运算符的关系可分为单目运算符、双目运算符和三目运算符。单目就是指需要有一个运算对象,
17、双目就要求有两个运算对象,三目则要三个运算对象。表达式是由运算符及运算对象所组成的具有特定含义的式子。C是一种表达式语言,表达式后面加“;”号就构成了一个表达式语句。 C51的运算符主要有:算术运算符、关系运算符、逻辑运算符、位运算符、赋值及复合赋值运算符。3.7.1 算术运算符和算术表达式算术运算符和算术表达式1. 基本的算术运算符+加或取正值运算符- 减或取负值运算符*乘运算符/ 除运算符% 模(取余)运算符(要求两侧操作数均为整型数据)2. 自增、自减运算符(单目运算符)+ 为自增运算符- 为自减运算符注意:(1)+、-运算符只能用于变量,不能用于常量或表达式。(2)当+j时,先将变量j
18、的值加1(j=j+1),再取变量值 当j+时,是先取变量值,再把变量值加1 (j=j+1)。例:a=2,b=+a,则b=3,a=3a=2,b=a+,则b=2,a=33. 算术表达式和运算符的优先级与结合性 算术表达式:用算术运算符和括号将操作数连接起来的式子。 形式为:操作数1 算术运算符 操作数2 操作数可以是常量、变量、函数、数组、结构等。如:a+b*(10-a)、a*(b+c)-(d-e)/f 优先级:单目高于双目,先乘除模,后加减,括号最优先。 结合性:单目、三目、赋值运算符自右向左结合(右结合性),其它自左向右(左结合性)。 例:-i+=-(i+)4. 强制类型转换运算符 运算符的两
19、侧数据类型不同时,则必须利用强制类型转换将数据转换成所需类型。(1)一般形式为:(类型名)(表达式)例:(double)a(int)a%(int)b(int)(x+y)表达式必须用括号括起来。例:(double)x+y=(double)(x)+y(double)(x+y)(2)自动(缺省)类型转换转换规则:doublelong unsigned int float char高 低3.7.2 关系运算符和关系表达式关系运算符和关系表达式1. 关系运算符及其优先级C51中有6种关系运算符: 大于 = 大于等于 =c+d、(a=3)(b=2)关系表达式的结果为逻辑值:真和假。C51中0表示假,1表示
20、真。3.7.3 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式1. 逻辑运算符及其优先级& 逻辑与| 逻辑或 !逻辑非优先级: (1)!高于 &, &高于 | (2)!、算术运算符、关系运算符、 &、|、赋值运算符结合性:左结合2. 逻辑表达式用逻辑运算符将两个表达式或逻辑量连接起来的式子。表达式的结果为逻辑值:真和假。如:a=4,b=0,则a&b为0逻辑表达式的执行规则:不完全执行例:a&b&c,若a的值为0,则不需判断b和c就可确定结果a|b|c,若a=0,则需判断b值,若b=1,则可确定表达式结果3.7.4 位运算符及其表达式位运算符及其表达式1. C51中共有6种位运算符:& 按位与| 按位或 按位异或 按位取反 右移优先级:从高到低依次是:、&、| 结合性:单目右结合,双目左结合注意:位运算的操作对象只能是整型
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大数据交易平台搭建策略与实施路径
- 打造银发族健康养生旅游列车线路
- 2025年度公路货运合同(物流园区土地租赁)
- 2025年度人工智能算法工程师招聘合同
- 中国食品添加剂行业市场前景预测及投资战略研究报告
- 2025年度航空航天零部件制造合同-@-1
- 2025年化妆品电商平台入驻合作协议
- 2025年度建筑业劳务结算合同
- 2025年度房屋买卖合同借款利率约定与合同条款分析
- 住房补贴申请书
- 质量问题分析及措施报告
- 汽修厂安全风险分级管控清单
- 现代通信原理与技术(第五版)PPT全套完整教学课件
- 社区获得性肺炎教学查房
- 病例展示(皮肤科)
- GB/T 39750-2021光伏发电系统直流电弧保护技术要求
- 教科版五年级科学下册【全册全套】课件
- 糖尿病运动指导课件
- 完整版金属学与热处理课件
- T∕CSTM 00640-2022 烤炉用耐高温粉末涂料
- 304不锈钢管材质证明书
评论
0/150
提交评论