单片机C语言延迟程序

单片机C语言延迟程序,第1张

下面的延时的基本程序(中断加计数器)

void

T0_int(void)

interrupt

1

{

TH0

=

0x4C;

//重新装载,50MS定时器初值

TL0

=

0x00;

T0_count++;

if(T0_count==20)

//1S到

{

T0_count

=

0;

//在这写程序

}

}

main()

{

TMOD

=

0x01;//定时器0,工作方式1,16位计数

TH0

=

0x4C;

//50MS定时器初值

TL0

=

0x00;

IE

=

0x82;

//开总中断,开T0中断

EA

=

1;

ET0

=

1;

TR0

=

1;

T0_count

=

0;

i

=

0;

loop:

goto

loop;

}

还有:

for(us=0;us<60;us++);

/延时500us/

for(us=0;us<1;us++);

/

延时15微秒/

for(us=0;us<5;us++);

/

延时51微秒/

你调用此程序的时候会给他传递X的值,就是while(x--)里面的X,当while检测到x--不等于0的时候,就执行for(j=0;j<125;j++);也就是在for(j=0;j<125;j++);这执行125次判断不做别的,就是耗时间而已,当执行完for(j=0;j<125;j++);以后又回到while(x--)上检测,当while检测到x--不等于0的时候,又一次执行,知道检测到x--等于0。函数就返回到你调用他的地方。

DEL1S:MOV R7,#10\x0d\D1: MOV R6,#200\x0d\D2: MOV R5,#250\x0d\ DJNZ R5,$\x0d\ DJNZ R6,D2\x0d\ DJNZ R7,D1\x0d\ RET\x0d\\x0d\说明:1、如果不使用R5、R6、R7可以用别的单元替换,比如换成30H、31H、32H等等\x0d\ 2、这个程序是12M时钟,如果时钟不同,要修改数值。如6M时钟,要把MOV R7,#10 修改成:MOV R7,#5

以上就是关于单片机C语言延迟程序全部的内容,包括:单片机C语言延迟程序、单片机延时程序、用汇编怎么写51单片机的延时程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/zz/9869508.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存