|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
請問delay程式中$的作用 謝謝! |
| 作者:paulsimons 欄目:單片機(jī) |
delay: mov R3,#20 d1: mov R4,#20 d2: mov R5,#248 djnz R5,$ djnz R4,d2 djnz R3,d1 ret 本人是新手 對此$的作用不是很理解 這個程式是怎么循環(huán)的? 謝謝 |
| 2樓: | >>參與討論 |
| 作者: fungvy 于 2006/2/10 15:18:00 發(fā)布:
解釋如下 |
|
| 3樓: | >>參與討論 |
| 作者: fungvy 于 2006/2/10 15:23:00 發(fā)布:
我的回復(fù)怎么看不見? 我的回復(fù)怎么看不見? |
|
| 4樓: | >>參與討論 |
| 作者: netscaner 于 2006/2/10 15:51:00 發(fā)布:
R5不為零就跳轉(zhuǎn)到原地址。 |
|
| 5樓: | >>參與討論 |
| 作者: 58722612 于 2006/2/11 11:36:00 發(fā)布:
delay $是原地踏步符號具體說是R5不為0時原地踏步 |
|
| 6樓: | >>參與討論 |
| 作者: fungvy 于 2006/2/14 16:42:00 發(fā)布:
延時程序解說 首先,單片機(jī)執(zhí)行程序的基本原則如下: 沒有跳轉(zhuǎn)指令或不滿足跳轉(zhuǎn)條件時,執(zhí)行完當(dāng)前語句后執(zhí)行下一條語句;滿足跳轉(zhuǎn)條件時則調(diào)至指定語句。 “$”代指當(dāng)前指令所在地址。 上面延時程序的執(zhí)行過程簡述如下: 開始3條是非跳轉(zhuǎn)語句,由”delay: mov R3,#20”順序執(zhí)行到“d2: mov R5,#248”,下一句“djnz R5,$”是一條條件轉(zhuǎn)移指令,每執(zhí)行一遍則將R5減1,然后判斷:當(dāng)R5不為0則跳至當(dāng)前地址(一般每執(zhí)行完一條語句,地址指針要指向下一條語句,所以說“跳至”當(dāng)前地址),R5為0則順序執(zhí)行下一條語句。剛開始R5內(nèi)值為248,減1后不為0,則調(diào)至當(dāng)前地址,繼續(xù)執(zhí)行這條語句。執(zhí)行248次后,方執(zhí)行下一條!癲jnz R4,d2”的道理和上一條一樣,但是R4減1不為0則跳至d2,反復(fù)執(zhí)行mov R5,#248 —> djnz R5,$ —> djnz R4,d2 。所以每執(zhí)行一遍djnz R4,d2必然要執(zhí)行248遍djnz R5,$ 。故執(zhí)行到djnz R3,d1時,必然執(zhí)行了20遍djnz R4,d2 ,包含20*248=4960遍djnz R5,$ 。同樣的道理,執(zhí)行到ret語句,則需執(zhí)行20遍djnz R3,d1,包含20*20=400遍djnz R4,d2 、20*20*248=99200遍djnz R5,$ ! 以上延時程序分為大中小3個循環(huán),djnz R5,$是小循環(huán),djnz R4,d2是中循環(huán),djnz R3,d1是大循環(huán),3重循環(huán)層層包含。 |
|
| 7樓: | >>參與討論 |
| 作者: renmq 于 2006/2/15 10:40:00 發(fā)布:
re: $ 就是本行代碼的地址 |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |