单片机应用技术项目1 设计信号灯控制系统.ppt

单片机应用技术项目1 设计信号灯控制系统.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
例1-30 通过指针变量访问整型变量。 【程序代码】 #include stdio.h void main() { int i,j,*pi; //定义整型变量i和j,指针变量pi i=10; pi=i; //使指针变量p指向变量i j=*pi+5; //通过指针变量访问变量i,等价于j=i+5; printf(%d\n,i); printf(%d,%d\n,*pi,j); } 程序运行结果: 10 10,15 例1-31 从键盘上输入任意三个实数,利用指针的方法将这三个实数按大小进行排序。 【编程思路】 ①输入3个实数分别放到变量a、b、c中。 ②3个指针变量p1、p2、p3分别指向变量a、b、c。 ③比较变量的值,最终使p1指向最大值,p3指向最小值。 ④按顺序输出p1、p2、p3所指向的变量的值。 【程序代码】 #include stdio.h void main() { float a,b,c,*p1,*p2,*p3,*p; printf(请输入3个实数:); scanf(%f,%f,%f,a,b,c); p1=a; p2=b; p3=c; if(ab) {p=p1;p1=p2;p2=p;} if(ac) {p=p1;p1=p3;p3=p;} if(bc) {p=p2;p2=p3;p3=p;} printf(%.2f,%.2f,%.2f\n,*p1,*p2,*p3); } 程序运行结果: 请输入3个实数:2.4,5.6,6.0 6.00,5.60,2.40 该程序执行过程中,变量a、b、c的值始终未变,只是使指针p1最终指向值最大的变量,使指针p3最终指向值最小的变量。 (1)指针的移动 当指针变量指向一串连续的存储单元(即数组)时,可以对指针变量加上或减去一个整数来进行指针的移动和定位。例如有如下语句: int a[5]={10,20,30,40,50},*p,*q; p=a[0]; 指针p的指向情况如图1-34(a)所示。在此基础上,随着下面各个语句的执行,指针p和q的指向会发生相应变化。 q=p+1; //如图1-34(a)所示,使指针变量q指向数组元素a[1] q++; //指针后移,指针变量q指向数组元素a[2] q+=2; //指针变量q指向数组元素a[4] q--; //指针变量q指向数组元素a[3] p++; //指针变量p和q的指向如图1-34(b)所示 3.指针与一维数组 图1-34 指针变量p和q的移动和定位 现在如果有语句i=*p;j=*q;则i中的值为20,j中的值为40。若有语句 k=q-p;则k中的值为2。表达式pq的值为真,因为当前指针变量p中存的地址值小于指针变量q中存的地址值。 为了发挥C51语言和汇编语言各自的优点,常需要将两者进行混合编程。一般情况下,由于C51具有很强的数据处理能力,编程中对51单片机寄存器和存储器的分配由编译器自动完成,因此常用它来编写主程序及一些运算教复杂的程序。而汇编语言对硬件的控制较强,运行速度快,灵活性强,因此常用汇编语言实现与硬件接口的子程序设计以及对时间要求高的子程序设计。下面简单介绍C51调用汇编程序的方法。 10.C51中直接嵌入汇编 1)在C文件中要嵌入汇编代码片以如下方式加入汇编代码: #pragma ASM ; Assembler Code Here #pragma ENDASM 2) 在Keil C51软件中打开【Project】菜单,点击“Open Project”选项,在出现的Project窗口中,在包含汇编代码的C文件上点击右键,选择“Options for ...”,点击右边的“Generate Assembler SRC File”和“Assemble SRC File”,使检查框由灰色变成黑色(有效)状态。 3)根据选择的编译模式,把相应的库文件(如Small模式时,是 Keil\C51\Lib\C51S.Lib)加入工程中, 该文件必须作为工程的最后文件。 4)编译,即可生成目标代码。 在程序设计中,为了处理方便,把具有相同数据类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在C语言中,数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。 形象的能这样去理解,就像一个学校在操场上排队,每一个年级代表一个数据类型,每一个班级为一个数组,每一个学生就是数组中的一个数据。数据中的每个数据都能用唯一的下标来确定其位置,下标能是一

文档评论(0)

132****9295 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档