十年,我终于把单片机玩死了
说了你又不听,听了你又不懂,懂了你又不做,做了你又做错,错了你又不认,认了你又不改,改了你又不服,不服你又不说!你要我怎么说你呢? ——电影《江湖》不知不觉时间过去十年,在单片机行业也虚度了十年,至此,空余一句肺腑之言——屁用没有,浪费时间!
初入江湖
出身贫寒,背景甚微。自幼不学无术,也无天分。故于成人之后、毕业之际,迫于生计无奈投身硬件江湖 ,以期能够出人头地。
那年初出茅庐,被花言巧语所蒙骗,稀里糊涂走出新手村,策马奔腾(硬座)十六个时辰,来到千里之外的门派总坛(公司车间)上任堂主候选人(储备干部)。
谁知一朝被告知要从江湖最底层 的苦力做起,日日奔波于(电源/适配器的)流水生产线前,郁郁不得志。
所幸醒悟飞快,三月之后毅然退出。
趁冬雪还未覆盖前路,选择踏上未知新征程。
道不同,不相为谋
梦里的江湖,百花齐放。
虽无经验,却有一腔热血,和不服命运理想、蓄势待发的脚步。
偶获一前辈赏识,月银不多,去除吃穿住行,仅可傍身。但前辈所画之大饼,震慑住我等新人。
“你所在之位置,乃本帮最重要的要塞之一,尽心尽力则前途无量。”
直到配备的武器切实拿到手里——一把螺丝刀,为山门前的敌袭预警系统(警报器)拧紧螺丝——方知又一次上当受骗,大好前途化作泡影随风飘散。
离开前,前辈不解询问,为何放弃十年后成为核心弟子的机会,选择外出闯荡江湖?
我沉默不语。
做无名小卒不是我本意,道不同不相为谋而已。
利剑无意,年少轻狂
工欲善其事必先利其器。
江湖中除了侠客,还有名器。一身武艺配锋利长刃,更显名士风采。
作为一位有理想的单片机工程师,怎么能没有一个牛X的武器?于是我买回了这个叫“电脑”的剑,靠它日敲代码三千行。果不其然,我苦练的C语言(数组,指针,结构体)突破壁垒,一不留神登峰造极,乱花入了大佬的眼。
我终于遇到命中注定的缘分,越过喽啰的地位,在门派开启攀爬之路。与此前不同的是,这次我能靠一技之长独步天下 。
这次派发给我的任务,再也不是低级简单的新手任务,而是江湖中最难被攻克的“秘籍再造”,我的实力得到认可,也开启了挑战。
虽然我利用自己高深的外功基础将藏书阁每一本书物归原位(实现程序功能),但七零八落的秘籍(程序)没有归类、模块化,结构也很混乱,牵一发而动全身,依旧是最大的难题。
费时费力整理成册,方便门派弟子查看(跑程序)、研究(加入新功能),当然,将其中缺失的部分重现让我费尽脑汁。
三更灯火五更鸡,正是男儿读书时。终于,经过一番努力,学习了无数天的神技《C语言教程:模块化程序设计》 ,派上了用场。功夫不负有心人,写起程序信手拈来,顶层设计、模块分层,一时间全无对手、所向披靡。
冬练劲,夏练筋。软硬皆施,以柔辅刚,才算完美。于是秉烛夜读,开始苦练硬件。
单片机的内部结构及使用(时钟,IO口,定时器中断,外部中断,串口中断),各个模块(WIFI,蓝牙,红外,GPS,GPRS,液晶,语音模块,伺服模块,摄像头等)的工作原理,各种总线/接口(UART,SPI,I2C,LVDS,CAN,USB,,PCI总线)通信方式。运用之妙,存乎一心。
功夫者,工夫也。
只要工夫深,铁杵磨成针。
软剑无常,在于招式
后来的风卷缠云,门派间的分分合合,老大一声令下,调整战略方向,之前的成果通通抛弃,重头再来,作为门派核心力量,当然义不容辞。从此办公室灯火通明,彻夜无眠。
麻烦永远会找上门,老大郑重的向我提出,需要我画一张江山战略图(PCB)。我连忙反驳道我一介莽夫,舞刀弄剑,不会画图。
但老大怎么会想听到你拒绝的话呢?他冷哼一声说道:“屁话咋这么多,人手不够,赶紧上!”
我虽然迷茫,但也不得不向画师请教学习,以达到要求。
随着门派扩张,各地分号如雨后春笋、层出不穷。
在建设分部的过程不断的学习,电源(选型,纹波),射频(混频,滤波,放大),仿真(proteus,simulation,ADS),EDA(AD,PADS,Mentor,Allegro)软件。
盛年不重来,一日难再晨。
过了一腔热情为门派的阶段,徒留“只身在江湖,闯荡一片天”这个说来容易,却并不简单的心愿……
重剑无锋,大巧不工
当我完全掌握门派的独门功夫之后,似乎有些飘飘然。老大说一我敢反二,本以为我是一个仗义直言的大侠,结果被逐出山门。
在我落魄的时候收留我的是江湖上赫赫有名的大师,可谓内功深厚。他也曾苦口婆心的告诫我,基础有多么重要,多看心法(系统方案)才好为名扬江湖做准备。
在他的教诲中里才发现了自己的不足,单个功夫都会,但是没有融汇贯通 的系统概念 。
我将此句奉为处世之道,殊不知他在江湖上混了十年,从头到尾只会一套内家拳法。但背景深厚,所到之处皆俯首。
宁可得罪君子,不能得罪小人。
不小心冒犯了貌似平凡,实则身世背景强悍的外门弟子,被他表哥的堂叔的二舅,又一次逐出山门之后,我好像顿悟了为何有人浪迹江湖;有人寒窗苦读;有人阿谀奉承;有人早已麻木。
过去总以为只要武功高强,何处都能安身立命;从那之后才明白,弱肉强食说的从来不是武功和绝技。
成功的道路上怎么能不遇见几个贵人,当然,我比较例外,没有遇见贵人,所以我没有成功。
惊人,惊情,惊梦,惊心,怆然暗惊后再看时,这些年的风风雨雨,恍如隔世。
人生如棋,走一步算三步是常者,走一步定十步是智者。
我倒好,走一步,悔三步。
无碍!大不了从头再来!
天生我材必有用,千金散尽还复来!
无剑无招
我怎会屈服命运?!
从不曾离开的江湖,越陷越深的江湖,依然是我心中最向往的圣地!人在江湖,身不由己。我不愿做搅动风云之人,风云却因我而起,那就下定决心再战一回!
正好趁此次变故,一路向东,另辟蹊径,寻找另一片天……
读万卷书,行万里路,参阅万千秘籍,拜访世外高人,为求一条康庄大道!
随着时间的流逝慢慢的自己开始变得圆润,没有之前的浮躁,没有之前的棱角,没有之前那么活泼、健谈。
等再出山,长袖善舞,戒骄戒躁、越发沉稳,谨记高人所言,“认真做事,诚实待人,方能始终。 ”
江湖,有它的规则,当你有能力去打破规则时,你就是硬件江湖中的主角;当你不知所措,无能为力时,你只有适应规则。
在江湖中,强悍的武力和圆滑的处事,相辅相成。历届武林盟主都为其中之佼佼者。
欲为大侠,缺一不可。
后 记
我虽不是江湖主角,但也在浮沉之中,看破人世冷暖,领悟几套绝技。
而如果想要成为江湖的主角,就要付出成倍的努力,越过无数个沙坑,踩穿精心准备的陷阱,直面自己的心灵。
有时,做个平凡人未必不是件好事,不忘初心。
你说呢?
单片机简单快速入门篇 第四章 点亮一个LED灯
看到这个标题,想起了墨镜王电影的一句台词,“凭一口气,点一盏灯,有灯就有人”,不知道是不是所有的单片机教程,第一个实验都是点亮一盏LED灯。希望每一个点亮LED灯的初学者都能学有所成,“念念不忘,必有回响”!
上节我们已经建立了一个事例工程文档,现在就不必要再重新建一个了,直接把例程文件夹复制粘贴一个,把文件夹名称改为“LED实验”,然后进入文件夹打开工程文件,.uvproj文件,点击如图所示的图标
在弹出的对话框里面,选择“output”,在“Create HEX”选项前面打✓,打钩后,编译时才能生产.HEX程序烧写文件,在“Name...”里面输入HEX文件的名称“LED”。
OK,软件的准备工作已经完成,下面是准备硬件,单片机一定要中西医结合,才能疗效快,不对,是软硬件结合才能见效快。学习单片机一定要买一块开发板(我不是卖开发板的,只是陈述一个事实)或者动手焊一块单片机最小系统。光看不练假把式!要实干!要实干!要实干!重要事情说三遍!毕竟俗话说的好,阅片千遍不如约女一日。在这里我要强调一下这是一篇非常严肃的技术教程。好了废话不多说,要点亮一个LED灯,除了单片机最小系统外,只要一个电阻和一个LED,如图所示,LED阳极接5V电压,阴极接电阻,电阻另一端接单片机P2.0脚。
图中LED1如何点亮呢?很简单电阻R1的1端电压为0V,电流从高电压流向低电压,LED1亮。当R1的1端电压为5V时,LED1熄灭。那么单片机如何才能输出0V和5V。上节已经讲过了,单片机的世界只有0和1,对于单片机而言0代表低电平,也就是0V,1代表高电平,也就是5V,至于3.3V单片机和单片机管脚对高电平和低电平的识别范围,我们在这里先不讨论。那么现在又回到程序上来了,怎么把低电平0输出到单片机的P2.0脚呢?
我们每个人都有一个名字,别人叫你名字就知道是找你了,当然你的名字也许并不只有一个,比如花名,据说阿里巴巴每个员工都要取一个花名,很多时候花名更加能代表一个人的特性,也更容易记。以上并不是废话,要想学好编程就必须要爱上取花名。马云说,不喜欢取花名的程序员不是好的阿里巴巴员工。好像又偏题了。还是直接上图吧,点击编译后,在main.c的文件左边会出现一个➕号,点击➕号,就可以看到一个STC89C5XRC.H的文件,双击打开,可以看到一大堆“等式”,这里面=的右边就是所有stc89c5x系列单片机所能使用的资源,=的左边就是stc官方给取的花名。
我们找到P2,其中,P2^0就是P2.0在程序里的名称,P20则是官方指定花名。
那么,给P2.0脚输出低电平,点亮LED1就很简单了P20=0,=号在这里不是P20等于0的意思,而是把0赋值给P20,通俗来讲就是P20就像一个框,把0装到框里面,当然,这个框比较小,只能装下0或者1,并且一次只能装一个。程序如下图
或者
这两个有什么区别呢?对于结果来说,似乎是没有区别的,都能点亮LED1,对于单片机的执行来说,是有区别的,一次和无数次的区别。也就是1中单片机的CPU只执行一次P2.0的赋值操作,而2中则赋值了无数次。所以我选程序2,无数次嘛,反正不要钱。(再次强调一下,这是非常严肃的技术教程!)通常来说,两个都可以,但是,在有些强干扰环境下,比如产品要过安规或者EMC时,LED1可能会受干扰而熄灭,所以程序1可能熄灭后不亮了,而程序2在干扰结束后会重新点亮,如果干扰信号时间比较短,短到人的眼睛反应不过来时,在肉眼看来,LED1是没有熄灭的。可能现在说安规和EMC对于初学者来说还太过遥远,但是现在先有个印象,养成个好习惯,以后真遇到问题时,回想起来,可以多个思路。
好了,编译下载,LED1灯亮,课程结束!NO!NO!NO!先别急,作为一个优秀的程序员,怎么能不取花名就结束了呢!这不是为了装2号字母,而是从开始就要养成好的习惯,不能因为程序简单就敷衍了事,好的习惯是从一点一滴做起的。顺便再说一句,刚开始的计算机程序就是真的只有0和1的,这就是机器语言,后来因为0/1的机器语言太难读懂,所以把其中的一些0/1组成的指令取了一个简单的花名,就成了汇编语言,然而,汇编语言还是比较难用,又把一个汇编指令或者几个汇编指令一起取了一个更加简单明了的花名,就成了C语言。可见取花名的重要性。
至于程序中的那句注释,请听我解释。以前不会编程之前,看到别人满篇都是英文的程序,觉得好劝退,英语不好怎么办?能不能学编程啊?后来才知道真正的C语言的语句就那么几句,还是很简单的英文单词,不会英语也很容易记住并熟练掌握。所以满篇的英文其实都是程序员自己定义的。如果英文不是很好,而程序又不用给外国人看的话,用汉语拼音也是一样一样的。至于说用英文更加高大上,呵呵,骚年,现在都已经2021了!
最后一定要把编译好的LED.HEX文件下载到单片机里,看运行效果。我自己都把这个程序烧写下去执行了。不要觉得这么简单,光看就会了,再次强调一下,学习单片机一定要动手实践!动手实践!动手实践!不实干,永远也不知道自己是几分几秒!再再次强调一下,本文是一篇非常严肃的技术教程!
未完待续。。。
相关问答
51 单片机 一键控制一个LED,每按一下按钮LED闪烁一种频率,共闪...如何在家体验电影院线的效果?评论23AOC推出K1S激光投影为何选择ALPD光源技术评论19专业色彩和标杆亮度AOCK1S激光投影震撼上市!评论28索尼VPL-P630...
汇编语言 单片机 一个开关控制一盏LED的亮灭-ZOL问答不知道你用什么样的单片机,有用(0)回复N976213百度一下吧。很多的。有用...如何在家体验电影院线的效果?评论23AOC推出K1S激光投影为何选择ALPD光源技...
是不是所有的编译器都可以编程所有的 单片机 ?这个明显不可以。特定的编译器一般只能编译特定的片子。不过keil比较特殊,支持的芯片较多。这个明显不可以。特定的编译器一般只能编译特定的片子。不过keil...
帮忙分析下台湾的 单片机 的优缺点(价位、性能、)谢谢?个人感觉应该影响比较大,台系单片机价格不是一般的便宜,可靠性上面大家都差不多,可是很多台系单片机都是仿Microchip的,已经成系列化的可替代产品,我以前用...
现在流行什么 单片机 ?现在比较流行单片机有51单片机、AVR、PIC、MSP430、STM32、瑞萨单片机、飞思卡尔单片机。1.51单片机ATMEL(艾德梅尔)的:89C51、89C52STC(国产宏晶)单片机:8...
为什么总感觉单反没有 单片机 拍照好?我真的想说,单反的直出算法已经落后iPhone太多了。最近入手佳能微单EOSM100,APS-C画幅,2017年底的机子,貌似什么处理器之类的都是最新的,这部相机主打的就...
80C51 单片机 引脚图及引脚功能介绍?本文着手从集成电路角度去认识单片机,主要介绍了单片机的引脚图及引脚功能,以及单片机简易编程。接下来创客学院从集成电路角度认识单片机首先,先看下80C51单...
斯坦李对于漫威 电影 有什么意义?斯坦∙李(StanLee)斯坦∙李(StanLee)在好莱坞山的家中病倒后在医院去世,他的女儿今天证实了这一消息。最近几个月他的健康状况不佳,包括肺炎和心脏病。斯...
是什么原因?PIC 单片机 烧写程序时提示Fuseerror0x2007?你用的是紫外线可擦除的程序存储器吧?我以前用过它,当时出现这种现象的原因是存储器擦除不够彻底,导致内存地址报错,继续擦除时间长点试试吧!!!如果不是...
arm 单片机 之间有什么区别_土巴兔装修问答1.C51单片机是8051内核,继承了早期MCS51的技术特性和指令,在国内使用较普及,结构较简单,学生或新生入门通常学这种,但其指令是集中指令集的,存在三...