这个延时程序的算法很复杂啊!
[DELY]:通用延时子程序 [地址]:7FEBH - FFEBH [功能]:延时 [入口]:延时常数放在R2 寄存器中时间常数N(十六进制)所对应的延时时间(6MZH 晶振时)见下表: [出口]:R2=0 [占用寄存器]:R2 [调用]:无 例:延时1 秒子程序 MOV R2,#18H LCALL 7FEBH RET ORG 7FEBH ;通用延时子程序(07EBH & 0FEBH & ...) L7FEB: PUSH 02H ;R2(复位后R2 即为02H)存放时间常数,进栈保护 L7FED: PUSH 02H ; R2 进栈保护 L7FEF: PUSH 02H ; 进栈 L7FF1: DJNZ R2,$ ;R2 不为零等待 POP 02H ;出栈 DJNZ R2,L7FEF ; R2 不为零转 POP 02H ; 出栈 DJNZ R2,L7FED ; R2 不为零转 POP 02H ; 出栈 DJNZ R2,L7FEB ; R2 不为零转 RET ;子程序返回 END
|