
下面的延时的基本程序(中断加计数器)
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单片机的延时程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)