如果是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之间一定有你满意的延时。
汇编的
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则顺序执行
这是一个循环函数,可以依靠更改i 和b的数值来修改延时的时间,在这个子程序里,你更改B的值就可以了
要延时更长,最好用定时器,而且也更精确。
你要注意变量的取值范围