找回密码
 立即注册

QQ登录

只需一步,快速开始

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

如何改变51单片机定时器的定时时间

[复制链接]
跳转到指定楼层
楼主
各位大神,问下51单片机定时器如何改变定时器的定时时间设置值,
比如定时器来控制灯闪烁,在运行过程中,设置2个按钮来控制定时时间,1个时间增加,1个时间减少,这个控制的时间如何才能传送给定时器啊,有知道的大神指点指点啊,

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

使用道具 举报

沙发
ID:342451 发表于 2020-2-28 13:07 | 只看该作者
固定时间就好,比如你开一个1ms的定时器
定时器中断函数里
{

}
回复

使用道具 举报

板凳
ID:342451 发表于 2020-2-28 13:12 | 只看该作者
固定定时器时间即可,比如你开一个1ms的定时器中断
定时器中断服务函数
{
  ... ...(配置定时器参数)
   static int i;
   i++;
   if(i==某个变量){i==0;执行啥啥啊}//i要清零
}
你用按键控制“某个变量”的值改变  比如说“某个变量”=100,那不就是1ms*100=100ms一次执行什么什么
回复

使用道具 举报

地板
ID:407089 发表于 2020-2-28 13:16 | 只看该作者


请参考:
http://www.51hei.com/bbs/dpj-147511-1.html
回复

使用道具 举报

5#
ID:195446 发表于 2020-2-28 13:28 | 只看该作者
两按键分别接int0,int1,中断程序里重写初值、启动定时器。
回复

使用道具 举报

6#
ID:499088 发表于 2020-2-28 17:15 | 只看该作者
  for(  ;;)
  {

        if(P10==0)        //        按键+
        {
                THTL++;
        }
        else
        {
                if(P11==0)  //按键-
                        THTL--;
        }
         TL0=THTL;
         TH0=THTL>>8;

   }
//大致可以参考一下。
回复

使用道具 举报

7#
ID:400250 发表于 2020-2-29 13:34 | 只看该作者
1. 晶振若为11.0592M,每计数一次用时12/11.0592M=1.085us
2. TMOD取0x10,即模式1——16位计数器(0~65535)
3. 计时2ms,则2ms/1.085us=1843,故TH0=(65536-1843)/256,TL0=(65536-1843)%256

#include<reg52.h>
sbit LED=P1^2;

void Init_Timer1(void)
{
TMOD |= 0x10;                 
TH1=(65536-1843)/256;
TL1=(65536-1843)%256;
EA=1;
ET1=1;
TR1=1;  
}

main()
{
Init_Timer1();
while(1);
}

void Timer1_isr(void) interrupt 3 using 1
{
TH1=(65536-1843)/256;
TL1=(65536-1843)%256;
LED=~LED;
}
可以看看,像这种问题网上有不少,可以参考参考。

评分

参与人数 1黑币 +5 收起 理由
jmkl128 + 5 很给力!

查看全部评分

回复

使用道具 举报

8#
ID:93224 发表于 2020-2-29 17:12 | 只看该作者
就在按键程序中修改啊
回复

使用道具 举报

9#
ID:476652 发表于 2020-5-9 21:59 | 只看该作者
谢谢大家都热情指点!!!网络中还是好人多啊!!!
我刚接触单片机,对这些都不熟!!希望师傅们不要嘲笑啊!!
再次感谢大家都指点!!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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