51单片机怎样延时时间更长?晶振12M

void delay(unsigned int i) //延时程序{for(a=i;a>0;a--)for(b=225;b>0;b--);
2025-03-06 04:15:06
推荐回答(5个)
回答1:

如果是unsigned char b;则b值再大也只有256,改改试试:
void delay(unsigned int i) //延时程序
{
unsigned int b;

for(a=i;a>0;a--)
{for(b=0;b<500;b++);}

}
此时i在0--65535之间一定有你满意的延时。

回答2:

汇编的
MOV R0,#20 ;将立即数200传递到工作寄存器R0中
D6: MOV R1,#255 ;将立即数200传递到工作寄存器R1中
D7: DJNZ R1,D7 ;检测R1中的数值是否为0,不为0则R1减1并转移到标号D9,为0则顺序执行
DJNZ R0,D6 ;检测R0值是否为0,不为0则R0减1并转移到标号D8,为0则顺序执行

回答3:

这是一个循环函数,可以依靠更改i 和b的数值来修改延时的时间,在这个子程序里,你更改B的值就可以了

回答4:

要延时更长,最好用定时器,而且也更精确。

回答5:

你要注意变量的取值范围