相比于汇编语言的准确性c语言延时精确度如何提升

  只要合理的运用,C还是可以达到意想不到的效果。很多朋友抱怨C效率比汇编差了很多,其实如果对Keil C的编译原理有一个较深入的理解,是可以通过恰当的语法运用,让生成的C代码达到最优化。即使这看起来不大可能,但还是有一些简单的原则可循的:1.尽量使用unsigned 型的数据结构。2.尽量使用char型,实在不够用再用int,然后才是long。3.如果有可能,不要用浮点型。4.使用简洁的代码,因为按照经验,简洁的C代码往往可以生成简洁的目标代码(虽说不是在所有的情况下都成立)。

  

 void delay1(unsigned char i)

  {

  while(--i);

  }

  心不在焉的编译,看源码:

  ; FUNCTION _delay1 (BEGIN)

  ; SOURCE LINE # 13

  ;---- Variable “i” assigned to Register “R7” ----

  ; SOURCE LINE # 14

  0000     ?C0004:

  ; SOURCE LINE # 15

  0000 DFFE       DJNZ  R7,?C0004

  ; SOURCE LINE # 16

  0002     ?C0006:

  0002 22        RET

  ; FUNCTION _delay1 (END)

  天~~~奇迹出现了。..。..我想这个程序应该已经可以满足一般情况下的需要了。如果列个表格的话:

  i  delay time/us

  1  5

  2  7

  3  9

  .....

  计算延时时间时,已经算上了调用函数的lcall语句所花的2个时钟周期的时间。

学习自 http://www.elecfans.com/emb/danpianji/20140825352241.html

时间: 2024-10-27 19:01:34

相比于汇编语言的准确性c语言延时精确度如何提升的相关文章

单片机的汇编语言与嵌入式C语言的比较

零基础从C语言入手.在书上看到单片机的汇编语言与嵌入式C语言的比较,比较有用. 1.嵌入式C程序中的主函数是汇编程序中的主程序:嵌入式C程序中的函数是汇编程序中的子程序.程序运行都是从主函数或主程序开始,并终止于主函数或主程序中的最后一条语句.但是在编写方面,汇编程序中的主程序必须编写在整个程序的最前面,因为汇编程序运行是从整个程序中的第一行开始:而嵌入式C程序中的主函数可以放在程序的前面,也可放在后面或其他位置,无论主函数在什么位置,程序运行时都会先自动找到主函数,并从主函数中的第一条语句开始

从汇编语言写到c语言

好了,言归正传,裸机程序没有操作系统的支持,想要用c语言,就只能先使用汇编语言手动配置c语言需要的环境,听起来很高大上,其实需要做的很简单:指定堆栈指针的值就好. 那么完成这个简单的事情之前,先要明白c语言的栈的以下几个概念: 1. 空栈和满栈:这两个概念不是说的栈是空的还是满的,空栈是指栈指针指向的是栈顶元素的下一个地址.满栈指的是栈顶指针指的是栈顶元素. 2. 升栈和降栈:升栈就是栈向上生长,降栈就是栈向下生长. 注:arm是满降栈. 3. 栈帧:这个有必要好好理解一下,C语言中,每个栈帧对

Atitit.跨语言反射api 兼容性提升与增强 java c#。Net  php  js

Atitit.跨语言反射api 兼容性提升与增强 java c#.Net  php  js 1. 什么是反射1 1.1.       反射提供的主要功能:2 1.2.       实现反射的过程:2 2. 类反射中所必须的类: 的类反射所需要的类并不多,它们分别是:Field.Constructor.Method.Class.Object,2 3. . 反射的用处3 3.1. 可视化 3 3.2. 系统的灵活性.可扩展性 3 3.3. Json xml序列化3 3.4. 函数指针3 3.5. R

单片机C语言延时需注意的问题

标准的C语言中没有空语句.但在单片机的C语言编程中,经常需要用几个空指令产生短延时的效果.这在汇编语言中很容易实现,写几个nop就行了. 在keil C51中,直接调用库函数: #include // 声明了void _nop_(void); _nop_(); // 产生一条NOP指令 作用:对于延时很短的,要求在us级的,采用“_nop_”函数,这个函数相当汇编NOP指令,延时几微秒.NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M晶振,延时1uS.对于延时比较长的,要求在大于10

c语言学习之路提升

这几天 把C语言的基础学习了 在网上查了查 想要提升自己 还要学习 数据结构和算法 从明天 开始 我将会 继续学习 c 语言的数据结构 和算法

汇编语言--百度百科

汇编语言(assembly language)是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址.在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令.普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植.[1] 许多汇编程序为程序开发.汇编控制.辅助调试提供了额外的支持机

C语言有哪些特点

C语言通常称为中级计算机语言.中级语言并没有贬义,不意味着它功能差.难以使用.或者比B A S I C.P a s c a l那样的高级语言原始,也不意味着它与汇编语言相似,会给使用者带来类似的麻烦.C语言之所以被称为中级语言,是因为它把高级语言的成分同汇编语言的功能结合起来了. 作为中级语言,C允许对位.字节和地址这些计算机功能中的基本成分进行操作.C语言程序非常容易移植.可移植性表示为某种计算机写的软件可以用到另一种机器上去.举例来说,如果为苹果机写的一个程序能够方便地改为可以在IBM PC

Java SE 6 新特性: 对脚本语言的支持

2006 年底,Sun 公司发布了 Java Standard Edition 6(Java SE 6)的最终正式版,代号 Mustang(野马).跟 Tiger(Java SE 5)相比,Mustang 在性能方面有了不错的提升.与 Tiger 在 API 库方面的大幅度加强相比,虽然 Mustang 在 API 库方面的新特性显得不太多,但是也提供了许多实用和方便的功能:在脚本,WebService,XML,编译器 API,数据库,JMX,网络 和 Instrumentation 方面都有不

跟着数百万人编程导师学C语言!

点击关注 异步图书,置顶公众号 每天与你分享 IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书 --异步小编 为什么说这不是一本完全C语言的书?因为<"笨办法"学C语言>不仅仅是一本书,随书附赠5个多小时充满激情的视频,这是一套完整的C语言视频课程! 这本书刚拿到样书,运营经理兴奋的发来消息:"手机扫码看视频,太方便了,速度也很快,配的字幕也很赞!"而本书的责编杨海玲老师很淡定:"这个是我尝试的第一本扫码看视频的书,虽然遇到些问