自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

嵌入式C實(shí)現(xiàn)延時(shí)程序的不同變量的區(qū)別

開發(fā)
在進(jìn)行嵌入式系統(tǒng)開發(fā)是,C語言中使用子函數(shù)實(shí)現(xiàn)延時(shí)有幾個(gè)問題需要闡明,當(dāng)然討論高級(jí)語言的延時(shí)就需要考慮編譯器和處理器。

#T#在嵌入式系統(tǒng)中,延時(shí)是經(jīng)常需要使用的一種手段,延時(shí)的方法可以通過使用類似于"NOP"的指令來實(shí)現(xiàn),但是如果延時(shí)的時(shí)間比較長(zhǎng),如果使用太多的"NOP" 指令則會(huì)消耗過多的儲(chǔ)存空間,最好的方法是使用子程序(匯編語言中)或子函數(shù)(高級(jí)語言中)。當(dāng)然這里并不打算討論如果使用定時(shí)器中斷來實(shí)現(xiàn)延時(shí)。下面就在C語言中使用子函數(shù)實(shí)現(xiàn)延時(shí)的幾個(gè)問題做些討論,當(dāng)然討論高級(jí)語言的延時(shí)就需要考慮編譯器和處理器,這里為了討論的方便,而且不失一般性,可以用標(biāo)準(zhǔn)51單片機(jī)作處理器和uVision2作為編譯環(huán)境,晶振為12MHz,這樣一個(gè)標(biāo)準(zhǔn)的機(jī)器周期即為1uS。其他的情況則可以據(jù)此類推。

先看一段延時(shí)程序:其中Delay1()與Delay2()兩者的型參類型不同。

嵌入式延時(shí)程序的C變量

將上述的Delay1(100)(變量為unsigned int 類型)或Delay2(100)(變量為unsigned char  類型)分別在兩次過程中執(zhí)行,便會(huì)得到了下述的執(zhí)行結(jié)果:

斷點(diǎn)B減去斷點(diǎn)A的時(shí)間為810uS,這個(gè)時(shí)間即為執(zhí)行Delay1(100)所花費(fèi)的時(shí)間;

斷點(diǎn)B減去斷點(diǎn)A的時(shí)間為608uS,這個(gè)時(shí)間即為執(zhí)行Delay2(100)所花費(fèi)的時(shí)間;

由此可見,作為unsigned int 變量類型來傳遞延時(shí)函數(shù)的參數(shù),會(huì)增長(zhǎng)延時(shí)的時(shí)間,而使用unsigned char 變量類型則會(huì)得到短的延時(shí)時(shí)間。我們都知道C語言經(jīng)過編譯后是要轉(zhuǎn)化成匯編語言的,只有匯編語句才有精確的執(zhí)行時(shí)間,所以要知道這兩者結(jié)果的不同,原因就在于他們經(jīng)過編譯之后匯編語句的不同的地方。

責(zé)任編輯:佚名 來源: 嵌入式在線
相關(guān)推薦

2012-03-05 15:45:32

嵌入式開源軟件

2020-04-22 11:51:41

物聯(lián)網(wǎng)嵌入式編程IOT

2023-04-27 07:06:18

2022-12-14 08:06:08

2009-12-24 17:21:38

嵌入式Linux

2022-01-03 23:33:40

Linux組件系統(tǒng)

2022-01-04 22:19:38

Linux開發(fā)嵌入式

2023-01-04 09:37:16

2019-07-15 15:52:03

開發(fā)技能代碼

2013-01-21 10:26:13

2022-04-13 09:57:24

Go語言C語言程序開發(fā)

2011-06-21 11:30:31

嵌入式 Qt

2020-07-03 07:00:00

Linux組件

2012-05-09 14:26:27

linux嵌入式

2011-08-05 09:11:56

2023-05-04 00:27:40

2009-12-24 17:27:52

嵌入式Linux

2023-07-16 22:48:59

2014-05-26 15:14:04

DIGIA嵌入式Qt

2009-12-23 11:42:14

Fedora 9嵌入式
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)