怎么学到好的单片机编程思想

时间:2022-09-15 19:48:57
我用C语言进行单片机编程,虽然功能都实现了但是感觉自己就是在为了实现功能而堆砌代码,感觉很乱没有章法,打个比方:就像一副人体骨架,有个人形,但没有人样,骨骼之间的关节都是靠胶水或拉线连接起来的,生硬而呆板。这个骨架需要包上皮肉,加上灵魂,这样有血有肉有思想的程序才是我想要的,可是我怎么才能做到呢?朋友,如果您有这方面的经验请指点迷津!或者给我推荐一些关于单片机编程思想的好书吧,不胜感激!

315 个解决方案

#1


同求 mark

#2


1).51单片机C语言应用程序设计实例精讲 
51单片机C语言应用程序设计实例精讲(第2版)
作者:戴佳,戴卫恒,刘博文 编著   出版社:电子工业出版社   出版时间:2008年12月 
2).单片机应用技术
作者:谭立新 主编   出版社:中南大学出版社   出版时间:2009年09月 

#3


大学基础课程学好,加上看楼上一些书即可获得合理的进步,呵呵。

#4


思想不是学而是领悟的
所以要提升自己的思维能力不要拘泥于以单片机学单片机,生活中的大量解决问题的方法都可以引申到学好单片机之中,比如PC程序的技能技巧通过消化吸收转化到单片机程序中就可能会起到明显作用

#5


主要是不断的学习和优化自己的代码,注意总结和创新

#6


主要是不断的学习和优化自己的代码,注意总结和创新

#7


主要靠自己在实践中总结

#8


靠自己的领悟 这个东西没法教 更没法看明白 多做自然就有想法了

#9


从网上找写好的软件框架,好好分析,了解高手都是咋编程的,另外,你只有对你的软件特别熟的时候 才可能优化你的程序,这要靠慢慢积累经验的

#10


学习下

#11


研究金字塔的结构

#12


准备学习单片机。

#13


必须在实践中总结!

#14


单片机编程,更多的时候是针对硬件的,所以需要有一定的针对性,利用好单片机的功能管脚,合理的使用硬件,可以减少程序的运算,实际上就是软硬件互补。要想有“灵魂”,就要做有心人,算法的学习和应用很重要!但是最终的目的还是要实现功能!

#15


    我也和lz有同感,我是原来是搞软件的。只是因为工作需要,*学习的51单片机c语言编写。在学习开始阶段,主要是看公司原来那些搞硬件的工程师留下的程序。虽然是用c写的,但结构那个一个叫乱,可读性和汇编语言写的有一拼。
    后来随着学习的不断深入,我开始从网上下载高人的一些代码,还有就是多看keil c本身自己带的demo程序和一些linux内核代码片段(主要是看程序结构及处理问题的思路),然后结合以前学习的软件知识以及51本身的一些特性,逐步总结出了一些思路。
   1、在编写程序的时候,先分析所要实现的功能,然后功能细分为模块,实现程序的模块化,这样在将来代码修改,维护上都会带来很大的方便。
   2、将与硬件有关的部分代码(驱动部分)和与事物处理有关的部分的代码分开。
   3、参考windows编程中的消息队列,多采用发消息方式进行对任务的处理,这样既可以提高cpu的使用率,还可以使程序结构清晰明了。
   4、变量名称定义要统一,名字要有意义。这点主要是为了日后的代码维护。我的前辈给我留下的代码,变量名十分随意,阅读起来十分费力。具体可参考匈牙利法或者其它方法。
   5、代码格式要规范整洁。可参考华为《c语言规范》
   6.......
后面的暂时还没想起来,以后想起来在随时补充。

这只是我的一些学习经历和想法,可能有很多地方不成熟,请广大高人指点。

#16


单片机体系结构不说精通也要熟悉,学习单片机软硬都要抓,所谓的编程思想还是自定多遍多练多总结的别人的经验没什么参考价值,因为单片机的程序都是特定环境下为满足特定功能的,不具有通用性

#17


思想本身就是一个抽象的东西,重在领悟,具体点儿说白了就是多想多思考。
可以肯定的说,教材是要看的,但看教材只能理解对方的处理方法,顶多掌握后日后自己使用。但最最重要的是要知道对方为什么会这样处理。
所以,个人觉得多动手、多思考、多总结,不知不觉的就成为别人咨询的目标了。
愚见,仅此。

#18


主要靠自己在实践中总结

#19


主要靠自己在实践中总结

#20


15楼说的好。我是搞硬件的,看见好的程序,理解不到精髓、

#21


唯有实践加学习总结

#22


硬件的资源有限,不可能像在PC上随便使用,对于MCU来说更是如此
因此,我建议多看些基于硬件基础上的编程书,不要多看PC上的程序

#23


《高质量C、C++编程指南(林锐博士)》,看看这本书吧 

#24


自己多练习,体会吧,现在学习单片机的虽然多,但是嵌入式方向是趋势,你同时可以多接触一些嵌入式方面的知识

#25


数据结构,算法导论,C程序设计语言等等...

实在不行就先背下来

#26


代码不是问题
可维护可升级的一个结构才是

#27


一个好的编程习惯会是一个非常好的助力!!!

#28


如果工作了,就问问你们老大.

#29


跟楼主同样困惑,学习学习!

#30


找经典的计算机体系结构以及操作系统(这个比如现代操作系统,minix的那个)的书学好,同时找个实际些的项目做做,比如说实现个U盘了,读卡器了之类的,在上面实现任务调度,常用的通讯协议,比如USB,SPI,I2C等,这些下来基本上你就自己能搞定不少东西了。

#31


诶 大学的时候对所有偏硬件的东西都搞不明白

#32


先规划再写代码.

#33


不愧是大师级别

#34


这个需要一定的语言基础`!!

#35


本人也在学习单片机。。。感觉有难度

#36


单片机编程学习中,感觉写代码先看硬件

#37


先规划,后编写
上次有个高手,强烈抨击了教科书的单片机教科书
你可以看看他那篇文章,我觉得不错

#38


学习下  

#39


学习单片机只是为了解决问题,那么,就根据硬件条件,结合任务需求,将功能细分,以模块化开发吧,在完成任务的前提下,以界面作为第一诉求,谈不上什么精神,好用才是王道!
把玩单片机却是为了艺术创造,那么,就根据硬件条件,结合自己理念,将功能强化,以高效率开发吧,在达到功能的前提下,不要考虑什么模块,不要在乎什么界面,有自己的风格,最高的效率,最短的代码为第一诉求,小而强就是终极。

忘掉windows吧,忘掉那些v开头的程序吧。我们甚至不需要汇编,机器码和硬件才是梦境中的红娘和莺莺。

#40


最好找个师兄或师傅带带

#41


回复 ,mark,赚分罢了,无奈啊

#42


好好学就OK了

#43


呵呵呵 多看成品程序

自己多体会就可以了 

也算比较简单的方法了吧

#44


正在学习中,谢谢楼主

#45


重点是程序的灵魂——即程序实现所反映出来的设计思路、思想和理念。这些都是积累。

一个有学有肉,而没有灵魂的人体,也是枉然 :)

#46


我也是菜鸟,多练。

#47


在准备学习单片机  看窑子 还要挑战一下自己 呵呵  有难度啊

#48


好像没什么有效的解决方案呀!

#49


帮你顶······

#50


大学基础课程学好,加上看楼上一些书即可获得合理的进步,呵呵。

#1


同求 mark

#2


1).51单片机C语言应用程序设计实例精讲 
51单片机C语言应用程序设计实例精讲(第2版)
作者:戴佳,戴卫恒,刘博文 编著   出版社:电子工业出版社   出版时间:2008年12月 
2).单片机应用技术
作者:谭立新 主编   出版社:中南大学出版社   出版时间:2009年09月 

#3


大学基础课程学好,加上看楼上一些书即可获得合理的进步,呵呵。

#4


思想不是学而是领悟的
所以要提升自己的思维能力不要拘泥于以单片机学单片机,生活中的大量解决问题的方法都可以引申到学好单片机之中,比如PC程序的技能技巧通过消化吸收转化到单片机程序中就可能会起到明显作用

#5


主要是不断的学习和优化自己的代码,注意总结和创新

#6


主要是不断的学习和优化自己的代码,注意总结和创新

#7


主要靠自己在实践中总结

#8


靠自己的领悟 这个东西没法教 更没法看明白 多做自然就有想法了

#9


从网上找写好的软件框架,好好分析,了解高手都是咋编程的,另外,你只有对你的软件特别熟的时候 才可能优化你的程序,这要靠慢慢积累经验的

#10


学习下

#11


研究金字塔的结构

#12


准备学习单片机。

#13


必须在实践中总结!

#14


单片机编程,更多的时候是针对硬件的,所以需要有一定的针对性,利用好单片机的功能管脚,合理的使用硬件,可以减少程序的运算,实际上就是软硬件互补。要想有“灵魂”,就要做有心人,算法的学习和应用很重要!但是最终的目的还是要实现功能!

#15


    我也和lz有同感,我是原来是搞软件的。只是因为工作需要,*学习的51单片机c语言编写。在学习开始阶段,主要是看公司原来那些搞硬件的工程师留下的程序。虽然是用c写的,但结构那个一个叫乱,可读性和汇编语言写的有一拼。
    后来随着学习的不断深入,我开始从网上下载高人的一些代码,还有就是多看keil c本身自己带的demo程序和一些linux内核代码片段(主要是看程序结构及处理问题的思路),然后结合以前学习的软件知识以及51本身的一些特性,逐步总结出了一些思路。
   1、在编写程序的时候,先分析所要实现的功能,然后功能细分为模块,实现程序的模块化,这样在将来代码修改,维护上都会带来很大的方便。
   2、将与硬件有关的部分代码(驱动部分)和与事物处理有关的部分的代码分开。
   3、参考windows编程中的消息队列,多采用发消息方式进行对任务的处理,这样既可以提高cpu的使用率,还可以使程序结构清晰明了。
   4、变量名称定义要统一,名字要有意义。这点主要是为了日后的代码维护。我的前辈给我留下的代码,变量名十分随意,阅读起来十分费力。具体可参考匈牙利法或者其它方法。
   5、代码格式要规范整洁。可参考华为《c语言规范》
   6.......
后面的暂时还没想起来,以后想起来在随时补充。

这只是我的一些学习经历和想法,可能有很多地方不成熟,请广大高人指点。

#16


单片机体系结构不说精通也要熟悉,学习单片机软硬都要抓,所谓的编程思想还是自定多遍多练多总结的别人的经验没什么参考价值,因为单片机的程序都是特定环境下为满足特定功能的,不具有通用性

#17


思想本身就是一个抽象的东西,重在领悟,具体点儿说白了就是多想多思考。
可以肯定的说,教材是要看的,但看教材只能理解对方的处理方法,顶多掌握后日后自己使用。但最最重要的是要知道对方为什么会这样处理。
所以,个人觉得多动手、多思考、多总结,不知不觉的就成为别人咨询的目标了。
愚见,仅此。

#18


主要靠自己在实践中总结

#19


主要靠自己在实践中总结

#20


15楼说的好。我是搞硬件的,看见好的程序,理解不到精髓、

#21


唯有实践加学习总结

#22


硬件的资源有限,不可能像在PC上随便使用,对于MCU来说更是如此
因此,我建议多看些基于硬件基础上的编程书,不要多看PC上的程序

#23


《高质量C、C++编程指南(林锐博士)》,看看这本书吧 

#24


自己多练习,体会吧,现在学习单片机的虽然多,但是嵌入式方向是趋势,你同时可以多接触一些嵌入式方面的知识

#25


数据结构,算法导论,C程序设计语言等等...

实在不行就先背下来

#26


代码不是问题
可维护可升级的一个结构才是

#27


一个好的编程习惯会是一个非常好的助力!!!

#28


如果工作了,就问问你们老大.

#29


跟楼主同样困惑,学习学习!

#30


找经典的计算机体系结构以及操作系统(这个比如现代操作系统,minix的那个)的书学好,同时找个实际些的项目做做,比如说实现个U盘了,读卡器了之类的,在上面实现任务调度,常用的通讯协议,比如USB,SPI,I2C等,这些下来基本上你就自己能搞定不少东西了。

#31


诶 大学的时候对所有偏硬件的东西都搞不明白

#32


先规划再写代码.

#33


不愧是大师级别

#34


这个需要一定的语言基础`!!

#35


本人也在学习单片机。。。感觉有难度

#36


单片机编程学习中,感觉写代码先看硬件

#37


先规划,后编写
上次有个高手,强烈抨击了教科书的单片机教科书
你可以看看他那篇文章,我觉得不错

#38


学习下  

#39


学习单片机只是为了解决问题,那么,就根据硬件条件,结合任务需求,将功能细分,以模块化开发吧,在完成任务的前提下,以界面作为第一诉求,谈不上什么精神,好用才是王道!
把玩单片机却是为了艺术创造,那么,就根据硬件条件,结合自己理念,将功能强化,以高效率开发吧,在达到功能的前提下,不要考虑什么模块,不要在乎什么界面,有自己的风格,最高的效率,最短的代码为第一诉求,小而强就是终极。

忘掉windows吧,忘掉那些v开头的程序吧。我们甚至不需要汇编,机器码和硬件才是梦境中的红娘和莺莺。

#40


最好找个师兄或师傅带带

#41


回复 ,mark,赚分罢了,无奈啊

#42


好好学就OK了

#43


呵呵呵 多看成品程序

自己多体会就可以了 

也算比较简单的方法了吧

#44


正在学习中,谢谢楼主

#45


重点是程序的灵魂——即程序实现所反映出来的设计思路、思想和理念。这些都是积累。

一个有学有肉,而没有灵魂的人体,也是枉然 :)

#46


我也是菜鸟,多练。

#47


在准备学习单片机  看窑子 还要挑战一下自己 呵呵  有难度啊

#48


好像没什么有效的解决方案呀!

#49


帮你顶······

#50


大学基础课程学好,加上看楼上一些书即可获得合理的进步,呵呵。