找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11887|回復(fù): 21
打印 上一主題 下一主題
收起左側(cè)

幫忙,這個程序怎么得來的啊

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:3021 發(fā)表于 2008-7-21 13:06 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我是單片機學(xué)習(xí)新手,有個問題想請問高手們。請問以下的程序是如何得來的,那些數(shù)字是根據(jù)什么算來的?
DELAY:  MOV  R3, #50;
   D1:  MOV  R4, #20;
   D2:  MOV  R5, #248;
        DJNZ R5, $;
        DJNZ R4, D2;
        DJNZ R3, D1;
        RET
        END
請高手幫忙,在下感激不盡
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:3271 發(fā)表于 2008-7-21 15:06 | 只看該作者
著是一個延時程序
回復(fù)

使用道具 舉報

板凳
ID:3569 發(fā)表于 2008-7-22 13:48 | 只看該作者

正如二樓說的 是一個延時程序,數(shù)據(jù)是根據(jù)須要來定的,一條指令比如說要使用1個機器周期,晶振是12m,要延時1s,那么你就可以根據(jù)這些數(shù)據(jù)來定,指令中的那些立即數(shù)了

回復(fù)

使用道具 舉報

地板
ID:3021 發(fā)表于 2008-7-29 21:06 | 只看該作者
謝謝幫忙,在下明白了
回復(fù)

使用道具 舉報

5#
ID:4024 發(fā)表于 2008-8-5 15:50 | 只看該作者

路過

回復(fù)

使用道具 舉報

6#
ID:4839 發(fā)表于 2008-9-2 23:11 | 只看該作者
YS0: MOV R0,#10 YS1: MOV R1,#100 YS2: MOV R2,#7DH(其實是125) YS3: NOP NOP DJNZ R2,YS3(每執(zhí)行一次為四個指令周期也就是4微妙,這個指令要執(zhí)行125次,也就是500微妙) DJNZ R1,YS2(這條指令一次要0.5ms要執(zhí)行100次,就是50ms) DJNZ R0,YS1(這條指令一次要50ms,要執(zhí)行10次,就是500ms既0.5S) RET 要想調(diào)整時間可以調(diào)整R0和R1的大小,不要超過256就可以了! 這樣的延時不和很準,只是大概的,用在要求不高的場合,要想準確就要用定時器!
回復(fù)

使用道具 舉報

7#
ID:7199 發(fā)表于 2008-12-3 13:02 | 只看該作者
樓上說得很好
回復(fù)

使用道具 舉報

8#
ID:5875 發(fā)表于 2009-2-26 21:15 | 只看該作者
這延時程序自己琢磨了好久才明白它的算法。。不過還好自己搞懂,記的特牢
回復(fù)

使用道具 舉報

9#
ID:8765 發(fā)表于 2009-2-26 23:15 | 只看該作者
之前有認真算過長時間不算又忘的差不多了
回復(fù)

使用道具 舉報

10#
ID:11013 發(fā)表于 2009-4-11 08:42 | 只看該作者

延時,不知怎樣才能算出精確的延時

回復(fù)

使用道具 舉報

11#
ID:11309 發(fā)表于 2009-4-16 13:48 | 只看該作者

哈哈,我也是好像剛明白點。

回復(fù)

使用道具 舉報

12#
ID:11709 發(fā)表于 2009-5-14 21:46 | 只看該作者
執(zhí)行數(shù)值移動的指令用一個機器周期,那個DJNZ的指令執(zhí)行一次用2個機器周期,你算算用多少時間就明白了,就像是樓上說的那樣,這樣延時不準確。要是想嚴格定時還得用定時/計數(shù)器的定時功能。
回復(fù)

使用道具 舉報

13#
ID:13151 發(fā)表于 2009-5-24 22:18 | 只看該作者
DELAY:  MOV  R3, #50;   1US
   D1:  MOV  R4, #20;     1US    
   D2:  MOV  R5, #248;   1US
        DJNZ R5, $;           2US
        DJNZ R4, D2;         2US
        DJNZ R3, D1;         2US
        RET                  
        END
DELAY的時間       D1                 D2        DJNZ R5……       DJNZ R4……        DJNZ R3……
1       +            (1        +      ( 1   +      2*248    +            2)*20 +         2)*50
差不多就是這么算的
回復(fù)

使用道具 舉報

14#
ID:13151 發(fā)表于 2009-5-24 22:21 | 只看該作者
我上面是算的12MHZ晶振。不要亂代了機器周期時間。
回復(fù)

使用道具 舉報

15#
ID:13825 發(fā)表于 2009-6-11 10:26 | 只看該作者
總延時:2微妙乘R7乘R6乘R5=2微妙X50X20X248=496000微妙=0.496S
回復(fù)

使用道具 舉報

16#
ID:14096 發(fā)表于 2009-6-11 10:45 | 只看該作者
DELAY:  MOV  R3, #50;                 延時:50×20×248×2μs=0.5s
   D1:  MOV  R4, #20;
   D2:  MOV  R5, #248;
        DJNZ R5, $;               $的意思就是原地等待
        DJNZ R4, D2;
        DJNZ R3, D1;
        RET
        END
貌似很容易理解吧?
回復(fù)

使用道具 舉報

17#
ID:14104 發(fā)表于 2009-6-11 13:48 | 只看該作者
學(xué)習(xí)了,謝謝
回復(fù)

使用道具 舉報

18#
ID:14095 發(fā)表于 2009-7-7 21:21 | 只看該作者

呵呵  路過

回復(fù)

使用道具 舉報

19#
ID:24661 發(fā)表于 2010-6-23 15:24 | 只看該作者
前三條指令是把操作地址放到寄存器中,后三條指令是循環(huán)空操作,旨在延時
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表