根据单片机的频率来计算的。
这个Delay10ms转化成汇编之后:
DELAY_10S: MOV R4,#1
L1: MOV R3,#38 1指令周期
L2: MOV R2,#130 1指令周期
L3: DJNZ R2,L3 2指令周期
DJNZ R3,L2 同上
DJNZ R4,L1 同上
RET 同上
总耗时:[(130*2+1+2)*38+1+2]*1*12/12M = 0.009997s≈10ms
至于是不是误差 0us这个要根据具体的编译器来计算,因为编译器不同,转化之后的汇编也不一样。