怎样提升自己单片机C语言编程能力啊?求高手指点迷津!我硬件也懂一点 但我想朝编程方面发展 跪求高手指教

我已经学过单片机C语言 把51单片机51芯片的内部资源已经弄懂了 AVR也知道一点 现在就迷茫了 不知道该怎样去提升自己的编程能力 小的系统项目也做过一些 还用大侠高手赐教!...谢谢!

到楼主描述的这种程度,比较实际的只有两种方法:一是实践,实际做一个较大的项目,二是多看看网上的一些好的范例,哪怕是你做过的项目,重点不是看其所实现的功能,而是看其源程序的特点和结构!个别的可以关注一下算法。还有一种方法,学一些软件专业的必修基础课,了解软件编程的思维模式,这可能要搭些功夫,而且影响是潜移默化的,如果不是搞纯软件的话,个人观点可以不学。

C语言编程能力并不完全体现在代码的编写效率和执行效率高。注意:是不完全,这方面的提升与个人的逻辑思维能力和其它知识水平有关。举个例子:假如让你编制一个函数实现求arctan反三角函数的值,你会怎么做?如果你不知道采用级数展开的方法就无从下手。其实这考验的是你的数学水平。所以这方面的提高是综合性的,无法具体而谈。
可以提升的我认为体现在如下几个方面,这几方面做好了,同样也可以说具备相当的编程能力了。

1、软件版本管理:任何软件,每次修改发布后必须更新软件版本号,这点工作后尤其关键,我见过这方面不认真的,别多了,3、4个版本后就焦头烂额。
2、源程序中多些注释:比如函数的功能描述、入口参数说明、返回值说明、调用的要求、完成日期等。另外,关键算法的说明也应该注释。常言道:好记忆不如烂笔头,不能太过相信自己的智商。
3、工程化管理源程序:比如对一些常数、接口地址、数据类型定义(typedef)、数据结构定义、自定义的函数声明等,应写入单独建立.H文件,然后在其它.C文件中包含。.C文件,如果软件大的话也尽量的按照功能分别建立,然后在工程中包含。
4、有时,一个软件会针对不同型号的设备,此时应采用#ifdef等编译控制语句加以区分;而且,为方便调试,有时需要对一些状态或变量赋与初值,而正式版本中不能要,也可以采用这种方法,便于管理,不易出错。这部分内容应放在前面所说的.H文件中。
5、尽量多使用函数,这样模块化强,也能通过函数名看出函数功能,易于代码阅读。最简单的例子就是初学者常用的Delay()。不过也别太过了,A=B+C就没必要了。
6、对一些常数、地址,最好使用#define通过英文字符来代替,将其放在.H文件中,这样万一有变化,只需改一处即可,方便,又不会遗漏。比如定时器重装值:
#define C_TH0_50MS (65536-50000)/256
如果需要改晶振,只需改此处即可。

以上注重的是整个软件方面,下面说一些具体需要注意的,不成系统,也没整理过,想到那说到哪吧。基本上是些规范,规范同样代表着水平:
1、多分枝逻辑判断类语句:应养成将所有判断情况都写出来、不用的注掉的习惯,这类语句包括if、switch,举例
if(i==4)
{....}
//else if i>4
//else i<4
其中else的两部份不用,那也写出来,注掉。这样帮助你保证程序的严密型,也有助于问题排查
2、常数、变量、函数、端口等的命名:(不要出现全局变量名与局部变量名相同的情况,虽然在C里允许这样做)我个人采用如下规则
全局变量:类型+具有实际意义的词组或拼音,其中词组或拼音中每个字首字母应大写。
例如: iSecondCount:一个int类型的秒计数变量
局部变量:全小写字符,循环计数变量可以采用诸如i、j、k、n之类的无意义字符。最好不用
a、b、c之类的16进制数所使用的字符。
端口:全大写,并使用具有实际意义的词组或拼音,使用_作为分割符。如KEY_COM
常数:前面加“C_”,后面每个单词之间最好也加“_”,如上例中的C_TH0_50MS
函数:类似于全局变量,只是前面不加类型说明符。如Timer0、Delay、DelayMs。
3、源程序中的注释符尽量不使用/* */,而使用//,这样如果要临时注掉大块程序时,使用一次/* */就可以了,否则可能需要修改多处,麻烦。
4、格式上,注意缩进,尤其是多级判断。而且执行体既便只有一句,有些地方也尽量不要忽略大括号,举例:
if(a>4)
{
a++;
}
else
{
a=0;
}
5、..............还有很多,一下想不起来。你可以自己体会,自己制定。

能力的体现方式有很多,比如说求职是否能如愿。看人看细节,如果编程时养成了上述的习惯,不管你的实际水平如何,都说明了你的处事态度,在大家的智商水平差不多的前提下,无论于公于私,如果我是老板的话会选择你,放心的把任务交给你去做。
你先试试吧,说起来容易,做起来难,我自己的规则,我的执行度也就达到70%水平吧。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-02
买个开发板 多练习追问

谢谢 我用的是郭天祥的开发板 最小系统板也有一个 自己也会做点板子

追答

哦 那你可以爱是研究16//32位单片机了。或者研究ARM吧

第2个回答  2011-08-02
多做具体项目,在实践中学习,多思考。

想做好研发,没有几年的功力是不行的,要有耐心和持续不断的努力。

祝你成功。
第3个回答  2011-08-02
要想在“嵌入式系统”行业有好的发展,几点是必须的:
1,先从汇编开始学习,汇编相比C语言更接近与CPU,但是汇编再一些大型的系统里面需要付出很大的开销,所以又不如C语言实用,所以做大型系统还是要用C语言!
2,要提高编程能力,好好学习C语言吧,最好把计算机2级考试过了!这也便于找工作,当然你能把计算机2级过了,你的C语言编程也就很好了!
3,学习嵌入式系统首先应该从简单的“单片机”开始比如 51 内核 89C51 ,其他复杂“单片机”如 avr 内核 atmega 系列,51 内核 STC 系列 ,如果 51 ,avr 都弄懂弄透了的话,就向 arm 上学习吧,推荐一款 arm 芯片 M058、M0516!其价格相当于8位CPU的价格,功能常用的都有,还是不错的选择!
4,看一些“单片机”资料,买一套适合自己的开发板,提高自己的能力!
如果你需要单片机的资料的话我可以发给你一些!
第4个回答  2011-08-03
想要快速提高编程水平的话要经常多看些复杂的程序,然后学习别人的编程思路技巧,然后在此基础上思考一下有没有可以改进的地方,,然后再有就是自己多编写程序,写好之后,一定要优化程序,多改几次,直到,程序很有模块感,很容易让别人理解为佳!当然最重要的还是坚持,时间久了,你自己就有自己的编程风格了。切记刚开始一定要看些好的程序比如潭浩强的等等..追问

嗯 谢谢 那您可以给我一些关于编程的资料吗?[email protected] 非常谢谢 !

追答

网上搜一下 多的是资料啊 但有很多资料(程序)都有一点小问题,找到自己感兴趣的后,自己亲手动手调试一下 把结果调试出来 并且试着添加一点功能,变成自己的程序就好了,再说我也不知道你要关于哪一类的资料哦

第5个回答  2011-08-06
我也是跟你一样啊。。。一头雾水!我现在的做法是从网络上找例子,然后先自己试着编写,不会的话参考答案,还有就是我现在总是先把问题分解了,把实例分节为一块一块,比如C语言的函数似的,最后综合到一起,还有就是我用的是硬件仿真+软件仿真,平时研究的时候,主要是软件仿真,用的是proteus,这样有助于理解内部结构!你一定比我厉害啦,我才学了不到两周,还是自学,希望以后多多交流,你把51内部都弄懂了,我还啥都不知道呢!!!希望加你好友,多多交流!我的QQ:577625246!
相似回答