51单片机调用定时器0做延时函数,求教,怎么才能做到用定时器的延时!

2024年11月04日 10:01
有2个网友回答
网友(1):

你要搞懂中断的含义,如果你想中断延时 有个方法可以使用下
当中断产生的时候,进入中断服务函数处理中断程序时,你可以延时你想要延时的时间。处理完毕再回到原程序,这样就达到了延时的目的,不过这是画蛇添足。
如果你是想一段时候后让MCU做什么事,那就是定时用法了,与延时没什么关系。
中断服务函数越简单越好

网友(2):

你想用定时器来延时吗?很好处理呀比如
#include
#define uchar unsigned char;
#define uint unsigned int;
uchar times;
uint delaytime;
bit flag=00h;
void t0isr() interrupt 1
{
TH0=(65536-delaytime)/256;
TL0=(65536-delaytime)%256;
times--;
if(times==0) flag=1;
}
main()
{
TMOD=0x01;
ET0=1;
EA=1;

//比如延时100s
delaytime=1000;//1ms
times=100;//调整delaytime,times来调整延时时间
TR0=1;
flag=0;
while(flag==0);//等待延时时间到

while(1);
}