1. gzyueqian
      13352868059

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

      更新時(shí)間: 2009-06-19 00:13:12來(lái)源: 粵嵌教育瀏覽量:1390

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

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

      程序

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

      執(zhí)行結(jié)果

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

      執(zhí)行結(jié)果

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

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

      免費(fèi)預(yù)約試聽(tīng)課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 一级欧美字幕一级 | 日本看片视频区一区二 | 伊香蕉大片视频观看 | 中文字幕亚州综合 | 亚洲第一免费中文在线 | 日本一区二区三区在线观看 |