顶楼主。
我72年的,计算机专业。我来聊聊单片机中级的吧,入门的就不说了。有了单片机基础之后,就要多做项目,提高自己的单片机开发水平。一般来说,不是涉及高频的项目,一般软硬件是一个人开发搞定的。赞同楼主说的,以51内核单片机为入门单片机,一定要采用keil c51编译器。
51单片机开发中级水平要掌握以下技术:
1.熟练掌握汇编语言,要求能做到:
a.所有汇编语言111条指令的应用;各汇编伪指令的熟练掌握。
b.项目软件分模块、多个文件编写,
c.养成良好的编程习惯、软件编写规则,自己网上google。
d.模块之间的子程序互相调用、跳转。
e.各模块自带各自的包含文件。
f.完全用汇编语言完成至少两个大项目,10k以上代码量吧。
g.学习并研究良好的程序架构,至少掌握时间片工作方式。为以后采用os和学习arm打下坚实基础。
h.整个程序尽量不采用软件循环做延时,尽量用定时器来延时。为以后嵌入os做准备。
i.中断里面尽量快速出来。
j.整个程序尽量少关中断,最好不关中断。这样能保证程序的坚固性。我的程序主循环里是从来不关中断的。
k.有兴趣有时间的话可以写一个顺序结构的项目。顺序结构占用较少的片内资源,实时性是最高的,顺序结构里允许根据需要随时关闭中断。
l.多读优秀的程序。学习别人的优点,为自己所用。
m.了解反汇编,能够从反汇编程序中判读程序。
2.熟练掌握keil c51 编译器,及其特性,采用c语言与汇编语言混和程序设计:
a.和汇编一样,掌握c语言编程。
b.掌握c语言与汇编语言之间的相互调用,例如:c函数编译后以下划线_开头,带形参的增加问号?,形参放在r寄存器中等规则,声明后可由汇编程序调用;同样的,可以编写汇编语言子程序,由c语言在程序中作为函数调用。这样,可以方便修改和编写别人和自己的程序。
c.c程序中嵌入汇编语句,google找去吧。
d.掌握keil c51编译器编译规则,例如同样一个循环语句:for(i=0; i>=100; i++)与for(i=100; i==0; --i)循环语句,同样是100次循环,但是编译的时候有很大区别,前一个for循环
采用inc i 并判断swr的z位再作循环判定,而后者for循环则会仅采用djnz指令进行编译,代码效率可以提高不少。类似的指令不胜枚举。
e.研究程序的内存管理、数据管理、实时性以及优良的程序结构。
f.研究操作系统,可以以keil c51自带的tini和full操作系统作为研究基础,可以提高数据结构原理及编程思想(算法)。
g.自己设计一套简单实用的单片机软件架构,提高编程效率。这个架构要能够接近真实的操作系统来做,但又是适合单片机实用的程序架构。
3.研究单片机的设计技巧:
比如做程序陷阱、程序加密;掌握多种单片机程序设计,如:avr单片机。单片机数据结构设计;多单片机协处理项目开发等等,练去吧........