标题: 用单片机定时器0编写一个可以调用的延时函数怎么写? [打印本页]

作者: hjx5548    时间: 2020-11-6 12:52
标题: 用单片机定时器0编写一个可以调用的延时函数怎么写?
用定时器0编写一个可以调用的延时函数怎么写?比如1s的延时函数,要用的时候输入参数延时10s。

作者: 权威人物    时间: 2020-11-6 16:34
定义一个全局变量,在定时器计数,比如定时器10ms计数一次,那么1S的话则计数100次,那么延时函数while(1){判断计数变量是否大于等于100,是的话break跳出死循环;}
作者: robinsonlin    时间: 2020-11-6 18:36
unsigned long SysTick;

void Timer0Init(void)                //1毫秒@18.432MHz
{
        AUXR |= 0x80;                //定时器时钟1T模式
        TMOD &= 0xF0;                //设置定时器模式
        TL0 = 0x00;                //设置定时初值
        TH0 = 0xB8;                //设置定时初值
        TF0 = 0;                //清除TF0标志
        TR0 = 1;                //定时器0开始计时
}

timer0() interrupt 1
{
        SysTick++;       
}

void Delay(unsigned long var)
{
    unsigned long i;
       
        i = SysTick;

        while(SysTick-i < var)
        {
       ;
        }   
}
作者: xqleft    时间: 2020-11-7 13:55
你都知道用定时器了还为什么要用延时?
作者: hjx5548    时间: 2020-11-7 21:35
robinsonlin 发表于 2020-11-6 18:36
unsigned long SysTick;

void Timer0Init(void)                //1毫秒@18.432MHz

谢谢楼主




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1