首页 > 其他分享 >定时/计数器

定时/计数器

时间:2024-10-20 18:46:56浏览次数:5  
标签:定时器 方式 初值 计数 计数器 定时

由T0  T1、工作方式寄存器TMOD、控制寄存器TCON  构成

 

          作为计数器使用:计数时钟来源于外部信号引脚

          作为定时器使用:计数时钟来源于内部时钟信号(晶振)

T0和T1:   

T0计数器
 
TH0(高八位)
TL0(低八位)
T1计数器
 
TH1(高八位)
TL1(低八位)

           8位计数器:0~256(计数范围)

           16位计数器:0~65535(计数范围)

TMOD(工作方式寄存器)

 功能:

                      1、选择定时计数器的4种工作方式

                      2、选择定时/计数功能

                      3、决定启动方式

TMOD设置方式    (字节寻址)

   1、 GATE(门控制位):

T0GATE=1(软硬件共同启动)TR0=1,INT0=1定时器启动
GATE=0(软件启动)TR0=1,启动定时器不受INT0控制
T1GATE=1(软硬件共同启动)TR1=1,INT0=1共同启动定时器
GATE=0(软件启动)TR1=1,启动定时器不受INT1控制

     2、C/T:计数/定时功能选择

C/T1计数
0定时

                

    3、M1、M0工作方式选择

功能工作方式M1M0
13位计数器方式000
16位计数器方式101
8位计数器,初值自动重装方式210
T0分成两个8位计数器,T1停止使用方式311

TCON(控制寄存器)(可以位寻址)

 功能:

                      1、启动控制

                      2、计满溢出控制

           

查询溢出标志方法:

while(!TF1);//TF1由0变1,定时时间到
TF1=0;//查询方式下,必须软件清零

定时/计数器程序编写步骤:

工作方式工作方式0工作方式1工作方式2
计数位数13位16位8位
计数寄存器THi高8位,TLi低5位THi高8位,TLi低8位TLi
最大计数值M819265536256
初值计算公式X(初值)=M-T(定时时间)/T(机器周期)
初值设置THi=X/32;TLi=X%32;THi=X/256;TLi=X%256;TH/Li=X;
特点初值X不可自动重载,溢出后重新设置初值X不可自动重载,溢出后重新设置X可以自动重装

///led以50ms闪烁/
#include<reg51.h>

void timer50ms()
{
	TMOD = 0x10;//设置工作方式
	TH1 = (65536-50000)/256;
	TL1 = (65536-50000)%256;//设置初值
	TR1 = 1;//启动定时器
	while(!TF1);//查询方式查询溢出标志位
	TF1 = 0;//溢出标志清零
}

void main()
{
	while(1)
	{
		P2 = ~P2;
		timer50ms();	
	}
}

标签:定时器,方式,初值,计数,计数器,定时
From: https://blog.csdn.net/2201_75867091/article/details/143061882

相关文章

  • .net6定时器
    因业务涉及到定时执行任务所以要使用到定时器直接写在program里(如果发布到iis服务器上面的话一定要将iis部署绑定的应用程序池->高级设置->闲置时间设置为0)//须要先注入调用的service//添加服务到容器中builder.Services.AddScoped<BaseAutoService>();...//回调方法......
  • celery的定时任务
    目录celery定时任务celery链接汇总celery简单使用celery的配置文件示例celery的定时任务celery定时任务fromdatetimeimporttimedeltafromcelery.schedulesimportcrontab#BROKER_URL消息代理,使用redis存储任务BROKER_URL="redis://127.0.0.1:6379/2"#CELERY_R......
  • java_day19_线程组、线程池、定时器、InetAddress、网络编程、设计模式
    一、线程组:线程组:将属于同一类的线程划分到同一组中,可以直接对线程组进行设置。ThreadGroup构造方法:ThreadGroup(Stringname)构造一个新的线程组。代码案例:classMyThread1extendsThread{publicMyThread1(){}publicMyThread1(ThreadGr......
  • C#异步计数器的使用
    1、CancellationTokenSourcecancellationToken=newCancellationTokenSource();publicvoidInitData(){cancellationToken.Token.Register(()=>{Name="被取消了";});intcount=0;Task.Run(()=>{whi......
  • 定时器
    定时器:Timer定时任务:TimerTask点击查看代码importjava.util.Timer;importjava.util.TimerTask;/*定时器:Timer定时任务:TimerTask*/publicclassTimerDemo1{publicstaticvoidmain(String[]args){//创建一个定时器Tim......
  • 二、STM32F103C8T6-定时器
    STM32F103C8T6定时器概述STM32F103C8T6作为一款广泛使用的微控制器,内置多个定时器,能够支持多种计时和控制功能,如精确延时、脉冲宽度调制(PWM)、捕获比较(Capture/Compare)、输入捕获和输出比较等。这些功能在电机控制、信号测量、周期性事件触发等应用中非常常用。STM32F103C8T......
  • 基于51单片机宠物自动喂食器定时时钟提醒加水水位无线手机蓝牙/WiFi/WiFi视频监控APP
    51单片机+时钟+校时+喂食+水位+加水喂水+三餐3定时+声光提醒+OLED屏+手动+自动/C16N51+蓝牙APP控制+时钟+校时+喂食+水位+喂水+三餐3定时+声光+OLED屏+手动+自动/C16B51+WIFI-APP控制+时钟+校时+喂食+水位+喂水+三餐3定时+声光+OLED屏+手动+自动/C16W51+视频监控+WIFI+时钟+......
  • Spingboot 定时任务与过滤器,拦截器
     在boot环境中,一般来说,要实现定时任务,我们有两中方案,一种是使用Spring自带的定时任务处理器@Scheduled注解,另一种就是使用第三方框架Quartz,SpringBoot源自Spring+SpringMVC,因此天然具备这两个Spring中的定时任务实现策略,当然也支持Quartz1.定时任务@Sched......
  • Springboot缓存+定时提交优化频繁数据库表修改
    缘起最近在弄一个答题小程序,当用户选择的时候需要把用户选择的选项提交到服务器上,然后整个字段是个json格式的,更新的方法也就是解析json后添加选项进入json中。于是其中就涉及到频繁的数据库修改,因为用户答题速度根据题目不同嘛,所以我就寻思这样频繁的修改,数据量上来速度就会受......
  • PowerShell 实现删除指定路径X天前文件功能并添加定时JOB实例
    公司的POA服务器的E盘隔三差五就爆满,原因是数据库备份文件越来越大,现在已经大到需要高频清理的地步了十一前出现的这个问题,当时为了不专门在假期里某天特地去清理磁盘,想着一定要搞个定时JOB实现自动清理最后选用了PowerShell脚本实现新建一个txt文件,打开编辑内容如下:#设置要......