51单片机定时器使用与计算-----day3

这篇具有很好参考价值的文章主要介绍了51单片机定时器使用与计算-----day3。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

51单片机定时器-----day3

8051单片机介绍:
集成 8位CPU、 4K字节ROM(掉电不丢失)、 128字节RAM(掉电丢失)、 4个8位并口、 1个全双工串行口、2个16位定时/计数器。 寻址范围64K, 并有控制功能较强的布尔处理器(带位操作)。
单片机结构内部框图:
51定时器定时时间怎么算,单片机KEIL,51单片机,单片机,stm32
机器周期和指令周期
( 1) 振荡周期: 也称时钟周期, 是指为单片机提供时钟脉冲信号的振荡源的周期, JY51-V1.0实验板上晶振为11.0592M。振荡周期: T=1/11059200
( 2) 状态周期: 每个状态周期为时钟周期的 2 倍, 是振荡周期经二分频后得到的。
( 3) 机器周期: 一个机器周期包含 6 个状态周期S1~S6, 也就是 12 个时钟周期。 在一个机器周期内, CPU可以完成一个独立的操作。 T=12*(1/11059200)
( 4) 指令周期: 它是指CPU完成一条操作所需的全部时间。每条指令执行时间都是有一个或几个机器周期组成。 MCS - 51系统中, 有单周期指令、 双周期指令和四周期指令。
时钟周期T是时序中最小的时间单位。 具体计算就是1/时钟源。 单片机使用的时钟周期= 1/11059200 s。
机器周期 CPU完成一个操作的最短时间。普通51一个机器周期是12个时钟周期。

51定时器定时时间怎么算,单片机KEIL,51单片机,单片机,stm32
注:不带括号的可以操作独立寄存器,带括号的只能整体使用不可单独位寻址

寄存器:51定时器定时时间怎么算,单片机KEIL,51单片机,单片机,stm32
工作方式:
13位计数器:0-2^13
16位计数器:0-2^16
模式1: 16位的计数器。 ( TH1,TL1)
模式2: 自动装载8位计数器。 主要应用在串口波特率发生器
模式0和模式3: 几乎不用。
TCON和TMOD复位后都会自动变成0x00。
★ C/T= 0, 设置为定时方式。
定时器计数 805l片内脉冲, 亦即对机器周期计数。
★ C/T= 1, 设置为计数方式,
计数器的输入是来自T0(P3. 4)或Tl(P3.5)端的外部脉冲
GATE= 0时, 只要用软件使TR0(或TRl)置1就启动了定时器,而不管INT0(或INT1)的电平是高还是低。
GATE= l时只有当INT0(或INT1)引脚为高电平且由软件使TR0(或TRl)置1时, 才能启动定时器工作
TMOD不能位寻址 , 只能用字节设置定时器工作方式;
低半字节设定T0高半字节设定T1
下图为重点:
51定时器定时时间怎么算,单片机KEIL,51单片机,单片机,stm32
51定时器定时时间怎么算,单片机KEIL,51单片机,单片机,stm32

51定时器定时时间怎么算,单片机KEIL,51单片机,单片机,stm32
TCON各位的作用如下:
TF1: T1溢出标志位。 当T1溢出时由硬件自动使中断触发器TF1置1, 并向CPU申请中断。 当CPU响应进入中断服务程序后, TF1又被硬件自动清0。 TF1也可以用软件清0
TF0: T0溢出标志位**。 其功能和操作情况如TF1。
TR1: T1运行控制位。 可由软件置1或清0来启动或关闭T1。 指令(SETBTRl)使TR1位置1, 定时器T1便开始计数。
TR0: T0运行控制位。 其功能及操作情况同TRl。8051复位时, TCON的所有位被清0。
定时器操作步骤,不使用中断函数如下
第一: 设置特殊功能寄存器TMOD, 使之工作在需求的状态。
第二: 设置计数寄存器的初值, 精确设定好定时时间。
第三: 设置特殊功能寄存器TCON, 通过打开TR来让定时器进行工作。 (也可设置为中断模式)
定时时间计算方法:
定时器: 每经过一个机器周期, 寄存器加1。因此, 可以将机器周期看作为计数周期。===>12*(65536 – x) /11059200 = 需要定时的时间
定时器从设定的初值开始累加。
TH1 = 0xB8; TL1 = 0X00;
12*(65536 – x) /11059200 = 需要定时的时间
65536-X = (11059200/12 )T
65536-X= 921600
T; 设定时20ms
X=65536-921600*T
X=47104
T单位为S。
一次定时时间不能超过71ms。
程序如下:
LED灯每1S闪烁一次。文章来源地址https://www.toymoban.com/news/detail-768887.html

#include<reg52.h>

sbit HC595_SCK = P0^5;
sbit HC595_RCK = P0^6;
sbit HC595_DATA = P0^7;

code unsigned char Led8_One_Array[2] = {0x01,0x00};
code unsigned char Led8_Two_Array[2] = {0x00,0x00};

void Send_595_Data(unsigned char Led8_One,unsigned char Led8_Two)
{
   unsigned char i;

   HC595_RCK = 0;

   for(i=0;i < 8;i++)
   {
      HC595_SCK = 0;
   	  if(0 != (Led8_One & 0x80))
   	  {
      		HC595_DATA = 1;
	   }
	   else
	   {
	      HC595_DATA = 0;
	   }
	
	   Led8_One = Led8_One<<1;
	
	   HC595_SCK = 1;
   }

	for(i=0;i < 8;i++)
    {
	   HC595_SCK = 0;
   	   if(0 != (Led8_Two & 0x80))
   	   {
      		HC595_DATA = 1;
	   }
	   else
	   {
	      HC595_DATA = 0;
	   }
	
	   Led8_Two = Led8_Two<<1;
	
	   HC595_SCK = 1;
   }
   	  HC595_RCK = 1;

}

/*void Delay_1MS(unsigned int i)
{
   unsigned int j;
   for(;i > 0;i--)
   {
     for(j=0;j<110;j++);
   }
}
 */


void Time0_Init()
{
   TMOD = 0X01;
   TH0 = 0XB8;
   TL0 = 0X00;
   TR0 =1;   //设置成1后定时器开始计时。
}


void main()
{	
     unsigned char k,Counter = 0; 
     Time0_Init();
     while(1)
	 {	
	    if(1 == TF0)   //判断是否T0是否溢出是的话清0,未用中断所以需要手动清零
		{
		   TF0 = 0;
		   TH0 = 0XB8;   //重装初值
		   TL0 = 0X00;

		   Counter++;   //每20MS加1

		}  

		if(100 == Counter)  //2s中后进行翻转LED灯状态
		{
		    Counter = 0; 
		    k = !k;
		}
		 
	    Send_595_Data(Led8_One_Array[k],Led8_Two_Array[0]);  

	    /*Delay_1MS(1000);
		Send_595_Data(Led8_One_Array[1],Led8_Two_Array[0]); 
		Delay_1MS(1000); */
	 }
}

到了这里,关于51单片机定时器使用与计算-----day3的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 51单片机(七)定时器

    ❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋

    2024年02月07日
    浏览(56)
  • 51单片机——定时器中断

    新版51单片机内部有 3 个16位可编程的定时器/计数器,即定时器 T0,T1,T2 。他们既有 定时 功能又有 计数 功能,我们可以通过配置与它们相关的特殊功能寄存器可以选择启用定时功能或计数功能;其中需要注意的是,这个定时器系统是单片机内部的一个独立的硬件部分,它与

    2023年04月10日
    浏览(44)
  • 51单片机定时器实验(汇编)

    基于AT89C51的定时器实验,汇编语言,分享出来是希望各位能共同学习。附上注释希望能认真研究,若有错误请指出,谢谢。 一、实验目的 掌握单片机定时器的使用方法。 掌握中断的使用方法。 二、实验内容 采用中断方式控制定时器。使得单片机P1.0引脚产生周期为1S的方波

    2024年02月11日
    浏览(59)
  • 51单片机之定时器篇

    首先,学好单片机必须要搞懂定时器,定时器是单片机重要的组成部分之一,总之,学不好定时器,单片机相当于没学,下面就让我介绍如何学好单片机定时器。 学习单片机首先要明白的: 1,51单片机有两组定时器/计数器,既可以定时,又可以计数,总称之定时器 2,单片

    2024年02月11日
    浏览(54)
  • 51单片机 | 定时器中断实验

      这一节介绍51单片机的定时器中断。 STC89C5X 含有 3 个定时器:定时器 0、定时器 1、定时器 2(注意: 51 系列单片机一定有基本的 2 个定时器(定时器 0 和定时器 1),但不全有 3 个中断,需要查看芯片手册,通常我们使用的是基本的 2 个定时器:定时器 0/1)。本节要实现

    2024年02月06日
    浏览(111)
  • 51单片机PWM(定时器)

    目录 前言 一、PWM的介绍 二、在定时器中配置PWM 三、代码  总结         PWM普遍应用于惯性系统,我们知道单片机几乎只能输出“1”和“0”两种状态,即开和关,想要输出模拟量是不太容易实现的,那么怎样才能使单片机输出平滑的线性信号呢?没接触过PWM的小伙伴可能第

    2024年02月09日
    浏览(55)
  • 【51单片机】:定时器的详解(包括对单片机定时解释、各类定时方式,以及中断方式)

              51定时/计数器的详解。                   码字不易,如有帮助请收藏,点赞哦。         前提:首先我们知道51单片机内部有21~26个特殊功能寄存器: P.x口寄存器:P0、P1、P2、P3 数据指针寄存器:DP0H、DP0L、DP1H、DP1L 定时器: TH1、TL1、TH0、TL0、TMOD、TCON 串口:

    2024年02月07日
    浏览(98)
  • 51单片机定时器基础知识

    经验总结:定时器0工作方式1的溢出中断初始值计算 1.晶振11.0592M 11.0592MHz除12为921600Hz,就是一秒921600次机器周期,50ms=46080次机器周期。 65536-46080=19456(4c00) TH0=0x4c,TL0=0x00 2.晶振12M 12MHz除12为1MHz,也就是说一秒=1000000次机器周期。50ms=50000次 机器周期。 65536-50000=15536(3cb0) TH0=0x

    2024年02月04日
    浏览(115)
  • 51单片机定时器中断TMOD

    最近在学定时器中断TMOD,写程序时,要对定时器进行配置 对TMOD进行赋值时,拌了好久。。。。 如何根据所用的      定时器0/1 ,  工作方式0/1/2/3      对TMOD赋值呢? 我们知道: 1.TMOD长这样 :  由八位组成,前四位是T1的参数;后四位是T0的参数;GATE 和 C/T\\\' 不用多讲,

    2024年02月12日
    浏览(47)
  • 51单片机中断定时器1用法

    中断为使单片机具有对内部或外部随机发生的事件实时处理而设置的。 中断技术不仅解决了快速主机与I/O设备的数据传送问题,而且还有具有如下的优点: 1. 分时操作:CPU可以分时为多个I/O设备服务,提高了计算机的利用率。 2. 实时操作:CPU能够及时处理应用系统的随机事

    2024年02月06日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包