找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3164|回复: 1
打印 上一主题 下一主题
收起左侧

51单片机定时器复用程序(非常简单)

  [复制链接]
跳转到指定楼层
楼主
ID:669393 发表于 2021-1-27 10:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
定时器不够用怎么办?当然是吧一个定时器分成多个使用,用定时器中断记录定时器中断次数,所要的定时的时间=中断次数*单次定时时长。例如1s定时=20*50ms
例如用一个定时器控制两个led灯以不同频率闪烁,不用使用软件延时,不占用CPU资源

单片机源程序如下:
  1. #include <reg52.h>
  2. sbit LED1 = P1^2;
  3. sbit LED2 = P1^4;
  4. unsigned char t,s;

  5. void time0_Init()
  6. {
  7.         TMOD = 0x01;
  8.         TH0 = 0x3C;                   //50ms
  9.         TL0 = 0xB0;
  10.         TR0 = 1;
  11.         EA = 1;
  12.         ET0 = 1;
  13. }
  14. void timer0() interrupt        1          //2个分频器
  15. {
  16.         t++;
  17.         s++;
  18.         TH0 = 0x3C;
  19.         TL0 = 0xB0;
  20.         if(s==5)                 //250ms
  21.         {
  22.                 s = 0;
  23.                 LED1 = !LED1;                 
  24.         }
  25.         if(t==20)                 //1000ms
  26.         {
  27.                 t = 0;
  28.                 LED2 = !LED2;
  29.         }
  30. }
  31. void main()
  32. {
  33.         time0_Init();
  34.         while(1);

  35. }
复制代码




评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏8 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:584814 发表于 2021-1-27 20:03 | 只看该作者
很棒的思路
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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