chipz 发表于 2006-2-24 23:53:47

新手的困惑:如何提高编程能力?

我是一个刚接触单片机的新手,但我对其有浓厚的兴趣。

前段时间从阿莫这里买了些东西,自己搭板子,写程序。

快一个月了,终于从不知道单片机如何执行程序,到写出几个小程序并看得到效果。

我的学习方法是先看例子程序,跑起来,然后看懂,再按照自己的想法做些修改,

但是学到现在,发现对一些例子程序自己想增加些功能,或者按照自己的想法修改并运行,感觉力不从心,更不要说自己不看任何程序直接来写,那样自己几乎不会下手。搞的我现在十分郁闷!



看到网站上的朋友很热心,想问下,我应该如何提高自己的编程能力呢?是不是我的学习方法有问题?你们当初是怎么过来的?



我现在写的只是象在学习板上跑的基本程序,这都让我焦头烂额,看着网站上那些复杂很多的东西,简直感觉不可思议。

我现在只是学生,如果以这样的情况找到工作,真怀疑自己能做什么呢?



我现在是从51开始学起,还只会汇编,我想能基本熟悉之后转到avr,我觉得这都不是最关键的,编程关键的还是思想,但是我现在觉得自己很乱,不知道接下来怎么搞了,恳请各位朋友指点一下,感激不尽!

supersai 发表于 2006-2-25 00:20:43

最好的方法就是多看例程多练习,练习的时侯最重要是了解例程里每条指令的意义和功能,然后按照例程的功能重写这个程序(不是照搬书本里的例程),写出来后要修改就简单多了,这是快速入门的不二法门!起码我是这样快速入门的!

呵呵........个人见解,大虾们多多指教!

kinsey 发表于 2006-2-25 09:10:55

是要多练习,但我觉得最好是看到一个idea之后,自己写,而不是抄书上的程序,“跑起来,然后看懂,再按照自己的想法做些修改”。不是自己的东西很难理解,理解了的东西才是自己的东西。

Louis_Bright 发表于 2006-2-25 09:59:32

年轻真好。

    两年前我以为自己是高手,现在清楚知道自己不是。

    冰冻三尺,非一日之寒。要想提高编程能力,除了看例程,自己写之外,几乎没有别的方法(至少我没有找到过,如果哪位找到了,麻烦告诉我一声,谢谢!)。

    我想你应该是一个很上进的青年,我的建议是:先逮住一个简单的例程,仔细看懂,再看懂;然后自己撇开书,自己写,哪怕写得和例程一样也没有关系,重要的是你要知道怎么建立项目,怎么编程,怎么编译,出了错误怎么办,怎么修正,程序以后跑起来有bug怎么办,等等,如果全部搞懂了,那么我恭喜你,你通过了进入嵌入式系统的第一关!

Grant 发表于 2006-2-25 11:05:12

我认为你能明白“编程关键的还是思想”已经是非常不错了,现在由于一些商人的炒做搞得现在整个行业都是乌烟瘴气的,弄得大家都以为买块开发板,里面什么参考范例都有,提供了很多什么这样,那样的试验参考代码,只要在板子上跑一跑,哦,ARM就精通了,呵呵,一下大家都沸腾了,啊,原来学东西这么容易?



至少在我的观点里,我认为这是一个厚积薄发的过程。冰冻三次岂非一日之寒。我是搞技术支持的,经常要遇到一些客户,不好怎么说他们,也许是视野的问题吧,写的代码实在是没法看,有时候我都气的对自己说还不如干脆给我规格书,我自己写算了。



如果有兴趣的话,看看软件工程这一类书,会对代码的条例、结构、组织有较好的改善!



在我遇到的各类问题中我大致统计了一下,对于器件使用不当造成问题的有30%、代码结构安排错误、语法错误导致问题的有40%、电路设计、软件健壮性设计等因数导致EMI、EMC的大约有20%,其它的没法归类的10%,。



对于第一类问题,器件使用不当多是指对器件的周边不熟悉导致,一句话总结就是没有仔细看数据手册,大概是受现在的风气影响吧,以为找个跑得通的代码就一知百解。当然这一类问题不能全怪工程师,有的时候工厂里任务紧,出这种错都是难免;对于第二种没办法,只能靠经验啦。时间越长,积累下来的经验就越多。



别人的经验应该是自己总结,抽取自己试用的,不应该是照搬!



我有个同学留在学校当老师,今年要带毕业设计,问我有什么好的题目,我说,好的题目有,就是怕他们做不出,BLDC变频如何,算了还是做充电器吧,虽然看起来是个很简单的东西,里面问题可多呢,特别是那些还在学校,压根就没有几个完完整整写过程序又被世风带坏的学生,我说,你要教给他们的是单片机“能干什么”,而不应该是单片机“可以这样用”。我大学,就没有去听过单片机课,作业是抄的,考试是靠画重点背笔记背过去的,当然笔记也是在考试最后几天画重点突击抄写的,结果到现在我还是不会写51的汇编,勉强只能看懂,不过出了学校也就再没有个51。有一门课我是完全听下来的,这门课是“智能仪器原理和应用”,能完全坚持下来也和教这门课的老师有关系。我当时会坚持,就是因为我发现这个老师是在教我去“理解”,而不是“使用”,我觉得这个很重要。





祝贺你现在进入困惑,呵呵,有进步。作为一个曾经的过来人给你的建议。

我也是这样告诉我那个留在学校带毕业设计的同学的:

举个例子:对于一个陌生的MCU,当你使用它的时候,你应该是自己通过理解数据手册,透过自己的理解去控制,如果实在不行,再去看别人的参考范例,慢慢的你就会有自己的习惯、有自己对MCU的自有看法。呵呵,这是第一步,当你可以拿到一份数据手册,很快通过数据手册自己编程,而不是参考别人提供的代码,那这一步你就成功了。



记着:不要为“使用”而去学。这是个态度,对于你们这样还有时间的时候!




-----此内容被Grant于2006-02-25,11:14:52编辑过

chipz 发表于 2006-2-25 13:24:05

非常感谢上面朋友的建议!

我想我有些明白了:

不能满足于对例子程序的修改,即使看懂了例子,重要的是弄清楚它的思路,理解之后然后自己按照自己方式写出来。

我想我的问题就出在这里,一个例子看懂了,以为自己就会了,而没有动手抛开例子亲自写一个出来。想到什么新功能,总想在这个例子上进行修改,而没有自己总结出思路按照思路来写程序,因为自己觉得这样很难甚至无法下手。

上面“Louis Bright 幽游梦蝶”和“Grant”不约而同的提到了一个意思:“冰冻三尺,非一日之寒。”

我想正是因为自己觉得难,所以需要时间和耐心来训练自己。

谢谢你们的提醒和建议!



-------------------------------------------------------------------



“我大学,就没有去听过单片机课,作业是抄的,考试是靠画重点背笔记背过去的,当然笔记也是在考试最后几天画重点突击抄写的”



呵呵,我大三的时候也是这么过的,具有讽刺意味的是我的单片机课居然得了90分。

当时的单片机实验居然是选修,跑到实验室去,在实验箱上到处找哪一个是单片机,问同学,他们也不知道。然后老师打开电脑上的一个编译器,你们在这里写程序,然后链接,编译运行就行了,就象马老师说的那样,前一小时四十分钟,大家都不知道在做什么,而后二十分钟,大家的程序都写好了,呵呵。现在回想起来,那个时候用的是仿真器,根本就没有单片机在上面,可悲!

ywhbn 发表于 2006-2-27 00:38:31

我感觉 chipz 的悟性不错,加油!

黄晨0410 发表于 2014-9-13 08:37:16

Grant 发表于 2006-2-25 11:05
我认为你能明白“编程关键的还是思想”已经是非常不错了,现在由于一些商人的炒做搞得现在整个行业都是乌烟 ...

说的很有道理

穷折腾 发表于 2014-9-13 08:49:26

LZ现在是入门,
等LZ过了入门这道坎,你就会发现编程能力就和硬件平台、IDE没关系了。
硬件平台、IDE无非就是要求你熟知各类寄存器、调试方法。
提高编程能力,还是要回到纯粹的C语言编程能力。

qq915412051 发表于 2014-9-13 08:53:57

过来学习学习

ruanxianwu 发表于 2014-9-13 09:11:13

过来学习学习

D138138 发表于 2014-9-13 09:18:02

只有一招,多编程,多练习.

别有洞天下 发表于 2014-9-13 09:41:02

C语言,好好学习啊

cloudxxcloud 发表于 2014-9-13 09:47:28

发表于 2006-2-24 23:53:47 这个兄弟 应当是个高手了

xtia 发表于 2014-9-13 21:08:05

多看看写的好的人的程序~多看,多问

hyg5200aaa 发表于 2014-9-13 21:34:28

就得多练,然后看看电路,硬件软件结合者弄

riyue 发表于 2014-9-13 21:38:49

为什么熟悉了转到AVR?   汇编其实也不一定要会的,主要是要会c,会编程寄存器

eddy_wu 发表于 2014-9-14 09:22:14

这个也是一直困扰着我的问题。我4年前就开始接触单片机了,到现在还是停留在入门阶段。

单片机编程对我来说是一道鸿沟,不知道怎么去越过...

咯耶 发表于 2014-9-14 09:56:45

为什么不用C呢,用C进步快好多哟
页: [1]
查看完整版本: 新手的困惑:如何提高编程能力?