標題:
請大佬幫新手的我分析一下單片機程序,主要是延時部分看不懂
[打印本頁]
作者:
金子。
時間:
2019-1-20 17:10
標題:
請大佬幫新手的我分析一下單片機程序,主要是延時部分看不懂
本帖最后由 金子。 于 2019-1-21 13:58 編輯
這個程序是怎么個運行過程啊,請會的大佬幫忙給分析一下,謝謝了;主要是延時的部分真的沒看懂
ORG 0000H
LJMP START
ORG 001BH
LJMP YSZD
ORG 0030H
START:
SETB IT1
SETB ET1
SETB EA
SETB TR1
LCALL TIME500MS
TIME500MS: PUSH 03H
MOV R3,#61D
K005: SETB P1.5
CLR P1.5
CJNE R3,#00H,K005
POP 03H
RET
YSZD: CJNE R3,#00H,ASD1 ;延時
AJMP ASD2
ASD1: DEC R3
ASD2: RETI
END
作者:
笨笨兔
時間:
2019-1-21 08:27
程序不全吧。
沒有 START,怎么跳轉(zhuǎn)?
匯編程序不好玩啊。
作者:
周超然
時間:
2019-1-21 08:37
大哥,你玩的匯編啊。厲害
作者:
金子。
時間:
2019-1-21 13:59
自己想明白了~~
作者:
街角の風鈴
時間:
2019-1-21 15:18
這個程序從上面一條一條執(zhí)行,先跳轉(zhuǎn)到START,這是對中斷相關(guān)的配置,再執(zhí)行K005,就是對配置相應(yīng)IO引腳,并輸出低電平,延時函數(shù)就是:先比較R3寄存器和00H的大小,如果大,執(zhí)行ASD1,使R3寄存器值減一。
當R3減到和00H相等時,執(zhí)行ASD2.中斷返回
作者:
cyjlyqxyy
時間:
2019-1-21 17:49
匯編語言太高級了,只會用C來寫
作者:
木木木1998
時間:
2019-1-21 22:55
延時不是TIME500MS子程序部分嗎,延時500ms啊
作者:
yzwzfyz
時間:
2019-1-22 15:14
1、硬延時是利用CPU的運行時間耗時間,所有它當中寫什么語句就不重要了,你可以不去理會它,就要理解它在耗時兜圈子就可以了。
2、這里要注意,03H和R3是同一個地方(上電初期),R3是不可以直接 PUSH或POP的。
因為R3是四個地方之一:03H,0BH,13H,1BH。上電時R3=03H。(參見PSW寄存器.43)
PUSH R3 時它不知道 將哪個PUSH入堆棧,所以此條指令不存在!
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1