首页 > 其他分享 >51定时器(1)

51定时器(1)

时间:2024-09-15 12:54:48浏览次数:13  
标签:50000 TL0 初值 51 TH0 定时器 65536

                             51定时器

定时器/计数器 任何一个时刻使用,只能使用其中一种功能

51单片机提供的定时器分别为T0、T1(T0定时器四种工作方式都有,而T1仅有模式0与2)

启动定时器后,每个机器周期到来,初值寄存器自动加1,直到记满溢出

以方式1为例:

  1. 启动
  2. 机器周期
  3. 初值寄存器

TH0 (高八位),TL0 (低八位) 初值均为00H

0000 0000  0000 0000    0-65536 一共经历了65536us  也就是65.536ms

1111 1111  1111 1111   

初值的计算:
  如果要记50ms   TH0 = (65536-50000)/256

TL0 = (65536-50000)%256

PS:机器自动将十进制转化为十六进制

      4.自动加1

      5.溢出

编程实现步骤

  1. 报备

TMOD   工作方式寄存器

T0部分

GATE:门控位

      D2 C/T   0代表定时器功能 1代表计数器功能

     M1 M0

  1. 0  :方式  0
  1. 1  :方式1
  2. 0  :方式2
  3. 1  :方式3

T1 不用 全部清0

TMOD = 0x01;

   2.置初值

根据时间更改 TH0 TL0

  3.启动

TCON寄存器

TR0 = 1; (如果停止TR0=0)

 4 .等待

开始前手动清0   TF0=0

溢出后 TF0=1;

5.重置初值

更改 TL0  TH0

6.清溢出

TF0=0;

下面代码定时器实现流水灯

#include <REGX52.H>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
void Timer0Init(void)	
{
	TMOD = 0x01;                  // 报备
	TH0 =(65536-50000)/256;       // 置初值
	TL0 =(65536-50000)%256;
	TR0 = 1;                      // 启动
}
void main()
{
	uchar n = 0x01,k=0;     
	Timer0Init();
	while(1)
	{
		k=0;
		while(k<20)
		{
		while(TF0 == 0);        //等待
			k++;
			TF0=0;              //重置初值和清溢出
			TH0 =(65536-50000)/256;
	        TL0 =(65536-50000)%256;
		}
		P2=~n;
		if(n == 0x80){n=0x01;}
		else {n<<=1;}
    }
		
	
}

标签:50000,TL0,初值,51,TH0,定时器,65536
From: https://blog.csdn.net/2301_81235183/article/details/142282789

相关文章

  • 51单片机-DS1302(实时时钟+可调时钟)(可参考主页上一节内容介绍)
    作者:王开心时间:2024.9.10目的:手撕51main.c#include<REGX52.H>#include"LCD1602.h"#include"DS1302.h"#include"Key.h"#include"Delay.h"#include"Timer0.h"unsignedcharKeyNum,MODE,TimeSetSelect,TimeS......
  • 计算机毕业设计必看必学!! 91511 篮球馆服务系统,原创定制程序, java、PHP、python、小
    摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,篮球馆服务系统当然也不能排除在外。篮球馆服务系统是以实际运用为开发背景,运用软件工程原理和开发方法,采用Springboot技术构建的一个管理系统。整个开发过......
  • python+django+mysql 教师培训反馈系统05141-计算机毕业设计项目选题推荐(赠源码)
       目   录摘  要Abstract第1章  前  言1.1 研究背景1.2 研究现状1.3 系统开发目标第2章  系统开发环境62.1HTTP协议62.2HTML网页技术62.3B/S结构62.4django脚本语言72.5MySQL数据库72.6Apache简介8第3章  需求分析......
  • 计算机毕业设计必看必学!! 51842 ssm咖啡销售系统,原创定制程序, java、PHP、python、
    摘要科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。现代社会越来越多的人追求便捷购物,购买各种各类的商品已经是人......
  • FIT5137 M-Stay Residential service
    FIT5137Assignment2-S22024 (Weight=40%)Due-Friday,20September2024,4:30PMGeneralInformationandSubmissiono Thisisanindividualassignment.o Submissionmethod:SubmissionisonlinethroughMoodle.o Penaltyforlatesubmission:5%deduc......
  • springboot仓库仓储管理系统-计算机毕业设计源码14514
    目录1绪论1.1选题背景与意义1.2国内外研究现状1.3论文结构与章节安排2系统分析2.1可行性分析2.1.1技术可行性2.1.2经济可行性2.1.3操作可行性2.1.4法律可行性2.2系统流程分析2.2.1系统开发流程2.2.2用户登录流程2.2.3系统操作流程2.2.4......
  • P4551 最长异或路径(树上前缀异或01-trie)
    #include<bits/stdc++.h>usingnamespacestd;#definexfirst#defineysecondtypedefpair<int,int>PII;typedeflonglongll;typedefunsignedlonglongull;typedefunsignedintuint;typedefvector<string>VS;typedefvector<int>......
  • 20240909_151725 c语言 整数扩展
    完整形态类型后根int有无符号unsigned%u使用%u会约束输出无符号数据。如果是一个负数就会显示出错。使用%d可正常显示数据整数小结......
  • [linux 驱动]内核定时器详解与实战
    目录1描述2结构体2.1timer_list3相关函数3.1DEFINE_TIMER3.2add_timer3.3del_timer3.4msecs_to_jiffies3.5usecs_to_jiffies5示例4延迟工作队列delayed_work4.1结构体4.1.1delayed_work4.2相关函数4.2.1DECLARE_DELAYED_WORK4.2.2INIT_DELAYE......
  • STM32定时器
    定时器简介定时器,核心就是计数器。STM32的定时器不仅具有基本定时器中断功能,还具备捕获脉冲宽度,PWM输出,互补输出以及编码器计数等功能。F103中共有8个定时器,TIM1-TIM8,不同定时器功能不一样,可分为三类定时器类型主要功能基本定时器TIM6和TIM7,没有输入输出通道,常用作......