久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4291|回復: 17
打印 上一主題 下一主題
收起左側

新手關于延時子程序,再增加一個R4寫在什么地方

[復制鏈接]
跳轉到指定樓層
樓主
ID:84745 發表于 2015-9-22 12:40 來自手機 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
看了教程,延時子程序里再增加一個R4寫在什么地方,是這樣加還是怎樣加
DELAY:MOV R7,#250;
D1:MOV R6,#250   ;
D2:DJNZ R6,D2     ;
D3:MOV R4,#250   ;
D4:DJNZ R4,D4     ;
DJNZ R7,D1   ;
RET         算法又是怎么算的,如教程總 計:1+250+125000+500=1257501次,乘以1微秒,換算約為0.13秒。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:76227 發表于 2015-9-22 13:03 | 只看該作者
用定時器吧   時間控制的準確些
回復

使用道具 舉報

板凳
ID:84745 發表于 2015-9-22 13:07 來自手機 | 只看該作者
905377346 發表于 2015-9-22 13:03
用定時器吧   時間控制的準確些

我在學習51單機片,這個子程序不明白,不是定時器的問題
回復

使用道具 舉報

地板
ID:72643 發表于 2015-9-22 15:30 | 只看該作者
這就是一個簡單的延時程序吧 不過怎么還用匯編寫呢
回復

使用道具 舉報

5#
ID:90795 發表于 2015-9-22 16:31 | 只看該作者
用定時器吧   時間控制的準確些,也可以專門找一些寫好的延遲程序
回復

使用道具 舉報

6#
ID:84745 發表于 2015-9-22 17:49 來自手機 | 只看該作者
我還沒學到定時器那步,現在只想搞懂R4是怎么加上去,排在那一排,加上去有多少次,加上去是怎么算次數的?
回復

使用道具 舉報

7#
ID:90719 發表于 2015-9-22 18:27 | 只看該作者
看不懂匯編,感覺c比較簡單一些
回復

使用道具 舉報

8#
ID:7485 發表于 2015-9-22 20:46 | 只看該作者
本帖最后由 ahshmj 于 2015-9-23 11:36 編輯

如果使用的是12M晶振,則:
DELAY:MOV R7,#250   ;本語句運行次數=1     機器周期數=1*1=1      (該指令每次執行周期數=1)
D1:MOV R6,#250        ;本語句運行次數=250  機器周期數=250*1=250  (該指令每次執行周期數=1)
D2:MOV R4,#250        ;本語句運行次數=250*250=62500   機器周期數=62500*1=62500  (該指令每次執行周期數=1)
D3:DJNZ R4,D3          ;本語句運行次數=250*250*250=15625000      機器周期數=15625000*2=31250000   (該指令每次執行周期數=2)
DJNZ R6,D2              ;本語句運行次數=250*250=62500      機器周期數=62500*2=125000     (該指令每次執行周期數=2)
DJNZ R7,D1              ;本語句運行次數=250    機器周期數=250*2=500      (該指令每次執行周期數=2)
RET                        ;本語句運行次數=1    機器周期數=1*2=2      (該指令每次執行周期數=2)
就這個來說,計算:1+250+62500+31250000+125000+500+2=31.43825100秒

作了修改,這個是極準確的機器周期數。


回復

使用道具 舉報

9#
ID:90833 發表于 2015-9-22 23:25 | 只看該作者
可以計算出來的。有頻率,有循環次數
回復

使用道具 舉報

10#
ID:90794 發表于 2015-9-22 23:33 | 只看該作者
DELAY:         MOV R7,#250     ; D1:            MOV R6,#250     ;   執行需要1 D2:            DJNZ R6,D2      ;   若R6不等于0,則執行D2,R6=R6-1,直到R6=0,執行需要250         MOV R4,#250     ; D4:            DJNZ R4,D4      ;   若R4不等于0,則執行D4,R4=R4-1,直到R4=0,執行需要250         DJNZ R7,D1      ;   若R7不等于0,則執行D7,R4=R7-1,直到R7=0,執行需要250 RET 所以 D1=1,(D2=250 + D4=250)* (D7=250)
回復

使用道具 舉報

11#
ID:84745 發表于 2015-9-23 08:10 來自手機 | 只看該作者
ahshmj 發表于 2015-9-22 20:46
DELAY:MOV R7,#250;
D1:MOV R6,#250   ;
D2:MOV R4,#250   ;

謝謝謝謝謝謝
回復

使用道具 舉報

12#
ID:90858 發表于 2015-9-23 12:37 來自手機 | 只看該作者
250*(250+250)
回復

使用道具 舉報

13#
ID:84745 發表于 2015-9-23 15:57 來自手機 | 只看該作者
本帖最后由 8imi8 于 2015-9-26 11:34 編輯

DELAY:MOV R7,#250;

D1:MOV R6,#250   ;

D2:DJNZ R6,D2     ;

D3:DJNZ R6,D3     ;

DJNZ R7,D1   ;

RET    我這樣寫是對的還是錯的, 計算:1+250+(250*250)*2+{[(250*250)*2]*[(250*250)*2]}*2+250*2。算法正確嗎?我想D2既然能雙周期D1的步驟,那么D3也可以雙周期D2的步驟,不知道這樣對不對。
回復

使用道具 舉報

14#
ID:7485 發表于 2015-9-24 21:01 | 只看該作者
本帖最后由 ahshmj 于 2015-9-24 21:02 編輯
8imi8 發表于 2015-9-23 15:57
DELAY:MOV R7,#250;

D1:MOV R6,#250   ;

看不明白你的思路。但是,像“MOV R6,#250”這樣的語句是1周期指令。
回復

使用道具 舉報

15#
ID:84745 發表于 2015-9-26 11:32 來自手機 | 只看該作者
ahshmj 發表于 2015-9-24 21:01
看不明白你的思路。但是,像“MOV R6,#250”這樣的語句是1周期指令。

我想D2既然能雙周期D1的步驟,那么D3也可以雙周期D2的步驟,不知道這樣對不對
回復

使用道具 舉報

16#
ID:19715 發表于 2015-9-26 12:08 | 只看該作者
本帖最后由 明白 于 2015-9-26 12:11 編輯

DELAY:MOV R7,#250 ;1指令周期x執行    1次 = 1  指令周期
D1:MOV R6,#250      ;1指令周期x執行     1次 = 1  指令周期
D2:DJNZ R6,D2         ;2指令周期x執行250次 = 500指令周期
D3:MOV R4,#250      ;1指令周期x執行     1次 = 1  指令周期
D4:DJNZ R4,D4         ;2指令周期x執行250次 = 500指令周期
DJNZ R7,D1               ;2指令周期x執行250次 = 500指令周期
RET                           ;2指令周期x執行     1次 = 2  指令周期


內循環由R6,R4分別遞減完成,延時時間是先后的疊加:
  1+500+1+500=1002個機器周期,
外循環次數R7=250;
精確總共:1 + 1002*250 +2 =  250503   指令周期
回復

使用道具 舉報

17#
ID:7485 發表于 2015-10-3 19:32 | 只看該作者
本帖最后由 ahshmj 于 2015-10-3 19:45 編輯
明白 發表于 2015-9-26 12:08
DELAY:MOV R7,#250 ;1指令周期x執行    1次 = 1  指令周期
D1:MOV R6,#250      ;1指令周期x執行     1次 = 1  指令周期,執行250次(R7的值)
D2:DJNZ R6,D2         ;2指令周期x執行250次 = 500指令周期,執行250次(R6的值)
D3:MOV R4,#250      ;1指令周期x執行     1次 = 1  指令周期,執行250次(R7的值)
D4:DJNZ R4,D4         ;2指令周期x執行250次 = 500指令周期,執行250次(R4的值)
DJNZ R7,D1               ;2指令周期x執行250次 = 500指令周期
RET                           ;2指令周期x執行     1次 = 2  指令周期

你的程序不是3層循環。你看一下上面的紅色字體。我上面給出的是3層循環的程序,按3層循環應該是:
31.43825100s  ,這是Keil uVision3運行的結果,如果晶振設成12M,機器周期就是3143825100。
你何不在Keil uVision3運行一下看看??然后不就清楚了嗎??


回復

使用道具 舉報

18#
ID:19715 發表于 2015-10-3 22:31 | 只看該作者
本帖最后由 明白 于 2015-10-3 22:48 編輯

樓主原本程序,那樣計算,有錯
怎么看,看出3層循環?
先別看R7的外循環,單獨看中間紅色4行的指令是怎么執行!
認為是【1】還是【2】
【1】:   R6 、R4各自的循環有互相嵌套
【2】:   R6 、R4先后互不相關的各自循環
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 综合九九| 欧美久 | 操久久 | 欧美一级片免费看 | 91一区二区三区在线观看 | 国产精品国产三级国产aⅴ原创 | 免费a网| 99精品免费视频 | 欧美性网| 日韩伦理一区二区 | 精品欧美乱码久久久久久 | 91久久久www播放日本观看 | 看av电影 | 国产精品国产三级国产播12软件 | 日韩一区二区三区在线播放 | 国产精品一区二区三区四区五区 | 久久久久久久国产 | www.天天操.com| 国产精品久久久久久久久久久久久久 | 午夜影院 | 羞羞视频网页 | 国产精品久久久久久久午夜片 | 精品国产一区二区三区久久 | 成人伊人| 国产成人99久久亚洲综合精品 | 国产精品区一区二区三 | 在线看91| 亚洲精品一区二区三区蜜桃久 | 91精品国产一区二区三区动漫 | 少妇一级淫片免费播放 | 国产一区二区免费 | 日韩欧美成人一区二区三区 | 欧美在线成人影院 | 黄色av一区 | 黄频视频| 久久久999成人 | 国产成人av免费看 | 欧美1—12sexvideos| 91视频在线看 | 日韩精品一区二区三区中文在线 | 欧美国产日韩在线观看 |