找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

匯編語言延時(shí)程序具體應(yīng)該怎么計(jì)算?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:165498 發(fā)表于 2017-3-2 09:26 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
二重循環(huán)模型:
   DEL:  MOV   R6,#y
   DEL1:MOV   R5,#X
   DEL2:DJNZ  R5,DEL2
            DJNZ   R6,DEL1
            RET
我知道T=2XY+3Y+3
可是,如果我要實(shí)現(xiàn)一個(gè)200000uS,該如何計(jì)算出X和Y的數(shù)值 ,一個(gè)方程有兩個(gè)未知數(shù),怎么求呢?
三重循環(huán)模型:
   DEL:  MOV   R7,#Z
   DEL1:MOV   R6,#Y
   DEL2:MOV   R5,#X
   DEL3:DJNZ  R5,DEL3
            DJNZ   R6,DEL2
            DJNZ   R7,DEL1
            RET

我知道T=2XYZ+3YZ+3Z+3
該如何計(jì)算出X、Y和Z的數(shù)值 ,一個(gè)方程有3個(gè)未知數(shù),怎么求呢?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:7485 發(fā)表于 2017-3-2 18:19 | 只看該作者
這3個(gè)都是未知數(shù)?
先確定兩個(gè)然后計(jì)算求出第3個(gè)。
回復(fù)

使用道具 舉報(bào)

板凳
ID:111634 發(fā)表于 2017-3-2 19:58 | 只看該作者
"一個(gè)方程有兩個(gè)未知數(shù),怎么求呢?"   那就有無數(shù)個(gè)解。先設(shè)定一個(gè)未知數(shù),然后就有對(duì)應(yīng)的解了。看來樓主數(shù)學(xué)未學(xué)好!
回復(fù)

使用道具 舉報(bào)

地板
ID:111634 發(fā)表于 2017-3-2 20:02 | 只看該作者
本帖最后由 zl2168 于 2017-3-2 20:35 編輯

【例3-24】 延時(shí)程序是單片機(jī)應(yīng)用系統(tǒng)常用的模塊程序。試按下列要求編寫延時(shí)子程序:


延時(shí)1ms,fOSC=6MHz;


延時(shí)10ms,fOSC=12MHz;


延時(shí)0.5sfOSC=12MHz。


解:⑴ 延時(shí)1msfOSC =6MHz,一個(gè)機(jī)器周期為2msDJNZ指令為2個(gè)機(jī)器周期。


DY1ms:     MOV      R7,#250          ;置循環(huán)次數(shù)(指令為1個(gè)機(jī)器周期)


LOP:       DJNZ      R7,LOP           ;250×2機(jī)周=500機(jī)周


RET       ;子程序返回(單獨(dú)Keil調(diào)試時(shí),需用END替代RET


上述子程序?qū)嶋H延時(shí)(500 +1)機(jī)周×2ms/機(jī)周=1002ms。


延時(shí)10msfOSC =12MHz,一個(gè)機(jī)器周期為1ms。


DY10ms:    MOV      R6,#20           ;置外循環(huán)次數(shù)


DY1:       MOV      R7,#250          ;置內(nèi)循環(huán)次數(shù)


DY2:       DJNZ      R7,DY2          ;250×2機(jī)周=500機(jī)周


DJNZ      R6,DY1           ;500機(jī)周×20=10000機(jī)周


RET                         ;子程序返回(單獨(dú)Keil調(diào)試時(shí),需用END替代RET


實(shí)際延時(shí)[(500+2+1)×20+1]機(jī)周×1ms /機(jī)周=10061ms


延時(shí)0.5s。fOSC=12MHz,一個(gè)機(jī)器周期為1ms


DY05s:     MOV      R5,#5            ;置外循環(huán)次數(shù)


DY0:       MOV      R6,#200          ;置中循環(huán)次數(shù)


DY1:       MOV      R7,#250          ;置內(nèi)循環(huán)次數(shù)


DY2:       DJNZ      R7,DY2          ;250×2機(jī)周=500機(jī)周


DJNZ      R6,DY1           ;500機(jī)周×200 =100000機(jī)周


DJNZ      R5,DY0           ;100000機(jī)周×5=500000機(jī)周


RET                       ;子程序返回(單獨(dú)Keil調(diào)試時(shí),需用END替代RET


實(shí)際延時(shí){[(2×250+2+1)×200+2+1]×5+1}機(jī)周×1ms/機(jī)周=503016ms。


以上摘自張志良編著
80C51單片機(jī)實(shí)用教程——基于Keil CProteus》高等教育出版社ISBN 978-7-04-044532-9, 用于學(xué)習(xí)51單片機(jī)原理,程序(c和匯編)語句條條有注解,便于閱讀理解,便于自學(xué)。



回復(fù)

使用道具 舉報(bào)

5#
ID:155507 發(fā)表于 2017-3-2 20:12 | 只看該作者
以某晶振為12MHz的單片機(jī)為例,晶振為12MHz即一個(gè)機(jī)器周期為1us。

計(jì)算分析:

X:R5=150 Y:R6=132 Z:R7=5

程序共有三層循環(huán)

一層循環(huán)n:R5*2 = 150*2 = 300us  (DJNZ 2us)

二層循環(huán)m:R6*(n+3) = 132*303 = 39996us   (DJNZ 2us + R5賦值 1us = 3us)

三層循環(huán): R7*(m+3) = 5*39999 = 199995us   (DJNZ 2us + R6賦值 1us = 3us)

循環(huán)外: 5us      子程序調(diào)用 2us + 子程序返回 2us + R7賦值 1us = 5us

延時(shí)總時(shí)間 = 三層循環(huán) + 循環(huán)外 = 199995+5 = 200000us =200ms

計(jì)算公式:延時(shí)時(shí)間=[(2*R5+3)*R6+3]*R7+5
回復(fù)

使用道具 舉報(bào)

6#
ID:123289 發(fā)表于 2017-3-4 02:11 | 只看該作者
不計(jì)算的方法:用軟件仿真運(yùn)行,可以在運(yùn)行結(jié)果中找到答案。不對(duì)再改。
回復(fù)

使用道具 舉報(bào)

7#
ID:165498 發(fā)表于 2017-5-19 08:48 | 只看該作者
yzwzfyz 發(fā)表于 2017-3-4 02:11
不計(jì)算的方法:用軟件仿真運(yùn)行,可以在運(yùn)行結(jié)果中找到答案。不對(duì)再改。

用哪個(gè)軟件仿真?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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