<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > Keil C51精確延時(shí)程序設計

Keil C51精確延時(shí)程序設計

作者: 時(shí)間:2013-05-16 來(lái)源:網(wǎng)絡(luò ) 收藏


2 時(shí)間的計算
在開(kāi)發(fā)過(guò)程中,經(jīng)常需要知道代碼執行的時(shí)間,以確定時(shí)間。在單片機開(kāi)發(fā)中經(jīng)常使用硬件或 中的一些功能來(lái)確定時(shí)間。下面通過(guò)在頻率12 MHz晶振下的一些實(shí)例進(jìn)行分析。
2.1 利用示波器確定延時(shí)時(shí)間
單片機系統開(kāi)發(fā)應用中,經(jīng)常用示波器來(lái)確定代碼執行的時(shí)間,如在延時(shí)后面進(jìn)行IO口中的某位電平翻轉,用示波器來(lái)觀(guān)察IO中某位輸出的標準PWM波形來(lái)確定延時(shí)時(shí)間,但是此方法必須是用來(lái)計算延時(shí)時(shí)間為毫秒級別的延時(shí)程序,否則會(huì )存在誤差因為在進(jìn)行IO口電平翻轉和程序執行結束跳轉到while函數入口,需要占幾μm的時(shí)間。例如上面介紹的for循環(huán)編寫(xiě)的延時(shí)程序中,假設實(shí)參為249,則△t=3×249+5×(249+1)+5=2 002μs≈2 ms。
c.JPG
將上述代碼經(jīng)編譯后生成HEX文件,寫(xiě)入單片機中,利用Proteus中的虛擬示波器觀(guān)察P1.0后波形的變化。

本文引用地址:http://dyxdggzs.com/article/170502.htm

d.JPG


從圖1的PWM波形可以看出,高電平或者低電平占的時(shí)間分別為2 ms,即為以上延時(shí)程序所執行的時(shí)間,由于示波器精度的問(wèn)題,存在誤差為2μs。所以用這種方法確定延時(shí)時(shí)間,會(huì )存在一定誤差。
2.2 利用 確定延時(shí)時(shí)間
2.2.1 C51反匯編
對于經(jīng)驗豐富的開(kāi)發(fā)者,可以利用Keil C51中反匯編的功能,仔細分析C語(yǔ)言轉化成的匯編代碼,從而也可以計算出代碼執行所需的時(shí)間,得出延時(shí)時(shí)間。在Keil C51中編寫(xiě)好程序后,按ctrl+F5進(jìn)入軟件調試狀態(tài),然后點(diǎn)擊工具欄的view → disassembly window,即可看到編譯生成的匯編代碼。例如2.1中例子的匯編代碼為:
e.JPG
分析上面的匯編代碼,可以看出調用delay函數時(shí),先執行MOV R7,#0xF9然后執行LACALL跳轉到delay函數的入口處,一共占用3個(gè)機器周期。而地址0x000F到0x0013的指令一共被執行了250次,0x0015到0x0016的語(yǔ)句被執行了249次。最后執行PET語(yǔ)句,占用2個(gè)機器周期。則delay函數的執行時(shí)間△t=3×249+5×250+5=2 002μs。另外從上述匯編語(yǔ)句中可以看出,P1=P1^0x01相當于匯編中XRL direct,#data指令,占用2個(gè)機器周期。
2.2.2 Keil C51軟件調試模式
在開(kāi)發(fā)過(guò)程中,還可以利用Keil C51編譯器中的斷點(diǎn)調試功能來(lái)模擬執行延時(shí)代碼所需的時(shí)間。上述舉例進(jìn)入軟件調試狀態(tài)后如圖2所示。

f.JPG

c語(yǔ)言相關(guān)文章:c語(yǔ)言教程


塵埃粒子計數器相關(guān)文章:塵埃粒子計數器原理
晶振相關(guān)文章:晶振原理
燃氣報警器相關(guān)文章:燃氣報警器原理


關(guān)鍵詞: 程序設計 延時(shí) 精確 C51 Keil

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>