(10)--2章 单片机的C语言编程数据类型与存储类型(2).ppt
《(10)--2章 单片机的C语言编程数据类型与存储类型(2).ppt》由会员分享,可在线阅读,更多相关《(10)--2章 单片机的C语言编程数据类型与存储类型(2).ppt(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第4 4章 单片机C C5151语言编程(2)指针变量的定义SFR、可寻址位的C51定义C51的运算符(1)(1)指针变量指针变量指针变量指针变量 指针指针指针指针就是存储单元地址就是存储单元地址就是存储单元地址就是存储单元地址,存储这个地址的变量称为,存储这个地址的变量称为,存储这个地址的变量称为,存储这个地址的变量称为指针变量指针变量指针变量指针变量。以后所说指针均为指针变量。以后所说指针均为指针变量。以后所说指针均为指针变量。以后所说指针均为指针变量。四、指针变量的定义四、指针变量的定义(2)(2)指针型变量的类型指针型变量的类型指针型变量的类型指针型变量的类型 由于由于由于由于C51C
2、51是面向是面向是面向是面向5151单片机硬件的,单片机硬件的,单片机硬件的,单片机硬件的,5151单片机的不同单片机的不同单片机的不同单片机的不同存储空间,有不同的地址范围。存储空间,有不同的地址范围。存储空间,有不同的地址范围。存储空间,有不同的地址范围。在指针类型的定义中要说明在指针类型的定义中要说明在指针类型的定义中要说明在指针类型的定义中要说明被指变量的数据类型和被指变量的数据类型和被指变量的数据类型和被指变量的数据类型和存储类型存储类型存储类型存储类型。同时应指明。同时应指明。同时应指明。同时应指明指针变量本身的存储区指针变量本身的存储区指针变量本身的存储区指针变量本身的存储区。因
3、为指。因为指。因为指。因为指针变量本身也是一个变量,也需要存储空间,因此需要针变量本身也是一个变量,也需要存储空间,因此需要针变量本身也是一个变量,也需要存储空间,因此需要针变量本身也是一个变量,也需要存储空间,因此需要指明其存储类型。指明其存储类型。指明其存储类型。指明其存储类型。(2)(2)指针型变量的类型指针型变量的类型指针型变量的类型指针型变量的类型 注意:注意:指针变量的数据长度由被指变量的指针变量的数据长度由被指变量的指针变量的数据长度由被指变量的指针变量的数据长度由被指变量的存储类型存储类型存储类型存储类型决定,决定,决定,决定,可认可认可认可认为被指变量的存储类型就是对指针变量
4、长度的声明为被指变量的存储类型就是对指针变量长度的声明为被指变量的存储类型就是对指针变量长度的声明为被指变量的存储类型就是对指针变量长度的声明。如:被。如:被。如:被。如:被指变量存储类型为指变量存储类型为指变量存储类型为指变量存储类型为datadata,则其存于内部,则其存于内部,则其存于内部,则其存于内部RAMRAM,指向它的指针,指向它的指针,指向它的指针,指向它的指针变量长度为变量长度为变量长度为变量长度为1 1个字节。若指变量存储类型为个字节。若指变量存储类型为个字节。若指变量存储类型为个字节。若指变量存储类型为xdataxdata,则其存于,则其存于,则其存于,则其存于外部外部外部
5、外部RAMRAM,对应指针变量的长度为,对应指针变量的长度为,对应指针变量的长度为,对应指针变量的长度为2 2个字节。个字节。个字节。个字节。指针变量指针变量存储类型存储类型被指变量被指变量存储类型存储类型被指数据类型被指数据类型*指针变量名;指针变量名;指针变量定义格式如下(指针变量定义格式如下(指针变量定义格式如下(指针变量定义格式如下(1 1):):):):如缺如缺如缺如缺 指针变量存储类型指针变量存储类型指针变量存储类型指针变量存储类型 项、则指针变量则存放在默认项、则指针变量则存放在默认项、则指针变量则存放在默认项、则指针变量则存放在默认存储区存储区存储区存储区(由编译模式决定由编译
6、模式决定由编译模式决定由编译模式决定)或者在或者在或者在或者在datadata区。区。区。区。若定义指针变量时没有指明若定义指针变量时没有指明若定义指针变量时没有指明若定义指针变量时没有指明被指变量的存储类型被指变量的存储类型被指变量的存储类型被指变量的存储类型,则指针变量为通用型,即其可指向任何存储空间。通用则指针变量为通用型,即其可指向任何存储空间。通用则指针变量为通用型,即其可指向任何存储空间。通用则指针变量为通用型,即其可指向任何存储空间。通用型指针的数据长度为型指针的数据长度为型指针的数据长度为型指针的数据长度为3 3字节。字节。字节。字节。指针变量指针变量存储类型存储类型被指变量被
7、指变量存储类型存储类型被指数据类型被指数据类型*指针变量名;指针变量名;指针变量的定义另外一种格式(指针变量的定义另外一种格式(指针变量的定义另外一种格式(指针变量的定义另外一种格式(2 2)指针变量长度与被指变量存储类型的关系总结如下:指针变量长度与被指变量存储类型的关系总结如下:指针变量长度与被指变量存储类型的关系总结如下:指针变量长度与被指变量存储类型的关系总结如下:被指变量存储类型被指变量存储类型被指变量存储类型被指变量存储类型指针长度指针长度指针长度指针长度(byte)(byte)datadata,bdatabdataidataidata,pdatapdata1 1codecode,
8、xdataxdata2 2通用型通用型通用型通用型3 3 long code *long code *xdataxdata pxpx;/*/*指针变量指针变量指针变量指针变量pxpx指向指向指向指向ROMROM区的整长型数据;其自身存于外部区的整长型数据;其自身存于外部区的整长型数据;其自身存于外部区的整长型数据;其自身存于外部RAMRAM;指针长度;指针长度;指针长度;指针长度2 2字节字节字节字节*/char char xdataxdata*data *data pdpd;/*/*指针变量指针变量指针变量指针变量pdpd指向指向指向指向xdataxdata区的字符型数据;自身在区的字符型数
9、据;自身在区的字符型数据;自身在区的字符型数据;自身在datadata区;区;区;区;长度长度长度长度2 2字节字节字节字节*/long long xdataxdata*pxpx;/*/*指针变量指针变量指针变量指针变量pxpx指向指向指向指向xdataxdata区区区区longlong型数据;指针自身在默认存储型数据;指针自身在默认存储型数据;指针自身在默认存储型数据;指针自身在默认存储器器器器(如不指定编译模式在如不指定编译模式在如不指定编译模式在如不指定编译模式在datadata区区区区);指针长度;指针长度;指针长度;指针长度 为为为为2 2个字节个字节个字节个字节*/data cha
10、r *data char *pdpd;/*/*pdpd为通用型指针;存于为通用型指针;存于为通用型指针;存于为通用型指针;存于datadata区;指针长度区;指针长度区;指针长度区;指针长度3 3字节字节字节字节*/指针变量说明举例:指针变量说明举例:指针变量说明举例:指针变量说明举例:(3)指向数组的指针变量指向数组的指针变量n n如果用一个变量存放一个数组的地址,这个变量就如果用一个变量存放一个数组的地址,这个变量就如果用一个变量存放一个数组的地址,这个变量就如果用一个变量存放一个数组的地址,这个变量就称为指向数组的指针变量称为指向数组的指针变量称为指向数组的指针变量称为指向数组的指针变量
11、.n n数组的起始地址称为数组指针,一个数组数组的起始地址称为数组指针,一个数组数组的起始地址称为数组指针,一个数组数组的起始地址称为数组指针,一个数组a a 的起的起的起的起始地址用始地址用始地址用始地址用a a表示。表示。表示。表示。n n指向数组的指针变量的定义和赋值指向数组的指针变量的定义和赋值指向数组的指针变量的定义和赋值指向数组的指针变量的定义和赋值 设定义了一个数组设定义了一个数组设定义了一个数组设定义了一个数组a5a5和一个指针变量和一个指针变量和一个指针变量和一个指针变量apap:char data a5;char data a5;char data*char data*ap
12、ap;(3)指向数组的指针变量指向数组的指针变量 令指针变量令指针变量令指针变量令指针变量apap是指向数组是指向数组是指向数组是指向数组a5a5,只需数组起始地址,只需数组起始地址,只需数组起始地址,只需数组起始地址赋给该变量即可。赋给该变量即可。赋给该变量即可。赋给该变量即可。apap=a;=a;/*/*数组数组数组数组aa的起始地址赋给指针变量的起始地址赋给指针变量的起始地址赋给指针变量的起始地址赋给指针变量apap*/*/apap=&a0;=&a0;/*/*意义同上意义同上意义同上意义同上*/char data*char data*apapa a;或:或:或:或:char data*c
13、har data*apap=&a0;=&a0;利用指向数组的指针变量引用数组元素有两种方法:利用指向数组的指针变量引用数组元素有两种方法:指针法指针法:*(api)或或*(a+i)下标法下标法:api 或或 ai main()main()char a5=11,22,33,44,55;char a5=11,22,33,44,55;char b,c,d,e;char b,c,d,e;char *char *apap;apap=a;=a;/*/*apap等于数组等于数组等于数组等于数组a5a5的起始地址的起始地址的起始地址的起始地址*/b=a+2;b=a+2;/*b/*b等于数组元素等于数组元素等于
14、数组元素等于数组元素a2a2的地址的地址的地址的地址*/c=ap+3;c=ap+3;/*c/*c等于数组元素等于数组元素等于数组元素等于数组元素a3a3的地址的地址的地址的地址*/d=*(ap+3);d=*(ap+3);/*d/*d等于数组元素等于数组元素等于数组元素等于数组元素a3a3的值,的值,的值,的值,即即即即d=44 d=44,等同于,等同于,等同于,等同于d=a 3*/d=a 3*/e=*(a+4);e=*(a+4);/*e/*e等于数组元素等于数组元素等于数组元素等于数组元素a4a4的值,即的值,即的值,即的值,即55*/55*/。注:数组名注:数组名注:数组名注:数组名a a就
15、是一个指针,就是一个指针,就是一个指针,就是一个指针,aai i 等价于等价于等价于等价于*(a+ia+i),同样,同样,同样,同样 apap i i 等价于等价于等价于等价于*(ap+iap+i)。五、五、SFR、可寻址位的、可寻址位的C51定义定义1.1.特殊功能寄存器特殊功能寄存器特殊功能寄存器特殊功能寄存器SFRSFR定义定义定义定义 C51C51中通过关键字中通过关键字中通过关键字中通过关键字“sfrsfr”(定义定义定义定义8 8位寄存器位寄存器位寄存器位寄存器)或或或或“sfr16sfr16”(定义定义定义定义1616位寄存器位寄存器位寄存器位寄存器)给某个给某个给某个给某个SF
16、RSFR对应地址对应地址对应地址对应地址定义定义定义定义一个名字,便可通过定义的名字对该一个名字,便可通过定义的名字对该一个名字,便可通过定义的名字对该一个名字,便可通过定义的名字对该SFRSFR直接进行操作。直接进行操作。直接进行操作。直接进行操作。五、五、SFR、可寻址位的、可寻址位的C51定义定义 sfr ACC=0 xe0 sfr ACC=0 xe0;/*/*定义累加器定义累加器定义累加器定义累加器A(AccA(Acc的地址为的地址为的地址为的地址为E0H)*/E0H)*/sfr P1=0 x90 sfr P1=0 x90;/*/*定义并行口定义并行口定义并行口定义并行口P1(P1(寄
17、存器寄存器寄存器寄存器P1P1地址为地址为地址为地址为90H)*/90H)*/8 8位位位位SFRSFR的定义格式:的定义格式:的定义格式:的定义格式:sfr sfr 寄存器名寄存器名寄存器名寄存器名=寄存器地址寄存器地址寄存器地址寄存器地址五、五、SFR、可寻址位的、可寻址位的C51定义定义 sfr16 DPTR=0 x82 sfr16 DPTR=0 x82;注:定义地址须介于注:定义地址须介于注:定义地址须介于注:定义地址须介于80H80HFFHFFH之间,否则报错;之间,否则报错;之间,否则报错;之间,否则报错;应将应将应将应将1616位位位位SFRSFR的低字节地址作为的低字节地址作为
18、的低字节地址作为的低字节地址作为sfr16sfr16定义地址。定义地址。定义地址。定义地址。1616位位位位SFRSFR定义:定义:定义:定义:sfr16 sfr16 寄存器名寄存器名寄存器名寄存器名=寄存器地址寄存器地址寄存器地址寄存器地址 C51 C51建有头文件建有头文件建有头文件建有头文件 reg51.hreg51.h、reg52.h reg52.h,在该头文,在该头文,在该头文,在该头文件中对件中对件中对件中对5151或或或或5252系列单片机所有的特殊功能寄存器的进系列单片机所有的特殊功能寄存器的进系列单片机所有的特殊功能寄存器的进系列单片机所有的特殊功能寄存器的进行了行了行了行了
19、sfrsfr定义,对特殊功能寄存器的有位名称的可寻址位定义,对特殊功能寄存器的有位名称的可寻址位定义,对特殊功能寄存器的有位名称的可寻址位定义,对特殊功能寄存器的有位名称的可寻址位进行了进行了进行了进行了sbitsbit定义。定义。定义。定义。#include#include (1 1)引用时特殊功能寄存器或者位名称必须大写)引用时特殊功能寄存器或者位名称必须大写)引用时特殊功能寄存器或者位名称必须大写)引用时特殊功能寄存器或者位名称必须大写。(2 2)对)对)对)对1616位特殊功能寄存器,位特殊功能寄存器,位特殊功能寄存器,位特殊功能寄存器,reg5x.hreg5x.h中没有给中没有给中没
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 10-2章 单片机的C语言编程数据类型与存储类型2 10 单片机 语言 编程 数据类型 存储 类型
限制150内