下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
C程序中可使用不同類型的變量來進行延時設計。經(jīng)實驗測試,使用unsignedchar類型具有比unsignedint更優(yōu)化的代碼,在使用時應該使用unsignedchar作為延時變量。以某晶振為12MHz的單片機為例,晶振為12MHz即一個機器周期為1us。一.500ms延時子程序程序:voiddelay500ms(void){unsignedchari,j,k;for(i=15;i>0;i--)for(j=202;j>0;j--)for(k=81;k>0;k--);則氣}張計算分析:腥史省程序共有三屠層循環(huán)我蘭一層循環(huán)n咳:R5*2戰(zhàn)=81掀*2=籌162us以閃震腸D段JNZ腔2us士遙二層循環(huán)m覆:R6*(畢n+3)狠=202邪*165橫=333盛30us允西遺DJNZ鍋2us固+R5碼賦值1u恭s=3欠us買祖三層循環(huán):站R7*(狹m+3)鉛=15*貓33333濾=49果9995u佛s現(xiàn)仇DJNZ到2us藏+R6場賦值1u抵s=3內(nèi)us隱昌循環(huán)外:暖5us采瀉艙子程追序調(diào)用2只us+輝子程序返回梢2us疤+R7賦贏值1us企=處5us伴山延時總時間福=三層糾循環(huán)+昂循環(huán)外=嚇4999烤95+5鋸=500爺000us永=500等ms巴計算公式:費延時時間=聞[(2*R世5+3)*嫌R6+3]大*R7+5歸燕性二.20精0ms延時沫子程序程序:來void縣delay忍200ms稈(void才){縫趙uns悔igned慢char鳴i,j,射k;警拿f封or(i=候5;i>0嘆;i--)致私燃f皂or(j=燃132;j屢>0;j-閘-)藍蘭f駝or(k=沖150;k確>0;k-筍-);}奮詳三.10點ms延時子抱程序程序:爐void換delay蜓10ms(讓void)窗{艇輪uns艘igned屠char庸i,j,殿k;蜘只f某or(i=懲5;i>0泊;i--)傘井晚f駛or(j=仙4;j>0丈;j--)未兵守f幻or(k=藥248;k蘿>0;k-奶-);}鐘融四.1s林延時子程序申程序:癥void急delay曠1s(vo吧id){即把uns永igned科char配h,i,丹j,k;鞠昌f徑or(h=墊5;h>0春;h--)留境苦f面or(i=伸4;i>0竭;i--)刃褲鞋f籌or(j=職116;j叫>0;j-匠-)堆嫂f之or(k=矮214;k促>0;k-神-);}胞參考鏈接:麥http:糖//www狹.pica星vr.co鄙m/new掙s/201端0-04/逝2106.乒htm葉摘要外實際的單片榜機應用系統(tǒng)波開發(fā)過程中返,由于程序拆功能的需要誦,經(jīng)常編寫難各種延時程細序,延時時躁間從數(shù)微秒號到數(shù)秒不等禽,對于許多口C51開發(fā)領者特別是初岸學者編制非雙常精確的延滴時程序有一曾定難度。本胞文從實際應秒用出發(fā),討欄論幾種實用鑰的編制精確繡延時程序和飛計算程序執(zhí)頓行時間的方拜法,并給出秋各種方法使怠用的詳細步雁驟,以便讀皂者能夠很好鼻地掌握理解歲。踢關鍵詞討
Kei記lC51蜻
精確延悶時菜程序執(zhí)行時指間導引言逗單片機蠅因具有體積杜小、功能強卸、成本低以戚及便于實現(xiàn)痕分布式控制夫而有非常廣細泛的應用領灰域[1]。漸單片機開發(fā)留者在編制各雁種應用程序物時經(jīng)常會遇唇到實現(xiàn)精確扭延時的問題宅,比如按鍵豐去抖、數(shù)據(jù)她傳輸?shù)炔僮髦家诔绦驆渲胁迦胍欢污E或幾段延時列,時間從幾曉十微秒到幾案秒。有時還貼要求有很高葵的精度,如盈使用單總線歷芯片DS1伍8B20時修,允許誤差鋤范圍在十幾捏微秒以內(nèi)[候2],否則跪,芯片無法由工作。用5推1匯編語言繡寫程序時,戚這種問題很孝容易得到解爽決,而目前媽開發(fā)嵌入式丸系統(tǒng)軟件的梢主流工具為服C語言,用鼻C51寫延怕時程序時需饅要一些技巧怨[3]。因匠此,在多年坐單片機開發(fā)該經(jīng)驗的基礎仙上,介紹幾身種實用的編打制精確延時厲程序和計算劇程序執(zhí)行時鉗間的方法。碧實現(xiàn)延湯時通常有兩榨種方法:一終種是硬件延扭時,要用到拴定時器/計道數(shù)器,這種百方法可以提繪高CPU的歡工作效率,即也能做到精汁確延時;另固一種是軟件相延時,這種撓方法主要采宋用循環(huán)體進垂行。惹1
唇使用定時器短/弄計數(shù)器實現(xiàn)捆精確延時陷單片機戚系統(tǒng)一般常糟選用11.崗0592蚊MHz、抬12MH慢z或6M在Hz晶振。臘第一種更容色易產(chǎn)生各種江標準的波特仍率,后兩種夸的一個機器邁周期分別為勉1μs和正2μs,膨便于精確延哭時。本程序盾中假設使用斃頻率為12信MHz的失晶振。最長胸的延時時間追可達216股=655雹36μs慚。若定時器車工作在方式底2,則可實躲現(xiàn)極短時間困的精確延時鵲;如使用其煙他定時方式父,則要考慮坡重裝定時初妹值的時間(侮重裝定時器羽初值占用2兇個機器周期枝)。猜在實際雙應用中,定完時常采用中貌斷方式,如賄進行適當?shù)牡h(huán)可實現(xiàn)招幾秒甚至更講長時間的延拍時。使用定琴時器/計數(shù)襪器延時從程愉序的執(zhí)行效被率和穩(wěn)定性攤兩方面考慮傾都是最佳的虧方案。但應場該注意,C卸51編寫的胡中斷服務程烘序編譯后會請自動加上P冤USHA那CC、PU皮SHPS漢W、POP敞PSW和裂P磚OPAC若C語句,執(zhí)道行時占用了糞4個機器周畜期;如程序政中還有計數(shù)創(chuàng)值加1語句茫,則又會占刑用1個機器付周期。這些謎語句所消耗鞭的時間在計裕算定時初值跡時要考慮進性去,從初值聾中減去以達夏到最小誤差土的目的。腎2
浙軟件延時與項時間計算膽在很多悟情況下,定體時器/計數(shù)其器經(jīng)常被用疏作其他用途鑰,這時候就劍只能用軟件閉方法延時。決下面介紹幾彼種軟件延時授的方法。緊2.1
配短暫延時屬可以在唉C文件中通王過使用帶_味NOP_(調(diào))語句的許函數(shù)實現(xiàn),揀定義一系列識不同的延時耳函數(shù),如D悅elay1念0us(傍)、Del局ay25u達s()、爺Delay瑞40us(佩)等存放秋在一個自定雁義的C文件狐中,需要時往在主程序中雞直接調(diào)用。竭如延時10肆μs的延州時函數(shù)可編紐寫如下:皺Delay缸10us(惜)函數(shù)中圍共用了6個情_NOP_邁()語句剩,每個語句光執(zhí)行時間為浮1μs。檔主函數(shù)調(diào)用費Delay顏10us(倆)時,先貞執(zhí)行一個L幣CALL指焦令(2μ筋s),然后逐執(zhí)行6個_司NOP_(餅)語句(伐6μs)扣,最后執(zhí)行瓣了一個R饅ET指令(限2μs)朽,所以執(zhí)行腔上述函數(shù)時沿共需要10毫μs。俗可以把這湯一函數(shù)當作捎基本延時函頂數(shù),在其他向函數(shù)中調(diào)用茄,即嵌套調(diào)鳴用\[4\發(fā)],以實現(xiàn)蜜較長時間的崗延時;但需復要注意,如茄在Dela要y40us兵()中直向接調(diào)用4次植Delay喉10us(臭)函數(shù),秧得到的延時蛙時間將是4出2μs,銹而不是40老μs。這屆是因為執(zhí)行膽Delay虹40us(摩)時,先騙執(zhí)行了一次榆LCALL池指令(2干μs),然漿后開始執(zhí)行光第一個De啊lay10境us()情,執(zhí)行完最直后一個De博lay10式us()謊時,直接返遍回到主程序膀。依此類推躬,如果是兩笨層嵌套調(diào)用洗,如在De天l癥ay80u失s()中屢兩次調(diào)用D最elay4秩0us(權),則也要柱先執(zhí)行一次孩LCALL板指令(2治μs),然歉后執(zhí)行兩次塞Delay儀40us(悶)函數(shù)(禾84μs歡),所以,反實際延時時艷間為86遵μs。簡言歷之,只有最昆內(nèi)層的函數(shù)外執(zhí)行RET歐指令。該指凡令直接返回壺到上級函數(shù)定或主函數(shù)。慘如在Del左ay80μ些s()中挪直接調(diào)用8墳次Dela巴y10us披(),此曬時的延時時繩間為82憶μs。通過六修改基本延縫時函數(shù)和適慘當?shù)慕M合調(diào)潮用,上述方請法可以實現(xiàn)儉不同時間的虛延時。體2.2
婚在C51中撇嵌套匯編程州序段實現(xiàn)延輸時蠻在C5尋1中通過預欣處理指令#裙pragm握aasm獻和#pra倦gmae刻ndasm尖可以嵌套匯滿編語言語句常。用戶編寫購的匯編語言外緊跟在#p執(zhí)ragma鳳asm之氣后,在#p展ragma梅enda筋sm之前結凍束。丟如:#蔑pragm底aasm隸…油匯獸編語言程序腰段邀…修#卸pragm靜aend序asm棒延時函編數(shù)可設置入盡口參數(shù),可炕將參數(shù)定義鈔為unsi騰gned謀char、劣int或l跨ong型。榴根據(jù)參數(shù)與劈返回值的傳薦遞規(guī)則,這若時參數(shù)和函伐數(shù)返回值位嶄于R7、R姥7R6、R胃7R6R5婦中。在應用婆時應注意以調(diào)下幾點:論顏◆您#pra夫gmaa慮sm、#p酬ragma庸enda總sm不允許丈嵌套使用;貸表◆召在程序的斬開頭應加上少預處理指令姜#prag智maas預m,在該指總令之前只能還有注釋或其話他預處理指嶺令;巾里◆盟當使用a漆sm語句時蹲,編譯系統(tǒng)泛并不輸出目尖標模塊,而腸只輸出匯編意源文件;冒篩◆哨asm只兵能用小寫字青母,如果把努asm寫成悔大寫,編譯睛系統(tǒng)就把它敲作為普通變彩量;紛絲◆歲#pra動gmaa雅sm、#p縫ragma拾enda倚sm和a忌sm只能在澡函數(shù)內(nèi)使用甚。櫻將匯編義語言與C5非1結合起來算,充分發(fā)揮食各自的優(yōu)勢條,無疑是單爬片機開發(fā)人廉員的最佳選炮擇。夏2.3
今使用示波器料確定延時時竹間借熟悉硬讓件的開發(fā)人開員,也可以輝利用示波器酒來測定延時就程序執(zhí)行時輩間。方法如耳下:編寫一螞個實現(xiàn)延時帳的函數(shù),在堤該函數(shù)的開憂始置某個I饒/O口線如亮P1.0為財高電平,在焰函數(shù)的最后差清P1.0蜂為低電平。守在主程序中歌循環(huán)調(diào)用該丹延時函數(shù),白通過示波器裳測量P1.徒0引腳上的風高電平時間顏即可確定延而時函數(shù)的執(zhí)巷行時間。方籍法如下:潑把P1.0磨接入示波器目,運行上面泊的程序,可朗以看到P1脊.0輸出的反波形為周期粘是3ms遵的方波。其倆中,高電平選為2ms源,低電平為俗1ms,仍即for循旗環(huán)結構“f餐or(j=鏡0;j<1顯24;j+油+){;羨}”的執(zhí)行腿時間為1察ms。通過趕改變循環(huán)次耳數(shù),可得到憶不同時間的奧延時。當然釘,也可以不則用for循繩環(huán)而用別的緒語句實現(xiàn)延吸時。這里討坦論的只是確蘿定延時的方航法。聞2.4
宇使用反匯編添工具計算延返時時間螺對于不鍛熟悉示波器由的開發(fā)人員盒可用Kei耐lC51某中的反匯編青工具計算延融時時間,在雹反匯編窗口態(tài)中可用源程右序和匯編程肺序的混合代程碼或匯編代孕碼顯示目標榮應用程序。此為了說明這徐種方法,還辣使用“fo會r(i=禽0;i<D娛lyT;i酒++){絕;}”。在亞程序中加入面這一循環(huán)結駐構,首先選撕擇buil鍋dtag睬et,然后稈單擊sta服rt/st川opde咐bugs廈essio栗n按鈕進入蒸程序調(diào)試窗劈口,最后打哀開Disa照ssemb族lywi聰ndow,獵找出與這部削分循環(huán)結構傅相對應的匯庫編代碼,具芽體如下:尋可以看出,叢0x共000F統(tǒng)~0x00爆17一共8嘉條語句,分陽析語句可以蘭發(fā)現(xiàn)并不是火每條語句都挽執(zhí)行Dly惑T次。核心方循環(huán)只有0堅x0011臥~0x00江17共6條皂語句,總共堂8個機器周事期,第1次華循環(huán)先執(zhí)行虎“CLR租A”和“M與OVR6違,A”兩條莫語句,需要睜2個機器周倡期,每循環(huán)強1次需要8敗個機器周期舞,但最后1夠次循環(huán)需要芳5個機器周輪期。Dly決T次核心循眼環(huán)語句消耗攪(2+Dl壓yT×8+可5)個機器逝周期,當系崖統(tǒng)采用12陡MHz時鳴,精度為7薄μs。輝當采用踐while撓(Dly娘T--)循灰環(huán)體時,D偏lyT的值蘭存放在R7歇中。相對應柳的匯編代碼襲如下:似2.5
欄使用性能分敲析器計算延糊時時間劫很多C收程序員可能夾對匯編語言晚不太熟悉,研特別是每個怠指令執(zhí)行的滅時間是很難疏記憶的,因憑此,再給出芬一種使用K夠eilC迫51的性能雙分析器計算沉延時時間的邪方法。這里價還以前面介片紹的for披(i=0稅;i<12冠4;i++融)結構為例奏。使用這種葬方法時,必褲須先設置系幸統(tǒng)所用的晶驅(qū)振頻率,選蜻擇Opti于onsf逝orta恩rget中熱的targ碧et選項,田在Xtal渡(MHz)建中填入所用扶晶振的頻率竟。將程序編慣譯后,分別嗓在_poi危nt=哀1和T_p堪oint李=0處設孝置兩個運行跡斷點。選擇厘start友/stop藝debu暗gses少sion按際鈕進入程序獸調(diào)試窗口,稈分別打開P之erfor賭mance益Anal泊yzer照windo柳w和Dis事assem貓blyw礎indow秤。運行程序鈴前,要首先拼將程序復位足,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 禁毒安全教育課件
- 超高超限模板(盤扣式)安全專項施工方案
- 丹東全市消防安全工作會議
- 光伏開發(fā)培訓
- 2026年自然資源部所屬單位公開招聘634人備考題庫(第一批)及完整答案詳解一套
- 2026四川廣安市華鎣市人力資源和社會保障局全市各見習基地招聘就業(yè)見習人員14人備考題庫有答案詳解
- 2026中央辦公廳所屬事業(yè)單位招聘13人備考題庫及答案詳解1套
- 建筑行業(yè)安全生產(chǎn)與文明施工指南(標準版)
- T-ZSA 319-2025 家用電力線通信設備通.用技術要求和測試方法
- 2025 小學二年級科學上冊土壤污染的修復技術課件
- 2025天津市個人房屋租賃合同樣本
- 中藥熱熨敷技術及操作流程圖
- 鶴壁供熱管理辦法
- 01 華為采購管理架構(20P)
- 糖尿病逆轉(zhuǎn)與綜合管理案例分享
- 工行信息安全管理辦法
- 娛樂場所安全管理規(guī)定與措施
- 化學●廣西卷丨2024年廣西普通高中學業(yè)水平選擇性考試高考化學真題試卷及答案
- 人衛(wèi)基礎護理學第七版試題及答案
- 煙草物流寄遞管理制度
- 被打和解協(xié)議書范本
評論
0/150
提交評論