本帖最后由 zl2168 于 2017-2-27 16:22 编辑
C程序与汇编程序虽各有千秋,但C程序优点更多。
⒊ C51编程的特点
C51编程与80C51汇编语言相比,主要具有以下特点:
⑴ 编程相对方便。
用汇编语言编程,几乎每一条指令操作都与具体的存储单元有关,80C51单片机的片内存储空间容量有限,编程之初即需安排好片内存储单元的用途,且一般不宜重复使用。当一些应用项目程序量较大时,片内存储单元有可能捉襟见肘,稍有不慎就将出错,编程相对复杂。而C51编译系统能自动完成对变量存储单元的分配和使用,且对函数内局部变量占用的存储单元,仅在调用时临时分配,使用完毕即行释放,大大提高了80C51片内有限存储空间的使用效率。因此,使用者只需专注于软件编程,不需过多关注涉及的具体存储单元及其操作指令,编程相对方便。
⑵ 便于实现各种复杂的运算和程序。
C语言具有丰富且功能强大的运算符,能以简单的语句方便地实现各种复杂的运算和程序。相比之下,汇编语言要实现较复杂的运算和程序,就比较困难。例如,双字节的乘除法,汇编语言要用许多条指令操作才能完成;而C51只需一条语句便能方便实现。又例如,循环、查表和散转等程序,C51语句实现起来也相对简单方便(当然C51语句编译转换为汇编语言指令后仍然复杂,只是不用程序员操心,由编译器自动完成罢了)。
⑶ 可方便地调用各已有程序模块。
已有程序模块包括C51编译器中丰富的库函数、用户自编的常用接口芯片功能函数和以前已开发项目中的功能函数。读者可能会说,汇编程序不也一样可以调用吗?不一样。汇编程序调用时,涉及到模块中具体的存储单元,这些存储单元很可能与主调用程序有重复,会引起冲突而出错。而C51程序函数中的变量一般为局部变量,主函数调用前不占用存储单元,仅在调用时由C51编译器根据存储区域空余情况临时分配,使用完毕即行释放,一般不会发生冲突而出错。因此,C51程序可方便地调用各已有程序模块,减少重复劳动,利于团队合作开发,大大提高编程效率。
⑷ 可读性较好。
C语言属于高级语言。一条C51语句,会编译为多条甚至许多条汇编指令(例如数学运算和循环程序等),相对来说,C51程序简洁而清晰,可读性较好。
⑸ 实时性较差。
汇编语言指令每一条对应1~3字节机器码,每一步的执行动作都很清楚,程序大小和堆栈调用情况都容易控制,响应及时,实时性较好。而C51程序并不能被单片机直接执行,需编译转换为汇编语言指令。一条C51语句编译后,会转换成很多机器码,占用单片机片内较多资源,可能出现ROM、RAM空间不够,堆栈溢出等问题;且执行步骤不很明确,有时还会兜圈子,因而实时性较差(参阅例9-3),甚至会因时序配合不好而出错。然而,随着单片机芯片技术的发展,其运行速度和内存容量有了较大提高,这些都为C51的应用创造了有利条件。 以上摘自张志良编著《80C51单片机实用教程——基于Keil C和Proteus》高等教育出版社ISBN 978-7-04-044532-9
|