【作者简介】3htech
姓名:朱海生,生于山东德州。
2010年6月毕业于山东师范大学电子信息科学与技术专业
2010年1月至2012年3月,在济南某公司设计开发称重产品(模块,配料表,称重控制仪表等)
2012年5月至现在,在山东淄博某公司设计开发电力仪表。
下面是小白菜分享给各位网友的个人学习经历,以及一些个人心得:
话说大二开设的C语言,本人一不小心就挂了。现在回想起来,还要感谢这次挂科。
我好像是大二上学期开设的C语言,那个时候天气有点热,又是下午第一大节上课,我和我舍友经常性的不想去。躲在宿舍里睡个午觉,上个网,打个游戏,感觉不错;但是课程也落下了。最后期末考试了,发现自己什么都不会,考试时正执大热天,考完一场一身汗,但也没感觉自己能挂,等上网查成绩之后发现真的挂了。
怎么办?怎么办?听说C语言挂了之后一般补考也会挂,大部分都要重修。我的个神来……我不能重修,要不然太丢人了。于是自己在漫长的暑假里开始看《C语言程序设计》(谭老师编的)。一个字一个字的慢慢看,课后题一个不落的全做了,流程图,写代码,调试忙了整整一个暑假。等开学后补考,结果通过了。悬着的心放下了。在暑假里,我还发现了书上的几处错误之处,本想着开学后给寄出去,结果也经忘记了。
正是因为这一个月的突击,让我对C(尤其是指针)有了一个较为深刻的认识。在后来的《数据结构》学习中,我能很容易理解课本上所说的内容,并且可以把课后习题编写出来。
学习数据结构的时候,我不知怎么的写了一个大数阶乘的程序。已经记不得为什么要写这个了。后来我把自己写的这个大数阶乘给放到自己的求职简历里去了,结果很管事,只发了3份简历,便找到了我的第一份工作。
第一次调试单片机程序是在伟福实验箱,话说当时什么不都不知道,箱子据说也是坏的,上课就是为了去玩。后来自己买了一块开发板,开始用汇编编51上的程序(一开始我不会用51C,只会用汇编)。
第一个自己编写的程序是流水灯。我先把开发板上的代码看了一遍,了解了流水灯的原理(我是看代码会的),然后开始在原来代码基础上改写;比如,你左移,我改成右移,你移的快,我给你改成慢的;感觉自己差不多了,开始在一个空白文档上自己写流水灯的代码,并且成了。
第一次用的单片机并不是我现在最鄙视的STC系列,而是SST的,具体名字我忘记了,不过Keil里面有这一款单片机,通过串口可以仿真调试,非常方便。通过个单片机我学会了设置断点,看寄存器,看IO状态等等。
在工作前,我对硬件什么都不懂,连电阻上的色环代表什么意思都不知道。因为我不努力的原因吧。硬件方面,工作前不会画板(学的99se,不会用),不懂电阻电容,哎,总之就是一颗小白菜。
工作后,我接触到了硬件,感觉也就那些东西,学会了看手册,学会了画PCB,而且这些东西都是在很短的时间内就入门了。软件上,从汇编转向了51C。因为C语言自己学的还不错,所以转51C很快。
工作后,一开始,我还一个月买一本书。后来就没买了。看不完。买的书有《C陷阱与缺陷》、《C与指针》、《c primer plus》、《C专家编程》、《ARM嵌入式系统基础教程》、《EMC电磁兼容设计与测试案例分析》 《嵌入式实时操作系统μC\OS-Ⅱ》(邵贝贝教授译)……
电子书下了一堆,不过有一本不得不说到,《匠人手记》。以我的水平,其实不足以对这本书进行评论,但是我有权说一个字“好”!里面的内容对工作过一段时间的人来说就是至宝。
我最喜欢的是《C陷阱与缺陷》、《c primer plus》、《匠人手记》、《EMC电磁兼容设计与测试案例分析》,分析的很透彻。我也很尊敬《ARM嵌入式系统基础教程》的主要作者陈明计先生。陈先生以个人之力编写了一个在51上运行的RTOS,这点我很佩服,我买了他编写的《嵌入式实时操作系统Small RTOS51原理及应用》并试图移植,可是我太懒了,总是有各种理由不去碰它。
话说的有点多了,现在看看我的学习之路是很清晰。
一,先学好C,这样就不会为了程序上的一条语句在那里纠结半天。
二,开发板,对照着原程序,先改写,然后自己能全部写来了。
三,工作后,买书,看书,充电。
四,好好工作,照顾好自己的家人。
希望老鸟小鸟们开开心心学习,平平安安生活。That’s all.
By 3htech(小白菜)
讨论话题````````````定时中断的按键检测程序
零 该程序产生的背景
话说2012年,小白菜要做一个三相电压电流组合表,这个仪表需要进行数据输入(小白菜以前的项目也有输入,但是小白菜没有仔细的研究过),并且给出的时间很长,小白菜有时间来做一些“研究处理”。拿着以前写的按键检测程序,感觉漏洞百出,于是想着趁着有时间把这部分做出来,于是便用了一个星期(实际是5天,双休思密达)专门写了这部分程序。
一 小白菜的应用需求
小白菜的仪表仅需要单短击(简称单击)和单长击(简称长击),单短击要在按键松开后才进行识别,单长击要在达到设定的时间阀值时进行识别(这时按键未松开)。
不需要考虑的情况如下,不需要连击(可以做为多次短击)、不需要多键同时击、暂时不需要考虑输入数字时长按某键,数字快速自加或自减。
该检测程序要满目不依赖于任何一种单片机,也不依赖按键连接方式,如独立式,矩阵式(当然你要用按键扫描芯片那就……你要用AD式键盘,我……好吧,你赢了~),能够独立存在。
二 按键过程分析
1 按键小思考
正常的按键过程(不考虑非法的按键状态)如图2.1.1。
图2.1.1 正常按键状态示意图
单击和长击只是时间上的区分而已,但是其识别时稍有区别,单击是在按键松开时进行识别的,长击是在按键闭合时进行识别的。见图2.1.2。
图2.1.2 长短击按键状态示意图
2 各种可能出现的按键情况
合法情况不再赘述。下面把非法(仅在本应用中非法)的情况列一下。
(1) 人为或干扰引起的单击时间过短(主要为防干扰)。
(2) 单击时间过长(与(1)对应,凡事有短就有长,要有度嘛~)。
(3) 按下了多个键(与我的应用需要相悖,所以非法)。这里有可能是同时按的,也有可能是异步按下的。
(4) 快速多次按同一个键。这种情况可以归结到(1)。
(5) 我觉得没有了,元芳,你怎么看??