DJNZ指令是先减一再判断结果是不是为0,所以36H赋值0是可以的,标识要循环256次.
延时计算:
12M的晶振换算指令周期为1uS
MDLY1S: MOV 35H, #255 ;2uS
MOV 36H, #0 ;2uS
MOV 37H,#4 ;2uS
DLYB: NOP ;1us
DJNZ 35H, DLYB ;2us,第一次循环为255*(1+2)=765,以
;后为256*(1+2)=768
DJNZ 36H, DLYB ;2us 765+(255*768)+(2*256)=197119
DJNZ 37H,DLYB ;2us 197119+(197122*3)+(2*4)=788493
RET ;2us
所以,从进入函数开始到返回调用地址总的延时时间为: 2+2+2+788493+2 = 788501us