找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2342|回复: 4
收起左侧

用单片机定时器0编写一个可以调用的延时函数怎么写?

[复制链接]
ID:72649 发表于 2020-11-6 12:52 | 显示全部楼层 |阅读模式
用定时器0编写一个可以调用的延时函数怎么写?比如1s的延时函数,要用的时候输入参数延时10s。
回复

使用道具 举报

ID:311846 发表于 2020-11-6 16:34 | 显示全部楼层
定义一个全局变量,在定时器计数,比如定时器10ms计数一次,那么1S的话则计数100次,那么延时函数while(1){判断计数变量是否大于等于100,是的话break跳出死循环;}
回复

使用道具 举报

ID:451718 发表于 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)
        {
       ;
        }   
}
回复

使用道具 举报

ID:548551 发表于 2020-11-7 13:55 | 显示全部楼层
你都知道用定时器了还为什么要用延时?
回复

使用道具 举报

ID:72649 发表于 2020-11-7 21:35 | 显示全部楼层
robinsonlin 发表于 2020-11-6 18:36
unsigned long SysTick;

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

谢谢楼主
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表