自-C51的结构体数据在单片机编程中的应用_第1页
自-C51的结构体数据在单片机编程中的应用_第2页
自-C51的结构体数据在单片机编程中的应用_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、随着单片机应用领域的逐渐扩展和显示、通信技术的不断进步,单片机开发所要求的人机界面越来越丰富,以单片机为核心应用的产品已由纯实用向功能化、可视化、网络化发 展。HMI (人机界面)技术及产品在近两年成为发展最快的领域。为了实现以更多的人 机交互信息、更清晰的仪表硬件描述为特征的HMI功能,相应地,单片机编程中的参数量及参数类型不断增加,仅有基本类型变量(如位、字节、整型、浮点型、指针型)和数组变量已不能完全有效地表达参数的特性。使用C5 1编译支持的一种结构体(s t ruct)数据类型,可有效地解决许多编程中所面临的种种数据结构管理问题。1结构体数据除了基本类型数据,数组是C5 1编程中一种

2、常用的构造类型数据。它由上述基本类型数据(位、指针除外)组成,并且一个数组的各元素应属于同一个类型。但是,只有这些数据类型并不能很好地表达我们所要引用的数据,有时需要将不同类型的数据组合成一个有 机的整体,以便于引用。例如,要保存一组采样值:时间(月、日时、分)、温度、流量等,如果分别将它们定义为互相独立的简单变量,难以反映它们的内在联系。应当把它们 组织成一个组合项,在一个组合项中包含若干个类型不同(也可以相同)的数据项。这样的数据结构称为结构体(st r uc t ur e)。定义一个结构体类型的一般形式为:? struc t结构体名成员表列; ?例如上面提到的一组数据,可以表示为:str

3、 u c t sam p l e / * 结构体名*/char m on t h; / *月 * /ch ar day ;/ * 日 */ ?c h ar h our ; /* 时 */cha r minute; / * 分 */ ? int t em prat u re; /* 温度 */ ? floa t flow ; /*流量等*/?s a mp 1 e1, Sa mpl e 2 ; ?它定义了一个反映某一时刻采得的温度值、流量值等的结构体sam pie,同时定义了两个具有 s t ruct s ample类型的变量(或参数)。2结构体数据的优点(1 )有效利用内存空间? 在C5 1编译

4、时,结构成员在内存中是顺序存放的,因而不同类型的数据被有机地结合成了一个数据块,使单片机有限的内存资源空间得以充分利用。?(2 )参数组织结构紧密、清晰结构体数据在多参数的智能化仪表设计中尤为适用,它可将同一属性、不同类型的数据组织在一起,参数便于识别、调用。如编制某些通用型仪表 的程序,可定义下列结构体数据。?例1 :放大环节描述? struct am pl if ier? int gain ; ? ch a r of fs et; in put_amp,o ut p ut_ a mp; ?以上定义了一个表示放大环节(a mpli fi er)的结构体类 型。它由放大环节增益(gain )和

5、放大环节零点(o f fset)组成,并且定义了输入环节(i nput_a mp )和输出环节(ou tpu t_ a mp)两个结构体数据。?例2 :仪表特征描述 描述仪表特征的数据可以组合成一个有机的结构体,以便于识别与调用。?struct m e t er? int meter no; / *仪表编号 * /char meter_code10; /* 仪表编码* /i n t meter_ s ize; /* 仪表口径 * /float m ete r _factor ; /*仪表系数* /? ch ar me t er_ze r o; / *仪表零点 */me terl ;(3)参数调

6、用方便?结构体数据的调用方式有多种,最直接的方式为:结构体变量名成员名如例2中,可以对变量赋值:met e rl.met e r_fac t or= l .0;这里着重介绍一种通过指针调用的方式。该方式在对结构体数据作顺序存取时尤为方便。在数据存储区有以下结构:? stru c t p a ra ? int prO ;ch a r pr1 ;fl o at pr2 ;? par a me te r; ?在程序存储区与之相对应存放一组成员名数据表paramete r_name m n。该表包含表 1所列内容。参数类型地址偏移量参数名备注i0"XXXXXX"成员0c2"

7、;XXXXXX"成员lf3"XX XXXX"成员2成员n在引用时,先设计两个指针变量,分别指向数据存储区和程序存储区:?p 指向数据存储区;p c c指向程序存储区;? p =&pa ra meter. p r0;定位指针指向参数值首地址;?p cc=&pa r ameter name; 定位指针指向参数名首地址。需要调用第i个参数时:? p + *( p cc +n*i +l )指向第m 个参数;?(pcc + n*i)中存 放的是该参数的数据类型。?这样,就可以根据数据类型的不同分支,对不同类型的数据进行相应的处理。?( 4 )提高编程效率数据变量的有效组织使得程序的编制更便于结构化、模块化,从而方便了程序后续的扩展,可以极大地加快单片机开发者的开发进度。3总结? 由于单片机内存资源的限制, 如何合理、有

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论