(6)--4.4 指针单片机原理与接口技术.ppt

上传人:奉*** 文档编号:96428796 上传时间:2023-11-27 格式:PPT 页数:26 大小:231.16KB
返回 下载 相关 举报
(6)--4.4 指针单片机原理与接口技术.ppt_第1页
第1页 / 共26页
(6)--4.4 指针单片机原理与接口技术.ppt_第2页
第2页 / 共26页
点击查看更多>>
资源描述

《(6)--4.4 指针单片机原理与接口技术.ppt》由会员分享,可在线阅读,更多相关《(6)--4.4 指针单片机原理与接口技术.ppt(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第 4 章 单片机的C语言编程模型14.1 C语言基础4.2 程序语言结构4.3 数组4.4 指针4.5 函数本章主要内容24.6 复杂数据结构4.7 预编译指令3C语言的一大特色就是提供了指针的功能,这就增加了C语言对单片机片内数据区和扩展数据区的管理。n实质上,指针的目的就是为了增加对单片机内存储空间的管理能力。n前面我们所定义的变量等,只能按照编译器给分配的空间地址进行存放,软件设计者没有任何能力对所分配空间的位置进行干预。指针4指针的作用就是指向程序设计者所需要存放数据的具体的存储空间位置,然后对该存储空间位置进行取数和存数的操作。n更通俗的讲,就是指向一个具体的存储空间位置,然后对这

2、个位置进行存取操作。n在前面介绍了汇编语言指令时,提到存储器直接寻址和存储器的间接寻址模式。pC语言的指针就和这两种寻址模式有密切的关系。换句话说,C语言中的指针实际上就是对存储器直接寻址和间接寻址模式的抽象。指针的基本概念5指针的声明格式:数据类型 *指针名字n前面提到过:&变量/数组名字p表示获取变量所在单片机存储空间的地址,或者是数组所在单片机存储空间的起始地址。指针的基本概念6n例如如下声明:int*p1;int a;当进行下面操作:p1=&a;p表示p1的值为变量a所在单片机存储空间的具体地址信息。该地址的内容就是变量a的值,用形式化的方式可以这样表示:(p1)=a;p*p1实际上就

3、是获取指向地址的内容。所以,*p1的值就是变量a的值。指针的基本概念7【例6-36】指针基本概念的例子#include stdio.h#include reg51.hvoid main()int a=100;/定义整型变量 int b4=1,2,3,4;/定义整型数组 char c10=“STC”;/定义字符型的数组 int*p1,*p2;/定义指向整型数的指针 char*p3;/定义指向字符型的指针 SCON=0 x52;TMOD=0 x20;TCON=0 x69;TH1=0 xF3;指针的基本概念8p1=&a;/p1为变量a所在存储空间的地址p2=&b;/p2为数组b所在存储空间的首地址p

4、3=&c;/p3为数组c所在存储空间的首地址printf(“%dn”,*p1);/打印p1单元内存储空间的内容printf(“%dn”,*p2);/打印p2单元内存储空间的内容printf(“%dn”,*(+p2);/打印(p2+1)单元内存储空间的内容printf(“%dn”,*(+p2);/打印(p2+2)单元内存储空间的内容printf(“%dn”,*(+p2);/打印(p2+3)单元内存储空间的内容printf(“%c”,*p3);/打印p3单元内存储空间的内容printf(“%c”,*(+p3);/打印(p3+1)单元内存储空间的内容printf(“%cn”,*(+p3);/打印(p

5、3+2)单元内存储空间的内容while(1);指针的基本概念9注注:读读者者可可以以进进入入到到本本书书所所提提供供资资料料的的STC_example例例子子6-36目目录录下下,在在Keil Vision5集集成成开开发发环环境境下下打打开开该该设设计计,并并进进入入调调试试器器模模式式,按按F5运运行行程程序序。在在UART#1窗窗口口界界面面中中,给给出出输输出信息的格式。出信息的格式。指针的基本概念10下面对该程序进行详细的分析:n按前面的方法,打开Watch 1窗口界面在该界面中,分别输入a,b和c,出现变量a的值,数组b的数据元素的值以及数组b的首地址,数组c的数据元素的值以及数组

6、c的首地址。指针的基本概念11n重新单步运行程序,程序执行完16行代码,在Watch 1窗口界面内输入p1,p2和p3的值,可以看到给出的信息。n从图中可以看出,P1的内容为I:0 x22,为地址信息,即指向单片机片内数据区位置为0 x22的地址,该地址内容为0 x0064,与变量a的内容相同。这是因为在程序代码中,设置将P1设置为变量a所在的地址。指针的基本概念12n类似的,P2的内容为I:0 x24,为地址信息,即指向单片机片内数据区位置为0 x24的地址,该地址内容为0 x0001。在程序代码中,设置将P2设置为指向数组b的首地址,并且数组b的第一个数据元素的值为1。形式化表示为:(p2

7、)=1=b0=*p2p也可以这样说,p2的内容就通过指针*p2表示。指针的基本概念13nP3的内容为I:0 x2c,为地址信息,即指向单片机片内数据区位置为0 x2c的地址,该地址内容为0 x53。在程序代码中,设置将P2设置为指向数组c的首地址,并且数组c的第一个数据元素的值为字符S(该字符的ASCII值为0 x53)。形式化表示为:(p3)=0 x53=c0=*p3p也可以这样说,p3的内容就通过指针*p3表示。指针的基本概念14n继续单步执行完第18行代码,相继打印出*p1和*p2的值,为100和1。这个结果和前面分析的一致。n单步执行完第19行代码,即:printf(%d,*(+p2)

8、;p该代码让p2在首地址基础上递增,由于p2指向的是int类型,所以实际地址在首地址基础上增加2。此时,p2的内容为I:0 x26,指向单片机片内数据区位置为0 x26的地址,该地址的内容为0 x0002。形式化表示为:(p2)=0 x0002=b1=*p2指针的基本概念15n单步执行完第20行代码,即:printf(%d,*(+p2);p该段代码让p2在前一个p2的基础上递增,由于p2指向的是int类型,所以实际地址在前一个地址基础上增加2。此时,p2的内容为I:0 x28,为地址信息,即指向单片机片内数据区位置为0 x28的地址,该地址的内容为0 x0003。形式化表示为:(p2)=0 x

9、0003=b2=*p2指针的基本概念16n单步执行完第21行代码,即:printf(%d,*(+p2);p该段代码让p2在前一个p2的基础上递增,由于p2指向的是int类型,所以实际地址在前一个地址基础上增加2。此时,p2的内容为I:0 x2A,为地址信息,即指向单片机片内数据区位置为0 x2A的地址,该地址的内容为0 x0004。形式化表示为:(p2)=0 x0004=b3=*p2指针的基本概念17n单步执行完第21行代码,打印出*p3的值,为字符S。n单步执行完第22行代码,即:printf(%c,*(+p3);p该段代码让p3在前一个p3基础上递增,由于p3指向的是char类型,所以实际

10、地址在前一个地址基础上增加1。此时,p3的内容为I:0 x2D,为地址信息,即指向单片机片内数据区位置为0 x2D的地址,该地址的内容为字符T(其ASCII码为0 x54)。形式化表示为:(p3)=0 x54=c1=*p3指针的基本概念18n单步执行完第23行代码,即:printf(%c,*(+p3);p该段代码让p3在前一个p3基础上递增,由于p3指向的是char类型,所以实际地址在前一个地址基础上增加1。此时,p3的内容为I:0 x2E,为地址信息,即指向单片机片内数据区位置为0 x2E的地址,该地址的内容为字符C(其ASCII码为0 x43)。形式化表示为:(p3)=0 x43=c2=*p3指针的基本概念

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁