失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > stc单片机c语言 pdf STC单片机C语言程序设计 第13章 STC单片机C语言指针.pdf

stc单片机c语言 pdf STC单片机C语言程序设计 第13章 STC单片机C语言指针.pdf

时间:2019-03-31 08:41:31

相关推荐

stc单片机c语言 pdf STC单片机C语言程序设计 第13章 STC单片机C语言指针.pdf

STC单片机C语言指针

主讲:何宾

Email :hebin@mail.

.03

C51编译器中指针的分类

Cx51编译器支持使用字符“*”声明变量指针。C51编译器可

以执行在标准C中所提供的所有操作。但是,由于8051独一无二的

结构以及特点,C51编译器提供两种不同类型的指针,即:通用指

针和指定存储器的指针。

通用指针

--未指定存储区域的通用指针

C语言通用指针的声明格式:

数据类型 *指针名字

【例13-1】通用指针声明的例子

char *s; //指向字符的指针

int *number; //指向基本整型数的指针

long *state; //指向长整型数的指针

对于通用指针来说,使用三个字节保存。即第一个字节表示存储器

的类型;第二个字节表示偏移地址的高8位;第三个字节表示偏移

地址的低8位。对于通用指针来说,它可以访问保存在8051存储器

系统的任何位置的变量。

通用指针

--未指定存储区域的通用指针

前面提到过:

&变量/数组名字

它表示获取变量所在单片机存储空间的地址,或者是数组所在单片

机存储空间的起始地址。

例如:如下声明:

int *p1 ;

int a ;

当进行下面操作:

p1=&a;

通用指针

--未指定存储区域的通用指针

表示p1的值为变量a所在单片机存储空间的具体地址信息。该

地址的内容就是变量a的值,用形式化的方式可以这样表示:

(p1)=a;

因此,*p1实际上就是获取指向地址的内容。所以,*p1的值就是变

量a的值。

注 :在单片机中并不存在指针这样一个功能部件,正如上面所提到的,这只是C

语言对存储器直接寻址模式的抽象而已。

*和指针名字之间不能有空格。

通用指针

--未指定存储区域的通用指针

【例13-2】查看通用指针的例子

代码清单13-1(1) main.c文件

int main()

{

int a=50,*p1;

float b=45.13,*p2;

char c=40,*p3;

p1=&a;

p2=&b;

p3=&c;

return 0;

}

通用指针

--未指定存储区域的通用指针

下面对该程序进行分析,步骤包括:

读者可以进入到本书所提供资料的stc_program_example\例子

13-2目录下,在Keil

μVision5集成开发环境下打开该设计。

进入调试器模式,查看Disassembly窗口内的反汇编代码,代码

中加入了注释,帮助读者进行分析。

代码清单13-1(2) Disassembly窗口内的反汇编代码清单

2: {

通用指针

--未指定存储区域的通用指针

3: int a=50,*p1;

//将立即数50(0x32)保存到8051片内数据区地址为0x08和0x09的单元

C:0x0003 750800 MOV 0x08,#0x00

C:0x0006 750932 MOV 0x09,#0x32

4: float b=45.13,*p2;

//将浮点数保存到8051片内数据区地址为0x0D、0x0E、0x0F和0x10的单元

C:0x0009 75101F MOV 0x10,#0x1

如果觉得《stc单片机c语言 pdf STC单片机C语言程序设计 第13章 STC单片机C语言指针.pdf》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。