標(biāo)題: 匯編:51單片機模塊化軟件延時 [打印本頁]

作者: liuchao626    時間: 2022-7-12 22:36
標(biāo)題: 匯編:51單片機模塊化軟件延時
  1. ORG 0000H
  2.                 PUSH PSW
  3.                 PUSH ACC
  4.                 PUSH B

  5.                 LCALL DELAY1US
  6.                
  7.                 POP PSW
  8.                 POP ACC
  9.                 POP B
  10.                 RET
  11.                
  12. DELAY1US:        NOP
  13.                         RET
  14.                         
  15. DELAY100US:        PUSH R7
  16.                         MOV R7,#100
  17.         LOOP:        NOP
  18.                         DJNZ R7,LOOP
  19.                         POP R7
  20.                         RET
  21.                         
  22. DELAY1MS:        PUSH R7
  23.                         PUSH R6
  24.                         MOV R6,#10
  25.         LOOP1:        MOV R7,#100
  26.                         NOP
  27.         LOOP2:        DJNZ R6,LOOP2
  28.                         DJNZ R7,LOOP1
  29.                         POP R6
  30.                         POP R7
  31.                         RET
  32.                         
復(fù)制代碼
有錯的地方,歡迎大家猛烈批評指正。

作者: 光說不練    時間: 2022-7-13 15:36
1微秒估計懸,RET占2個周期。第一個設(shè)計為5微秒或10微秒比較合理。
作者: liuchao626    時間: 2022-7-13 18:18
光說不練 發(fā)表于 2022-7-13 15:36
1微秒估計懸,RET占2個周期。第一個設(shè)計為5微秒或10微秒比較合理。

感謝大哥指教了,感激不盡
作者: yzwzfyz    時間: 2022-7-28 11:35
51單片機中,R0-R7對應(yīng)的RAM地址可以是00H-07H,也可以是08H-0FH,10H-17H,18H-1FH。
共4套方案,由PSW中的RS1、RS0選擇決定,上電時RS1、RS0=00,所以默認(rèn)R0-R7對應(yīng)的地址是00H-07H。
PUSH R6,會讓CPU無從選擇哪一個地址的內(nèi)容壓入堆棧。
所以,51指令中沒有 PUSH、POP R0-R7的指令。
PUSH R6 可以改為 PUSH 06H(默認(rèn)狀態(tài)下時)替代。

能看出這個問題的人,絕對極少。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1