单片机C语言中while的延时时间?

单片机C语言中while的延时时间?,第1张

用KEIL软件可以计算时间,将while的起始位置和终止位置加红点(双击即可);

然后左侧的SEC后面的就是执行的时间。

再给你几个延时程序做参考:

软件延时:(asm)

晶振12MHZ,延时1秒

程序如下:

DELAY:MOV 72H,#100

LOOP3:MOV 71H,#100

LOOP1:MOV 70H,#47

LOOP0:DJNZ 70H,LOOP0

NOP

DJNZ 71H,LOOP1

MOV 70H,#46

LOOP2:DJNZ 70H,LOOP2

NOP

DJNZ 72H,LOOP3

MOV 70H,#48

LOOP4:DJNZ 70H,LOOP4

定时器延时:

晶振12MHZ,延时1s,定时器0工作方式为方式1

DELAY1:MOV     R7,#0AH       晶振12MHZ,延时0.5秒

AJMP     DELAY

DELAY2:MOV     R7,#14H       晶振12MHZ,延时1秒

DELAY:CLR     EX0

MOV     TMOD,#01H    设置定时器的工作方式为方式1

MOV     TL0,#0B0H    给定时器设置计数初始值

MOV     TH0,#3CH

SETB     TR0         开启定时器

HERE:JBC     TF0,NEXT1

SJMP     HERE

NEXT1:MOV     TL0,#0B0H

MOV     TH0,#3CH

DJNZ     R7,HERE

CLR     TR0         定时器要软件清零

SETB     EX0

RET

C语言延时程序:

10ms延时子程序(12MHZ)

void delay10ms(void)

{

unsigned char i,j,k

for(i=5i>0i--)

for(j=4j>0j--)

for(k=248k>0k--)

}

1s延时子程序(12MHZ)

void delay1s(void)

{

unsigned char h,i,j,k

for(h=5h>0h--)

for(i=4i>0i--)

for(j=116j>0j--)

for(k=214k>0k--)

}

200ms延时子程序(12MHZ)

void delay200ms(void)

{

unsigned char i,j,k

for(i=5i>0i--)

for(j=132j>0j--)

for(k=150k>0k--)

}

500ms延时子程序程序: (12MHZ)

void delay500ms(void)

{

unsigned char i,j,k

for(i=15i>0i--)

for(j=202j>0j--)

for(k=81k>0k--)

}

不过实际得到的延时会存在差异,所以最好用实验的方法调整延时参数。

#include<reg52.h>

#define uint unsigned int

sbit L1=P1^0

uint a=10,b=5

void main()

{

while(1)

{

while(a--)

L1=0

while(b--)

L1=1

a=10;

b=5

}

}改成这样就可以了,就是把a.b的值重新赋值一下就可以了。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11123654.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-13
下一篇2023-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存