• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

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

loulou 2020-11-09 浏览量:930
用定时器0编写一个可以调用的延时函数怎么写?比如1s的延时函数,要用的时候输入参数延时10s。
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 你说的应该是51单片机,1S的延时定时器直接产生做不到,但是可以定义变量判断得到。

    void InitTimer0(void)

    {
        TMOD = 0x01;
        TH0 = 0x0D8;
        TL0 = 0x0F0;
        EA = 1;
        ET0 = 1;
        TR0 = 1;
    }
    
    void Timer0Interrupt(void) interrupt 1
    {
        unsigned char 1;
        TH0 = 0x0D8;
        TL0 = 0x0F0;
        i++;
        if(i>100)
        {
            i=0;
       //在这写下你要实现的功能就行了//     
        }
      
    }
    

    这个是产生10ms的,可以在定时器中断定义一个变量i,然后自加到100就是1S了写下实现什么功能即可

    其他的也一样。

    • 发布于 2020-11-14
    • 举报
    • 评论 0
    • 1
    • 0

其他答案 数量:5
  • 定时器延时也是用的阻塞延时,你可以看一下嘀嗒定时器延时函数就明白了,原理一样
    • 发布于2020-11-09
    • 举报
    • 评论 0
    • 0
    • 0

  • 阻塞 延时,在裸机中不建议,这样降低了系统的性能。

    可考虑状态机。

    • 发布于2020-11-09
    • 举报
    • 评论 0
    • 0
    • 0

  • 设置一个变量,在定时器中断中进行++,在循环里判断这个变量的值来判断延时时间
    • 发布于2020-11-09
    • 举报
    • 评论 0
    • 0
    • 0

  • 将定时器配置成1ms中断一次,然后定时器中断里面放一个全局变量,中断函数就是这个变量++。

    延时函数使用阻塞的方式,一直读取这个全局变量的值,知道读取的值和刚进入函数的时候的值相差1000,这便是1s延时

    • 发布于2020-11-19
    • 举报
    • 评论 0
    • 0
    • 0

  • 这种比较简单的实现办法就是设置一个变量,通过变量的自加操作来实现延时
    • 发布于2020-11-19
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

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