- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
演示文稿演讲PPT学习教学课件医学文件教学培训课件
主函数中先定义了i、j两个变量,在函数内部定义的变量为局部变量,然后执行while循环,由于while的表达式是1,永远为真,形成死循环,因此CPU将一直执行while的循环体语句。在while的循环体中,先点亮LED0,延时1 s,后熄灭,延时1 s,编译后下载至单片机就可以观察到LED0闪烁的效果。 例3 编程使图1-18中发光二极管LED0闪烁,点亮和熄灭的时间均为500 ms。 解:源程序 #include reg51.h //包含51系列单片机的头文件 #define uchar unsigned char #define uint unsigned int sbit LED0=P2^0; //定义P2.0为LED0/*延时函数*/ void delay500 ms() //延时500 ms { uint i,j; //定义局部变量i、j,用于延时for(i=0;i50;i++) //外层for语句循环50次 for(j=0; j1827;j++); //内层for语句约延时10 ms,分号必须有 } /*主函数*/ main() { while(1) // while死循环,无数遍点亮、熄灭LED0 { LED0=0; //位寻址,点亮LED0 delay500ms(); //调用延时函数,延时500 ms LED0=1; //位寻址,熄灭LED0 delay500ms(); //调用延时函数,延时500 ms } } “/* */”也是C51的注释符,可以注释多行,而“//”只能注释一行。 由于关键字unsigned char、unsigned int较长,使用时会很麻烦,英文不好时也容易写错,这时可用#define命令给它们重新起一个比较简单的新名字,如:uchar、uint,当然也可以是其他名字,在后续程序中可直接用这个新名字定义变量,如:uint i,j;。 源程序中,在主函数之前定义了无参延时函数void delay500ms(),“void”表示该函数执行完后不需要返回任何数值,是一个无返回值的函数;“delay500ms”是延时函数的名字,表示它是一个延时500 ms的函数,函数名可以任意起,但是要注意两点:一是不能和C51中的关键字相同,二 是要做到见名知义;函数名后的括号中没有写任何参数,表示它是一个无参函数。延时函数delay500ms()的函数体内定义了i、j两个变量用于控制循环次数,它们均为局部变量。 在主函数中需要延时500 ms时,可以通过语句“delay500ms();”调用延时函数,CPU转去执行延时函数,从而实现延时功能,这样会使主函数看起来条理清晰,增强了程序的可读性。 例4 编程使图1-18中的发光二极管LED0闪烁,点亮500 ms、熄灭300 ms。 解:该题目要求发光二极管点亮与熄灭的时间不相同,如果编写无参延时函数,需将无参延时函数的时间设置为100 ms,调用3次实现300 ms的延时,调用5次实现500 ms的延时,方可实现题目要求。最好的方法是编写有参延时函数,在调用时给以不同的实参,这样就可以实现不同时间的延时了。 main() { while(1) // while死循环,无数遍点亮、熄灭LED0 { LED0=0; //位寻址,点亮LED0 delay10ms(50 ); //实参为50,延时500 ms LED0=1; //位寻址,熄灭LED0 delay10ms(30 ); //实参为30,延时300 ms } } 由“void delay10ms(uchar a)”定义一个有参延时函数,括号中的“uchar a”表示a是该函数的一个形式参数,用a来控制函数体内第一个for语句的循环次数,两个for语句共执行a×1827次,约延时a×10 ms;在主函数中调用该函数时,需要对应给出一个具体的数据,即实参,当执行被调函数时,将函数体中的所有形参用实参代替。 主函数中通过调用语句“delay10 ms (50);”及“delay10ms (30);”调用delay10 ms函数,并将实参50或30传送给delay10 ms中的形参a,执行延时函数后可分别获得500 ms及300 ms的延时,改变实参可以方便地改变延时时间。 延时函数是单片机编程中常用的一个函数,除了由for语句构成外,也可以由while语句构成;循环变量的
您可能关注的文档
- 大学地理-地貌学-第一章绪论教材教学课件.ppt
- 大学俄语东方3语法_第18课教材教学课件.ppt
- 大学核心商务英语口译教程各单元答案详解(对外贸易大学出版社)unit_2教材教学课件.ppt
- 大学核心商务英语口译教程各单元答案详解(对外贸易大学出版社)unit_7教材教学课件.ppt
- 大学核心商务英语口译教程各单元答案详解(对外贸易大学出版社)unit_8教材教学课件.ppt
- 大学核心商务英语口译教程各单元答案详解(对外贸易大学出版社)unit_10教材教学课件.ppt
- 大学核心商务英语口译教程各单元答案详解(对外贸易大学出版社)Unit_14教材教学课件.ppt
- 大学核心商务英语口译教程各单元答案详解(对外贸易大学出版社)Unit12教材教学课件.ppt
- 大学核心商务英语口译教程各单元答案详解(对外贸易大学出版社)Unit13教材教学课件.ppt
- 大学基础有机化学实验_教材教学课件.ppt
最近下载
- 生物安全法的试题及答案.docx VIP
- 《全大学进阶英语综合教程3》Unit-4教案.pdf VIP
- 单句语法填空专项训练100题(基础知识)(解析版).docx VIP
- 法理学第五章 法律关系.ppt VIP
- 专题02 数轴中的动点问题的七种考法(原卷版)【2025数学常考压轴题上册七年级北师版】.docx VIP
- BP85956D_CN_DS_Rev.0.91 规格书晶丰明源家电电源.pdf VIP
- 思想道德与法治(23版):第六章 学习法治思想 提升法治素养.pptx
- 中药鉴定学课件-总论.ppt VIP
- 工地施工罚款单表格.docx VIP
- 聚丙烯酰胺安全技术说明书.docx VIP
文档评论(0)