j循环可以延时ms个i循环,也就是ms毫秒.for(i=0;i<120,i++)do-something;
voiddelay怎么用
void-delay(uint-t)//参数是无符号整形,时间不可能为负数{register-uint-bt;//定义无符号整形,放在寄存器里,存取速度较快,平时都是放在内存里for(;t;t
[voiddelay怎么用]高手帮忙解释一下这种单片机延时函数void
问题:void-delay(){;;}void-start(){sda=1;delay();scl=1;
delay();sda=0;delay();}写成下面好看点void-delay(){;;}两个“;”前什么也没写是空指令,空指令就是CPU什么也不做,但是要消耗一个指令的时间。
这个延时函数每调用一次就延时2个指令的时间。具体延时的时间要看你用的单片机的晶振时间。delay里面的内容用for循环即可,可以修改循环次数改变延时时间void-delay1(unsigned-int-j){unsigned-char-i;do{for(i=0;i<2;i++);j
;asm("nop");}while(j);}这是us延时,有误差,j的值越大相对误差越小。不过相信误差应该在你的可接受范围内。
void-delay1(unsigned-int-j){unsigned-int-i;do{for(i=0;i<2853;i++);j
;}while(j);}这是ms延时,有误差,j的值越大相对误差越小。不过相信误差应该在你的可接受范围内。
[voiddelay怎么用]高手帮忙解释一下这种单片机延时函数void
写成下面好看点void-delay(){;;}两个“;”前什么也没写是空指令,空指令就是CPU什么也不做,但是要消耗一个指令的时间。这个延时函数每调用一次就延时2个指令的时间。具体延时的时间要看你用的单片机的晶振时间。
[voiddelay怎么用]延迟时间怎么计算
你的晶振的倒数就是时钟周期用i乘以时钟周期就是延迟时间了谁知道你的i是多少呀?诶,这个没人知道。可以用keil仿真直接得到答案,也可以参考下面的自己改。
下面几个是单片机的延时程序(包括asm和c程序,都是我在学单片机的过程中用到的),在单片机延时程序中应考虑所使用的晶振的频率,在51系列的单片机中我们常用的是11.0592mhz和12.0000mhz的晶振,而在avr单片机上常用的有8.000mhz和4.000mh的晶振所以在网上查找程序时如果涉及到精确延时则应该注意晶振的频率是多大。
软件延时:(asm)晶振12mhz,延时1秒程序如下:delay:mov72h,#100loop3:mov
71h,#100loop1:mov70h,#47loop0:djnz70h,loop0nopdjnz
71h,loop1mov70h,#46loop2:djnz70h,loop2nopdjnz72h,loop3mov
70h,#48loop4:djnz70h,loop4定时器延时:晶振12mhz,延时1s,定时器0工作方式为方式1delay1:mov-r7,#0ah
;;晶振12mhz,延时0.5秒ajmp-delaydelay2:mov-r7,#14h;;晶振12mhz,延时1秒delay:clr-ex0mov-tmod,#01h
;设置定时器的工作方式为方式1mov-tl0,#0b0h;给定时器设置计数初始值mov-th0,#3chsetb-tr0
;开启定时器here:jbc-tf0,next1sjmp-herenext1:mov-tl0,#0b0hmov-th0,#3chdjnz-r7,hereclr-tr0
;定时器要软件清零setb-ex0ret-c语言延时程序:10ms延时子程序(12mhz)void-delay10ms(void){unsigned-char-i,j,k;for(i=5;i>0;i
)for(j=4;j>0;j)for(k=248;k>0;k);}1s延时子程序(12mhz)void-delay1s(void){unsigned-char-h,i,j,k;for(h=5;h>0;h
)for(i=4;i>0;i)for(j=116;j>0;j)for(k=214;k>0;k);}200ms延时子程序(12mhz)void-delay200ms(void){unsigned-char-i,j,k;for(i=5;i>0;i
)for(j=132;j>0;j)for(k=150;k>0;k);}500ms延时子程序程序:(12mhz)
void-delay500ms(void){unsigned-char-i,j,k;for(i=15;i>0;i
)for(j=202;j>0;j)for(k=81;k>0;k);}下面是用了8.0000mhz的晶振的几个延时程序(用定时0的工作模式1):(1)延时0.9msvoid-delay_0_9ms(void){tmod=0x01;
/*定时器0工作在模式1下(16位计数器)*/th0=0xfd;tl0=0xa8;tr0=1;/*启动定时器*/while(tf0==0);tr0=0;}(2)延时1msvoid-delay_1ms(void){tmod=0x01;
/*定时器0工作在模式1下(16位计数器)*/th0=0xfd;tl0=0x65;tr0=1;/*启动定时器*/while(tf0==0);tr0=0;}(3)延时4.5msvoid-delay_4_5ms(void){tmod=0x01;
/*定时器0工作在模式1下(16位计数器)*/th0=0xf4;tl0=0x48;tr0=1;/*启动定时器*/while(tf0==0);tr0=0;}