51单片机的定时/计数器实验

 一、实验内容

利用定时器 T1 工作方式 1 定时 1 秒,让接在 P1.0 的发光二极管实现 1 秒 亮灭交替。同时利用定时器 T0 工作方式 2 定时 0.5 秒,让接在 P1.7 的发光二极管实现 0.5 秒亮灭交替。

二、实验目的

1.通过定时器中断方式实现定时功能
2.通过定时器中断方式实现计时功能

三、实验原理

首先,我们需要了解定时/计数器工作方式控制寄存器 TMOD
D6/D2:定时/计数方式选择位
D6/D2=0:设置为定时方式,对内部的机器周期进行计数。
D6/D2=1:设置为计数方式,通过 T0(或 T1)的引脚对外部脉冲信号进行计数。
在TMOD寄存器中,GATE是门控位,C/T是定时/计数模式选择位,M1M0是工作方式设置位。
例如,如果我们想设置定时器0为方式1,我们可以这样设置:TMOD = 0x01;在这个例中,0x01即"0000 0001",表示定时器T0被设置为方式1。前面四位是T1的,这里未使用,如果要使用,其原理一样,对其赋予对应的数值即可。

四、实验代码详解

我们了解了寄存器,那么回到我们的实验,我们利用定时器 T1 工作方式 1,同时利用定时器 T0 工作方式 2 ,那么TMOD|=0x12;同时,需要配置其他的控制位

  TMOD|=0x12;	//工作方式控制寄存器
	
   TH1=15536/256;	//
   TL1=15536%256;
	
   TH0=251;					
   TL0=251;
	
   EA=1;		
	
   ET0=1;		
	 TR0=1;		// 定时/计数器的运行控制位
	
   ET1=1;
	 TR1=1;

接下来,我们再看定时器如果书写代码,并让其达到对应的定时时间

void time1(void) interrupt 3 //定时器T1  (方式1)
{
   TH1=15536/256;		//65536-15536=50000;
   TL1=15536%256;
	
   if(++con0==20)		
   {
      con0=0;				
	  LED1=~LED1;			
   }
}
void time2(void) interrupt 1  //定时器T0     (方式2)                        
{
   if(++con1==2000)		//256-6=250
   {
      con1=0;
	  LED2=~LED2 ;	
   }
}

配置好定时器,书写两个定时器的定时中断服务函数后,就完成了本次实验。

五、资料连接

【免费】51单片机,定时计数器的使用资源-CSDN文库

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

惹清风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值