單片機一些常用的延時與中斷問題及解決方法_第1頁
單片機一些常用的延時與中斷問題及解決方法_第2頁
單片機一些常用的延時與中斷問題及解決方法_第3頁
單片機一些常用的延時與中斷問題及解決方法_第4頁
單片機一些常用的延時與中斷問題及解決方法_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機一些常用的延時與中斷問題及解決方法延時與中斷出錯,是單片機新手在單片機幵發(fā)應(yīng)用過程中,經(jīng)常會遇到的問題,本 文匯總整理了包含了 MCS 51系列單片機、MSP430單片機、C51單片機、8051F 的單片機、avr單片機、STC89C52 PC里片機.在內(nèi)的各種單片機常見的延時與 中斷問題及解決方法,希望對單片機新手 們,有所幫助!'、單片機延時問題20問1、單片機延時程序的延時時間怎么算的 答:如果用循環(huán)語句實現(xiàn)的循環(huán),沒法計 算,但是可以通過軟件仿真看到具體時 間,但是一般精精確延時是沒法用循環(huán)語 句實現(xiàn)的。如果想精確延時,一般需要用到定時器, 延時時間與晶振有關(guān)系,單片機系

2、統(tǒng)一般 常選用 2 MHz、12 MHz或6 MHz晶振。第一種更容易產(chǎn)生各種標(biāo)準(zhǔn)的波特率,后,s兩種的一個機器周期分別為1卩和2便于精確延時。本程序中假設(shè)使用頻率為12 MHz 的晶振。最長的延時時間可達 216=65 536卩。若定時器工作在方式 2, 則可實現(xiàn)極短時間的精確延時;如使用其 他定時方式,則要考慮重裝定時初值的時 間(重裝定時器初值占用 2 個機器周期)2、求個單片機 89S51 12M 晶振 用定時器 延時 10 分鐘,控制 1 個燈就可以 答:可以設(shè) 50ms 中斷一次,定時初值,TH0=0x3c TL0=0xb0b 中斷 20 次為 1S, 10 分鐘的話,需中斷 12

3、000 次。計 12000 次后,給一 IO 口一個低電平(如功率不夠,再加擴展),就可控制燈了。同種7c 的話,由樣,不會太準(zhǔn),而且還要看你用什么語言計算了,匯編延 時準(zhǔn)確,知道單片機工作周期和循環(huán)次數(shù) 即可算出,但不具有可移植性,在不 類單片機中,匯編不通用。用 于各種軟件執(zhí)行效率不 通常用定時器做延時或做一個不準(zhǔn)確的延時,延時短的話,在 c 中使用匯編的 nop 做延時3、51 單片機 C 語言 for 循環(huán)延時程序時 間計算,設(shè)晶振12MHz,即一個機器周 期是 1us。for(i=0,i<100;i+)for(j=0,j<100;j+)我覺得時間是100T00Tus=10

4、ms ,怎么會 是 100ms答: 不可能的,是不是你的編譯有錯的啊我改的晶振12M,在KEIL里面編譯的, 為你得出的結(jié)果最大也就是 40ms,這是軟 件的原因,不可能出現(xiàn) 100ms 那么大的差距, 是你的 軟件的原因 不信你實際編寫一個秒鐘,利用原理計算 編寫一個燒進單片機和利用軟件測試的 秒程序燒進單片機,你會發(fā)現(xiàn)原理計算的 程序是正確的4、51單片機c語言_nop_()是一個空指 令短時間延時的空幾個機器周期答:這個_nop_()等效與匯編里面的,NOP 指令,也就是空一個機器周期,如果是傳 統(tǒng) 51 單片機的話,等于空 1 2個時鐘周期 【即一個機器周期】5、51 單片機 延時 5

5、00ms 用機器周期疊 加怎么算答: DELAY:MOV R7,#4D2:MOV R6,#250D1:MOV R5,#250 DJNZ R5,$DJNZ R6,D1DJNZ R7,D2RET 假設(shè)晶振為 12MHz 剛延時時間為 :250*250*4*2=500MS 6、51單片機C語言程序中延時函數(shù)delay 的原理是什么現(xiàn)在找到兩個函數(shù) 第一: void delay(void) unsigned int i,j;for(i=0;i<500;i+) for(j=0;j<121;j+);第二:void delay(unsigned int k) unsigned int i,j;f

6、or(i=0;i<k;i+) for(j=0;j<121;j+);現(xiàn)有幾個疑問:(1):延時函數(shù)的原理(2)(3)兩個 for 循環(huán)的作用i、j 的取值有什么規(guī)律和依據(jù)是不 是和單片機接的晶振頻率有關(guān)所能延時 的最小單位時間是怎么計算的 延時時間怎么計算??!假如用的是AT89C51RC的晶振呢答:“經(jīng)驗 情況就不1 :原理:僅僅執(zhí)行一些,沒有實質(zhì)性影 響的所謂 “無意義指令 ”,比如做比大小啊, 做某個 int 的自加運算啊之類的 2:兩重 for 的作用:簡單的說,就像高中 數(shù)學(xué)中的 “乘法原理 ”一樣,這樣可以很輕 易的迅速增加上述 “無意義指令 ”的數(shù)目 3:關(guān)于取值大?。哼@

7、個如果是在 C 下變 成,這個值不僅僅與晶振、單片機本身運 算速度有關(guān),而且還與 C的編譯器有關(guān), 所以說,這個值雖說是可以精確計算的, 但大多數(shù)情況下,程序員用的都是 值”當(dāng)然,如果用匯編編程, 一樣了,因為每一條指令所使用的機器周期是一定的,你當(dāng)然可以根據(jù)所有指令使 用的總時間,精確的算出具體延時的總時 間 綜合你的的問題,我給你一點建議,就是 剛學(xué)單片機的時候,還是一定要老老實實 的從匯編編程學(xué)起 這樣,在你以后接 觸到 C 之后,你才能明白,這中間實際上 經(jīng)歷了一個什么樣的過程,只有這樣你才 能真正理解單片機。當(dāng)然,等最終你完全 拿下一種單片機之后,盡量使用 C 編程, 無疑是歷史所肯

8、定的。7、51 單片機,晶振為 6M, 求一個 10ms 的延時程序 答:延時有很多種方法,有一種是讓單片 機去做無聊的循環(huán),還有一種是用定時 器。第一種的算法是:晶振的周期T1 = 1/f;這里f=6MHz所以個 T1 去執(zhí)行個指令T1= 1/6 us;(微秒) 單片機花 12所以一個機器周期等于 12 個晶振周期,T2= 12*T1=2us10ms=1000 0us 所以你要得到 10ms 的延時就要想辦法讓 機器去做 5000 條“無聊的指令 ” 所以DEL: MOV R5,#05HF1: MOV R6,#05HF2: MOV R7,#32HF3: DJNZ R7,F3DJNZ R6,F

9、2DJNZ R5,F1RET這種方法是用于對時間要求不高的地方, 我說的是其思想,程序中可能有錯的地方 用定時器的方法我不太會就不誤人了(補充一下就是這個是用匯編寫的,你在主程 序中用ACALL DE調(diào)用就延時了。8、今天我用單片機做眨眼的LED”實驗時,程序運行,每次只令燈亮或滅都沒問題,但是一開延時不能出現(xiàn)期盼的燈亮燈 滅的現(xiàn)象,這是怎么回事實驗的硬件條件是:STC89C52編譯環(huán)境:keil 3。F面是我寫的程序,請教高手!#include <>如果你需要增大,可以改變j號長整形 unsigned 可以到95。的數(shù)據(jù)類型定義,如 unsigned int ( 2字 節(jié))可以到

10、65535;無符耳乖上面所所long( 4 字節(jié))256是-1,而你定義的是無符號字符型。10、請教一個 AVR單片機延時的問題 外部晶振用的是8MHz,延時1微秒的程序 如下:intvoiddelay_us( un sig neddelay_counter)/ 延時 1us dodelay_counter-;while(delay_counter>1);請問,為什么能延時 1 微秒啊 答: 8MHZ 表示單片機 的運 行 周期為 1/8us ,也就是執(zhí)行一步 你使用的是軟件延時 那么包括程序的提取,執(zhí)行等都要花費時 間 比如,你提取這個函數(shù)可能花去一步,那 現(xiàn)在就使用了啦 接著你執(zhí)行這個函數(shù),在單片機內(nèi)部,運 算是通過寄存器的移來移去實現(xiàn)的 這都需要時間,可能你看到的就一句 counter- 這個指令,可能會花費好幾個時 鐘周期來實現(xiàn) 舉個例子:c=a+b,只有一句,但實際上花費的時間并 不短mov a,#data1;/ 數(shù)據(jù) data1 放入 a 寄存 器b;/ 寄存器 a 的值與 b 相加,結(jié) aa; / 將 a 的值放入 cmov b ,#data2

溫馨提示

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

最新文檔

評論

0/150

提交評論