多简单的小程序呀:
TIME1MS:
MOV R6, #2
TIME1:
;延时498uS
MOV R7, #248
DJNZ R7, $ ;R7的为0时,程序向下运行,否则继续减
;
DJNZ R6, TIME1 ;加上此命令后,每个小周期时间为500uS
;运行两周为1MS,再加上最前面的MOV R6那条指令,就是1.002MS
RET
此程序实现的是1.002MS的定时,当然这当中不算主程序调用此延时程序时现场保护的时间,即压栈和出栈的时间
void
delay(unsigned
int
x)
//延时
x
ms
{
unsigned
int
i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
延时1ms
即为使x=1;
这程序延时约1ms(x=1时用keil测出来约
0.96831272ms,近似1ms),用c语言很难做到准确的1ms。注意晶振为11.0592mhz的时候用~
老兄,你的单片机是哪个型号的,晶振是多少呀?