51微控制器,晶振為6M請幫忙寫10ms的延時程式,能有詳細解釋的。因為我還不知道這個延時的時間是怎麼算

時間 2021-08-14 23:02:28

1樓:匿名使用者

延時有很多種方法,有一種是讓微控制器去做無聊的迴圈,

還有一種是用定時器。

我本身也是菜鳥所以只能粗略的講一下。

第一種的演算法是

晶振的週期t1=1/f; 這裡f=6mhz 所以t1=1/6 us;(微秒)

微控制器花12個t1去執行一個指令,

所以一個機器週期等於12個晶振週期,

t2=12*t1=2us

10ms=1000 0us

所以你要得到10ms的延時就要想辦法讓機器去做5000條「無聊的指令」

所以del: mov r5,#05h

f1: mov r6,#05h

f2: mov r7,#32h

f3: djnz r7,f3

djnz r6,f2

djnz r5,f1

ret這種方法是用於對時間要求不高的地方,我說的是其思想,程式中可能有錯的地方

用定時器的方法我不太會就不誤人了 (補充一下就是這個是用匯編寫的,你在主程式中用acall del呼叫就延時了。

2樓:煙不易冷

選取時鐘源計算時鐘週期,然後用定時器來自動從裝方式等通過計算一次溢位是多少時鐘週期死算出多少時間溢位一次,然後根據你需要的時間延時算出需要多少次迴圈溢位,具體操作自己去看相關暫存器等。最好找個例子,例子很多的

3樓:匿名使用者

您好:void delay()

4樓:誰明浪子心

del mov r5#50

aa; mov r6#20

bb; mov r7#248

djnz r7$

djnz r6 d2

djnz r5 d2

51微控制器為什麼晶振都用11 0592M

橘落淮南常成枳 因為11.0592mhz能夠準確地劃分成時脈頻率,與uart 通用非同步接收器 傳送器 量常見的波特率相關。特別是較高的波特率 19600,19200 不管多麼古怪的值,這些晶振都是準確,常被使用的。用11.0592晶振的原因是51微控制器的定時器導致的,用51微控制器的定時器做波特...

晶振放在微控制器下可以嗎,晶振放在微控制器背面,打過孔對晶振訊號有影響嗎

矽谷野狼 可以,沒有任何問題 我的就經常放在微控制器下 晶片的煩惱 很多人都這樣做,沒聽說有什麼不利。 完全可以。即使是微控制器用24m晶振,只要不靠近高頻訊號裝置,佈線時都不會有太大的影響 可以放,但最好外殼接地下,有時設計空間有限20m的晶振都放過。 12m屬於低頻率,放在下面沒有問題。 發燒大...

為什麼51微控制器的晶振要實行12分頻

首先需要明確 51微控制器不是一定要用12m的晶振,也行,18m也行,即一般來說35m以內的無源晶振 兩腳的 都可以的。為什麼常見的51微控制器要用12m的晶振,是因為我們常說的51微控制器是12分頻的,如果選用12m晶振,如果是單指令週期的語句,剛好是1us,其他語句好似1us的整數倍,這樣計算指...