单片机c语言中指针的应用

单片机c语言中指针的应用

ID:5321060

大小:170.49 KB

页数:4页

时间:2017-12-08

单片机c语言中指针的应用_第1页
单片机c语言中指针的应用_第2页
单片机c语言中指针的应用_第3页
单片机c语言中指针的应用_第4页
资源描述:

《单片机c语言中指针的应用》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、万方数据Mjcmcompu蛔-Applica“帅sv01.19,No.9,2∞3学习园地t型电脑应用2003年第19卷第lO期单片机C语言中指针的应用曹聪岳继光摘要本文主要结合51单片机系统的硬件资源特点,从指针结构声明,对于不同存储区(片内、片外数据存储区和程序存储区)的指针寻址的实现等方面阐述了单片机C语言指针的应用。关t词单片机C语言指针c是一种编译型语言.有高级语言的特点,并具备正编语言的功能,移植性能好,便于自顶向下结构化程序设计,c语言在单片机中的应用,给开发者带来了很大的方便.软件开发者不需要对单片机硬件的结构有很深人的了解,编译器可以自动完成变量存储单元的分配.使

2、得单片机的程序设计更加简单可靠。指针、地址、数组及其相互关系是c语言中最有特色的部分。在编写单片机的应用程序时,常常需要对端口及存储单元进行寻址.因此.掌握指针在这些寻址过程的工作原理是很有必要的,这有利于编写灵活高效的程序。一、指针的声明与结构要灵活使用单片机c语言的指针,对其声明和结构有比较清晰的了解是必要的。1.单片机存储结构及其C语言存储类型在进行单片机指针声明之前,首先应该先了解单片机的存储类型与存储区关系.物理上存储区可以分为四个部分:片内数据存储区、片外数据存储区、片内程序存储区和片外程序存储区。程序在运行时,内外部程序存储区是透明的,所以在逻辑上可以分为片内数据存

3、储区、片外数据存储区和程序存储区。单片机由于型号不同,其片内RAM的大小是不一样的,如805l有128Byte片内RAM.8052有256Byte。单片机c语言存储类型的存储区关系说明如下:data:可寻址片内RAM.地址空间OoH一7FHbdatal可位寻址的片内RAM,20H一2FH的128b“位地址。Idata:可寻址片内RAM,允许访问全部内部RAM,要使用单片机1128Byte以后存储空间时必须使用该存储类型。Pdata:分页寻址片外RAM.祀编中采用M()Vx@R()(256BYTE/页)Xdata:可寻址片外RAM(64K地址范围)code:程序存储区(6^K地址范

4、围),汇编中采用MoVE@DPTR墓继凳离葬妻掌害季薯勰壬薯荤藩圭霉勰器·57·2.指针的声明C语言中,对于指针的声明采用如下形式:类型标识符*指针变量名由于单片机存储区的关系,所以单片机c语言的指针声明格式有别于普通c语言,其格式为:类型标识符[存储区类型][指针变量存储区类型]①②’③指针变量名④单片机c语言的指针定义比普通c语言的指针定义多个两个部分:存储区类型是指指针变量所指向的数据的存储区,可以是以上所有的数据存储类型}指针变量存储区类型是指指针变量的存放区域,可以是data、ldata、xdata或pdata。如:unslgnedcharxdata*datay。——丽

5、_—画一酉面是指在片内RAM区(③data)分配一个指针变量yc(④).这个指针指向·个无符号字符(①unsignedchar),该无符号字符存放于xdata区(◎xdata)。应用时格式如下:unslgnedcharxdatalndataL6];(1)unslRnedcharxdata*datayc;yc—InDatal其编译后的汇编为:MOv08H.骨00H;Ox08和ox09是在片内R^M区分配的yc指针变量地址空间MoV09H.#00H:3.指针声明的注意事项声明格式中存储区类型和指针变量存储区类型可以省略,如果省略,不同的编译器的默认值是不一样的。建议最好不要省略.在声

6、明中写明存储区类型能够大大提高程序的教率,也便于阅读。同时在片内RAM资源不是很紧张时最好将指针本身存放于data区,这样有利于提高程序的效率,以下这段c程序及其}仁编后的拒编程序说明了这个问题。Unsignedchar’xdatay。}Yc—IdDatal编译后的{亡编代码如下:MOvDPTR.肆0006H;vc指针变量地址空间0006H0008HMoVA,#02HMoVx@DPTR,AMoVA,#00H万方数据MicrocomputerAppli忱“onsvoI.19,No.9,2003学习园地囊型电脑矗盾2∞3年第19器第10期INCI)PrRM()vx@DPTR,AINC

7、DPTRMOVA,#00HMovx@DPTR,A与(1)中的程序相比,可知,这样的定义浪费了程序空间,也降低了效率(以上采用Ke·c编译器,不厨的5l编译器产生的拒编代码不全相同)。另外,一般说来基于5I系列的系统架掏单片机的内部RAM资源都很紧张,最好在定义函数内部或程序段内部的局部变量使用片内RAM,而尽量不要把全局变量声明为片内RAM区中。二、指针寻址的实现单片机c语言的数组寻址和普通c语言的基本上实现是~样的,只是当数组存储在片内对,由于片内RAM资源十分有限,所以很难有

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。