********
void
T0_int(void)
interrupt
1
{
TH0
=
0x4C
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=0us<60us++)
/*延时500us*/
for(us=0us<1us++)
/*
延时15微秒*/
for(us=0us<5us++)
/*
延时51微秒*/
单片机里没有万用的延时函数吧,最简单的for(i=0i<100i++)这就是一个能延时的for循环(注意最后的分号),
要明白延时的原理,就让单片机一直做一件事,如上边的就是一直执行这个语句直到i=99,
只要明白这个,其他的延时就不难啦,可以使用循环嵌套实现更长的延时,不仅仅可以使用for语句,while语句也同样可以
根据外部晶振的不同,延时1毫秒的循环次数也不一样,一般12M晶振的话用 for(j=timej>0j--)延时时,1毫秒time大概为125左右,这里用110,大概晶振为11.0592M,所以这段程序,内部循环完成1毫秒延时,外部循环完成500毫秒延时。希望对你能有所帮助。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)