嵌入式C实现延时程序的不同变量的区别

开发
在进行嵌入式系统开发是,C语言中使用子函数实现延时有几个问题需要阐明,当然讨论高级语言的延时就需要考虑编译器和处理器。

#T#在嵌入式系统中,延时是经常需要使用的一种手段,延时的方法可以通过使用类似于"NOP"的指令来实现,但是如果延时的时间比较长,如果使用太多的"NOP" 指令则会消耗过多的储存空间,最好的方法是使用子程序(汇编语言中)或子函数(高级语言中)。当然这里并不打算讨论如果使用定时器中断来实现延时。下面就在C语言中使用子函数实现延时的几个问题做些讨论,当然讨论高级语言的延时就需要考虑编译器和处理器,这里为了讨论的方便,而且不失一般性,可以用标准51单片机作处理器和uVision2作为编译环境,晶振为12MHz,这样一个标准的机器周期即为1uS。其他的情况则可以据此类推。

先看一段延时程序:其中Delay1()与Delay2()两者的型参类型不同。

嵌入式延时程序的C变量

将上述的Delay1(100)(变量为unsigned int 类型)或Delay2(100)(变量为unsigned char  类型)分别在两次过程中执行,便会得到了下述的执行结果:

断点B减去断点A的时间为810uS,这个时间即为执行Delay1(100)所花费的时间;

断点B减去断点A的时间为608uS,这个时间即为执行Delay2(100)所花费的时间;

由此可见,作为unsigned int 变量类型来传递延时函数的参数,会增长延时的时间,而使用unsigned char 变量类型则会得到短的延时时间。我们都知道C语言经过编译后是要转化成汇编语言的,只有汇编语句才有精确的执行时间,所以要知道这两者结果的不同,原因就在于他们经过编译之后汇编语句的不同的地方。

责任编辑:佚名 来源: 嵌入式在线
相关推荐

2012-03-05 15:45:32

嵌入式开源软件

2023-04-27 07:06:18

2020-04-22 11:51:41

物联网嵌入式编程IOT

2022-01-04 22:19:38

Linux开发嵌入式

2022-01-03 23:33:40

Linux组件系统

2009-12-24 17:21:38

嵌入式Linux

2023-01-04 09:37:16

2022-12-14 08:06:08

2019-07-15 15:52:03

开发技能代码

2013-01-21 10:26:13

2022-04-13 09:57:24

Go语言C语言程序开发

2011-08-05 09:11:56

2012-05-09 14:26:27

linux嵌入式

2009-12-24 17:27:52

嵌入式Linux

2020-07-03 07:00:00

Linux组件

2023-05-04 00:27:40

2023-07-16 22:48:59

2011-06-21 11:30:31

嵌入式 Qt

2009-12-23 11:42:14

Fedora 9嵌入式

2014-05-26 15:14:04

DIGIA嵌入式Qt
点赞
收藏

51CTO技术栈公众号