单片机应用项目式教程——基于Keil和Proteus 教学课件 作者 张志良 第2章 C51编程基础.pptVIP

单片机应用项目式教程——基于Keil和Proteus 教学课件 作者 张志良 第2章 C51编程基础.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机应用 项目式教程 第2章 C51编程基础 项目4 键控信号灯 ⑸ 数组作为函数的形式参数 函数的形式参数除了基本类型和指针变量外,还可以用数组。 通常形参数组不指定大小,仅在数组名后跟一个空方括号; 另设一个形参作为数组元素个数,这样可适用于不同大小的数组。 用数组作函数的参数时,并不是把数组值传递给形参, 而是将实参数组起始地址传递给形参数组, 这样就使两个数组占用同一段存储单元。 一旦形参数组某元素值发生变化,将会导致实参数组相应元素值随之变化。 这种传递不同于数值传递,称为地址传递。 地址传递的结果具有双向性, 若在被调用函数中该地址存储单元中的内容发生了变化, 在调用结束后这些变化将被保留下来,即其结果会被返回到主调用函数。 因此,用数组作为函数的形式参数,可以得到多于一个的函数返回值。 ⒉ 指针 ⑴ 指针和指针变量 指针就是地址;变量的指针就是变量的地址; 存放指针(地址)的变量称为指针变量,而且指针变量也只允许存放地址。 ⑵ 指针变量定义方式 [指针存储器类型] 数据类型 [数据存储器类型] *指针变量名 数据类型与指针运算有关, 例如指针变量ap+1,并不是简单的加1, 而是根据数据类型的字节长度增加一个长度单位, 指向下一个同类型的数据。 因此,char型增加1个字节,int型增加2个字节,long型和flort型增加4个字节。 指针变量名须符合C51标识符要求,可任取。 为防止与普通变量误读误用,笔者建议, 指针变量名末尾加字母p,以示区别(仅是建议,不是C51规则)。 例如:ap、bp、a_p、b_p等。 ⑶ 取地址运算符和指针运算符 :取地址运算符 *:指针运算符(或称为间接访问运算符、取指针内容运算符) ① *ap与a是等价的,即*ap就是a。 ② 由于*ap与a等价,因此,*ap与a也是等价的。 ③ 由于ap=a,因此,*ap与*a等价,*a与a等价。 若指针变量ap指向变量a。则有如下结论: ⑷ 数组的指针变量 在C51中,指针和指针变量常用于数组,数组的指针就是数组的起始地址。 数组指针引用数组元素 ① a+i与ap+i等价。 数组名a同时代表数组的首地址,指针变量ap指向数组的首地址。 因此,a+i和ap+i均为数组元素a[i]的地址a[i], 或者说它们均指向数组a[ ]的第i个元素。注意,不能将a+i看成数组元素加i。 ② *(a+i)、*(ap+i)与a[i]等价。 既然(a+i)、(ap+i)均指向数组a[ ]的第i个元素, 则加上指针运算符“*”后,就表示(a+i)或(ap+i)所指向的数组元素,即a[i]。 ③ 指向数组的指针变量可以带下标,即:ap[i]与*(ap+i)等价。 ⑸ 指针变量作为函数的形式参数 函数的形式参数不仅可以是字符型、整型、实型或数组,还可以用指针变量, 其作用是将一个变量的地址传送到另一个函数中去, 这种参数传递属于地址传递,具有双向性。 若在被调用函数中,该指针变量指向的存储单元中的内容发生了变化, 在调用结束后这些变化将被保留下来,即其结果会被返回到主调用函数。 因此,用指针变量作为函数的形式参数,可以得到多于一个的函数返回值。 项目7 花样循环灯 已知循环灯电路如图2-5所示, 任务2.2中的程序已实现了流水循环, 也可用数组编程实现流水循环。 上述程序与任务2.2中程序比较, 我们发现,其区别是用循环灯数组led替代了亮灯状态字左移。 将其copy至Keil C51编译连接,自动生成Hex文件, 装入Proteus流水循环灯虚拟电路中AT89C51,全速运行, 可看到8个LED灯从上至下,每隔0.5秒,依次亮暗,不断循环重复。 * ——基于Keil和Proteus 配套单片机项目式教程仿真50例 50例全部取自于本书项目和练习题,免费下载 机械工业出版社同名教材配套电子教案 张志良主编 Email:zzlls@126.com 第2章 目录 C51编程基础知识准备 2.1 C51数据与数据类型 2.2 C51变量及其定义方法 2.3 C51运算符和表达式 2.4 C51基本语句 项目4 键控信号灯 任务4.1 编制键控信号灯程序 任务4.2 键控信号灯Keil编译调试 任务4.3 键控信号灯Proteus虚拟仿真运行 C51编程基础知识准备 2.5 C51函数 2.6 C51数组和指针 项目7 花样循环灯 任务7.1 编制花样循环灯程序 任务7.2 花样循环灯Keil编译调试 任务7.3 花样循环灯Proteus虚拟仿真 C51编程基础知识准备 2.1 C51数据与数据类型 ⒈ 数据类型和数据长度 基本类型:

您可能关注的文档

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档