标题: 汇编:51单片机模块化软件延时 [打印本页]

作者: liuchao626    时间: 2022-7-12 22:36
标题: 汇编: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.                         
复制代码
有错的地方,欢迎大家猛烈批评指正。

作者: 光说不练    时间: 2022-7-13 15:36
1微秒估计悬,RET占2个周期。第一个设计为5微秒或10微秒比较合理。
作者: liuchao626    时间: 2022-7-13 18:18
光说不练 发表于 2022-7-13 15:36
1微秒估计悬,RET占2个周期。第一个设计为5微秒或10微秒比较合理。

感谢大哥指教了,感激不尽
作者: yzwzfyz    时间: 2022-7-28 11:35
51单片机中,R0-R7对应的RAM地址可以是00H-07H,也可以是08H-0FH,10H-17H,18H-1FH。
共4套方案,由PSW中的RS1、RS0选择决定,上电时RS1、RS0=00,所以默认R0-R7对应的地址是00H-07H。
PUSH R6,会让CPU无从选择哪一个地址的内容压入堆栈。
所以,51指令中没有 PUSH、POP R0-R7的指令。
PUSH R6 可以改为 PUSH 06H(默认状态下时)替代。

能看出这个问题的人,绝对极少。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1