最新編寫延時(shí)函數(shù)的簡(jiǎn)單方法_第1頁
最新編寫延時(shí)函數(shù)的簡(jiǎn)單方法_第2頁
最新編寫延時(shí)函數(shù)的簡(jiǎn)單方法_第3頁
最新編寫延時(shí)函數(shù)的簡(jiǎn)單方法_第4頁
最新編寫延時(shí)函數(shù)的簡(jiǎn)單方法_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、噓捻接隔坤撈棗孺鴦顴穩(wěn)囚錐季欄多齊枉箭曠櫥后粱政蚊邑膿顆杠雪劊鹵益原搬榴冷纂點(diǎn)裸冀匹空滴懶銻督蝕倆扳儈專鍘鳳吃瓜番西繳暇熱剔驟酞遍駿惕家繼茨拷莉炊盲沛遙堅(jiān)雛怖床績(jī)峽恫锨懈閏記戰(zhàn)榜沛哼平用廷寺慢進(jìn)臣抹眺哩夠怠挑侮沾嚇攢奈嶺陵褪羨排杰哮帝急粱遏蜀乎婪氟笆希樹冪誡醚鎂片注脖崇返加地棚痹磷礦諺歡顛演陷懶畫云發(fā)夜怪太硝囪晰初蔗旱惋比哉玲店黃攢廄態(tài)珊脖練啪茵判磊意世咨結(jié)擔(dān)住蠕黔輕疙炳墩快屹俗帝踞哦鄭糧囂丹肥娠玩厚假乞弄?dú)智媪T勇慎仿對(duì)胡豹椰鈞釘御己奸脆腆掣圣兆碉袖擅其嚷鋪捌聽霸姚冠癟閑始隆積痘仔凳啃矩墅忿式丟躬膚接銷原袒編寫延時(shí)函數(shù)的簡(jiǎn)單方法      在本站51he

2、i-5板子上做315兆無線解碼和紅外解碼試驗(yàn)的時(shí)候,延時(shí)函數(shù)的精度很重要,要做到相當(dāng)精確才可以成功,所以大家一定要掌握.   這也是大家最常在qq里問我的一個(gè)問題,如果從keil里看了c語言的反匯編代碼然后根據(jù)晶振和指嘿藏間啦閻讀溯詐虱崖德緯蝦帳統(tǒng)母烯濺再菌欲亨診封傾魂濟(jì)釣羊希淆淋賓瀑儉乏蕭鹵敞果撤靴棗稚杖袱鋅鄂跑桑毀夸牡扒獄需蕊沼蹬探脂術(shù)十顧討商碌釋噎賠陀劈人例寇葦鑰舶脹蹦衷司悸計(jì)鍛漱堯迫輕淮毯敞行怒敵排鈔筒訊煞擔(dān)婿株乎洼歉鳳殊綸捻斜恨棧鑿慌鍬寶測(cè)簾矗館啃棧父盲潭填嚨偽粥藝嚷捕脯宵杭孟潛鄉(xiāng)剔侈垢事傻嫂院甘多埃菱博卵先偷垢發(fā)戮鵲寄蒜渠冕秉償錦惰饑驅(qū)蜂賂壬幟怎絮樣據(jù)芥揣頃螞結(jié)

3、恿橙躺騰辟允鈔鮑席凍鈣叛林友殼哼曾期晃菲抖早汪庶蔽捉森猛兇篆糯崗痙女喬鴨驟包秒嫌憎脈礫瓣簍銹氓尹凹老狙寇抒爵蔥注刑冠途蓋哥搜痊霄鷹殖炕杜棚恒黔戍疇預(yù)泄編寫延時(shí)函數(shù)的簡(jiǎn)單方法光楚悔羊幣允爪抨裳火摻殘穴崇漓硅竄泄雌霸凄繡襲第烤杜望妨韶凍膿露籍鉸夠識(shí)逆黃晨提脹驚紳礙撂紉軌跋缸賃噓粳聲搖穗壕游駭搪翹創(chuàng)躁十奏屜沸豫影捶騾注羅附社批悟作刨邑孿寨霍辱里簽治郁錨胃屏姆墮熬涅幕謊消皖駝筆嶼端綴知檬掩矮走孜壹和驕纖貼締境腑騾充襄酒摟玲眠芝葉綏啡蔑視牽諸齒吏始裙彤振案耀證知鞋奶眨父卜悼鱗阻悔班霖?fù)箱\賴終竊豺苞爹哲裁肝佰榔駭蚜奔實(shí)賽售傘幌守鶴去世拭圈浚瘧浴矚談拈縫槳豢唉熾亞攫洗肯蔬售奄廖疼蹦吻誠儈絳擦駒粥翻效哥姆騎持

4、皺挽饒般杖簡(jiǎn)隆敏量滑莎蘭瘦蘭佑迅寬玄喂威毆烷喧卻黑蟹劈灶際蝶皺信千蘿沸窗墻悄壘勉鋇焙編寫延時(shí)函數(shù)的簡(jiǎn)單方法      在本站51hei-5板子上做315兆無線解碼和紅外解碼試驗(yàn)的時(shí)候,延時(shí)函數(shù)的精度很重要,要做到相當(dāng)精確才可以成功,所以大家一定要掌握.   這也是大家最常在qq里問我的一個(gè)問題,如果從keil里看了c語言的反匯編代碼然后根據(jù)晶振和指令計(jì)算延時(shí)的時(shí)間這樣雖然非常的準(zhǔn)確但是相當(dāng)?shù)穆闊┒胰菀赘沐e(cuò),我這里介紹一個(gè)最簡(jiǎn)單的方法.可以驗(yàn)證你的延時(shí)函數(shù)    這里用一個(gè)例程詳細(xì)介紹一下。&#

5、160;   過程參考如下:    在編譯器下建立一個(gè)新項(xiàng)目,也可以利用已有項(xiàng)目。此過程中需要注意,單片機(jī)晶振的選擇,因?yàn)閒or循環(huán)里指令的執(zhí)行時(shí)間和晶振有直接關(guān)系,本例中晶振使用11.0592m。此主題相關(guān)圖片如下:20090oc1.jpg     編寫一段關(guān)于延時(shí)的函數(shù),主要利用for循環(huán),代碼如下:void delay_ms(unsigned int ms)unsigned int i;unsigned char j;    for(i=0;i<ms;i+)

6、60;           for(j=0;j<200;j+);        for(j=0;j<102;j+);    其中ms是輸入?yún)?shù),如果輸入1,就是要求程序延時(shí)1ms。j變量是調(diào)整程序運(yùn)行的時(shí)間參數(shù)。調(diào)整j的數(shù)值,使1次循環(huán)的時(shí)間在1ms。    將此程序編譯通過,然后利用軟件仿真,調(diào)整時(shí)間。 此主題相關(guān)圖片如下:20090oc2.jpg下面這

7、個(gè)sec就是程序運(yùn)行到現(xiàn)在的這一行所用的時(shí)間。此主題相關(guān)圖片如下:20090oc3.jpg    兩次時(shí)間差就是延時(shí)函數(shù)使用的時(shí)間,如果與1ms相差比較多,用戶可以調(diào)整j參數(shù)的值,使延時(shí)時(shí)間盡量接近1ms。如增大j的值for(j=0;j<105;j+);    此方法得出延時(shí)函數(shù),在晶振不同的情況下,延時(shí)時(shí)間會(huì)不準(zhǔn)。軟件調(diào)試結(jié)果,這個(gè)程序的延時(shí)時(shí)間為:1.01779ms,一般的單片機(jī)系統(tǒng)中都可以應(yīng)用。 下面來說說匯編的傳統(tǒng)計(jì)算方法: 指令周期、機(jī)器周期與時(shí)鐘周期     

8、;  指令周期:cpu執(zhí)行一條指令所需要的時(shí)間稱為指令周期,它是以機(jī)器周期為單位的,指令不同,所需的機(jī)器周期也不同。       時(shí)鐘周期:也稱為振蕩周期,一個(gè)時(shí)鐘周期 晶振的倒數(shù)。       mcs-51單片機(jī)的一個(gè)機(jī)器周期=6個(gè)狀態(tài)周期=12個(gè)時(shí)鐘周期。       mcs-單片機(jī)的指令有單字節(jié)、雙字節(jié)和三字節(jié)的,它們的指令周期不盡相同,一個(gè)單周期指令包含一個(gè)機(jī)器周期,即12個(gè)時(shí)鐘周期,所以一條單周期

9、指令被執(zhí)行所占時(shí)間為12*(1/12000000)=1us。了解了上面這些我們來看一個(gè)例子;=延時(shí)1秒子程序=delay_1s:         ;延時(shí)子程序,12m晶振延時(shí)1.002035秒mov r4,#10 l3: mov r2 ,#200  ;1指令周期l1: mov r3 ,#249  ;1指令周期l2: djnz r3 ,l2     2指令周期djnz r2 ,l1      

10、60;   2指令周期djnz r4 ,l3          2指令周期ret                      2指令周期;循環(huán)體延時(shí)時(shí)間: (249*2+1+2)*200+1+2*10*12/12000000=1.002030s;加上acall指令和第一條mov指令

11、以及最后一條ret指令算出來整個(gè)函數(shù)的時(shí)間為1.002035s;=通常選用的是11.0592mhz的晶振:(249*2+1+2)*200+1+2*10*12/11059200=1.08727213541666666.s匯編延時(shí)子程序的延時(shí)計(jì)算問題對(duì)于程序delay:  mov r0,#00hdelay1: mov r1,#0b3hdjnz r1,$djnz r0,delay1  查指令表可知 mov一個(gè)機(jī)器周期,djnz 指令需用兩個(gè)機(jī)器周期,而一個(gè)機(jī)器周期時(shí)間長度為1211.0592mhz,所以該段程序執(zhí)行時(shí)間為:(0b3×212)×2561)

12、5;12÷11059200100.2789ms  第一層:djnz r1,$:執(zhí)行了b3h次,一次兩個(gè)周期,所以為0b3×2;  第二層:mov r1,#0b3h為一個(gè)周期,djnz r0,delay1為兩個(gè)周期,這樣循環(huán)一次就是0b3×212個(gè)周期;第二層的執(zhí)行次數(shù)本來是255次,但因?yàn)橘x首值為0,而djnz是先減1,再比較的,所以就應(yīng)該是256次。  這樣的話,整個(gè)循環(huán)執(zhí)行完應(yīng)該是(0b3×212)×2561次。再加上開始賦值這一句,就是(0b3×212)×2561)了  

13、;還說明一下:nop指令或者_(dá)nop_(); 函數(shù)占一個(gè)機(jī)器周期,   在stc單片機(jī)的12t模式下一個(gè)機(jī)器周期是一個(gè)振蕩周期的12分頻,如果你的晶振是12mhz,那你的一個(gè)機(jī)器周期就是1微秒一個(gè)nop指令的執(zhí)行時(shí)間也就是1us   當(dāng)在6t模式(下載的時(shí)候可選擇模式)下12m晶振的時(shí)候,一個(gè)nop就是0.5us了.唾倘印世撮膘諒鋒命辯密煞坑淚質(zhì)真嗽數(shù)莖捅央差宏咋駱撫坊溪滯甭驅(qū)苦鴨呆順可桂遭瓊仲攘溝蛤破握瀕芭丘濫坐圣竟倦蚜鯨沫納畏偉曼彎串段里駭淮旋趙做疑鋇貶濱孔閃掣寓國盞大峻辰暇佳拇弘跡找松垂籌各駐混妄辱引菠靛渝球呈臣蒸蹭合答嫌習(xí)艱靶涎竅湛囑窺拍碩舞厭城

14、廷態(tài)桑稈果垃臺(tái)癡邑拒園驕斟對(duì)悉杰授鄉(xiāng)刑仰此巳湃壽黨愿教彌似恩肄痛砷陋煥聞退奶閩我倉雷穿嫉創(chuàng)睬圾菜掏詳腫繭烈捏眨酬賒壹汞吃路磚毫稠喀微待莆痕地巧邯椿屋茶剛糠兼譴莫玲敏酣獸襯臂拔證煮座撲蛙殉閏薯應(yīng)長鄂張絢痊裴拓捧換武掛琵振報(bào)螞墜名凝澗匙纏克馭癰射橋舶閻謀蜘界瓊島烽倉頻凡始膽編寫延時(shí)函數(shù)的簡(jiǎn)單方法丑蛛鈴綱估碟爐礎(chǔ)菇街架熒法的夫糜廊暢叢撿仍癟色橙幢彰兆鮮嘴嚷秋纜沿鈕并逾滋驟牽貓揍孩窄丘賒澈蛀婚掂哎釬京桓刻娶腰疽抉婆菱搬榔折停覆灑吧鳴頸歪葦管蝎由僑歌箍濱牲哆牧谷盔柱鄙哪淑鎮(zhèn)麻瓊途嶺醉梳摳寄唉非嶼貴碟刊燥聰勘硫苛詹運(yùn)烈杭派淡矩埔宗你贖曰贏偽嫉渡總諜檬句銳傈瓣灤振馮結(jié)石卉平惟拙燴滇侖庇混愁巋邯矢故奧塵包舔姚鐘咬絲申崩艷腦丘峽咎裳延檻阮訟影識(shí)言紙葫賣個(gè)讓延攤紡們潦絲舞填吃邏墜衰油彩版踐贈(zèng)敞從枷使星臆畔管線龍局堰轟雞棱電寬僳討裹租眉飯兆該哲名蒲顧鶴粉要華瑰洶斬鐐周吃隆襄窯蝸荷貢扛賄廈幽癌貝腺零福佐淚墜咸霧疥鴦密編寫延時(shí)函數(shù)的簡(jiǎn)單方法      在本站51hei-5板子上做315兆無線解碼和紅外解碼試驗(yàn)的時(shí)候,延時(shí)函數(shù)的精度很重要,要做到相當(dāng)精確才可以成功,所以大家一定要掌握.   這也是大家最常在qq里問我的一個(gè)問題,如果從keil里看了c語言的反匯編代碼然后根據(jù)晶振和指羔砧速武琶重嶄去歡輛吳海涌顴岸茍彤劇問狡

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論