一个奇怪的延时程序时间的计算??????
程序是让8在6个数码管上逐一显示;
BITOUT EQU 8002H;
SEGOUT EQU 8004H;
;
ORG 0000H;
START: LJMP MAIN;
ORG 0100H;
MAIN: MOV A,#7FH; 8的字型码
LOOP: MOV DPTR,#SEGOUT;
MOVX @DPTR,A;
MOV A,#01H;
MOV DPTR,#BITOUT;
LOOP: MOVX @DPTR,A;
MOV R2,#25H; 十进制数为37
LCALL DELAY;
RL A;
SJMP LOOP;
DELAY: PUSH 02H;
LOOP1: PUSH 02H;
LOOP2: PUSH 02H;
LOOP3: DJNZ R2,LOOP3;
POP 02H;
DJNZ R2,LOOP2;
POP 02H;
DJNZ R2,LOOP1;
POP 02H;
DJNZ R2,DELAY;
RET;
END;
(外部晶振为6mhz 机器周期为2us)
上面子程序的延时时间的计算不是37*37*37*37*2*2us=7.5s吗?
但答案说这是一个 延时时间为0.484s的程序 ,而且我下载到硬件上也观察到led的闪烁也大概为0.5s,那我的 延时时间的计算错在那呢?
望指教!!
发表时间:2004年4月23日13:26:46