单片机定时模式0_51单片机定时器模式 - CSDN
  •  TMOD.C/T = 0 定时工作模式 定时器/计数器0 将工作在 13bit 定时器模式。。 与想当然的 13 bit = 5bit(TH0 ) + 8bit (TL0)的搞法不同的是。。(谁让你不看规格) 13bit = 8bit(TH0) + 5bit(TL0) ...

     

    当 51单片机工作模式寄存器 设置为

        TMOD.M1M0 = 00  工作方式0 

        TMOD.C/T = 0 定时工作模式

    定时器/计数器0 将工作在 13bit 定时器模式。。

     

    与想当然的 13 bit = 5bit(TH0 ) + 8bit (TL0)的搞法不同的是。。(谁让你不看规格)

     

    13bit = 8bit(TH0) + 5bit(TL0)  

    TL0的高三位没有用到。。

     

    假设定时器工作频率为2M,那么中断服务程序定长1ms的写法应该是。。

     1 /*
     2  *  @Func: void TIMER0_IRQHandler(void) interrupt 1
     3  *  @Usage: timer0 interrupt sevices routine
     4  *  @parameter: none
     5  *  @retval:  none
     6  *  @version: 2013-03-07 11:37:50
     7  * */
     8 void TIMER0_IRQHandler(void) interrupt 1{
     9     
    10     TH0 =(8192 - 2*1000)/32;
    11     TL0 =(8192 - 2*1000)%32;
    12 
    13          // do what you need to do 
    14          return;          
    15 }

     

     

    转载于:https://www.cnblogs.com/alimy/archive/2013/03/07/2947740.html

    展开全文
  • 16位定时计数(工作方式1) 初始化函数 void timer_init() {  TMOD |= 0x01;  TH0 = 0x4C;  TL0 = 0x00;  EA = 1;  ET0 = 1;     TR0 = 1;//初始化定时器运行 } 初值计算 假设每次中断延时delay =50ms ...
    • 16位定时计数(工作方式1)

    • 初始化函数

    void timer_init()
    {
        TMOD |= 0x01;  
        TH0 = 0x4C;
        TL0 = 0x00;

        EA = 1;  
        ET0 = 1; 
            
        TR0 = 1;//初始化定时器运行
    }

    • 初值计算
    • 假设每次中断延时delay       =50ms
    • 时钟频率(时钟周期)OSC=11.0592MHZ
    • 机器频率(机器周期)         =11.0592MHZ/12(即一个机器周期等于12倍时钟周期)
    • 即1秒钟定时器计数次数为   =11.0592MHZ/12
    • 50ms,需要的定时器计数数目为=11.0592MHZ/12/20=46080
    • 16位寄存器(TH和TL),需要预填充数目=65536-46080=19456
    •  TH= (u8)(19456 / 256)=0X4C;
       TL=  (u8)(19456% 256)=0X00;
    • 即16进制,0X4C00,即TH存0X4C,TL存0X00

    • 8位自动重装载(工作方式2)

    • 初始化函数

    void init_serial()                    
    {
    //    TH1= -(FOSC/12/32/BAUD); //Set auto-reload vaule
    //    TL1= -(FOSC/12/32/BAUD); //Set auto-reload vaule


        SCON=0x50;  
        TMOD=0x20;      
        TH1=0XFD; 
        TL1=0XFD; 


        TR1=1;           
        ES=1;      
        EA=1;      
        RS485_RW=0;
    }

    • 初值计算,假设波特率9600
    • BAUD = (Timer 1溢出率)*(2SMOD/32)=(OSC/((256-TH1)*12))*(2SMOD/32)=OSC/(256-TH1)*12)*(2SMOD/32)
    • SMOD=1时波特率加倍:     = 11059200 / 12 /16 / (256-TH或TL)
    • SMOD=0时波特率不加倍: = 11059200 / 12 /32 / (256-TH或TL) 
    • 假设晶振频率为11.0592MHz,波特率为9600,SMOD=0(不加倍),TH1初值应该为多少呢?
    • TH1=TL1=256-(2SMOD*OSC)/(BAUD*32*12)
    • TH1=TL1=256-11059200/(9600*32*12)=0xFD          【253即0xFD】
    • 即:9600 = 11059200 / 12 /16 / (256-253)
    展开全文
  • 51单片机的定时器0和串口同时使用问题

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                    51单片机的定时器0和串口同时使用问题,急!    [问题点数:0分]   
    不显示删除回复显示所有回复显示星级回复显示得分回复只显示楼主收藏
    对我有用[0]丢个板砖[0]引用 |    举报 |          管理   
    回复次数:18
    对我有用[0]丢个板砖[0]引用 |    举报 |          管理   
    对我有用[0]丢个板砖[0]引用 |    举报 |          管理   
    对我有用[0]丢个板砖[0]引用 |    举报 |          管理   
    对我有用[0]丢个板砖[0]引用 |    举报 |          管理   
    对我有用[0]丢个板砖[0]引用 |    举报 |          管理   
    对我有用[0]丢个板砖[0]引用 |    举报 |          管理   
    对我有用[0]丢个板砖[0]引用 |    举报 |          管理   
    对我有用[0]丢个板砖[0]引用 |    举报 |          管理   
    对我有用[0]丢个板砖[0]引用 |    举报 |          管理   
    对我有用[0]丢个板砖[0]引用 |    举报 |          管理   
    对我有用[0]丢个板砖[0]引用 |    举报 |          管理   
    对我有用[0]丢个板砖[0]引用 |    举报 |          管理   
    对我有用[0]丢个板砖[0]引用 |    举报 |          管理   
    对我有用[0]丢个板砖[0]引用 |    举报 |          管理   
               

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    展开全文
  • 51单片机工作于方式0的定时器模式

    万次阅读 2017-06-18 11:27:26
    #include"reg52.h"#define uint unsigned int //宏定义 #define uchar unsigned char sbit LED=P2^0; uchar i=0; void main() { TMOD=0x00; TH0=(8192-5000)/32;... /*Timer0工作在模式0下时为13位定时/计数

    51单片机的   模式0(13位定时器/计数器)

    第一步:通过设置TMOD中的M1/M0位设置,即可完成模式选择

                 “00模式0(13位定时/计数模式)

                 “01”为模式1(16位定时/计数模式)

                 “10”模式28'自动重装初'值定时/计数模式)

                 “11”模式3分割为 2个8位计数模式)

    第二步:打开总中断(EA)、开T0中断(ET0)、启动T0(TR0)

                 因为寄存器在复位后初始值都为“0”,默认属于关闭的状态,所以我们在使用T0中断功能时,

          需要将这些位置“1”才可启动定T0。

    第三步:根据时钟计算并装载合适的初值

                 在T0模式中,因为它只使用了TL0的低5位和TH0的8位空间,剩余3位不使用。

                当TL0的低5位计数满并溢出后(通俗点说就是超过低5位的计算的能力后就会向高位进位,与

         十进制加法同理),会向TH0位进位,同样当TH0也计满并溢出,TF0置位,此时就会中断函数就

         会向CPU发送中断请求,以发生中断。


            初值计算:由上面可以T0的最大计算能力为:

                                                                                    2的13次方=8192

                              由于最低位只有5位,当5位计数满(2的5次方=32)后发生溢出并进位,所有装初值

                      时要对TL0进行求模和余。


    示例程序如下:

    #include"reg52.h"
    #define uint unsigned int		//宏定义
    #define uchar unsigned char
    sbit LED=P2^0;
    uchar i=0;
    void main()
    {
    	TMOD=0xf0;	//设置T0为工作方式0
    	TH0=(8192-5000)/32;     //5000us延时
    	TL0=(8192-5000)%32;		
    	/*Timer0工作在模式0下时为13位定时/计数器,
    	TL0只使用前5位,故对32进行求余/模	*/
    
    	EA=1;		//开总中断
    	ET0=1;	   	//开定时器0中断
    	TR0=1;	   	//启动定时器0
    	while(1);	//程序停止,等待中断请求
    		
    }
    
    /******T0中断函数*******/
    void Timer0()interrupt 1
    {
    	TH0=(8192-5000)/32;
    	TL0=(8192-5000)%32;
    	i++;
    	while(i>=200)
    	{
    	   	i=0;
    		LED=~LED;
    	}
    }

    结束。

    展开全文
  • 51单片机定时时间的计算

    千次阅读 2020-05-06 11:55:03
    单片机根据计时/计数模式的不同,来进行计算 M1 M0 工作模式 说明 0 0 0 13位计时计数器 (8192) 0 1 ...
  • 51单片机定时/计数器

    千次阅读 2018-09-18 22:54:08
    51单片机定时/计数器 实现LED灯闪烁,代码如下: #include <reg51.h> //51单片机头文件 sbit LED = P0^0; //定义特殊寄存器p0.0;注意:sbit 必须小写、P 大写! void main() { unsigned int i; //...
  • • 选择方式0、方式1、方式2时,T0|T1的工作情况相同 • 选择方式3时,T0|T1的工作情况不同 方式0:13位定时器/计数器,TH0的高8位,TL0的低5位 方式1:16位定时器/计数器,TH0的高8位,TL0的低8位 方式2:自动重...
  • 利用定时器0,工作方式1实现LED以1s亮灭闪烁
  • 8051 内部定时计数器,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数,使用8051的T1作定时器,50ms中断一次,看T0内每50ms来了多少脉冲,将计数值送显(通过LED发光二极管8421码来表示),1秒后再次测试。
  • 众所周知 单片机定时计数器是难点 来来回回 学习了三遍 算是看懂了 吧吧吧吧吧 定时计数器本质上 就是一个加一计数器 计时完成 定时模式即时间到达 计数模式即计数完成 晶振提供震荡周期 为单片机定时计数器提供震荡...
  • ... 在单片机的学习过程中,单片机定时器的合理设置和应用是非常关键的一步,也是刚开始接触单片机知识的新人工程师们比较容易出错误的一个环节之一。在今天的文章中,我们为大家总结了单...
  • 单片机定时器概念和认识

    千次阅读 2016-09-20 17:00:43
    一、MCS-51单片机的定时器/计数器概念 单片机中的定时器和计数器其实是同一个物理的电子元件,只不过计数器记录的是单片机外部发生的事情(接受的是外部脉冲),而定时器则是由单片机自身提供的一个非常稳定的计数器,...
  • STC单片机的定时器怎么计算

    千次阅读 2018-08-17 11:00:03
    公式:N=65536-(Fosc/FD/(Freq));   ... FD : 分频(Frequency division),通过分频可增大计数器的定时范围  Freq : 频率(Freq=1000000(微秒)/TIME(微秒),TIME:所定时间)     例...
  • 一、MCS-51单片机的定时器/计数器概念 单片机中的定时器和计数器其实是同一个物理的电子元件,只不过计数器记录的是单片机外部发生的事情(接受的是外部脉冲),而定时器则是由单片机自身提供的一个非常稳定的计数器,...
  • 51单片机之TMOD寄存器

    2020-07-14 11:38:46
    51单片机之TMOD寄存器TMOD格式图GATE(门控位)C/T( 定时/计数模式选择位)M1M0(工作方式设置位) TMOD格式图 TMOD(定时器/计数器工作方式寄存器)低4位用于T0,高4位用于T1 GATE(门控位) 用于控制定时器启动...
  • 1. 51单片机有2个16位定时/计数器 定时器 ...当单片机工作在定时模式时,每经过一个机器周期,内部的16位计数寄存器的值就会加1,当这个寄存器装满时溢出; 定时器的作用:定时/计数器可用于精确...
  • 定时器(计数器) ...  51系列单片机中有两个16位可编程定时/计数器:T0和T1,52子系列还有一个T2 定时/计数器T0、T1的结构 如图,T0、T1各有两个计数变量TH、TL 计数变量有计数范围,当计数变量达到计数上...
  • STC89C516单片机内部有3个16位可编程的定时器/计数器,即定时器T0、T1和T2。它们既有定时又有计数功能。通过设置相关的特殊功能寄存器可以选择启动定时功能或计数功能。需要注意的是,这个定时器系统是单片机内部一...
  • 单片机中的定时器和计数器其实是同一个物理的电子元件,只不过计数器记录的是单片机外部发生的事情(接受的是外部脉冲),而定时器则是由单片机自身提供的一个非常稳定的计数器,这个稳定的计数器就是单片机上连接的晶振...
  • 理解单片机定时/计数原理,掌握定时/计数程序的编写方法。 2.掌握定时/计数器在定时、计数方面的应用。 3.学会使用 PROTEUS 中 VSM 虚拟示波器观察波形。 二、实验任务 1.基本任务 (1)利用单片机定时器/计数器...
1 2 3 4 5 ... 20
收藏数 5,541
精华内容 2,216
关键字:

单片机定时模式0