C语言在单片机中的应用研究

2021-02-07 07:52江苏省徐州医药高等职业学校邓如兵
电子世界 2021年1期
关键词:流程图C语言分支

江苏省徐州医药高等职业学校 邓如兵

C语言是一种高级计算机编程语言,在51系列单片机中通常使用专用的C51语言为单片机编程,C51能够直接操作硬件资源,提高了编程效率。

计算机语言分为低级语言和高级语言,单片机作为计算机系列中的专用计算机,在开发单片机应用系统时,也可以采用低级语言和高级语言。单片机常用的应用系统开发语言是汇编语言和C语言。汇编语言有其代码短小、运行快速的优点,但是有一个让编程人员难以掌握的缺点。本文以51系列单片机为例,介绍C语言在单片机中的应用方法。

1 C语言和单片机概述

C51是一种用于51系列单片机编程的C语言,具备高级程序设计语言的特点,同时能够直接操作硬件资源。C语言的三种基本结构包括顺序结构、分支结构和循环结构;分支结构有双分支结构和多分支结构;循环结构有当型循环结构、直到型循环结构。单片机程序设计也离不开这三种基本结构的运用。

单片机通常是为实时控制应用而设计制造的,把中央处理部件、存储器和各种输入/输出接口等集成在一块芯片上。Intel公司设计的51系列单片机是单片机中应用最广泛的经典机型。

2 C语言算法表达

在利用单片机处理应用需求的时候,通常需要进行算法描述,可以用自然语言、伪代码、传统的流程图、N-S盒图和PAD图来表示。一般习惯用传统的流程图、N-S盒图和PAD图来表达程序算法。这三种算法流程可用顺序结构、双分支结构、多分支结构、多分支结构、直到型循环结和当型循环结构表达。基本结构图如图1、2、3所示。

在单片机算法设计中,可以根据应用的需求,合理选择传统的流程图、N-S盒图和PAD图来绘制程序算法流程图。简单的算法描述,通常选择传统的流程图就可以完成。而在复制算法表达上,适合采用结构化层次分明的N-S盒图和PAD图来绘制程序算法,结合算法表达,实际编程最好采用模块化、结构化的方法。

图1 传统的流程图的基本控制结构顺序结构

图2 N-S盒图的顺序结构

图3 PAD图的顺序结构

表1 程序结构排列表

3 单片机中的应用方法

3.1 C51语言编程

程序结构排列见表1。程序结构按顺序依次是头文件引入、宏定义(可选)、自定义函数声明(可选)、主函数(必选)、普通子函数(可选)、中断子函数(可选)、中断子程序(可选)。保存好的程序文件扩展名为*.c,头文件扩展名为*.h。

部分源代码示例如下:

3.2 C51加多任务操作系统编程

多任务实时操作系统可选用rtx-51 tiny系统,实时操作系统引入到单片机程序设计中,rtx-51 tiny系统没有主函数,主函数就是任务0函数,程序从任务0开始执行。其它任务要写成无限循环的形式。中断子函数写法可以采用常规写法,但是为了防止占用系统中断,最可靠的写法是在中断函数里只是把信号发给另外一个任务,让另外一个任务来处理中断应用服务。

部分源代码示例如下:

3.3 C51语言混合编程方法

在Keilc软件中做好对应的选项设置,编译后即可生成目标代码。编程时候要注意现场保护和工作寄存器空间的分配,防止寄存器冲突。

部分源代码示例如下:

4 开发方法

在单片机集成开发工具中,利用C语言写出应用程序,再使用编译器排除错误,再把写好的代码编译为机器码,同时生成HEX文件,最后利用编程器或者在线编程软件把HEX可执行文件写入单片机内。写入的代码在样机中进行运行调试,成功后就可以批量生产。

为了提高单片机应用系统的开发效率,通常可用利用proteus软件来仿真处理器及其外围电路,把硬件电路利用仿真软件来进行模拟仿真;结合程序开发软件,能够对设计项目反复进行修改和测试,待设计项目功能实现后再对样机进行实机调试。

51系列单片机常用的编程软件是keil软件,提供了包括C编译器、宏汇编、连接器、库管理和仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。它支持众多不同公司的51架构的芯片,它的界面和常用的微软Vc++的界面相似,界面友好,易学易用。

Keil uVision编程中的常见错误:C51编译器识别错误类型有三种。致命错误:伪指令控制行有错,访问不存在的源文件或头文件等。语法及语义错误:语法和语义错误都发生在源文件中。

总结:C语言的应用,极大的方便了单片机应用系统的开发。在单片机中编程常用的方法是直接采用C语言编写系统和应用程序,还可以借用专用的操作系统内核构建应用系统,或者有特殊要求的情况下,可以采用嵌入汇编语言进行混合编程。

猜你喜欢
流程图C语言分支
基于Visual Studio Code的C语言程序设计实践教学探索
巧分支与枝
基于C语言的计算机软件编程
一类拟齐次多项式中心的极限环分支
高职高专院校C语言程序设计教学改革探索
专利申请审批流程图
专利申请审批流程图
论子函数在C语言数据格式输出中的应用
宁海县村级权力清单36条
生成分支q-矩阵的零流出性