版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
主编:李文华“十四五”职业教育国家规划教材经全国职业教育教材审定委员会审定制作流水灯任务要求单片机的P3口作输出口,控制8只发光二极管,使发光二极管呈流水灯方式显示。流水灯显示时,每个周期内发光二极管在不同时间内的显示情况如下表所示。时间点亮的发光二极管时间点亮的发光二极管t0D0D1D2D3D4D5D6D7t8t1D1D2D3D4D5D6D7t9D0t2D2D3D4D5D6D7t10D0D1t3D3D4D5D6D7t11D0D1D2t4D4D5D6D7t12D0D1D2D3t5D5D6D7t13D0D1D2D3D4t6D6D7t14D0D1D2D3D4D5t7D7t15D0D1D2D3D4D5D6相关知识1、函数(1)函数的定义函数类型 函数名(形式参数表)形式参数类型说明;{
局部变量定义;
函数体语句;}相关知识函数类型:函数返回值的类型。若无返回值,应说明成void型。函数名:函数的标识符,代表函数在存储器中存放的首地址。形式参数表:函数被调用时,主调函数中应传递的参数。若有多个形式参数,则形式参数之间用逗号间隔。若无形式参数,则用void说明形式参数。形式参数类型说明:指明各形式参数的类型。可以将形式参数类型说明放在形式参数表中,在各形式参数的前面对形式参数进行类型说明。局部变量定义:定义仅供本函数使用的变量。函数体语句:为了完成该函数的特定功能而设置的各种语句。1、函数(1)函数的定义求2个数的最大值函数max()的定义如下:
unsignedchar max(unsignedcharx,unsignedchary){unsignedchar u; //局部变量说明
if(x>y) u=x; //函数体语句
else u=y; //函数体语句
return u; //函数体语句}1、函数1、函数(1)函数的定义①无论函数是否有形式参数,函数名后的圆括号都不能省略。②不允许在一个函数中再定义其他函数,但可以在函数中调用其他函数,包括调用自已。1、函数(2)函数的返回值用return语句返回函数的返回值。格式如下:return (表达式);【说明】①return语句只能返回一个值。②当return后面的表达式的类型与函数说明类型不同时,返回值的类型为函数说明类型。③函数被调用时,即使被调用函数中没有使用return语句,函数也会返回一个int类型的值,但这个值是一个不确定的值。④若要得到一个明确的返回值,则要在函数体用return语句将返回值返回。⑤若函数无返回值,则要将函数说明成void型(无类型),函数体中不必用return语句。1、函数1)调用的一般形式
(3)函数的调用函数名(实际参数表)2)调用的方式①函数调用语句例如:delay(10);②函数表达式调用例如:x=y+max(a,b);③作为函数参数调用例如:result=func(a,max(b,c));1、函数3)有关函数调用的说明a.函数必须先定义后使用(3)函数的调用b.被调用函数必须是已经定义了的函数c.调用库函数时,需要在程序的开头处将被调函数所在的头文件包括到当前程序文件中来d.调用本文件中函数时,若被调函数的定义位于主调函数之后,则要在函数被调用之前对被调函数的返回值类型进行说明。说明的格式如下:函数类型 函数名();e.调用其他文件中定义的函数时,需要做两方面的工作。一是将被调函数所在的程序文件添加到工程中,二是在主调函数所在的程序文件的开头处用下列形式对被调函数的返回值类型进行说明:extern 函数类型 函数名();2、变量的存储类型基于存储类型的变量定义变量类型 存储类型 变量名表;变量的存储类型存储器类型说明data在片内RAM0x00~0x7F区域内分配变量,变量位于data区内。bdata在片内RAM0x20~0x2f区域内分配变量,变量位于bdata区内。idata在片内RAM0x00~0xff区域内分配变量,变量位于idata区内。pdata在扩展RAMpdata区中分配变量,变量位于pdata区内。xdata在扩展RAM64KB范围内分配变量,变量位于xdata区内。code在程序存储器中分配变量,变量位于code区内。2、变量的存储类型变量的默认存储类型取决于用户设置的存储模式存储模式与变量的默认存储类型的关系如下表所示存储模式变量的默认存储器类型smalldatacompactpdatalargexdata3、一维数组(1)一维数组的定义数据类型 [存储类型] 数组名[常量表达式];unsigned char code led[10]; unsigned int a[3];⑵数组中的元素表示方法:数组名[下标]3、一维数组⑶数组的赋值方法一:在程序执行的过程中用赋值语句对数组中的元素进行赋值unsigned int
i,num[10];num[0]=3; //对数组num[]的第1个元素赋值for(i=3;i<7;i++) //对数组num[]的第4~7个元素赋值
num[i]=5;方法二:在定义数组时给数组赋值。格式如下:数组类型 [存储类型] 数组名[常量表达式]={值1,…,值n};unsigned int a[5]={5,6,7,8,9};//定义数组a[5],并给数组中的元素赋值4、查表程序设计方法利用一维数组的下标与元素值的对应关系,将事先计算好的结果值依次存放在code区中的数组中,需要结果值时直接查阅数组,并从数组中读取对应元素的值。例如,用查表求5~10这6个数的平方根的具体方法如下:float code isqrt[]={2.236,2.449,2.646, 2.848,3,3.162}; //1利用一维数组建立平方根表void main(void) { float x; //3定义浮点型变量xunsigned char i=8; //4准备求8的平方根x=isqrt[i-5]; //5从数组中读取i的平方根并赋给x} //6main函数结束任务实施1、搭建硬件电路电路图如下:任务实施2、编写软件程序(1)流程图流水灯在各时间段的显示控制数据可以表格建立,其定义如下:uchar code disctrl[16]={0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80};任务实施2、编写软件程序(2)程序代码#include <reg51.h>#define ledport P3#define uchar unsigned charuchar code disctrl[16]={0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80};uchar data discnt=0; //7void delay(void); //8函数delay说明void main(void) //9main函数{ while(1) //10while死循环。
{ ledport=disctrl[discnt++]; //11 if(discnt>15) discnt=0; //12 delay(); //13延时500ms } //14while循环体结束} //15main函数结束任务实施v
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 自动驾驶系统开发合同
- 直流输电工程接地极线路巡视线下施工细则
- 湖南省衡阳市衡南县2025-2026学年高二上学期期末考试历史试卷(含答案)
- 医学人工智能在老年病中的验证策略
- 2026年人教版高中生物胚胎工程题试卷
- 6.2 燃料电池汽车的结构原理
- 1.1.3平移(练习-中等生)2025-2026学年小学数学三年级下册同步分层 人教版
- 2025年消防初级考试模拟试题及答案
- 2026年内蒙古商贸职业学院单招职业技能测试题库带答案详解(巩固)
- 《增值税增量留抵退税》行业案例模拟卷
- 2024陆上风电场安全生产标准化实施规范
- 招标代理服务服务方案
- 快消品公司销售部薪酬绩效方案(快消品公司销售KPI绩效考核指标)
- 《金银岛读书会》课件
- 当那一天来临简谱合唱乐谱
- 医学院外科学无菌术与手术基本技术教案
- 综合构成及设计实例
- 建筑单方造价指标汇总供参考
- GB/T 26030-2010镍镍合金锻件
- GB/T 20028-2005硫化橡胶或热塑性橡胶应用阿累尼乌斯图推算寿命和最高使用温度
- GA/T 1499-2018卷帘门安全性要求
评论
0/150
提交评论