日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

0.5s c语言延时子程序集,用C语言实现精确的延时.doc

發布時間:2024/10/12 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 0.5s c语言延时子程序集,用C语言实现精确的延时.doc 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

用C語言實現精確的延時

怎么用C語言做單片機的精確延時在單片機應用中,經常會遇到需要短時間延時的情況,一般都是幾十到幾百μs,并且需要很高的精度(比如用單片機驅動DS18B20時,誤差容許的范圍在十幾μs以內,不然很容易出錯);而某些情況下延時時間較長,用計時器往往有點小題大做。另外在特殊情況下,計時器甚至已經全部用于其他方面的定時處理,此時就只能使用軟件定時了[1]。1??C語言程序延時??Keil C51的編程語言常用的有2種: 一種是匯編語言;另一種是C 語言。用匯編語言寫單片機程序時,精確時間延時是相對容易解決的。比如,用的是晶振頻率為12 MHz的AT89C51,打算延時20 μs,51單片機的指令周期是晶振頻率的1/12,即一個機器周期為1 μs;“MOV R0,#X”需要2個機器周期,DJNZ也需要2個機器周期,單循環延時時間t=2X+3(X為裝入寄存器R0的時間常數)[2]。這樣,存入R0里的數初始化為8即可,其精度可以達到1 μs。用這種方法,可以非常方便地實現512 μs以下時間的延時。如果需要更長時間,可以使用兩層或更多層的嵌套,當然其精度誤差會隨著嵌套層的增加而成倍增加。??雖然匯編語言的機器代碼生成效率很高,但可讀性卻并不強,復雜一點的程序就更難讀懂;而C語言在大多數情況下,其機器代碼生成效率和匯編語言相當,但可讀性和可移植性卻遠遠超過匯編語言,且C 語言還可以嵌入匯編程序來解決高時效性的代碼編寫問題。就開發周期而言,中大型軟件的編寫使用C 語言的開發周期通常要比匯編語言短很多,因此研究C語言程序的精確延時性能具有重要的意義。??C程序中可使用不同類型的變量來進行延時設計。經實驗測試,使用unsigned char類型具有比unsigned int更優化的代碼,在使用時應該使用unsigned char作為延時變量。2??單層循環延時精度分析??下面是進行μs級延時的while程序代碼。??延時函數:??void delay1(unsigned char i) {? ? while(i );}??主函數:??void main() { ? ? while(1) {? ?? ?delay1(i);? ? }??}??使用Keil C51的反匯編功能,延時函數的匯編代碼如下:??C:0x00E6AE07MOVR6,0x07??C:0x00E81FDECR7??C:0x00E9EEMOVA,R6??C:0x00EA70FAJNZC:00E6??C:0x00EC22RET圖1??斷點設置位置圖??通過對i賦值為10,在主程序中圖1所示的位置設置斷點。經過測試,第1次執行到斷點處的時間為457 μs,再次執行到該處的時間為531 μs,第3次執行到斷點處的時間為605 μs,10次while循環的時間為74 μs,整個測試結果如圖2所示。圖2??使用i--方式測試仿真結果圖??通過對匯編代碼分析,時間延遲t=7X+4(其中X為i的取值)。測試表明,for循環方式雖然生成的代碼與用while語句不大一樣,但是這兩種方法的效率幾乎相同。C語言中的自減方式有兩種,前面都使用的是i--的方式,能不能使用--i方式來獲得不同的效果呢?將前面的主函數保持不變,delay1函數修改為下面的方式:??void delay1(unsigned char i) {? ? while(--i);}??同樣進行反匯編,得到如下結果:??C:0x00E3DFFEDJNZR7, ??C:00E3C:0x00E522RET??比較發現,--i的匯編代碼效率明顯高于i--方式。由于只有1條語句DJNZ,執行只需要2個時鐘周期, 1個時鐘周期按1 μs計算,其延時精度為2 μs;另外,RET需要2個時鐘周期,能夠達到匯編語言代碼的效率。按前面的測試條件進行測試,第1次執行到斷點處的時間為437 μs,再次執行到該處的時間為465 μs,第3次執行到斷點處的時間為493 μs,10次while循環的時間為28 μs,整個測試結果如圖3所示。圖3??使用--i方式測試仿真結果圖??調整i的取值,i取8時延時時間為24 μs,i取9時延時時間為26 μs。通過分析得出,10次循環為28 μs是由于外層循環造成的,其精度可以達到2 μs。在設計時應該考慮參數傳遞和RET語句執行所需要的時間周期。實驗分析發現,for語句使用--i方式,同樣能夠達到與匯編代碼相同的精度。i取不同值時延時仿真結果如圖4所示。圖4??i取不同值時延時仿真結果圖3??多重嵌套下的C程序延時??在某些情況下,延時較長,僅使用單層循環方式是不能完成的。此時,只能使用多層循環方式,那么多重循環條件下,C程序的精度如何呢?下面是一

總結

以上是生活随笔為你收集整理的0.5s c语言延时子程序集,用C语言实现精确的延时.doc的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 超碰一级片 | 性欧美一区 | 天天干干干 | 欧洲av片| 少妇真实被内射视频三四区 | 中文字幕乱码人妻无码久久95 | 亚洲熟妇av一区二区三区漫画 | 青青草日本 | 精品国产999久久久免费 | 天天久久综合网 | av电影免费在线播放 | 丝袜中文字幕 | 91精品国产电影 | 4虎最新网址 | 国产三级a | 天堂在线8| 日韩毛片 | 久久久久亚洲AV | 国精产品一区一区三区视频 | 亚洲好视频 | 成人爽a毛片一区二区免费 日本高清免费看 | 亚洲午夜精品一区二区 | 一区二区免费在线观看 | 国产三级一区二区 | 东京干手机福利视频 | 亚洲免费中文 | 亚洲一区二区三区电影在线观看 | 亚洲国产综合av | 亚洲啊啊啊啊啊 | 久久久久久天堂 | 亚洲成人精品久久 | 综合网在线视频 | 污网在线观看 | 亚洲色成人网站www永久四虎 | 国产精品偷伦视频免费观看了 | 精品日韩一区二区三区四区 | 波多野结衣加勒比 | 成人开心激情 | 永久免费视频网站直接看 | 中文字幕乱视频 | 91久| 青草视频免费在线观看 | 欧美交换 | 免费观看视频在线观看 | 制服诱惑一区二区 | 91网站在线播放 | av网站在线免费 | 韩国美女一区 | 国产大屁股喷水视频在线观看 | 视频精品一区二区 | 91在线观看. | 国产精品久久伊人 | 欧美久久免费 | 午夜污污 | 欧美精品一区视频 | julia一区二区中文久久97 | 麻豆视频污 | 男同互操gay射视频在线看 | 国产精品69毛片高清亚洲 | 久久精品视频免费看 | 欧美精品视 | 日韩三级黄色 | 无码精品人妻一区二区 | 国产高清免费在线 | 国产美女一级片 | 天天操综合网 | 三级欧美视频 | 99re视频这里只有精品 | 久久精品视频中文字幕 | 天天狠天天透 | 国产区福利 | 污网站在线播放 | 免费成人高清在线视频 | 日美毛片 | 澳门三级 | 中文字幕自拍 | 精国产人伦一区二区三区 | 911精品国产一区二区在线 | h视频在线观看网站 | 国产精品视频免费在线观看 | 57pao国产精品一区 | 五月天三级 | 日韩资源| 亚洲色成人网站www永久四虎 | 成人在线国产精品 | 国产视频一级 | 99精品视频免费版的特色功能 | 日批网站在线观看 | 色播一区二区 | 午夜福利电影一区二区 | 国产精品一区二区免费看 | 91av不卡 | 欧美日韩小说 | 国产chinese男男gaygay视频 | 911香蕉 | 成人久久久精品乱码一区二区三区 | 一级免费黄色大片 | 加勒比视频在线观看 | 久久男女 |