首页 > 编程知识 正文

单片机三大编程语言,单片机编程语言

时间:2023-05-05 08:00:15 阅读:124984 作者:2175

作为一种结构化的编程语言,c语言的特点是可以将硬件操作降到最低,具有强大的功能性、结构性和可移植性,经常被选为单片机系统的编程语言。 但是,基于单片机的c语言与标准c语言有很大的区别,如何结合单片机的系统资源,用c语言开发符合实际工程需要的单片机系统,是程序设计人员所关注的正文引用来源: http://www.eepw.com.cn/article/171801.htm

单片机c语言的主要特点

与汇编相比,用c编写程序更符合人们的思维习惯,开发人员可以摆脱不必要的硬件接触,专注于思考功能和算法而不是细节问题,从而缩短开发和调试的时间。 由于c语言具有很好的程序结构适合模块化编程,在用c语言设计单片机APP应用时,首先尽量采用结构化编程方法,将功能模块化,在不同的模块中由此,APP应用程序整体的程序结构变得明确,调试和维护变得容易。 的每个功能模块分别指定适当的入口参数和出口参数,对重复调用的程序一般进行函数化,可以减少程序代码的长度,便于程序整体的管理,提高可读性和可移植性。

在实际的单片机编程中,程序结构一般采用以下结构。

#includereg51.h /*头文件的说明部分*

1个,2个无符号字符; /*全局变量声明部分*

. function1(. (() (/*功能函数定义部分) /

. }

主()。

inti,j; /*整数变量声明部分*

功能1 (…; /*功能函数的说明部分*

. }

2单片机c语言与标准c语言的区别

目前,很多产品都是由单片机开发出来的,完成的计算和控制工作也越来越复杂,而单片机系统是一个资源非常有限的系统,这主要表现在程序内存资源的不足,所以在程序设计时就这样做了用c语言编程有很多优点,但是生成的代码比较长,编程技术不好也可能比用汇编语言生成的代码长数倍,所以对编程人员来说,单片机的c语言和一般意义上的标准c语言之间的差距很大

2.1选择数据类型

单片机c语言编程不同于一般c语言编程的一个明显特点是与程序存储器资源相结合。 提供的数据类型足够丰富,但只有bit和char等数据类型是直接受机器语言支持的数据类型,用这种数据类型的语句生成的代码很短。 其他数据类型(如整数类型和浮点类型)需要内部程序或内部函数的支持,在这类数据类型的语句中生成的代码相对较长。 有些c语言程序在表面上看起来非常简单,但实际编译后,生成的代码会相当长。 因此,根据实际需要合理选择数据,可以大幅减少生成的代码长度。 例如,C51各数据类型变量占有的存储器字节数和编译后生成的代码长度如表1所示为:

表1按数据类型划分的占用内存字节数和代码长度的比较

从表1可以看出,根据数据类型生成的机器代码长度很不相同,相同类型的数据类型有无符号也会影响机器代码长度。 程序编译时生成的机器代码长度的数据类型的优先级越高,不同的数据类型在程序运算时被转换为优先级越高的数据类型,代码长度也相应地变长[2]。 因此,必须尽可能使用bit、char等机器语言直接支持的数据类型,将无符号数的变量声明为无符号数,并尽可能减少程序中使用的数据类型类型。

2.2算法设计问题

单片机c语言与标准c语言有很大的区别,在计算机上进行c语言编程时不需要考虑程序代码的长度,所以只考虑程序功能的实现即可,而在单片机上进行c语言编程时需要考虑系统的程序算法可能很简单,并不是长度越短越好。 生成的机器代码的长度非常长,因为有调用内部子程序和函数的算法。 由于不同算法对程序代码长度的影响较大,在进行程序设计时,尽量采用程序生成代码较短的算法,可以采用一些优化算法而不影响程序功能的实现[2]。

将单片机c语言编译成机器码时,运算生成的机器码长度差异较大,尽量减少程序中某一数据类型的运算种类,数据类型越复杂越有效。 进行数据计算时,在一定精度范围内,可以在几个近似计算中进行几个运算,可以减少大量的代码而不损害精度。 例如,逻辑AND/建模比MOD/%操作更有效。

用热敏电阻测量温度时,可以根据热敏电阻-温度特性公式求出。 公式表示为:

rt=rt0expb(1/t-1/T0 ) )。

直接按照公式温度,程序结构简单,算法复杂度不高,但程序调用Math.h文件的对数函数,编译机器码时函数在1K字节以上,一般只有几k字节的单片机系统考虑到系统资源的问题,可以用替代方法——查找表法实现算法。 只要将一定温度范围内的不同温度值与热敏电阻的电阻值相对应地制作表格,就可以根据系统求出的电阻值进行检测,如果进行插补,就可以求出对应的温度值。 该算法比前面公式的算法复杂、高,c语言程序代码也长,但编译成机器码时,代码长度短,只是

一、二百字节。

3  数据存储器的分配

单片机内部数据存储器RAM只有几百字节,如果扩展外部存储器RAM来提高数据存储量话必将会增加了硬件成本,使系统更加的复杂,访问外部存储器比访问内部存储器所需的代码也要长得多。有效地使用片内存储器、提高存储器空间的利用率对开发者来说十分关键。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。