|
32MHz, 单时钟周期,一个周期31.25nS, 32个时钟周期=1uS。
这个延时程序,编译后(Keil C8.08)本身有16个汇编指令,按照平均 1指令=2时钟周期 来计算,正好32个时钟周期,正好1uS。
算上肯定会多出的:入口保存、出口恢复指令,还要略多一点点。
8: void usDelay(unsigned char n)
9: {
10: unsigned char tt;
11: for(tt = 0;tt
C:0x0040 E4 CLR A
C:0x0041 FE MOV R6,A
C:0x0042 EE MOV A,R6
C:0x0043 C3 CLR C
C:0x0044 9F SUBB A,R7
C:0x0045 5003 JNC C:004A
C:0x0047 0E INC R6
C:0x0048 80F8 SJMP C:0042
12: for(tt = 0;tt
13:
14: return ;
C:0x004A E4 CLR A
C:0x004B FE MOV R6,A
C:0x004C EE MOV A,R6
C:0x004D C3 CLR C
C:0x004E 9F SUBB A,R7
C:0x004F 5003 JNC C:0054
C:0x0051 0E INC R6
C:0x0052 80F8 SJMP C:004C
15: } |
|