然而,做过多年软件开发的我,看到以前写的汇编代码也是很多不懂的,这可是自己亲手写的呀。汇编代码由于其可读性比较差,给后期的维护造成很大的困难。因此建议单片机的学习者们一定要学习C。
这句话要是我在读书的时候听到,只是会嗤之以鼻。“用汇编就足够了,为什么用C呢?如果您用汇编做不了,说明水平还不够”,这是我的典型想法,当时我的汇编水平甚至成为我的骄傲。然而几年之后的今天,我要劝说后来学习者一定要舍弃汇编而学习C语言,是否很好笑。
首先说说C的优点。
1、直观,可读性强:这点很重要。对于一个产品,周期是很长的,即使出第一台产品之后,还有很长的维护时间。这中间维护人员可能经常变动,如果可读性强,将给维护工作省下很大的成本。即使是在开发,可读性强的程序也便于查错。
2、模块化可以做的很好:这点也是很重要的。模块化做得好,当然程序的重用性就高。对于公司来说,这一点是关系到公司长远发展的。程序可以重用,说明下一次开发的投入就可以减少,时间也可以加快,多好的事呀。
还有很多有点,当然也就是高级语言相对于汇编语言的优点,这里就不一一列举了。
再来看看汇编的优点:应该来说,汇编语言操作硬件直观,对于硬件非常熟悉的人来说,直接操作很方便。另外可能就是很多人说的效率要高了。
针对以上两点我来说说,首先“汇编语言操作硬件直观”,这是在代码编写阶段,对于整个产品周期来说,应该是要避免使用汇编语言的,这个在C语言的优点中已经说明。对于第二点,效率问题,目前C语言的编译器优化也做得很好,对于一个汇编不是很熟练的来说,C编出来的程序应该不会效率比汇编低。当然这样就对开发人员的要求降低了很多,人员的限制也就没有那么严格。另外是否真的是效率问题呢。我觉得应该是一个整体效率和局部效率的均衡问题。需要提高的是整体的效率。一个好的软件架构,远远比一个好的函数效率要高的多。因此主要的精力应该放在软件的架构上。另外现在CPU的速度不停的往上提,CPU越来越快,这点应该也可以弥补程序的效率吧。
当然,我的意思不是不学习汇编。汇编对于熟悉硬件有很大的好处,应此汇编语言在学习初期一定是要学习的。在基本的硬件熟悉之后,就可以转向C了。
上一篇:C8051F软件新建工程流程(Silicon IDE)
下一篇:高速SOC单片机C8051F
推荐阅读
史海拾趣
Cornerstone Sensors一直致力于技术创新和产品升级。公司不断投入研发资源,探索传感器技术的新应用和新领域。例如,公司率先推出了具有自校准功能的智能传感器,大大提高了产品的使用便捷性和准确性。此外,Cornerstone Sensors还积极探索物联网、人工智能等新兴技术与传感器的结合点,为行业发展注入了新的活力。
在成功推出数学协处理器后,Cyrix于1992年推出了其第一款CPU——486SLC和486DLC。这两款产品旨在与英特尔的486SX和486DX竞争,并因其引脚兼容性和低廉的价格而广受制造商欢迎。尽管其性能略逊于英特尔的同类产品,但Cyrix凭借价格优势在市场上占据了一席之地。
1999年,Cyrix再次被威盛电子(VIA)收购。这次收购后,Cyrix所生产的CPU产品上开始出现了两个商标:VIA和Cyrix。这种双标现象反映了Cyrix在被收购后的地位变化。随着时间的推移,Cyrix的商标逐渐淡出市场,最终被彻底放弃。
在电子行业的激烈竞争中,Bomar Interconnect公司凭借持续的技术创新,逐渐崭露头角。公司研发团队不断深入研究新型连接技术,成功推出了一系列高性能、高可靠性的连接器产品。这些产品在市场上获得了广泛认可,为公司带来了稳定的收入来源。同时,公司还积极投入资源,加强与其他企业的技术合作,不断拓宽产品应用领域,进一步提升了公司的市场竞争力。
随着科技的快速发展和市场需求的变化,CEI不断调整自身的发展战略和业务结构。公司加大了对新技术、新产品的研发投入,推动产业结构的升级和转型。同时,CEI还积极探索新的商业模式和市场机会,为公司的可持续发展提供了有力保障。
1966年,Coherent Inc.由一群斯坦福大学的研究人员共同创立,其中包括物理学家James Hobart。初创时期的公司致力于激光技术的研究和开发,逐渐积累起了丰富的技术底蕴。这种对技术的执着追求和不断探索,为公司的后续发展奠定了坚实的基础。
|
寒假回家前人品爆发第三帖。 书名:测试技术与测试信号处理 作者:吴正毅 版权:清华大学出版社 版次:1991年4月第一版 总页数:251 文件格式:PDF 文件大小:6.12M 压缩包数:2 内容简介 本书论 ...… 查看全部问答∨ |
|
|
请教在qte中的designer图形设计中如何把图片设为背景图跟覆盖按钮? 请教在qte中的designer图形设计中如何把图片设为背景图跟覆盖按钮?小妹刚接触qte什么都不懂,拜求高手,谢谢!… 查看全部问答∨ |
|
|
有没有人用过real6410开发板,现在碰到几个问题希望有经验的玩家能给点建议。 1 usb 连接不上 驱动也装了dnw就是没反应 2 sd卡制作uboot时候出啦点小问题 找不着sd卡,后来用了别人机器好不容易弄制作啦uboot 结果加载uboot后串口不出任何信息。 ...… 查看全部问答∨ |
|
|
本人是初学者,对LWIP数据拆分包不是很了解,在S2E中telnet.c中的telnethandle程序中if(SerialReceiveAvailable(pState->ulSerialPort) &&tcp_sndbuf(pState->pConnectPCB) &&(pState->pConnectPCB->snd_queuelen < TCP_SND_QUEU ...… 查看全部问答∨ |
void Timer1Config(void) { TIM1_DeInit(); TIM1_TimeBaseInit(0, TIM1_COUNTERMODE_DOWN, 10000, 0); TIM1_ICInit(TIM1_CHANNEL_1, TIM1_ICPOLARITY_RISING, TIM1_ICSELECTION_DIRECTTI, TIM1_ICPSC_DIV8, 0x0); TIM1_I ...… 查看全部问答∨ |
|
我刚开始接触dsp,想问问个位大哥关于2407的外部ram扩展时: 扩展CY7C1021时 1、为什么A15管脚LF2407要用一个逻辑阵列芯片:GAL16V8,而F2407啥都不用呢? 2、为什么DS、PS、CS的连接LF2047要用GAL16V8,而F2407用廉价的74H08就行了呢。… 查看全部问答∨ |



XC6406PP60DL






京公网安备 11010802033920号