版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章 单片机C51语言设计基础3.1 C51的数据3.2 C51对单片机主要资源的控制3.3 C51的基本运算与流程控制3.4 C51的数组与指针3.5 C51函数3.6 C51的预处理命令第1页,共126页。3.1 C51的数据3.1.1 数据类型 3.1.2 常量与变量3.1.3 数据存储类型3.1.4 局部变量与全局变量 第2页,共126页。3.1.1 数据类型第3页,共126页。3.1.2 常量与变量1常量 C51语言中的常量是不接受程序修改的固定值,常量可以是任意数据类型。 C51中的常量有整型常量、实型常量、字符型常量、字符串常量符号常量等。第4页,共126页。(1)整型常量第5
2、页,共126页。 在整型常量后加一个字母“L”或“l”,表示该数位长整型。例如23L、04l等。 如果需要的是负值,则必须将负号“-”放置于常量表达式的最前面,例如-0 x56、-9等。第6页,共126页。(2)实型常量 实型常量又称浮点常量,是一个十进制表示的符号实数。实型常量的值包括整数部分、尾数部分和指数部分。实型常量的形式如下:E一些实型常量的示例如下:15.75、1.575E1、15753、-0.0025、-2.53、254。第7页,共126页。(3)字符型常量 字符型常量是指用一对单引号括起来的一个字符。如a、9、!等。字符常量中的单引号只起定界作用并不表示字符本身。 在C51语言
3、中,字符是按其对应的码值来存储的,1个字符占1个字节 第8页,共126页。(4)字符串常量 字符串常量是指用一对双引号括起来的一串字符,双引号只起定界作用,如、123456等。 第9页,共126页。(5)符号常量 C51语言中允许将程序中的常量定义为一个标识符,称为符号常量。 符号常量一般使用大写英文字母表示,以区别于一般用小写字母表示的变量。 符号常量在使用前必须先定义,定义的形式是: 标识符 常量 3.1415926第10页,共126页。2变量变量的定义: 数据类型 变量名; ; ; ; ; C51中常用的:、第11页,共126页。(1)整型变量() 16位数据有符号: -32 76832
4、 767 无符号: 065 535 0 x1234存储形式第12页,共126页。例3-1 P50(2)长整型变量( ) 长整型变量长度是32位,占用4个字节(),其他方面和整型变量()相似。第13页,共126页。(3)实型变量分为单精度()型和双精度()型。其定义形式为: ; 指定为单精度实数 z; 指定z为双精度实数 在一般系统中,一个型数据在内存中占4个字节(32位),一个型数据占8个字节(64位)。单精度实数提供7位有效数字,双精度实数提供1516位有效数字。第14页,共126页。(5)字符变量字符变量用来存放字符常量。注意只能存放1个字符。字符变量的定义形式如下: 变量名;例如: c1
5、2;它表示c1和c2为字符变量,各存放1个字符。可以用下面的语句对c1、c2赋值:c1=a2=b;字符变量的长度是1字节()即8位。这很适合于8051单片机,因为8051单片机每次可以处理8位数据。第15页,共126页。(6)位变量()变量的类型是位,位变量的值可以是1()或0()。与8051硬件特性操作有关的位变量必须定位在8051单片机片内存储区()的可位寻址空间中。第16页,共126页。3有符号/无符号问题说明(1)尽量使用无符号变量(2)在编程时,为了书写方便,经常使用简化的缩写形式来定义变量的数据类型: 第17页,共126页。3.1.3 数据存储类型 数据时存放在51单片机的存储器中
6、的,因此要规定数据的存储类型。P53 表3-4 常用:、 另外:第18页,共126页。第19页,共126页。(1)区区的寻址是最快的,所以应该把经常使用的变量放在区,但是区的空间是有限的,区除了包含程序变量外,还包含了堆栈和寄存器组。区声明中的存储类型标式符为,通常指片内的低128字节的内部数据存储的变量,可直接寻址。声明举例如下: 0; 2; 16;第20页,共126页。(2)实际是中的位寻址区,在这个区中声明变量就可以进行位寻址。位变量的声明对状态寄存器来说是十分有用的,因为它可能仅仅需要某一位,而不是整个字节。区声明中的存储类型标识符为,指内部可位寻址的16字节存储区(20H到2),数据
7、类型是可位寻址变量的数据类型。以下是在区中声明的位变量和使用位变量的例子: 第21页,共126页。 ; ; ; 4; (15) 1;第22页,共126页。(3)区区也可以存放使用比较频繁的变量,使用寄存器作为指针进行寻址。区声明中的存储类型标识符为,指内部的256字节的存储区,但是只能间接寻址,速度比直接寻址慢。声明举例如下: 0; 2; 16; ;第23页,共126页。(4)区和区区和区属于外部数据存储区,外部数据区是可读可写的存储区,最多可以有64。在这两个区,变量的声明与在其他区的语法是一样的,但区只有256字节而区可达65 536字节。第24页,共126页。声明举例如下: 0; 2 ;
8、 16 ; ;外部地址段中除了包含存储器地址外,还包含器件的地址。对外部器件寻址可以通过指针或C51提供的宏,使用宏对外部器件口进行寻址更具可读性。第25页,共126页。(5)程序存储区程序存储区的数据是不可改变的,跳转向量和状态表对段访问和对区访问的时间是一样的。编译的时候要对程序存储区中的对象进行初始化,否则就会产生错误。程序存储区声明的标识符为,在C51语言编译器中可以用存储区类型标识符来访问程序存储区。下面是程序存储区声明的例子: a =0 x00,0 x01,0 x02,0 x03,0 x04,0 x05,0 x06,0 x07,0 x08,0 x09,0 x10,0 x11,0 x
9、12,0 x13,0 x14,0 x15;第26页,共126页。变量存储类型定义举例: 1; ; ; ; 1044;第27页,共126页。3.1.4 局部变量与全局变量 从变量的作用范围来区分,变量可以被分为全局变量和局部变量; 某些变量在程序运行过程中是始终存在的全局变量。 某些变量只是在进入某个函数时才开始存在局部变量。第28页,共126页。1局部变量局部变量是在某个函数中存在的变量,也可以称为内部变量,它只在该函数内部有效。局部变量可以分为动态局部变量和静态局部变量,使用关键词定义动态局部变量(可以省略),使用关键词定义静态局部变量,例如: a; j;第29页,共126页。动态局部变量在
10、程序执行完毕后其存储空间被释放,而静态局部变量在程序执行完成后其存储空间并不释放,而且其值保持不变。如果该函数再次被调用,则该函数初始化后其初始值为上次的数值。动态局部变量和静态局部变量的区别如下:第30页,共126页。动态局部变量在函数被调用时分配存储空间和初始化,每次函数调用时都需要初始化;静态局部变量在编译程序时分配存储空间和初始化,仅初始化一次。动态局部变量存放在动态存储区,在每次退出所属函数时释放;静态局部变量存放在静态存储区,每次调用后函数不释放,保持函数执行完毕之后的数值到下一次调用。如果在建立时动态局部变量不初始为一个不确定的数,静态局部变量不初始化,则它们的值为0或者是空字符
11、。第31页,共126页。2全局变量全局变量是在整个源文件中都存在的变量,又称为外部变量。全局变量的有效区间是从定义点开始到源文件结束,其中的所有函数都可以直接访问该变量,如果定义点之前的函数需要访问该变量,则需要使用关键词对该变量进行声明,如果全局变量声明文件之外的源文件需要访问该变量,也需要使用关键词进行声明。第32页,共126页。全局变量有以下特点:全局变量是整个文件都可以访问的变量,可以用于在函数之间共享大量的数据,存在周期长,在程序编译时就存在,如果两个函数需要在不互相调用时共享数据,则可以使用全局变量进行参数传递;C51语言程序的函数只支持一个函数返回值,如果一个函数需要返回多个值,
12、除了使用指针外,还要使用全局变量;第33页,共126页。使用全局变量进行参数传递可以减少从实际参数向形式参数传递时所必需的堆栈操作;在一个文件中,如果某个函数的局部变量和全局变量同名,则在这个局部变量的作用范围内局部变量不起作用,全局变量起作用;全局变量一直存在,占用了大量的内存单元,并且加大了程序的耦合性,不利于程序的移植或复用。第34页,共126页。静态局部变量的作用范围仅仅是在定义的函数内,不能被其他的函数访问,全局变量的作用范围是整个程序,静态全局变量的作用范围是该变量定义的文件;静态局部变量是在函数内部定义,全局变量是在所有函数外定义;静态局部变量仅仅在第1次调用时被初始化,再次调用
13、时使用上次调用结束时的数值,全局变量在程序运行时建立,值为最近一条访问该全局变量的语句执行的结果。第35页,共126页。另外,函数虽然是文件的主文件,但也是一个函数,在其内部定义的变量也属于局部变量。全局变量一般在文件的开始部分定义或在文件中定义,由文件引用。C51语言程序多使用全局变量传递参数,因为这样可以降低程序处理的难度,加快程序执行的速度,提高程序的时效性。第36页,共126页。3.2 C51对单片机资源的控制3.2.1 特殊功能寄存器的C51语言定义3.2.2 绝对地址的访问3.2.3 位变量的C51语言定义第37页,共126页。3.2.1 特殊功能寄存器的C51定义21个特殊功能寄
14、存器。两种方式:1使用关键字定义 特功器名字=特功器地址; 0 x98; /*串口控制寄存器地址98H*/ 0X89; /*定时器/计数器方式控制寄存器地址89H*/第38页,共126页。2通过头文件访问 使用的单片机为公司的51 ()0=00; 0=0 x3c;0=1; 启动定时器0.第39页,共126页。3中位定义3种方式(1)第1种方法 位名=特殊功能寄存器名位置;(2)第2种方法 位名=字节地址位置;(3)第3种方法 位名=位地址;第40页,共126页。例: 00; 2; 002; 02;第41页,共126页。 ; 00; P1=0 x90; P1_010; P1_111; P1_61
15、6; P1_717;第42页,共126页。P60 例3-3 型变量的定义P60 例3-4 片内口及其位的定义第43页,共126页。3.2.2 绝对地址的访问包括:片内、片外及口可以有两种方式:1、通过宏定义2、第44页,共126页。1、通过宏定义用可使用其中声明的宏来访问绝对地址, 以字节形式对区寻址; 以字形式对区寻址; 以字节形式对区寻址; 以字形式对区寻址;第45页,共126页。另外: 以字节形式对区寻址; 以字形式对区寻址; 以字节形式对区寻址; 以字形式对区寻址。第46页,共126页。如: 00/*将定义为外部口,地址为00,长度为8位*/ 0 x40/*将定义为片内,地址为40H,
16、长度为8位*/第47页,共126页。例3-5( P61 ) 0将定义为外部口,地址为0 0 x40/*将定义为片内,地址为40H,长度为8位*/ ( )0 x3A;0 x01; 第48页,共126页。2、关键词可以使用关键字对指定的存储器空间的绝对地址进行访问。一般格式如下: 【存储类型】 数据类型符 变量名 地址常数;第49页,共126页。例3-6(P62) x1 0 x40;/*在区定义字节变量x1,它的地址为40H*/ x2 0 x2000;/*在区定义字变量x2,它的地址为2000H*/ ()x1=0;x2=0 x1234H;.(1); 第50页,共126页。3.2.3 位变量的C51
17、语言定义1位变量的C51语言定义 采用关键字进行定义。例如: ;/* 将定义为位变量 */ ;/* 将定义为位变量 */ ;/* 将定义为位变量 */第51页,共126页。2可位寻址对象 可位寻址对象指可以字节或位寻址的对象。该对象应位于8051片内可位寻址区中,C51语言编译器允许数据类型为的对象放入8051片内可位寻址区。 位变量的存储类型只能是。 在程序设计时,对于可位寻址的对象,即可以字节寻址也可以位寻址的变量,但其存储类型只能是。 使用时应先说明字节变量的数据类型和存储类型,然后可使用定义可独立寻址访问的对象位。第52页,共126页。例如: ; /* 定义为整型变量 */ 4; /*
18、 定义为字符型数组 */ 00; /* 0定义为的第0位*/ 1515; /* 15定义位的第15位*/ 0707; /* 07定义为0的第7位*/ 3737; /*37定义为3的第7位*/第53页,共126页。37=0; /* 3的第7位赋值为0 */3=a; /* 字节寻址:3赋值为a */ 定义要求基址对象的存储类型为,只有这样其特殊位定义()是合法的。 位置(操作符)后的最大值依赖于指定的基类型,对于而言是07,对于而言是015,对于而言是031。第54页,共126页。3.3 C51的基本运算与流程控制3.3.1 基本运算3.3.2 选择(分支)控制语句3.3.3 循环结构流程控制语句
19、3.3.4 语句、语句、 语句第55页,共126页。3.3.1 基本运算(运算符)运算符是表示特定的算术或逻辑运算的符号,也称操作符。把需要进行运算的各个量通过运算符连接起来,便构成表达式。算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、特殊运算符第56页,共126页。一、算术运算算术运算的操作符:+ (加法运算符)、- (减法运算符)* (乘法运算符)、/ (除法运算符) (模运算或取余运算符)为自增运算符- -为自减运算符。第57页,共126页。注意:/:结果的整数部分%:结果的余数部分-:除进行减法外,还可以进行取负操作。:自增。表示操作数加1。 等同于1。 表示先加1,再取值
20、 表示先取值,再加1。第58页,共126页。例3-8:自增和自减运算符的程序 ( ) x, y, z1, z2; 10; 21; z1=()+(); (“, z1n”, x, z1); z2=()+(); (“, z2n”, y, z2); 第59页,共126页。二、关系运算成立或不成立主要用于比较操作数的大小关系。包括: (小于)、 (大于)、= (大于等于)、= = (等于)、!= (不等于)看关系是否成立。结果:0或1第60页,共126页。例3-9 关系运算符运算的程序示例 ( ) a, b, c, d; 2.30; 7132; 70; 12=0; (“, , n”, a, b, c,
21、d);第61页,共126页。三、逻辑运算结果是真或假进行逻辑运算的操作符。包括: (逻辑与)、 (逻辑或)、!(逻辑非)看结果是否为真。结果:0或1。第62页,共126页。例3-10 逻辑运算的程序示例 ( ) a, b, c, d, e ; !0 ; 1522 ; 350 ; 17.30 ; 17.32.6 ;(“, , , n”, a, b, c, d, e);第63页,共126页。四、位运算将两个操作数按二进制数展开,然后对应位进行逻辑运算。包括:&(按位与)、|(按位或)、(按位异或)、(按位取反)、(位右移)位运算的操作对象只能是整型和字符型数据。这些位运算和汇编语言中的位操作指令十
22、分类似。位操作指令是单片机的重要特点,所以位运算在C51语言控制类程序设计中的应用比较普遍。第64页,共126页。例3-11 位运算程序示例将a值循环右移2位( ) 03; 2;n;第65页,共126页。例3-12 位运算程序示例 ( ) a, ; 23; 217; ; (“n”, c); ; (“n”, c); b ; (“an”, c); ; (“ n”, c); 3 ; (“a2 ; (“b2n”, c);第66页,共126页。五、赋值运算变量名=表达式;例如:(4)+(6);该表达式的值为10,变量a的值为10。第67页,共126页。复合赋值运算符:赋值符号前加上其他运算符构成复合运算
23、符。C51语言提供以下10种复合运算符:,*=,=,=,=,=,=,=例如:; 等价于()x*; 等价于(x*(); 等价于()a=4; 等价于(ay) ; ; 第72页,共126页。形式二: (表达式)语句1; 语句2;(xy) ; ;第73页,共126页。形式三:(表达式1)语句1; (表达式2)语句2; (表达式3)语句3; (表达式m)语句m; 语句n;第74页,共126页。第75页,共126页。如:(x1000) 1; (x500) 2; (x300) 3; (x100) 4; 5;第76页,共126页。例3-13 分支编程示例 ( ) ; (); (x0) 1; (0) 0; 1;
24、 (dn);第77页,共126页。例3-14: ( ) ; 200; 321; () ; (n);第78页,共126页。例3-15: ( ) ; 1221; () ; ; (n);第79页,共126页。例3-16: ( ) ; ; 45; (=90) A; (=80) B; (=70) C; (=60) D; E; (n);第80页,共126页。二、语句语句是多分支选择语句一般形式如下:(表达式) 常量表达式1:语句1; ; 常量表达式2:语句2; ;. 常量表达式n:语句n; ;:语句1;第81页,共126页。例3-17第82页,共126页。3.3.3 循环结构流程控制语句四种形式: 第83
25、页,共126页。一、基于和构成的循环 1、采用和可以构成“当型”循环: (表达式) 语句; ; 第84页,共126页。2、采用和也可以构成“直到型”循环程序 : 语句;(表达式) ; 3、语句为无条件转向语句 语句标号;第85页,共126页。二、 (表达式) 语句; 第86页,共126页。例: ( ) i, s; 100; 0; (i0) ; 1; (“1+2+100n”);第87页,共126页。注意:先判断,后执行;如果循环体内只有一个语句,可以不用 循环体 后无分号;第88页,共126页。三、 语句; (表达式);第89页,共126页。例: ( ) i, s; 1000; ; 1; (i0
26、); (“1+2+100n”);第90页,共126页。注意:先执行, 后判断;如果循环体内只有一个语句,可以不用 循环体 后无分号;(表达式)后的分号不能省;第91页,共126页。四、(表达式1;表达式2;表达式3)语句; (0;y=99;3)(33); ;第92页,共126页。例: ( ) i, s; 0; (0=100) ; (“1+2+100n”);第93页,共126页。注意:3个表达式都是可选项,可以任意省略,但“;”不能省。省1是不对循环变量赋初值;省2是不判断循环条件的真假;省3是不对循环变量操作。( ; ;)表示无限循环。第94页,共126页。无限循环的实现: (1)(; ;)
27、代码段;(2)(1) 代码段; (3) 代码段; (1);第95页,共126页。3.3.4 语句、语句、语句在循环语句执行过程中, 如果需要在满足循环判定条件的情况下跳出代码段,可以使用或语句; 如果要从任意地方跳转到代码的某个地方,可以使用语句。第96页,共126页。1、语句用于从循环代码中退出,然后执行循环语句之后的语句,不再进入循环 。形式: ;注意: 一个只能跳出一层循环第97页,共126页。例: ( ) i, s; 0; 0; (1) ; ; (i100) ; (“1+2+100n”);第98页,共126页。2、 语句用于退出当前循环,不再执行本轮循环,程序代码从下一轮循环开始执行,
28、直到判断条件不满足为止。与的区别是该语句不是退出整个循环。形式: ;第99页,共126页。例: ( ) =a, B,c,D,e,F; 1; (i=a i=z) ; (“n”, i, i ); 第100页,共126页。3、 是一个无条件转移语句。当执行语句时,将程序指针跳转到给出的下一条代码,基本格式如下: 标号;第101页,共126页。例: () ; ; 0;: ; ; (101) ; 第102页,共126页。3.4 C51的数组与指针 C51语言的构造数据类型主要有数组、指针和结构等。在单片机系统中,数组的应用比较广泛,指针则次之,结构用的相对较少。这里我们只讨论数组和指针。第103页,共1
29、26页。3.4.1 数组 数组是同类型变量的一个有序集合。 数组用一个名字来标识,称为数组名。 数组中的每个变量称为数组元素。第104页,共126页。 数组有一维、二维、三维和多维数组之分。C51语言中常用的一维、二维数组和字符数组。 数组中各元素的顺序用下标表示,下标为n的元素可以表示为数组名n。改变 中的下标就可以访问数组中所有的元素。第105页,共126页。1一维数组 类型说明符 数组名元素个数; 110;初始化: a5=1,2,3,4,5; b6=1,2,6; 第106页,共126页。例3-23:第107页,共126页。2二维数组或多维数组类型说明符 数组名行数列数; 234;2 数组
30、有3 行4 列共12 个实型元素 a34=1,2,3,4,5,6,7,8,9,10,11,12;全部初始化第108页,共126页。3字符数组若一个数组的元素是字符型的,则该数组就是一个字符数组。例如: a12= ;字符数组 36=,;字符串数组第109页,共126页。4查表 =32,34,36,37,39,41;/*数组,设置在中,长度为实际输入的数值数 */ ( ) ; ( ) x;(5)* 得到与5相应的华氏温度值 */第110页,共126页。共阴极的显示字符段码表 11=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f
31、;第111页,共126页。3.5 C51函数函数是指能够执行特定功能和任务的程序代码段。一个完整的C51程序是由一个主函数和若干个其他函数组成。主函数是( )函数。有且只有一个( )函数。第112页,共126页。使用函数时注意:函数数目不限制;( )函数是主函数,可以调用其他函数,而不允许被其他函数调用。除主函数外,其他函数之间允许互相调用。第113页,共126页。一、函数分类可以从不同的角度分类:(1)有无返回值角度(2)数据传送角度(3)函数定义角度第114页,共126页。(1)有无返回值角度无返回值函数、有返回值函数无返回值函数:执行完成后不向主调函数返回函数值。类型说明符为:有返回值函数:执行完成后向主调函数返回一个执行的结果返回值。第115页,共126页。(2)数据传送角度有参函数和无参函数。无参函数:主调函数和被调函数之间不进行参数的传递。有参函数:主调函数和被
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上海居民区工作制度
- 农民工欠薪工作制度
- 乡政府人大工作制度
- 体检办公室工作制度
- 人民接访员工作制度
- 加拿大工厂工作制度
- 劳动法综合工作制度
- 区域化妇建工作制度
- 医保局督促工作制度
- 医学生值班工作制度
- 公司财务工作制度范本
- 电力安全生产标准化达标评级管理办法
- APQC跨行业流程分类框架 (8.0 版)( 中文版-2026年4月)
- 道路运输领域汛期暑期安全工作方案
- 2026介护特定技能考试高频考题题库带答案解析
- 广东省深圳市2026年中考英语模拟试卷四套附答案
- 建筑工地 宿舍管理制度
- 2026年南阳工艺美术职业学院单招职业倾向性测试题库附答案详解(黄金题型)
- 教育部《中小学德育工作指南》-德育工作指南
- 小学生自我保护知识课件
- 护理规范修订制度
评论
0/150
提交评论