找一个单片机汇编语言编写的延时1ms的子程序

80c51,12m晶振

多简单的小程序呀:

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的定时,当然这当中不算主程序调用此延时程序时现场保护的时间,即压栈和出栈的时间
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-02-16
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的时候用~
第2个回答  2010-04-11
老兄,你的单片机是哪个型号的,晶振是多少呀?
相似回答