单片机学习感悟
单片机学习心得体会(通用6篇)

单片机学习心得体会单片机学习心得体会什么是心得体会心得体会是指一种读书、实践后所写的感受性文字。
语言类读书心得同数学札记相近;体会是指将学习的东西运用到实践中去,通过实践反思学习内容并记录下来的文字,近似于经验总结。
单片机学习心得体会(通用6篇)当我们有一些感想时,写心得体会是一个不错的选择,这样可以帮助我们分析出现问题的原因,从而找出解决问题的办法。
相信许多人会觉得心得体会很难写吧,下面是小编为大家收集的单片机学习心得体会(通用6篇),仅供参考,欢迎大家阅读。
单片机学习心得体会1一直想写一个帖子,将自己学习单片机的经历、经验和方法总结一下,今天终于动手写了,呵呵,这是我学习单片机的经验、心得、方法。
希望对大家学习单片机有所帮助。
经常在群、论坛里看到有人问:怎么学单片机?也常看到有人说学了好几个月可就是没有什么进展。
当然,受限于每个人受到的教育水平不同和个人理解能力的差异,学习起来会有快慢之分,但我感觉最重的就是学习方法。
一个好的学习方法,能让你事半功倍,这里说说我学习单片机的经历和方法。
05年的时候,因为制作FM发射电路采用了BH1415的芯片,需要用到单片机控制,所以开始接触使用单片机,虽然以前读书时作为一门功课学过,不过也快丢荒了10年了,基本上都忘光了,也算是从头学起了吧。
我当时是买了一块实验板,很简单的功能,比论坛实验板还要少功能,还有一个仿真器,也是比较简单的,SST芯片的。
然后开始从大家都知道的流水灯写起,万事开头难,第一个程序基本上就抄人家的,翻查了一份快速入门的学习资料,写下第一个程序。
然后,在仿真机是单步的看运行结果,从每一步执行,都硬件上反应出来的效果,很快,对单片机的运作有了一个非常感性的认识,这跟只看书然后自己想象运行是完全两码事。
然后,是进一步的其它程序学习,一个月时间,基本上已经熟悉了51的各种硬件资源。
把流水灯,数码管动态扫描,中断等等的学习了,然后就是写综合性的程序,也就是我发在论坛里的时钟。
单片机课程心得体会5篇

单片机课程心得体会5篇(经典版)编制人:__________________审核人:__________________审批人:__________________编制单位:__________________编制时间:____年____月____日序言下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!并且,本店铺为大家提供各种类型的经典范文,如工作总结、心得体会、报告大全、条据书信、演讲致辞、规章制度、应急预案、策划方案、教学资料、作文大全、其他范文等等,想了解不同范文格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!Moreover, our store provides various types of classic sample essays, such as work summaries, experiences, report summaries, written documents, speeches, rules and regulations, emergency plans, planning plans, teaching materials, essay summaries, and other sample essays. If you want to learn about different formats and writing methods of sample essays, please pay attention!单片机课程心得体会5篇心得体会有助于促进个人的自我成长和职业发展,它可以成为个人在职场中提升的有效工具,体会是在众多文体中最能表达个人情感的一种感受文体,本店铺今天就为您带来了单片机课程心得体会5篇,相信一定会对你有所帮助。
单片机学习心得 优选15篇.doc

单片机学习心得优选15篇【导语】单片机学习心得优选15篇由***整理投稿精心推荐,我希望对你的学习工作能带来参考借鉴作用。
【目录】篇1:单片机学习心得篇2:单片机学习心得篇3:单片机学习心得篇4:单片机学习心得篇5:单片机学习心得篇6:单片机学习心得篇7:单片机学习心得篇8:单片机学习心得篇9:单片机学习心得篇10:单片机学习心得篇11:单片机学习心得篇12:单片机学习心得篇13:单片机学习心得篇14:单片机学习心得篇15:单片机学习心得【正文】篇1:单片机学习心得1、学习单片机没有捷径,别指望两三天就学会,要坚持不懈,重在积累。
2、别崇拜高手,别相信天才,大部分人都不是天才(相信你也不是)!3、单片机是一门应用性和实践性很强的学科,要多动手,多做实验。
4、要学会参考别人的程序,减少自我琢磨的时间,迅速提高自我的编程潜力。
5、碰到问题能够借助网络来搜寻答案和对自我有帮忙的问题,能够大大减少你的开发时间。
6、要多交一些朋友,多交流。
技术是靠不断的积累和交流才会提高的,封闭自守只会更加落后。
篇2:单片机学习心得首先,学习单片机要有必须的基础:电子技术方面要有数字电路和模拟电路等方面的理论基础,个性是数字电路;编程语言要求汇编语言或c语言。
要想成为单片机高手,推荐初学者首先学习汇编语言,学的差不多的时候,转入c语言学习。
尽管汇编语言属于低级语言,编程效率低,可是较c语言具有目标代码简短,占用内存少,执行速度快等优点,更重要的是能使初学者尽快熟悉单片机的内部结构,并能对其进行精确的控制。
汇编语言在单片机教材里面都会涉及,不需要单独购买教材和学习。
c语言是一门学问,有很多专业书籍来讲解,并且对我们今后的编程生涯有绝对的好处,所以要深入学习,千万不要自以为看了某某的视频教程就以为掌握了c语言,那只是c语言的一部分。
在那里给大家推荐一本单片机c语言程序设计参考书,马忠梅等著,北京航空航天大学出版社出版的《单片机的c语言应用程序设计》,要求c语言基础。
单片机实训心得5篇

单片机实训心得5篇(实用版)编制人:__________________审核人:__________________审批人:__________________编制单位:__________________编制时间:____年____月____日序言下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!并且,本店铺为大家提供各种类型的实用资料,如工作总结、工作报告、工作计划、心得体会、讲话致辞、教育教学、书信文档、述职报告、作文大全、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor.I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!Moreover, our store provides various types of practical materials for everyone, such as work summaries, work reports, work plans, reflections, speeches, education and teaching, letter documents, job reports, essay summaries, and other materials. If you want to learn about different data formats and writing methods, please stay tuned!单片机实训心得5篇通过与他人分享心得体会,可以促进交流和合作,共同探讨问题和解决挑战,心得体会是我们的财富,它们可以指导我们的决策和行动,本店铺今天就为您带来了单片机实训心得5篇,相信一定会对你有所帮助。
单片机实训心得体会7篇

单片机实训心得体会7篇单片机实训心得体会1通过这一个学期的单片机学习,我收获了很多关于单片机的知识,并且这些知识和日常的生活息息相关。
了解了一些简单程序的录入,LED显示器、键盘、和显示器的应用和原理。
LED显示器:LED显示器是由发光二管组成显示字段的器件。
通常的8段LED显示器是由8个发光二极管组成,LED显示器分共阳极和共阴极两种。
有段选码和和位选码。
当LED显示器每段的平均电流位5MA时,就有较满意的亮度,一般选择断码5-10MA电流;位线的电流应选择40-80MA。
LED显示器的显示方式有动态和静态两种。
7289A芯片是具有SPI串行接口功能的显示键盘控制芯片,它可同时取得8位共阴极数码管和64个键的键盘矩阵。
7289A的控制指令分为两类:8位宽度的单字节指令和16位宽度双字节指令;还有闪烁指令和消隐指令。
7289A采用串行方式SPI总线与微处理器通信;7289A与AT89C52接口电路,在实际电路中无论接不接键盘,电路中连接到其各段上的8个 100千欧的下拉电阻均不可以省去,如果不接键盘而只接显示器可以省去8个10千欧电阻,若仅接键盘而不接显示器,可省去串入DP及SA-SG连线的8个220欧电阻,7289A还需要外接晶体振荡电路。
液晶显示器简称LCD,其显示原理是用经过处后的液晶具有能改变光线传输方向的特性,达到显示字符和图形的目的。
最简单的笔段式液晶显示器类似于LCD显示器,可以显示简单的字符和数字,而目前大量使用的是点阵式LCD显示器,既可以显示字符和数字也可以显示汉字和图形。
如果把LCD显示屏、背光可变电源、接口控制逻辑、驱动集成芯片等部件构成一个整体,是的与CPU 接口十分方便。
键盘:键盘是最常见的计算机输入设备,它广泛应用于微型计算机和各种终端设备上。
计算机操作者通过键盘向计算机输入各种指令、数据,指挥计算机的工作。
按照键盘的工作原理和按键方式的不同,可以划分为四种:机械式键盘采用类似金属接触式开关,工作原理是使触点导通或断开,具有工艺简单、噪音大、易维护的特点。
单片机学习心得(15篇汇总)

单片机学习心得第1篇先说说单片机,一般我们此刻用的比较多的的MCS-51的单片机,它的资料比较多,用的人也很多,市场也很大。
就我人的体会怎样样才能更快的学会单片机这门课。
单片机这门课是一项十分重视动手实践的科目,不能总是看书,可是学习它首先必须得看书,因为从书中你需要大概了解一下,单片机的各功能寄存器,而说明白点,我们使用单片机就是用软件去控制单片机的各功能寄存器,再说明白点,就是控制单片机那些管脚的电平什么时候输出高,什么时候输出低。
由这些高低电平的变化来控制你的系统板,实现我们需要的各功能。
至于看书,只需大概了解单片机各管脚都是干什么的能实现什么样的功能第一次,第二次你可能看不明白,但这不要紧,因为还缺少实际的感观认识。
所以我总是说,学单片机看书看两三天的就够了,看小说你一天能看五六本,看单片机你两三天看两三遍就够了,能够不用仔细的看。
推荐一本书,就这一本就足够,书名是《新编MCS-51单片机应用设计》,是哈尔滨工业大学出版社出的的,作者是张毅刚。
大概了解一下书上的资料,然后实践,这是十分关键的,如果说学单片机你不实践那是不可能学会的,关于实践有两种方法你能够选择,一种方法你自我花钱买一块单片机的学习板,不要求功能太全的,对于初学者来说你买功能十分多的那种板子,上头有很多东西你这辈子都用不着,我提议有流水灯、数码管、独立键盘、矩阵键盘、AD或DA(原理一样)、液晶、蜂鸣器,这就差不多了。
如果上头我提到的这些,你能熟练应用,那能够说对于单片机方面的硬件你已经入门了,剩下的就是自我练习设计电路,不断的积累经验。
只要过了第一关,后面的路就好走多了,万事开头难,大家可能都听过。
方法二你身边如果有单片机方面的高手,向他求助,让他帮你搭简单的最小系统板。
对于高手来说,做单片机的最小系统板只需要一分钟的时间,而对于初学者可就难多了,因为仅有对硬件了解了,才能熟练运用。
而如果你身边没有这样的高手,又找不到能够帮忙你的人,那我劝你最好是自我买上一块,毕竟自我有一块要方便的多,以后做单片机类的小实验时都能用得上,还省事。
学习单片机心得体会优秀4篇-最新

学习单片机心得体会优秀4篇单片机课程设计,是很多高校,电子信息专业、自动化专业、通信专业等学生在校学习期间,必须完成的一项重要的动手实践活动,但现在很多高校的课程设计流于形式。
下面是辛苦为朋友们带来的4篇《学习单片机心得体会》,如果对您有一些参考与帮助,请分享给最好的朋友。
单片机学习心得体会篇一经常在群、论坛里看到有人问:怎么学单片机?也常看到有人说学了好几个月可就是没有什么进展。
当然,受限于每个人受到的教育水平不同和个人理解能力的差异,学习起来会有快慢之分,但我感觉最重的就是学习方法。
一个好的学习方法,能让你事半功倍,这里说说我学习单片机的经历和方法。
20xx年的时候,因为制作FM发射电路采用了BH1415的芯片,需要用到单片机控制,所以开始接触使用单片机,虽然以前读书时作为一门功课学过,不过也快丢荒了10年了,基本上都忘光了,也算是从头学起了吧。
我当时是买了一块实验板,很简单的功能,比论坛实验板还要少功能,还有一个仿真器,也是比较简单的,SST芯片的。
然后开始从大家都知道的流水灯写起,万事开头难,第一个程序基本上就抄人家的,翻查了一份快速入门的学习资料,写下第一个程序。
然后,在仿真机是单步的看运行结果,从每一步执行,都硬件上反应出来的效果,很快,对单片机的运作有了一个非常感性的认识,这跟只看书然后自己想象运行是完全两码事。
然后,是进一步的其它程序学习,一个月时间,基本上已经熟悉了51的各种硬件资源。
把流水灯,数码管动态扫描,中断等等的学习了,然后就是写综合性的程序,也就是我发在论坛里的时钟。
通过这个程序的编写,使自己的编程水平有了很大的飞跃。
之后,就是逐步学习编写更多的程序,各种外围器件的控制等等,通过编写程序使自己不断的提高。
在学过汇编之后,我又转到了C语言学习,因为以前没有学习过C语言,一切都很陌生,所以自己沿用了学习汇编的方法,大约花了3天功夫基本就对C语言有了初步的了解,然后就是尝试写上面所说的时钟,以汇编程序的思路作为参考,以C语言来编写,花了几天功夫完成了这一程序,也实现了从汇编编程为主到C编程为主的转变。
单片机学习心得体会(通用11篇)

单片机学习心得体会(通用11篇)单片机学习心得体会1时光荏苒,转眼间,一个学期已经结束,本学期的单片机综合课程设计也在一周内完成。
俗话说“好的开始是成功的一半”。
说起课程设计,我认为最重要的就是做好设计的预习,认真的研究老师给的题目,选一个自己有兴趣的题目。
其次,老师对实验的讲解要一丝不苟的去听去想,因为只有都明白了,做起设计就会事半功倍,如果没弄明白,就迷迷糊糊的去选题目做设计,到头来一点收获也没有。
最后,要重视程序的模块化,修改的方便,也要注重程序的调试,掌握其方法。
虽然这次的课程设计算起来在实验室的时间只有三天,不过因为我们都有自己的实验板,所以在宿舍里做实验的时间一定不止三天。
硬件的设计跟焊接都要我们自己动手去焊,软件的编程也要我们不断的调试,最终一个能完成课程设计的劳动成果出来了,很高兴它能按着设计的思想与要求运动起来。
当然,这其中也有很多问题:一是不够细心,比如因为焊错线不小心,以及因为不熟悉课本理论,出现编程错误。
第二,在学习态度方面,这门课是对我学习态度的一个考验。
对于单片机综合课程的实习,我的第一个体会是,作为一名工程技术人员,首先要求的素质肯定应该是严谨。
我们在这次实习中遇到的大部分问题都是因为我们不够严谨。
第三,在做人上,我认识到,无论做什么事情,只要你足够坚强,有足够的毅力与决心,有足够的挑战困难的勇气,就没有什么办不到的。
在这次难得的课程设计过程中我锻炼了自己的思考能力和动手能力。
通过题目选择和设计电路的过程中,加强了我思考问题的完整性和实际生活联系的可行性。
在方案设计选择和芯片的选择上,培养了我们综合应用单片机的能力,对单片机的各个管脚的功能也有了进一步的认识。
还锻炼我们个人的查阅技术资料的能力,动手能力,发现问题,解决问题的能力。
并且我们熟练掌握了有关器件的性能及测试方法。
再次感谢老师的辅导以及同学的帮助,是他们让我有了一个更好的认识,无论是学习还是生活,生活是实在的,要踏实走路。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
这个我从别处贴来百度文库的。
写的非常的好。
我们用学单片机不要停在演示的基础上。
只能让单片机完成局部事。
这样我们永远不会走出流水灯地狱!!!学习单片机也已经有几年了,藉此机会和大家聊一下我学习过程中的一些经历和想法吧。
也感谢一线工人提供了这个机会。
“卖弄”也好,“吹嘘”也罢,我只是想认真的写写我这一路走来历经的总总,把其中值得注意,以及经验的地方写出来,权当是我对自己的一个总结吧。
而作为看官的你,如果看到了我的错误,还请一定指正,这样对我以及其它读者都有帮助,而至于你如果从中能够收获到些许,那便是我最大的欣慰了。
姑妄言之,姑妄听之。
几年前,和众多初学者一样,我接触到了单片机,立刻被其神奇的功能所吸引,从此不能自拔。
很多个日夜就这样陪伴着它度过了。
期间也遇到过非常多的问题,也一度被这些问题所困惑……等到回过头来,看到自己曾经走过的路,唏嘘不已。
经常混迹于论坛里,也看到了很多初学者发的求助帖子,看到他们走在自己曾走过的弯路上,忽然想到了自己的那段日子,心里竟然莫名的冲动,凡此总总,我总是尽自己所能去回帖。
很多时候,都想写一点什么东西出来,希望对广大的初学者有一点点帮助。
但总是不知从何处写起。
今天借一线工人的台,唱一唱我的戏一路学习过来的过程中,帮助最大之一无疑来自于网络了。
很多时候,通过网络,我们都可以获取到所需要的学习资料。
但是,随着我们学习的深入,我们会慢慢发现,网络提供的东西是有限度的,好像大部分的资料都差不多,或者说是适合大部分的初学者所需,而当我们想更进一步提高时,却发现能够获取到的资料越来越少,相信各位也会有同感,铺天盖地的单片机资料中大部分不是流水灯就是LED,液晶,而且也只是仅仅作功能性的演示。
于是有些人选择了放弃,或者是转移到其他兴趣上面去了,而只有少部分人选择了继续摸索下去,结合市面上的书籍,然后在网络上锲而不舍的搜集资料,再从牛人的只言片语中去体会,不断动手实践,慢慢的,也摸索出来了自己的一条路子。
当然这个过程必然是艰辛的,而他学会了之后也不会在网络上轻易分享自己的学习成果。
如此恶性循环下去,也就不难理解为什么初级的学习资料满天飞,而深入一点的学习资料却很少的原因了。
相较于其他领域,单片机技术的封锁更加容易。
尽管已经问世了很多年了,有价值的资料还是相当的欠缺,大部分的资料都是止于入门阶段或者是简单的演示实验。
但是在实际工程应用中却是另外一回事。
有能力的高手无暇或者是不愿公开自己的学习经验。
很多时候,我也很困惑,看到国外爱好者毫不保留的在网络上发布自己的作品,我忽然感觉到一丝丝的悲哀。
也许,我们真的该转变一下思路了,帮助别人,其实也是在帮助自己。
啰啰嗦嗦的说了这么多,相信大家能够明白说的是什么意思。
在接下来的一段日子里,我将会结合电子工程师之家举办的主题周活动写一点自己的想法。
尽可能从实用的角度去讲述。
希望能够帮助更多的初学者更上一层楼。
而关于这个主题周的最大主题我想了这样的一个名字“从单片机初学者迈向单片机工程师”。
名字挺大挺响亮,给我的压力也挺大的,但我会努力,争取使这样的一系列文章能够带给大家一点帮助,而不是看后大跌眼镜。
这样的一系列文章主要的对象是初学者,以及想从初学者更进一步提高的读者。
而至于老手,以及那些牛XX的人,希望能够给我们这些初学者更多的一些指点哈~@_@我们首先来看第一章节从这一章开始,我们开始迈入单片机的世界。
在我们开始这一章具体的学习之前,有必要给大家先说明一下。
在以后的系列文章中,我们将以51内核的单片机为载体,C语言为编程语言,开发环境为KEIL uv3。
至于为什么选用C语言开发,好处不言而喻,开发速度快,效率高,代码可复用率高,结构清晰,尤其是在大型的程序中,而且随着编译器的不断升级,其编译后的代码大小与汇编语言的差距越来越小。
而关于C语言和汇编之争,就像那个啥,每隔一段时间总会有人挑起这个话题,如果你感兴趣,可以到网上搜索相关的帖子自行阅读。
不是说汇编不重要,在很多对时序要求非常高的场合,需要利用汇编语言和C语言混合编程才能够满足系统的需求。
在我们学习掌握C语言的同时,也还需要利用闲余的时间去学习了解汇编语言。
1.从点亮LED(发光二极管)开始在市面上众多的单片机学习资料中,最基础的实验无疑于点亮LED 了,即控制单片机的I/O的电平的变化。
如同如下实例代码一般void main(void){LedInit() ;While(1){LED = ON ;DelayMs(500) ;LED = OFF ;DelayMs(500) ;}}程序很简单,从它的结构可以看出,LED先点亮500MS,然后熄灭500MS,如此循环下去,形成的效果就是LED以1HZ的频率进行闪烁。
下面让我们分析上面的程序有没有什么问题。
看来看出,好像很正常的啊,能有什么问题呢?这个时候我们应该换一个思路去想了。
试想,整个程序除了控制LED = ON ;LED = OFF;这两条语句外,其余的时间,全消耗在了DelayMs(500)这两个函数上。
而在实际应用系统中是没有哪个系统只闪烁一只LED就其它什么事情都不做了的。
因此,在这里我们要想办法,把CPU解放出来,让它不要白白浪费500MS的延时等待时间。
宁可让它一遍又一遍的扫描看有哪些任务需要执行,也不要让它停留在某个地方空转消耗CPU 时间。
从上面我们可以总结出(1) 无论什么时候我们都要以实际应用的角度去考虑程序的编写。
(2) 无论什么时候都不要让CPU白白浪费等待,尤其是延时(超过1MS)这样的地方。
下面让我们从另外一个角度来考虑如何点亮一颗LED。
先看看我们的硬件结构是什么样子的。
我手上的单片机板子是电子工程师之家的开发的学习板。
就以它的实际硬件连接图来分析吧。
如下图所示一般的LED的正常发光电流为10~20MA而低电流LED的工作电流在2mA以下(亮度与普通发光管相同)。
在上图中我们可知,当Q1~Q8引脚上面的电平为低电平时,LED发光。
通过LED的电流约为(VCC - Vd)/ RA2 。
其中Vd为LED导通后的压降,约为1.7V左右。
这个导通压降根据LED颜色的不同,以及工作电流的大小的不同,会有一定的差别。
下面一些参数是网上有人测出来的,供大家参考。
红色的压降为1.82-1.88V,电流5-8mA,绿色的压降为1.75-1.82V,电流3-5mA,橙色的压降为1.7-1.8V,电流3-5mA兰色的压降为3.1-3.3V,电流8-10mA,白色的压降为3-3.2V,电流10-15mA,(供电电压5V,LED直径为5mm)74HC573真值表如下:通过这个真值表我们可以看出。
当OutputEnable引脚接低电平的时候,并且LatchEnable引脚为高电平的时候,Q端电平与D端电平相同。
结合我们的LED硬件连接图可以知道LED_CS端为高电平时候,P0口电平的变化即Q端的电平的变化,进而引起LED的亮灭变化。
由于单片机的驱动能力有限,在此,74HC573的主要作用就是起一个输出驱动的作用。
需要注意的是,通过74HC573的最大电流是有限制的,否则可能会烧坏74HC573这个芯片。
上面这个图是从74HC573的DATASHEET中截取出来的,从上可以看出,每个引脚允许通过的最大电流为35mA 整个芯片允许通过的最大电流为75mA。
在我们设计相应的驱动电路时候,这些参数是相当重要的,而且是最容易被初学者所忽略的地方。
同时在设计的时候,要留出一定量的余量出来,不能说单个引脚允许通过的电流为35mA,你就设计为35mA,这个时候你应该把设计的上限值定在20mA左右才能保证能够稳定的工作。
(设计相应驱动电路时候,应该仔细阅读芯片的数据手册,了解每个引脚的驱动能力,以及整个芯片的驱动能力)了解了相应的硬件后,我们再来编写驱动程序。
首先定义LED的接口#define LED P0然后为亮灭常数定义一个宏,由硬件连接图可以,当P0输出为低电平时候LED亮,P0输出为高电平时,LED熄灭。
#define LED_ON() LED = 0x00 //所有LED亮#define LED_OFF() LED = 0xff //所有LED熄灭下面到了重点了,究竟该如何释放CPU,避免其做延时空等待这样的事情呢。
很简单,我们为系统产生一个1MS的时标。
假定LED 需要亮500MS,熄灭500MS,那么我们可以对这个1MS的时标进行计数,当这个计数值达到500时候,清零该计数值,同时把LED的状态改变。
unsigned int g_u16LedTimeCount = 0 ; //LED计数器unsigned char g_u8LedState = 0 ; //LED状态标志, 0表示亮,1表示熄灭void LedProcess(void){if(0 == g_u8LedState) //如果LED的状态为亮,则点亮LED{LED_ON() ;}else //否则熄灭LED{LED_OFF() ;}}void LedStateChange(void){if(g_bSystemTime1Ms) //系统1MS时标到{g_bSystemTime1Ms = 0 ;g_u16LedTimeCount++ ; //LED计数器加一if(g_u16LedTimeCount >= 500) //计数达到500,即500MS到了,改变LED的状态。
{g_u16LedTimeCount = 0 ;g_u8LedState = ! g_u8LedState ;}}}上面有一个变量没有提到,就是g_bSystemTime1Ms 。
这个变量可以定义为位变量或者是其它变量,在我们的定时器中断函数中对其置位,其它函数使用该变量后,应该对其复位(清0) 。
我们的主函数就可以写成如下形式(示意代码)void main(void){while(1){LedProcess() ;LedStateChange() ;}}因为LED的亮或者灭依赖于LED状态变量(g_u8LedState)的改变,而状态变量的改变,又依赖于LED计数器的计数值(g_u16LedTimeCount ,只有计数值达到一定后,状态变量才改变)所以,两个函数都没有堵塞CPU的地方。
让我们来从头到尾分析一遍整个程序的流程。
程序首先执行LedProcess() ;函数因为g_u8LedState 的初始值为0 (见定义,对于全局变量,在定义的时候最好给其一个确定的值)所以LED被点亮,然后退出LedStateChange()函数,执行下一个函数LedStateChange()在函数LedStateChange()内部首先判断1MS的系统时标是否到了,如果没有到就直接退出函数,如果到了,就把时标清0以便下一个时标消息的到来,同时对LED计数器加一,然后再判断LED计数器是否到达我们预先想要的值500,如果没有,则退出函数,如果有,对计数器清0,以便下次重新计数,同时把LED状态变量取反,然后退出函数。