单片机计数器设置初值_单片机中断程序中的定时器赋初值是如何设置的我 - CSDN
精华内容
参与话题
  • 51单片机定时器初值计算

    万次阅读 多人点赞 2017-08-08 09:56:58
    **菜鸟关于51类单片机的定时器初值计算问题的计算**首先先来介绍单片机的几个周期: 1、时钟周期,也称为振荡周期:定义为时钟脉冲的倒数,在单片机中也就等于晶振的倒数。 51单片机中把一个时钟周期定义为一个...
                   **菜鸟关于51类单片机的定时器初值计算问题的计算**
    
    首先先来介绍单片机的几个周期:   
    

    1、时钟周期,也称为振荡周期:定义为时钟脉冲的倒数,在单片机中也就等于晶振的倒数。
    51单片机中把一个时钟周期定义为一个节拍(用P表示),2个节拍定义为状态周期(用S表示)
    时钟周期是单片机中最小的时间单位。
    eg:12M晶振的单片机,时钟周期=振荡周期=1/12 us。

    2、机器周期:定义为完成一项基本操作所需要的时间,称为机器周期。
    在计算机中,为了方便管理,把一条指令的执行过程分为若干个阶段,每个阶段去执行一项基本操作。
    如:取指令,存储器读,存储器写等。
    在51单片机中1个机器周期由6个状态周期组成,也就是12个时钟周期=12 x 1/12 us =1 us
    定义机器周期是因为时钟周期时间太短,根本做不了什么。

    3、指令周期:定义为执行一条指令所需的时间。
    通常,包含一个机器周期的指令称为单周期指令,比如 MOV指令,CLR指令等。
    包含两个机器周期的指令称为双周期指令。
    另外还有四周期指令。

    小伙伴们看完了上面的周期是不是看懵了………hahahahahahaha

    不要慌,其实我们这节课要用到的就一句话—— 在51单片机中1个机器周期由6个状态周期组成,也就是12个时钟周期=12 x 1/12 us =1 us

    这里我们知道了一个机器周期的时间是1us,所以如果我们要延时1ms就是1000个机器周期;
    可能大家我们刚开始了解定时器的时候都会与疑惑,为什么要用定时器这么麻烦的东西,自己用delay()慢慢调一个合适的参数就可以了。 其实如果深入了解定时器真的比delay() 强大太多我先列举几点:
    1.就如上面所说用定时器定时1ms,这里就要注意了,这个1ms不是和delay延时1ms一样哦,这个1ms是精确的1ms哦,越往后学需要的定时就要求越高,所以定时器是一定要搞定的。

    2.相比于delay计时,delay是要直接让单片机做空循环,死等。而定时器则是利用定时器的溢出间隔,如果时间上不够,可以在溢出中断中配合软件计数器来实现。 前者浪费cpu,后者更高效。
    

    言归正传,现在来计算初值了,直接用例子说明,就比如用定时器0延时50ms

    一言不合,先上代码

    void main()
    {
    TOMD|=0x01;         //设置TMOD工作方式寄存器的M0M1为01,对照表格即为定时器/计数器的4种模式中的16位定时器/计数器模式
        TH0=(65536-46080)/256; //装初值11.0592M晶振定时50ms数为46080
        TL0=(65536-46080)%256;
        EA=1;    //中断总开关
        ET0=1;   //开启定时器/计数器的中断允许位置为1
        TR0=1;   //
        return 0;
    }
    void T0_time() interrupt 1
    {
        TH0=(65536-46080)/256;
        TL0=(65536-46080)%256;
        num++;
        if(num==20)
        {
            num=0;
        }
    }
    首先一个机器周期=12*一个时钟周期=12*(1/晶振)  一般的51晶振频率为11.0592M
    
        则一个机器周期= 1.085069444444444 us     单位是微秒
    

    所以如果要定时50ms 则要50 000/1.085069444444444~=46080个机器周期

        又因为TOMD|=0x01选择了16位的模式,就是TH0高八位 TL0低八位,所以最大到溢出就是65536
    
        故初值设为65536-46080即程序运行了大约46080个机器周期即50ms
    
        而后面的/256 %256就是划分低八位和高八位的
    

    这是我的第一篇博客,就是希望大家有所帮助(虽然有些地方都可以有问题haha),自己的对玩单片机更加的理解,利己利彼。学单片机学acm的都知道,一个点想不清楚的时候网上找到一个好的解答是多么的珍贵。所以希望大家一起加油,在单片机中找到更多的乐趣。。。。。。

    展开全文
  • 51单片机定时器初值的计算

    千次阅读 2018-09-11 09:22:23
    什么是时钟周期?...时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单...

    什么是时钟周期?什么是机器周期?什么是指令周期?

    时钟周期 

    时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us;若采用4MHZ的时钟频率,则时钟周期为250ns。由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。显然,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。但是,由于不同的计算机硬件电路和器件的不完全相同,所以其所需要的时钟周频率范围也不一定相同。我们学习的8051单片机的时钟范围是1.2MHz-12MHz。 在8051单片机中把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。

    机器周期

     在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状态周期)组成。8051系列单片机的一个机器周期同6个S周期(状态周期)组成。前面已说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示),8051单片机的机器周期由6个状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。

    指令周期 

    指令周期是执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期数也不同。对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。 
    通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。


    一、10MS定时器初值的计算: 

              1.晶振12M 

                 12MHz除12为1MHz,也就是说一秒=1000000次机器周期。10ms=10000次 机器周期。
                  65536-10000=55536(d8f0)  
                  TH0=0xd8,TL0=0xf0  
            2.晶振11.0592M 

                  11.0592MHz除12为921600Hz,就是一秒921600次机器周期,10ms=9216次机器周期。
                  65536-9216=56320(dc00)   
                  TH0=0xdc,TL0=0x00

      二、50MS定时器初值的计算:   

           1.晶振12M 
                 12MHz除12为1MHz,也就是说一秒=1000000次机器周期。50ms=50000次 机器周期。   

                 65536-50000=15536(3cb0) 

                 TH0=0x3c,TL0=0xb0

           2.晶振11.0592M 

                11.0592MHz除12为921600Hz,就是一秒921600次机器周期,50ms=46080次机器周期。 

                65536-46080=19456(4c00) 

                    TH0=0x4c,TL0=0x00 
     

     三、使用说明 

                以12M晶振为例:每秒钟可以执行1000000次机器周期个机器周期。而T 每次溢出 最多65536 个机器周期。我们尽量应该让溢出中断的次数最少(如50ms),这样对主程序的干扰也就最小。   开发的时候可能会根据需要更换不同频率的晶振(比如c51单片机,用11.0592M的晶振,很适合产生串口时钟,而12M晶振很方便计算定时器的时间),使用插接式比较方便。  
                 对12MHz  1个机器周期 1us  12/fosc = 1us

                 方式0  13位定时器最大时间间隔  = 2^13 = 8.192ms 

                 方式1  16位定时器最大时间间隔  = 2^16 = 65.536ms 

                 方式2  8位定时器最大时间间隔  = 2^8 = 0.256ms =256 us  定时5ms,计算计时器初值  M = 2^K-X*Fosc/12  12MHz 方式0: K=13,X=5ms,Fosc=12MHz 则 M = 2^13 - 5*10^(-3)*12*10^6/12= 3192 = 0x0C78         THx = 0CH,TLx = 78H, 
                  方式1: K=16,X=5ms,Fosc=12MHz 则 M = 2^16 - 5*10^(-3)*12*10^6/12= 60536 = 0xEC78        THx = ECH,TLx = 78H,   

                 50ms 12MHz   THx = 3CH,TLx = B0H,         10ms       THx = D8H,TLx = F0H,

                方式2: 最大时间 2^8Fosc/12 = 0.256ms  

                十进制数是怎么来的?   6MHz 一个机器周期 12/6 = 2us   定时1ms  计数初值x (2^16-x)*2us  = 1000us x = 2^16 - 500 ,TH,TL 可置 -500  
                 12MHz 一个机器周期 12/12 = 1us 12MHz 一个机器周期 12/12 = 1us 定时50ms  计数初值x (2^16-x)*1us  = 50000us x = 2^16 - 50000 ,TH,TL 可置 -500  定时器  计内部晶振频率 
    计数器  计外部输入CPU脚上的脉冲个数  P3.4(T0)  P3.5(T1) 负跳变加一 
    当晶振为6MHz时,最高计数频率500KHz

    本文转自:https://blog.csdn.net/looksun/article/details/38471213

    展开全文
  • 51单片机计数/定时器设置

    千次阅读 2015-09-16 23:33:26
    51单片机内部一般有两个计数/定时器,T0 T1,其框图如下: 其中TH1 TL1用来设定T1的计数初值,TH0 TL0则用来设定T0的。 一、工作模式设置寄存器TMOD,地址为89H,格式如下图: 1、GATE——门控位  GATE = 0...

     51单片机内部一般有两个计数/定时器,T0 T1,其框图如下:

    其中TH1 TL1用来设定T1的计数初值,TH0 TL0则用来设定T0的。

    一、工作模式设置寄存器TMOD,地址为89H,格式如下图:

    1、GATE——门控位

                GATE = 0时,仅由运行控制位TRX(X = 0,1) = 1 来启动定时/计数器。

                GATE = 1时,由TRX(X = 0 , 1) = 1 和 外中断引脚(INT0 或 INT1)上的高电平共同来启动

    2、M1、M0——工作方式选择位

           0        0——方式0,为13位定时/计数器;

           0        1——方式1,为16位定时/计数器;

           1        0——方式2,8位初值自动重装载,将TH和TL分开,TH自动重新装入TL;

           1        1——方式2,仅适用于T0,分成两个8位计数器,T1停止工作。

    3、C/-T——计数器模式和定时器模式选择位

          0——为定时器;1——为计数器,计数器对外部输入引脚(P3.4和P3.5)的外部脉冲(负跳变)计数。

    二、控制寄存器TCON,地址为88H~8FH

    低四位与外部中断有关。

    1、TF1、TF0——T1、T0计数溢出标志位

           溢出时由硬件自动将其置1,可以由程序查询,该位确定溢出。非中断模式下,软件清零;中断方式时,此位为中断源,

    进入中断服务函数后由硬件自动清零。

    2、TR1、TR0——计数运行控制位

          1——和GATE位配合(看GATE位设置),启动计数定时器;

          0——停止定时/计数器。该位有软件置位或者清0。

    工作方式1框图:



    三、初值计算

       1、机器周期 = 具体晶振频率 / 分频数 的倒数

        2、初值 = 溢出值 - 机器周期 * 定时时间

    假设T0初值为5000,则应该这么设置:

            TH0 = (65536 - 50000) / 256;
            TL0 = (65536 - 50000) % 256;

    一个编程例子:

    TMOD = 0X01; //设置t0为16位(01)计时模式,以TR0来启动计时器
        //计算初值
        TH0 = (65536 - 50000) / 256;
        TL0 = (65536 - 50000) % 256;
        EA = 1; //开总中断
        ET0 = 1;//开定时器0中断
        TR0 = 1; //启动T0
        while (1);

    定时器中断服务函数;

    void timer0_service(void) interrupt 1 (T1 时这里应为3)
    {
        TH0 = (65536 - 50000) / 256;
        TL0 = (65536 - 50000) % 256; //打算继续定时下去时,进入中断服务函数后,重新设定一下初值。
        times++; //这可以产生更大的定时
        if (times == 20) {
            times = 0;
            led = !led;
        }
    }




    展开全文
  • 51单片机定时器初值计算详解

    千次阅读 2019-10-26 12:32:29
    本文详细介绍了51单片机学习过程中定时器的初值计算问题以及相关概念,力求把每一个学习过程中的可能会遇到的难点说清楚,并举相关的例子加以说明。学习完毕,又顺手利用刚学到定时器的相关知识写了一个“定时器...

     

    前言:

           本文详细介绍了51单片机学习过程中定时器的初值计算问题以及相关概念,力求把每一个学习过程中的可能会遇到的难点说清楚,并举相关的例子加以说明。学习完毕,又顺手利用刚学到定时器的相关知识写了一个“定时器初值计算”控制台程序,能够实现:51定时器三种不同工作方式下的初值计算输出,既实用,又能加深对所学知识的理解。


         

       软件使用VS2012编写,实现效果如下,仅仅是控制台程序,没有界面,有兴趣的话可以自己用C#或者QT写个界面,或者做一些功能上拓展,跟我们平常学习51资料中附带的定时器初值计算小工具一样哦!

          

     

       附51系列单片机控制台程序定时器初值核心计算函数源码(完整VS2012工程源码下载

    /*
     * 函数名:Timer_Initial_calculation
     * 描述  :定时器初值计算函数
     * 输入  :无
     * 输出  :无
     */
    void Timer_Initial_calculation()
    {
    	int N;	//计数值 
    	int n;  //定时器位数 
    	int TimeDigit;	//计数总值 
    
    	N = (t*fosc*1000) / 12;     //计算计数值N 
    	//定时器位数选择
    	switch(y)
    	{
    		case 0: 
    			n=13;
    			TimeDigit = pow(2.0,n);      //定时器位数选择 
    			TimingMax = TimeDigit*12/fosc/1000;		//计算定时最长时间 
    			THX = (TimeDigit - N)/32;	//初值高八位 
    			TLX = (TimeDigit - N)%32;	//初值低八位 
    			break;
    		case 1: 
    			n=16;
    			TimeDigit = pow(2.0,n);      //定时器位数选择 
    			TimingMax = TimeDigit*12/fosc/1000;		//计算定时最长时间 
    			THX = (TimeDigit - N)/256;	//初值高八位 
    			TLX = (TimeDigit - N)%256;	//初值低八位 
    			break;
    		case 2: 
    			n=8;
    			TimeDigit = pow(2.0,n);      //定时器位数选择 
    			TimingMax = TimeDigit*12/fosc/1000;		//计算定时最长时间  
    			THX = TimeDigit - N;		//初值高八位 
    			TLX = TimeDigit - N;		//初值低八位 
    			break;
    		default:
    			break;
    	}
    	
    }

       

    下面开始正式介绍定时器初值计算相关内容:

     

    一、系统周期:

    时钟周期

    时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us;若采用4MHZ的时钟频率,则时钟周期为250ns。由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。显然,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。但是,由于不同的计算机硬件电路和器件的不完全相同,所以其所需要的时钟周频率范围也不一定相同。我们学习的8051单片机的时钟范围是1.2MHz-12MHz。 在8051单片机中把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。

    机器周期

     在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状态周期)组成。8051系列单片机的一个机器周期同6个S周期(状态周期)组成。前面已说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示),8051单片机的机器周期由6个状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。

    指令周期

    指令周期是执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期数也不同。对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。

    通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令

     

    二、定时器初值的计算:

    例:对12MHz  1个机器周期 1us  12/fosc = 1us

    方式0  13位定时器最大时间间隔  = 2^13 = 8.192ms

    方式1  16位定时器最大时间间隔  = 2^16 = 65.536ms

    方式2  8位定时器最大时间间隔  = 2^8 = 0.256ms =256 us 

    方式3 仅适用于T0,此时T0分成两个8位计数器,T1停止计数

    当选用定时器的方式1时,设机器周期为Tcy,定时器产生一次中断的时间为t,那么需要计数的个数N=t/Tcy,装入THX和TLX中的数分别为:

    THX = (2^16 - N)/256     TLX = (2^16 -N )%256(此处的X为定时器0或定时器1

    公式为:(2^y - X)*Tcy = t

            Tosc= 1/ fosc

    一个机器周期 = 12个时钟周期 = 12/fosc

    溢出速率 = 1 / 溢出时间        故:初值X = 2^y – t/Tcy

               THX = 高八位   TLX = 低八位

          注:

             X:定时器初值

             N:计数值

             y:定时器工作方式

             fosc:晶振频率

               Tcy:机器周期,Tosc:时钟周期  Tcy = 1/Tosc

     

    例:50ms定时器初值计算:

    1. 晶振12M

    12MHz除12为1MHz,也就是说一秒=1000000次机器周期。50ms=50000次 机器周期。  

                 65536-50000=15536(3cb0)

                 TH0=0x3c,TL0=0xb0

    2.晶振11.0592M

    11.0592MHz除12为921600Hz,就是一秒921600次机器周期,50ms=46080次机器周期。

                65536-46080=19456(4c00)

                    TH0=0x4c,TL0=0x00

     

    以12M晶振为例:每秒钟可以执行1000000次机器周期个机器周期。而T 每次溢出 最多65536 个机器周期。我们尽量应该让溢出中断的次数最少(50ms),这样对主程序的干扰也就最小。

     

    三、定时器不同工作方式下赋初值问题:

    1)定时器方式013为计数器,由TL05位(高3位未用)和TH08为组成,因此定时器方式0最多能装载的数为2^19=8192个。当使用定时器方式0时,计数初值

    THX=8192-N/32,TLX=(8192-N)%32.   N 为计数个数=t/Tcy.

    2)定时器方式116为计数器,由TLX8位和THX8位组成的加1计数器。因此最多能装载2^16=65536个数。计数初值为:

    THX=65536-N/256,TLX =(65536-N)%256

         在定时器的方式0和方式1中,当计数溢出后,计数器变为0,因此在循环定时或循环计数时,必须使用软件反复设置计数初值,这样会影响到定时精度,也会使程序设计比较麻烦,使用定时器方式2可解决反复装初值所带来的问题。

    3)定时器方式28位初值自动重装的定时/计数器,THX被作为常数缓冲器,当TLX计数溢出时,在使溢出标志TFX1的同时,还会自动地将THX中的常数重新装入TLX中。方式2适合用作较精确的脉冲信号发生器。计数初值为:

        THX=256-NTLX=256-N

    4)方式3只适用于定时/计数器T0。此时,T0被分成两个独立的计数器。需要注意:当T0工作在方式3时,T1一定不要有中断的场合,因为工作方式3时,T0会占用T1的中断标志位。

     

    取模与取余问题:

    高八位和低八位就像我们十进制的十位和个位,就比如整数89=8*10+9*1;十位上算的“8”当然就是要8910求模,而个位上的9则是8910求余了!至于为什么TH0TL0赋初值要对256求模或求余,那是因为高八位和低八位都是8byte的,也就是它最大只能是“11111111”,化成十进制就是255,再加最前面的“00000000”也就是256个位矢量,所以就要对256求模或求余。

    因为高TH0和低TH0都是八位的 最多能装的数据是255,如果不对255取模取余的话 是装不下的。

           定时器方式013为计数器,由TL05位(高3位未用),所以应对2^5也就是32进行取余、取模。

     

           定时器模式2是自动重装模式, TH0TL0都要用到,TL0是真正的定时/计数器,肯定要有一个初值,在此基础上向上计数,溢出时就将TH0的值装入TL0,不用再次人工写程序干预

     

    四、计数器初值的计算:

    计数器的初值计算要比定时器的相对简单,例如:定时器T1工作在方式2的计数器状态,计算T1的初值:

                     初值X = 2^8 – 计数值

     

    展开全文
  • 定时/计数器的初始化 初始化程序应完成如下工作: 1). 对TMOD赋值, 以确定T0和T1的工作方式. 2). 计算初值, 并将其写入 TH0, TL0 或者 TH1, TL1. 3). 使用中断方式时, 则对IE赋值, 开放中断. 4). 使 TR0 或 TR1...
  • 定时计数器的计数初值计算根据工作方式的不同而不同 主要分为两种情况: (1)计数工作时  此时计数脉冲由外部脉冲提供,根据工作方式确定计数器最大值MAX,假如你需要每满X个值就溢出计数加1,则初值为N = MAX - X...
  • 51单片机之定时器/计数器应用实例(方式0、1、2、3)

    万次阅读 多人点赞 2019-05-26 22:19:13
    对于刚接触单片机的同学来说可能会对定时器/计数器的应用很蒙圈,特别是初值的计算和各种定时方式的选择。下面希望能给你带来一个清晰的思路。 定时器:一般用于软件计时,给定时器设置一个时间,时间到了系统停止...
  • /********************************************** 方法1:延时法 硬件:11.0592MHz晶振,STC89C52,RXD P1.0 TXD P1.1 T1 P3.5 波特率:9600 描述:T0用于定时,方式1,定时时间50ms,中断方式;...
  • 51单片机定时/计数器的功能实现

    千次阅读 2017-05-08 16:12:21
    8051单片机内部有两个16位的定时/计数器:T0和T1 定时器用途:延时和脉宽测量 读取方式:软件读取和中断 公式: T(初值)=2^N-定时时间/机器周期时间 机器周期时间=12/fosc N:代表几位定时器,有13 16...
  • MCS-51单片机计数器定时器详解

    千次阅读 2014-02-19 10:32:32
    80C51单片机内部设有两个16位的可编程定时器/计数器。可编程的意思是指其功能(如工作方式、定时时间、量程、启动方式等)均可由指令来确定和改变。在定时器/计数器中除了有两个16位的计数器之外,还有两个特殊功能...
  • 学习笔记之-51单片机定时计数器

    千次阅读 多人点赞 2017-02-12 16:51:30
    一、单片机的时序 单片机工作时,是在统一的时钟脉冲控制下一拍一拍地进行的。由于指令的字节数不同,取这些指令所需要的时间也就不同,即使是字节数相同的指令,由于执行操作有较大的差别,不同的指令执行时间也不...
  • 一开始, 我以为初值都是单位为ms的数值,如果溢出时间是50ms,那么初值就是50000, 但当我发现50ms, 外循环20次和1ms, 外循环1000次,不能达成相同的效果时, 我发现初值不是想象中那样。 初值需要计算! 我查了...
  • 单片机 定时器/计数器

    千次阅读 2019-01-10 14:32:48
    单片机 定时器/计数器 一、简述  MCS—51系列单片机内部有两个16位定时器/计数器,即定时器T0和定时器T1。它们都具有定时和计数功能,可用于定时或延时控制,对外部事件进行检测、计数等。  定时器/计数器是一...
  •   每个定时/计数器都有多种工作方式,不同的工作方式对应计数长度和初值装载方式不同   51系列单片机中有两个16位可编程定时/计数器:T0和T1,52子系列还有一个T2 定时/计数器T0、T1的结构 如图,T0、T1各有两...
  • TCON和TMOD特殊功能寄存器:定时器/计数器工作方式:方式0:13位的定时器/计数器方式1:16位的定时器/计数器方式2:自动装载初值的8位定时器/计数器方式3:俩个8位的定时器/计数器,只有T0有定时器/计数器的使用:例...
  • 2.根据要求计算定时/计数器的计数值,在求得计数初值,写入初始化寄存器 。 3.根据需求,开放定时/计数器中断选项 4.设置 TCON,通过 TR0 置 1 来让定时器开始计数。 5.等待定时时间到,如果查询处理编写查询程序...
  • 我们这学期开了单片机的课,不知道为什么我们要用汇编语言写程序,感觉汇编程序真的挺难写的,所以把实验记录下来把。 如果没有学过汇编的小伙伴建议先去熟悉一下简单的汇编指令,之前简单的实验我就不记录了,我们...
  • 计数器 ...8031单片机中有两个计数器,分别称之为T0和T1,这两个计数器分别是由两个8位的RAM单元组成的,即每个计数器都是16位的计数器,最大的计数量是65536。 定时器 计数器除了能作为计数之
  • 一、51单片机的定时/计数器的工作原理 在了解了单片机的时钟频率、时钟周期、机器周期之后,显然我们可以知道定时器的工作原理,在此之前我们先算出51单片机的脉冲周期:以f=12MHz为例,12分频 T=1/f ×\times× 12 ...
  • 51单片机定时器/计数器

    千次阅读 2019-05-08 11:25:50
    1.基本概念:89C51有两个计数器T0和T1,每个计数器都是由两个8位的RAM 单元组成的,即每个计数器都是16 位的计数器,最大的计数容量是2的6次方=65536,记住是从0-65535。 定时器的本质也是计数器,只不过定时器的...
1 2 3 4 5 ... 20
收藏数 2,110
精华内容 844
关键字:

单片机计数器设置初值