《单片机C语言编程方法探讨.pdf》由会员分享,可在线阅读,更多相关《单片机C语言编程方法探讨.pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第1 2 卷第4 期V 0 1 1 2lN o 4l,4 0 N l N GH l G H E Rv o c A T l o N A LT E c H N t C A Ll N S T l T U T EJ O U R N A L辽宁高职学报j 罗单片机C 语言编程方法探讨口谭炳菊,富钰(沈阳广播电视大学,辽宁沈阳1 1 0 0 0 3)摘要:介绍了标准C 语言和基于单片机C 语言的特点,以及单片机有限的系统资源对C 语言的限制,并针对单片机技术,分析了单片机C 语言在单片机编程上的优势。关键词:C 语言;单片机;编程;算法i 中图分类号:T P 3 1 5;一,目目#,*目自t o t,$i
2、 5#,一文献标识码:A文章编号:1 0 0 9 7 6 0 0(2 0 1 0)0 4 _ 一0 0 4 3 0 2T A NB i n g-j u,F UY u(S h e n y a n gr VU n i v e r s i t y,S h e n y a n gJ1 0 0 0 3,C h i n a)A b s t r a c t:T h i sp a p e rd e s c r i b e st h es t a n r dCl a n g u a g ea n dCl a n g u a g eb a s e do nt h ec h a r a c t e r i s t
3、i c so fS C M,a n dS C Ms y s t e m sw i t hl i m i t e dr e s o u r c e st oCl a n g u a g e c o n s t r a i n t s,a n df o rt h em i c r o c o m p u t e rt e c h n o l o g y,a n a l y z e st h ea d v a n t a g eo f,m i c r o c o n t r o l l e rCp r o g r a m m i n gl a n g u a g ei nt h eS C M 脚w
4、o r d s:Cl a n g u a g e;S C M;p r o g r a m m i n g;a l g o r i t h m:刍*商d 击知;j|扎一:。“。一。缸。j 一一。f i|。一。|。扦j 一;j j _ 一。;jj;|,二j 一。?j j;量鑫j?t l?协j?。?h 二t;jj|。;?jt。?j j 吼ji j;_ 舀c 语言作为一种编译型程序设计语言,它具有高级语言的特征,如便于结构化的程序设计,具有功能丰富的库函数,具有很强的功能性、移植性,运算速度快,编译效率高,可直接实现对系统硬件的操作等特点,常常被优选作为单片机系统的编程语言。随着单片机性能的不断提高,
5、如何利用单片机有限的系统资源开发出优秀的单片机系统,对于编程者来说是很重要的。一、C 语言、单片机C 语言阐述C 语言除了具有一般高级语言的功能外,还具有汇编语言的功能,它可以很好地操作底层的硬件接口,以及完善的模块化程序结构,为软件开发提供了有力的保障,大大缩短了开发周期,增加了软件的可读性。开发者可以摆脱与硬件的接触,更专心考虑功能和算法,这样就大大减少了开发和调试的时间。C 语言虽然有很多优点,但是它的缺点是占用的资源较多。对于目前普遍使用的R I S C 架收稿日期:2 0 I o _ 一o l-2 0作者简介:谭炳菊(1 9 7 0 _-),女,辽宁沈阳人,讲师。构的8 b i tM
6、 C U 来说,其内部R O M、R A M、S T A C K 等资源都很有限,如果使用c 语言编写程序,一条c 语言指令经过编译后,会变成很多条机器码,很容易出现R O M 空间不够、堆栈溢出等问题。单片机C 语言提供了复杂的数据类型,极大地增强了程序处理能力和灵活性,能够利用单片机上有限的R A M空间,对数据进行了许多专业性的处理,避免了运行中间非异步的破坏。它提供常用的标准函数库,以供用户直接使用,程序员不需要了解单片机的指令集,就能够编写出完美的、符合硬件实际的单片机程序。二、单片机C 语言编程的优势分析1、单片机C 语言的数据类型单片机C 语言编译器所支持的数据类型有c h a
7、r 类型、i n t 整型、l o n g 长整型、f l o a t 浮点型、b i t 位标量、s 行特殊功能寄存器、s f r l 6、1 6 位特殊功能寄存器和s b i t 可录2 0 1 0 年第4 期_ 国万方数据絮辽宁高职学报第1 2 卷第4 期谭炳菊,富钰:单片机C 语言编程方法探讨V o L l 2。N o 4址位等。利用S f r 特殊功能寄存器,能访问单片机内部的所有特殊功能寄存器;利用s b i t 可录址位,能访问芯片内部R A M 中的可寻址位或特殊功能寄存器中的可寻址位。单片机c 语言编程是与程序存储器资源相结合的,而单片机系统资源的有限性主要表现在程序的存储器
8、上。以5 l 系列单片机为例,它是8 位的C P U,要想提高代码的效率,就要减少变量的长度。因此,能用字符型(c h a r)定义的变量,就不要用整型(i n t)来定义,能用整型变量定义的变量就不要用长整型(1 0 n gi n t)。而其它的数据类型,如浮点型数据要有一定的内部程序或内部函数来支持,相对来说生成的代码要长。因此我们应尽可能地使用c h a r、i n t 等数据类型,尽量减少程序中使用的数据类型的种类,合理地选用数据类型,可以大大的减少所生成的代码长度。2、单片机c 语言的算法描述一个算法是由控制结构和原操作构成,而算法的执行时间取决于两者的综合效果。同一个算法用不同的语
9、言实现,用不同的编译程序进行编译,在不同的计算机上运行,效率均不相同。这表明,使用绝对的时问单位衡量算法的效率是不合适的。同一问题的算法的执行时问取决于算法选用何种策略、问题的规模、书写程序的语言,对于同一个算法,实现语言的级别越高,执行效率就越低。编译程序所产生的机器代码的质量,与编译器、机器执行指令的速度有关。单片机C 语言和标准C 语言有很大的差别,用c 语言编写的程序在运行时不用考虑程序代码的长短,只考虑程序的具体功能。但是由于单片机资源的限制,在其上进行c 语言程序时必须考虑代码的长度。但并不是程序的算法越短越好,因为有些算法需要调用子程序和函数,生成的机器代码会更长。所以在程序设计
10、时,可以采用一些优化算法,尽可能采用生成代码短的算法。3、单片机c 语言数据存储器的分配单片机的数据存储器由读写存储器R A M 组成,其最大容量可扩展到6 4 k,用于存储实时输入的数据。8 0 5 l 内部有2 5 6 个单元的内部数据存储器,其中0 0 H-7 F H 为内部随机存储器R A M,8 0 H-F F H 为专用寄存器区。实际使用时,应首先充分利用内部存储器。由于C 语言采用了存储器的覆盖技术,可以在程序连接时,将一些程序段释放的存储器空间重新定义给另一个程序段的变量使用。全局变量是指在程序开始处或各个功能函数的外面所定义的变量。在程序开始处定义的全局变量的作用域是整个程序
11、,因此不能被释放。静态存储变量是指在程序运行期间其存储空间固定不变的变量,由于它在函数的调用中是专用2 0 1 0 年第4 期凼一口的,因此不能被释放,只有局部变量中的动态变量可以被释放。在程序设计时应尽可能使用局部变量,提高内部数据存储器的使用率。提高存储器的利用率、弄清内部数据存储器的结构和地址分配对开发者来说十分重要的。4、单片机c 语言的代码优化存储器的模式有S M A L L、C O M P A C T 和L A R G E 三种模式,S M A L L 模式是小模式,所有的变量都指定存在内部R A M 的o _ _ o x 7 F 的地址范围。此模式如同将所有的变量都定义成d a
12、t a 类型的内存。C O M P A C T 模式是压缩模式,所有的变量将被指定到其地址范围为O o)【F F 的外部数据存储器,此模式如同将所有的变量都定义成p d a t a 类型的内存。L A R G E 模式是大模式,所有的变量将被指定到其地址范围为o _-0 x F F F F 的外部数据存储器,此模式如同将所有的变量都定义成x d a t a 类型的内存。选择不同的模式直接影响代码的长度和执行的速度。所有的变量都将定位在单片机的片内R A M 中,而访问片内的R A M 速度最快,同时产生的代码比C O M P A C T 或L A R G E 模式小得多。当程序中用到的变量较多
13、时,可以将部分变量放在存储器空间,经过编译器对变量定位后,可能会增加代码的长度,降低程序的执行效率。解决的方法是将很少访问的变量定义成x d a t a 类型,存放在外部R A M 中。这样对代码长度和程序的执行效率不会造成太大的影响。C 语言是具有模块化和结构化功能的通用计算机语言,基于单片机的C 语言在功能、结构以及可读性、可移植性、可维护性等方面都有非常明显的优势。正是c 语言的优势,使它在开发单片机领域中有着积极的影响,是单片机系统编程语言的首选,已经成为目前单片机语言中最流行的编程语言。参考文献:【l】马忠梅,籍顺心,张凯单片机的C 语言应用程序设计【M】北京:北京航空航天大学出版社
14、1 9 9 7【2 1 王志超单片机C 语言编程技巧在嵌入式系统开发中的研究【J】宜春学院学报,2 0 0 6(4)【3】王东莉,梁政,杨致政单片机c 语言编程在机电系统中的应用川机械,2 0 0 6(3)【4】曾红兵浅谈8 0 5 1 单片机编程中C 语言代码优化【J】湖南冶金职业技术学院学报2 0 0 7(9)【5】黄皎,刘建国,高敏单片机C 语言编程应注意的若干问题【J】微计算机信息,2 0 0 3(7)【责任编辑,抚顺职院:陈辉】万方数据单片机C语言编程方法探讨单片机C语言编程方法探讨作者:谭炳菊,富钰,TAN Bing-ju,FU Yu作者单位:沈阳广播电视大学,辽宁,沈阳,1100
15、03刊名:辽宁高职学报英文刊名:LIAONING HIGHER VOCATIONAL TECHNICAL INSTITUTE JOURNAL年,卷(期):2010,12(4)被引用次数:0次 参考文献(5条)参考文献(5条)1.马忠梅.籍顺心.张凯 单片机的C语言应用程序设计 19972.王志超 单片机C语言编程技巧在嵌入式系统开发中的研究 2006(4)3.王东莉.梁政.杨致政 单片机C语言编程在机电系统中的应用 2006(3)4.曾红兵 浅谈8051单片机编程中C语言代码优化 2007(9)5.黄皎.刘建国.高敏 单片机C语言编程应注意的若干问题 2003(7)相似文献(10条)相似文献(
16、10条)1.期刊论文 邓自佑 运用C语言进行单片机程序设计的探讨-科技创业月刊2010,23(2)在现代电子产品中单片机的运用非常广泛,对于电子行业的工程技术人员,掌握好单片机的性能及其应用技术是非常必要的,这也是一项基本技能.文章通过单片机的两种语言编程的对比,主要介绍C语言在单片机的开发中的优势,阐述了C语言在单片机开发中的发展前景.2.期刊论文 张海黎.李俊德.ZHANG Hai-li.LI Jun-de 单片机C语言与C高级程序设计语言的异同-湖南广播电视大学学报2002,(4)在单片机应用领域,用C语言开发单片机日益重要.只要掌握一种单片机C语言编程,将来可根据需要移植到其它单片机上
17、.本文以单片机领域内的典型代表NEC公司78K0系列单片机的CC78K0 C语言为例,比较它与C高级程序设计语言的异同,帮助已具有C高级语言基础的科技人员快速了解单片机C语言.3.期刊论文 方倩.刘莹.FANG Qian.LIU Ying 无线单片机汇编与C语言比较和全速软件断点-信息技术2007,(12)无线单片机C语言和汇编语言各有所长.无线单片机内存容量极小,而且不同型无线单片机收/发硬件结构各不相同,因此C语言时常表现出很多不足之处(如C语言良好的可移植性在不同无线单片机间并不存在).首先对无线单片机的汇编语言和C语言进行比较,说明汇编语言具有相当大的优势.接着提出改进汇编语言可交叠式
18、模块编程方法.最后考虑至今软件断点都是极慢速的(慢100倍);现有的硬件断点方法需要很贵的硬件来支持,成本很高,为此提出低成本和高速的全速软件断点方法.采用CPLD芯片实现的nRF24E1外围电路,完成键盘扫描,显示,收发控制和信息存储.多次并以nRF24E1收发的实验和调试验证了上述方法的正确性.4.期刊论文 周国运 单片机C语言教学探索-计算机教育2009,(22)本文总结了我院在单片机C语言教学中的探索,包括在教学中精选了变量定义、函数定义、混合编程为C语言主要内容,以变量定义、专用指针定义、C51汇编函数格式为重点展开教学,并且紧密结合单片机概念和应用,编写了相关的习题和实验题目.实践
19、表明,讲授C语言明显提高了学生的编程能力和教学效果.5.期刊论文 薛二阳 C语言在单片机开发中的重要性-科教导刊2009,(11)单片机已经渗透到社会的各个领域中,学好单片机对电子行业以及相关行业的工程技术人员来说已经非常必要,本文主要对比了单片机开发语言中的汇编语言和C语言,说明了C语言在单片机开发中的重要作用.6.期刊论文 代瑶.王晶辉 采用89C2051单片机并基于C语言编程的IC卡读写器-科技与生活2010,(1)本文较详细地分析了C语言在单片机上的特点,单片机系统对C语言具体要求,介绍了IC卡读写器的设计.7.期刊论文 通过制作数字电压表学习单片机C语言编程-黑龙江科技信息2009,
20、(32)随着单片机开发技术的不断发展,目前已有越来越多的人从普遍使用汇编语言到逐渐使用高级语言开发,其中主要是以C语言为主,这里以最为流行的80C51单片机为例来制作数字电压表,通过实际动手操作来学习单片机的C语言编程技术.8.学位论文 陈京培 AT89S52单片机实验系统的开发与应用 2007 目前单片机应用已渗透到各个领域,单片机技术的发展也因此日新月异。作为实践性很强的应用型学科,单片机研发及教学离不开实验。传统的单片机实验系统,需要频繁拔插烧写单片机芯片来编程,依赖于仿真机调试,实验成本高且效率低,已不适应现代科技开发需求。如何充分合理利用单片机的性能,方便用户高效学习与开发产品成为当
21、前的研究热点。本文从微处理器、嵌入式系统和C语言等三个方面着手,以AT89S52单片机为核心,设计出功能较强的新型单片机实验系统。首先研究了微处理器及开发工具,嵌入式系统类型特点、嵌入式操作系统等基础理论。其次深入研究AT89S52单片机性能特点,为实验系统硬件开发打下了基础。并针对新型实验系统软件开发要求,对C语言进行应用性研究。最后,以AT89S52为核心,设计出包含集成稳压电路、时钟电路、复位电路、液晶显示与控制电路、ISP在系统可编程器、RS232串行通信电路、开关电路、发光二极管显示电路和ISD2560语音芯片的录音/播放电路等九种外围电路,并汇总为完整的原理图。采用电子CAD(PR
22、OTEL99SE软件)、图像处理软件(PhotoCap3)、计算机画图板设计绘制电路原理图后再装配成实验板。利用C语言调整软件devC+IDE、编译器KeilC(uVision-51)和调试器WinIDEA9.0、ISP软件等技术创新,实现了ISP在线仿真调试功能,将嵌入式技术融入到单片机实验系统开发与应用中,适合于单片机系统开发、教学等需要频繁刷新程序的场合,极大地提高了程序开发的效率,达到优化单片机实验系统功能的目的。9.学位论文 付尧 以PIC单片机为核心的多目标运动控制系统研究 2006 本课题以企业技术改造的需求为背景,以多目标的运动控制为前提,设计研究了一种以PIC16F877单片
23、机为核心,以PC机为操作终端的多目标运动控制系统,研发了控制器的软、硬件部分,并对其中串口通讯、脉冲发生PID控制等专题做了深入分析和研究。本文用C语言编写单片机(PIC16F877)程序,实现了运动控制系统显示、报警和手动按键等外围器件的模块化设计。另外,本文利用LabVIEW软件编写上位机(PC)程序,用C语言编写下位机程序,通过RS-485总线,实现上位机与多块单片机的串口通讯,PC机发送命令,下位机接收命令,实现运动的网络化控制和远程控制。并且利用本实验室的自动抓取机械手臂的步进电机部分和直流电机部分进行了验证。实验证明,本课题已经实现了低投入、高效能的设计目标。10.期刊论文 王晓荣.权义萍.张印强 基于C语言的单片机教学方法-中国电力教育2009,(11)本文主要分析了目前基于汇编语言的单片机教学存在的一些问题.根据多年单片机教学及科研实践,总结出一套以C语言为主以汇编语言为辅的单片机课程教学方法.改进了教学内容,将各章节知识点融入典型的实例中.详细介绍了一个基于C语言实例的讲解步骤.这套新的教学方法激发了学生的求知欲望,教学效果明显提高.本文链接:http:/