在學(xué)單片機時我們第一個例子就是燈的閃爍,那是用延時程序做的,現(xiàn)在回想起來,這樣做不很恰當(dāng),為什么呢?我們的主程序做了燈的閃爍,就不能再干其它的事了,難道單片機只能這樣工作嗎?當(dāng)然不是,我們可以用定時器來實現(xiàn)燈的閃爍的功能。例1:查詢方式ORG 0000HAJMP STARTORG 30HSTART:MOV P1,#0FFH ;關(guān)所 燈MO[詳細(xì)]
計算機反復(fù)執(zhí)行一段程序以達(dá)到延時的目的稱為軟件延時,單片機應(yīng)用程序中經(jīng)常需要短時間延時,有時要求很高的精度,網(wǎng)上或書中雖然有現(xiàn)成的公式可以套用,但在部分算法講解中發(fā)現(xiàn)有錯誤之處,而且延時的具體算法講得并不清楚,相當(dāng)一部分人對此仍很模糊,授人魚,不如授之以漁,本文將以12MHZ晶振為例,詳細(xì)講解[詳細(xì)]
單片機延時程序分析應(yīng)用單片機的時候,經(jīng)常會遇到需要短時間延時的情況。需要的延時時間很短,一般都是幾十到幾百微妙(us)。有時候還需要很高的精度,比如用單片機驅(qū)動 DS18B20的時候,誤差容許的范圍在十幾us以內(nèi),不然很容易出錯。這種情況下,用計時器往往有點小題大做。而在極端的情況下,計時器甚至已經(jīng)全[詳細(xì)]
實現(xiàn)延時通常有兩種方法:一種是硬件延時,要用到定時器/計數(shù)器,這種方法可以提高CPU的工作效率,也能做到精確延時;另一種是軟件延時,這種方法主要采用循環(huán)體進(jìn)行。擴展閱讀:51單片機延時函數(shù)1 使用定時器/計數(shù)器實現(xiàn)精確延時單片機系統(tǒng)一般常選用11.059 2 MHz、12 MHz或6 MHz晶振。第一種更容易產(chǎn)生各種標(biāo)[詳細(xì)]
51單片機匯編延時程序算法詳解將以12MHZ晶振為例,詳細(xì)講解MCS-51單片機中匯編程序延時的精確算法。指令周期、機器周期與時鐘周期指令周期:CPU執(zhí)行一條指令所需要的時間稱為指令周期,它是以機器周期為單位的,指令不同,所需的機器周期也不同。時鐘周期:也稱為振蕩周期,一個時鐘周期 =晶振的倒數(shù)。MCS[詳細(xì)]
拜讀了網(wǎng)上《51單片機 Keil C 延時程序的簡單研究 》(by: InfiniteSpace Studio/isjfk, 1.21.2004 )一文,借鑒了文中的方法,測試發(fā)現(xiàn)有一點點出入,原文作者在計算延時時間的時候是否忘了加上RET指令……下面介紹我的測試結(jié)果,歡迎交流探討——一、單獨定義變量,for語句28: delay1([詳細(xì)]
延時與中斷出錯,是單片機新手在單片機開發(fā)應(yīng)用過程中,經(jīng)常會遇到的問題,本文匯總整理了包含了MCS-51系列單片機、MSP430單片機、C51單片機、8051F的單片機、avr單片機、STC89C52、PIC單片機…..在內(nèi)的各種單片機常見的延時與中斷問題及解決方法,希望對單片機新手們,有所幫助!擴展閱讀:單片機延時程序分析1[詳細(xì)]
單片機延時程序(適合初學(xué)者)下面幾個是單片機的延時程序(包括asm和C程序,都是我在學(xué)單片機的過程中用到的),在單片機延時程序中應(yīng)考慮所使用的晶振的頻率,在51系列的單片機中我們常用的是11.0592MHz和12.0000MHz的晶振,而在AVR單片機上常用的有8.000MHz和4.000MH的晶振所以在網(wǎng)上查找程序時如果涉及到精確延[詳細(xì)]
應(yīng)用單片機的時候,經(jīng)常會遇到需要短時間延時的情況。需要的延時時間很短,一般都是幾十到幾百微妙(us)。有時候還需要很高的精度,比如用單片機驅(qū)動 DS18B20的時候,誤差容許的范圍在十幾us以內(nèi),不然很容易出錯。這種情況下,用計時器往往有點小題大做。而在極端的情況下,計時器甚至已經(jīng)全部派上了別的用途。[詳細(xì)]
實現(xiàn)延時通常有兩種方法:一種是硬件延時,要用到定時器/計數(shù)器,這種方法可以提高CPU的工作效率,也能做到精確延時;另一種是軟件延時,這種方法主要采用循環(huán)體進(jìn)行。1 使用定時器/計數(shù)器實現(xiàn)精確延時單片機系統(tǒng)一般常選用11.059 2 MHz、12 MHz或6 MHz晶振。第一種更容易產(chǎn)生各種標(biāo)準(zhǔn)的波特率,后兩種的一個機[詳細(xì)]
AVR單片機延時程序:1.毫秒級的延時 延時1ms;void delay_1ms(void){unsigned int i;for(i=1;i<(unsigned int)(xtal*143-2);i++);}在上式中,xtal為晶振頻率,單位為MHz. AVR 延時程序當(dāng)晶振頻率為8M時,延時函數(shù)軟件仿真的結(jié)果為1000.25μs.當(dāng)晶振頻率為4M時,延時函數(shù)軟件仿真結(jié)果為999.5μs[詳細(xì)]
讓我們先來復(fù)習(xí)一下我們學(xué)過的一些指令:MOV P1,#0FFH,MOV R7,#0FFH這些指令都是將一些數(shù)據(jù)送到相應(yīng)的位置中去,為什么要送數(shù)據(jù)呢?第一個因為送入的數(shù)可以讓燈全滅掉,第二個是為了要實現(xiàn)延時,從這里我們可以看出來,在用單片機的編程語言編程時,經(jīng)常要用到數(shù)據(jù)的傳遞,事實上數(shù)據(jù)傳遞是單片機編程時的一[詳細(xì)]
指令給出參與運算的數(shù)據(jù)方式稱為尋址方式。換句話說,尋址方式就是尋找確定參與操作的數(shù)的真正地址。擴展閱讀:單片機尋址方式與指令系統(tǒng)在MCS-51系列單片機的指令系統(tǒng)中尋址方式共有7種,一、直接尋址:直接將地址內(nèi)的值傳遞給寄存器。尋址空間為內(nèi)部RAM和特殊功能寄存器。二、間接尋址:單片機利用R0、 R[詳細(xì)]
在51單片機中,有些存儲區(qū)可以位尋址也可以字節(jié)尋址的,那么比如01H這個地址是表示位還是字節(jié)的 ?怎么區(qū)分地址是位地址還是字節(jié)地址的 ?網(wǎng)友(三塊石頭):在位指令中的地址就是位地址,在字節(jié)操作指令中的地址就是字節(jié)地址。例如:SETB 01H ; 這里的01H就是位地址MOV 01H, #00H ; 這里的01H就是字節(jié)地址[詳細(xì)]
MCS-51單片機尋址方式總結(jié)MCS-51單片機指令系統(tǒng)共使用7中尋址方式,包括寄存器尋址、直接尋址、立即數(shù)尋址、寄存器間接尋址、變址尋址、相對尋址、位尋址等。 【更多資源】 [詳細(xì)]
在指令中直接給出操作數(shù)地址的尋址方式稱為直接尋址,直接尋址何以尋址特殊功能寄存器、內(nèi)部RAM(128字節(jié))和位地址,如:MOV A, 70H; A←(70H)該指令是將RAM單元70H(地址)的內(nèi)容送累加器!靖噘Y源】 [詳細(xì)]
在指令的操作碼中包含了某一工作寄存器的地址(可用作地址指針的工作寄存器是@Ri:R0、R1),而操作數(shù)地址則存放在該寄存器中,如:MOV A, @R1; A←((R1))該指令是將R1的內(nèi)容送作為地址,將該地址所對應(yīng)的RAM單元的內(nèi)容送累加器!靖噘Y源】 [詳細(xì)]
在指令中直接給出操作數(shù)的尋址方式稱為立即尋址。這個操作數(shù)叫立即數(shù),如指令:MOV A, #3AH該指令是將立即數(shù)3AH送累加器,由于MCS-51單片機的片內(nèi)存儲器是8位存儲器,因此立即數(shù)一般為8位二進(jìn)制數(shù)。在MCS-51的指令系統(tǒng)中,用#來識別立即數(shù)在有的指令中,也會用到16位立即數(shù),如:MOV DPTR, #0123H該指令是將16位[詳細(xì)]
在指令的操作碼中包含了某一工作寄存器的地址(Rn:R0—R7),而操作數(shù)則存放在該寄存器中,如:MOV A, R5; A←(R5)該指令是將R5的內(nèi)容送累加器!靖噘Y源】 [詳細(xì)]
將PC或DPTR的值作為基地址,將Acc的值作為變址地址,二者向加得到的值作為操作數(shù)的地址,如:MOV A, @A+DPTR; A←((A)+(DPTR))這種尋址方式一般用于常數(shù)表,DPTR的內(nèi)容為表頭地址,Acc的內(nèi)容就是數(shù)據(jù)在表中的位置!靖噘Y源】 [詳細(xì)]
掃碼關(guān)注我們
0755-82591179
傳真:0755-82591176
郵箱:vicky@yingtexin.net
地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08
Copyright © 2014-2025 穎特新科技有限公司 All Rights Reserved. 粵ICP備14043402號-4