严均 周煌辉
摘要:本文简要阐述了C语言在单片机程序开发中的应用优势,就C语言在单片机开发中的具体步骤进行了分析探讨,包括开发工具的选择与安装、建立源文件、调试编译程序以及生成HEX文件,并在此基础上提出了C语言在单片机开发应用过程中应注意的一些事项。
关键词:C语言;单片机开发;C语言编程
中图分类号:TP393 文献标识码:A
文章编号:1009-3044(2020)03-0265-02
C语言是一门面向过程的高级计算机编程语言,与汇编语言相较,利用C语言进行编程工作量少,可读性好,易于修改、移植和调试,且可以保证代码质量。由于C语言兼顾了高级语言与汇编语言的优点,且不需要任何环境支持便可以运行,普适性强,因此在编程领域得到了广泛的运用。运用C语言进行单片机程序的开发,开发者无须对单片机硬件结构进行全面了解也可以进行高效编程,这为单片机程序开发提供了很大的便利,使得单片机程序开发变得简单且可靠。本文基于单片机程序开发实践,就C语言在单片机开发中的应用进行分析探讨,以期能够为广大单片机程序开发者提供一些参考与借鉴。
1 C语言在单片机程序开发中的应用優势
单片机属于一种微型计算机,具有体积小、功耗小、功能强大等特点,在工业控制领域及现代电子产品设计中具有广泛的应用。单片机除对体积、功耗等具有严格要求外,还依赖于应用程序的开发。由于单片机内部存储器的存储空间较小且对运行效率要求较高,因此,对于应用程序开发来说,必须要考虑编译代码所占的空间大小问题及运行效率问题。汇编语言属于第二代编程语言,是面向机器的程序设计语言,其特点是保持了机器语言优秀的执行效率,能够直接控制硬件,同时具有可读性及简便性,且程序占用存储空间少,这些特点十分契合单片机程序的开发要求,因此,单片机程序开发中汇编语言的应用十分广泛。但汇编语言作为一种面向机器的语言,对于开发者来说并不是十分友好,主要表现为程序代码的可读性较差、编写和调试复杂、移植困难等。
C语言兼顾了高级语言与汇编语言的优点,相较于汇编语言,具有更高的可阅读性,便于理解,调试、修改更为容易简便;更为重要的是,其具有良好的可移植性,大大提高了程序的重复利用率,有助于程序开发人员提高程序编写效率。C语言的跨平台特性是其最为显著的特征,这使得用C语言编写的程序可以在不同的计算机平台稳定运行,大大提高了程序开发者的工作效率,减少了成本。C语言拥有34种运算符,数组、指针等多种表达方式,库函数丰富,运算结构简单易懂。由于C语言包含了单片机的指令集,因此,对于一些简单的单片机程序开发,即使程序开发者不了解单片机的硬件结构,也可以用C语言编写出高质量的程序代码。C语言将程序开发分解为多个互不影响的功能模块,这使得后期优化变得更为便利[1]。随着单片机的应用范围不断拓展,C语言凭借其强大的功能及特性,在单片机程序开发中的应用优势日益明显,得到了单片机开发者的广泛应用。
2 C语言在单片机开发中的具体应用步骤
2.1 开发工具的选择与安装
C语言开发工具的选择与安装是运用C语言进行单片机开发的首要环节。C语言开发工具又叫C语言编译器或集成开发环境,C语言的编译器有很多种,不同的平台下有不同的编译器,如Windows下常用的是微软编译器cl.exr,Linux下常用的是CUN组织开发的GCC,Mac下常用的是LLVM/Clang。安装编译器或者IDE(集成开发环境),也叫搭建开发环境。Windows下的C语言IDE众多,常用的包括Visual Studio、Dev C++、VisualC++6.0等。
Visual Studio(简称VS),它是Windows下的标准IDE,但是VS安装包有点庞大,下载不方便,安装时间较长,而且会安装很多暂时用不到的工具。Dev C++是一款免费开源的C/C++IDE,内嵌CCC编译器(Linux GCC编译器的Windows移植版),优点是体积小(只有几十兆)、安装卸载方便、学习成本低,缺点是调试功能弱。Visual C++ 6.0(简称VC 6.0)是微软开发的一款经典的IDE,但VC 6.0是1998年的产品,在Win7、Win8、Winl0T会有各种各样的兼容性问题,甚至根本不能运行,目前基本只作为教学工具来使用。除上述开发工具外,Windows平台下还有很多其他的IDE,如Code::Blocks是一款开源、跨平台、免费的C/C++ IDE,它和Dev C++非常类似,小巧灵活,易于安装和卸载,不过它的界面要比Dev C++复杂一些;Turbo C是一款DOS年代的C语言开发工具,程序员只能使用键盘来操作Turbo C,不能使用鼠标,所以非常不方便。但是Turbo C集成了一套图形库,可以在控制台程序中画图,所以至今仍然有人在使用;C-Free是一款国产Windows下的C/C++ IDE,整个软件只有14M,非常轻巧,安装也简单,界面也比Dev C++漂亮,缺点也是调试功能弱。这些工具在功能、难易度等方面各异,实际应用中可以根据具体的单片机设计来合理选择。
2.2 建立C源文件
搭建好开发环境后,在开始编程前,首先需要创建一个新的项目,可以用项目特征来进行命名,选择好存储路径即可完成新项目的建立。这里需要注意的是,项目名称和存储路径最好不要包含中文。接下来就是在所创建项目中添加源文件,可以是新建文件也可以将以往程序文件内容添加到项目当中;之后需要再创建一个全新的语言程序文件,并在文字编辑窗口中利用void、signed、intint、void、restrict、return、continue等C语言基本语言结构对所需要的单片机程序进行逐步编写,并在编写任务完成后保存文件并生成最终的C语言文件[2]。
2.3 调试编译程序
在程序代码编写完成之后,后续一项重要的工作就是进行调试编译。调试编译属于C语言在单片机程序开发中的一个至关重要的中间环节,目的是对编写好的程序进行检查与完善,找出源文件中存在的BUC并进行及时的修正。在此阶段,程序开发人员可以借助编译器提供的调试模式对源程序进行仿真调试,调试过程中程序开发人员要悉心观察程序仿真运行过程,完成对源程序的完善。编译是将C语言编程文件转换成机器可以识读的文件,编辑器自动完成编译工作并生成目标文件。生成的目标文件需要进行整合并链接,如果代码没有错误,则编译器会显示链接成功,并生成一个完整的可执行文件。
2.4 生成HEX文件
生成HEX文件可视为单片机C语言程序开发的最后一个环节,借助编译器,C语言程序在完成编译后可以生成格式文件HEX,以便被单片机获取和执行。能够顺利生成HEX格式文件,基本可以表明单片机C语言程序开发任务已经完成,在此基础上,借助编译器可以将单片机HEX格式文件写入到存储器中,并通过仿真器对所设计的单片机程序的性能进行测试、调整。
3 C语言在单片机开发中应用的注意事项
3.1 关注编程代码效率的提升
目前,C语言已经在单片机程序开发中被广泛应用,但作为一种高级语言,C语言程序代码执行效率是程序开发者应重点关注的问题。首先,应合理选择数据类型,若可以使用字符型(char)变量,就不要使用整型变量;其次,在C语言实际应用中,执行浮点数运算时常选用double型,因为float型的精度偏低,且双精度浮点数和单精度浮点数的计算代价相差无几。事实上,对51单片机来说,双精度运算比单精度运算的速度快。第三,应对各类C语言编译器进行充分的了解,结合编程实际合理选择编译器。同时,还应将单片机C语言编程中出现的高频率程序与对应的汇编语言行数进行比较汇总,对编译效率形成一个清晰的认识,进而提高单片机C语言编程代码的编译、执行效率[3]。
3.2 变量类型的定义要明确
一些程序开发者受程序编写习惯的影响,程序编写过程中往往不考虑函数内外情况,在程序初始位置直接定义新的变量,虽然原则上并不会构成程序编写错误,但一定程度上会对程序的执行产生不利影响。因此,在C语言程序编写过程中,要注重变量类型定义的明确化,并依据编译器版本的不同,对变量放置位置进行合理选择。如:一般来讲在C90版本的编译器中,全局变量属于函数外,只可以放置于引用之前,而在最新的C99版本中局部变量则可以被灵活的放置于任何位置。
参考文献:
[1]葉晓龙.51单片机C语言编程技巧探讨[J].信息与电脑:理论版,2019(04):66-67.
[2]张延梅,论C语言在单片机开发中的应用[J].信息技术与信息化,2018(11):78-80.
[3]张神.C语言在单片机开发中的应用分析[J].江苏科技信息,2017(18):47-48.