找回密码
 立即注册

QQ登录

只需一步,快速开始

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

多次使用单片机定时器程序,帮我看看有没有问题

[复制链接]
跳转到指定楼层
楼主
ID:878420 发表于 2021-3-6 14:28 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
单位电脑无法上网,只能手机拍照发帖。工程师们帮我看看练习程序,能不能用T0定时10秒 15秒

IMG_20210306_142301_edit_1431476013640948.jpg (563.76 KB, 下载次数: 130)

IMG_20210306_142301_edit_1431476013640948.jpg

IMG_20210306_142010.jpg (628.18 KB, 下载次数: 111)

IMG_20210306_142010.jpg

IMG_20210306_141806.jpg (1.23 MB, 下载次数: 115)

IMG_20210306_141806.jpg

IMG_20210306_141509.jpg (1.52 MB, 下载次数: 96)

IMG_20210306_141509.jpg

IMG_20210306_141500.jpg (1.51 MB, 下载次数: 95)

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

使用道具 举报

沙发
ID:332444 发表于 2021-3-6 17:22 | 只看该作者
数值计算不用怀疑,仿真时间非实际时间,不过仿真时间可以通过监视变量波形测得准确时间。
回复

使用道具 举报

板凳
ID:213173 发表于 2021-3-6 17:43 | 只看该作者
一个定时器可以输出N个定时时间,方法有多种。举个比较简单的示例:取所有定时时间的共倍数30秒做计数周期。3个LED分别以5、10、15秒周期闪烁。
  1. #include <STC8.H>
  2. #define uint unsigned int
  3. #define uchar unsigned char

  4. sbit led1 = P3^0;
  5. sbit led2 = P3^1;
  6. sbit led3 = P3^2;

  7. uchar num,t1s;
  8. bit t5s,t10s,t15s;

  9. void InitTimer0()//@11.0592MHz
  10. {
  11.         TMOD = 0x01;
  12.         TH0 = 0x4C;
  13.         TL0 = 0x00;
  14.         EA = 1;
  15.         ET0 = 1;
  16.         TR0 = 1;
  17. }

  18. void main(void)
  19. {
  20.     InitTimer0();
  21.         while(1)
  22.         {
  23.                 if(t5s==1)
  24.                 {
  25.                         t5s=0;
  26.                         led1=~led1;
  27.                 }
  28.                 if(t10s==1)
  29.                 {
  30.                         t10s=0;
  31.                         led2=~led2;
  32.                 }
  33.                 if(t15s==1)
  34.                 {
  35.                         t15s=0;
  36.                         led3=~led3;
  37.                 }
  38.         }
  39. }

  40. void Timer0Interrupt(void) interrupt 1
  41. {
  42.         TH0 = 0x4C;
  43.         TL0 = 0x00;
  44.         num++;
  45.         if(num>=20)//1秒
  46.         {
  47.                 num=0;
  48.                 t1s++;
  49.                 if(t1s%5==0)//5秒
  50.                 {
  51.                         t5s=1;
  52.                 }
  53.                 if(t1s%10==0)//10秒
  54.                 {
  55.                         t10s=1;
  56.                 }
  57.                 if(t1s%15==0)//15秒
  58.                 {
  59.                         t15s=1;
  60.                 }
  61.                 if(t1s==30)//30秒
  62.                 {
  63.                         t1s=0;
  64.                 }
  65.         }
  66. }
复制代码
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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