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

51的定时器能不能像电脑系统那样定时触发任务

599962353a2a3f31 2019-04-13 浏览量:685
有时候需要用到多个定时器,但是单片机的定时器数量有限,有没有办法用一个定时器,让他像电脑一样,定时时间到了,然后去执行某一个功能,不要跟我说操作系统,不懂啊
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 可以用多个标志位的方法,比如现在工程里面有ABC三个函数,A要1秒一次,B 2秒一次,C 3秒一次,这时可以用一个定时器,定时时间设置为1秒,然后每进一次中断A的flag就置1一次,每进两次中断B的flag就置1一次,每进三次中断C的flag就置1一次,主循环里面一直查询A B C三个flag,每次有flag为1就清0并执行对应的ABC函数
    • 发布于 2019-04-14
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:7
  • 定时器定时产生中断然后在中断服务程序里对中断计数根据不同的计数值执行不同的任务

    其实就是简化了的实时操作系统.

    • 发布于2019-04-13
    • 举报
    • 评论 0
    • 1
    • 0

  • 一个定时器可以定好几个时间了,又不是只能定一个时间,

    比如100ms和1s需要定时,那么我就用定时器1设置100ms,每次中断就是100ms,那么在中断里计数当到达10的时候就是1s,一般是够用的,如果有其他时间还是可以增加的

    • 发布于2019-04-13
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个可以让定时器中断处理后,再接一个计数器,这样就可以产生类似cron系统的重复执行条件,然后根据计数器值去执行不同的任务。
    • 发布于2019-04-13
    • 举报
    • 评论 0
    • 0
    • 0

  • 这样说,如果你有很多个需要定不同时间的任务,你可以取公约数作为定时器中断的时间,然后在中断函数里面用裸机判断是哪个任务的时间到了

    或者直接点,换个同封装更高型号的单片机也行,增强型的51单片机封装相同,但定时器资源多得多

    • 发布于2019-04-13
    • 举报
    • 评论 0
    • 0
    • 0

  • 仅用计时器中断,首先配置一个脉冲信号扫描时间间隔,开启中断、计时,每当计时器中断触发时,抽样脉冲信号,抽样值非倒计时信号则重新配置扫描时间间隔,若抽样值是倒计时信号,配置倒计时时间间隔,当倒计时完毕后,触发中断,重新配置为扫描时间间隔。
    • 发布于2019-04-13
    • 举报
    • 评论 0
    • 0
    • 0

  • 一个定时器就一个中断函数,可以在中断函数中设置标志位,在主循环中查询标志位
    • 发布于2019-04-13
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个可以把各个任务放在主函数,开一个定时器,每进一次定时器,就将一个变量++;

    主函数里的任务判断变量的大小,当到达一定值就执行,用变量大小控制定时时间;

    • 发布于2019-04-14
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

51的定时器能不能像电脑系统那样定时触发任务