精华内容
下载资源
问答
  • 51单片机TMOD寄存器

    千次阅读 2020-07-14 11:38:46
    51单片机TMOD寄存器TMOD格式图GATE(门控位)C/T( 定时/计数模式选择位)M1M0(工作方式设置位) TMOD格式图 TMOD(定时器/计数器工作方式寄存器)低4位用于T0,高4位用于T1 GATE(门控位) 用于控制定时器启动...

    TMOD格式图

    TMOD(定时器/计数器工作方式寄存器)低4位用于T0,高4位用于T1
    格式图

    GATE(门控位)

    用于控制定时器启动是否受外部中断源的影响 
          当GATE=0时,只要用软件使TR0或TR1等于1,就可以启动T0或T1定时/计数器工作。
          当GATE=1时,除了用软件使TR0或TR1等于1外,还要使外部中断引脚INT0/1为高电平,这样定时/计数器才能启动工作。
          注意:GATE=0表示控制定时器启动不受外部中断源的影响
    

    C/T( 定时/计数模式选择位)

     C/T=0为定时模式,C/T=1为计数模式。
    

    M1M0(工作方式设置位)

    定时/计数器工作方式设置表

    展开全文
  • 51单片机定时器TMOD与TCON、SCON

    千次阅读 多人点赞 2019-11-29 16:18:29
    51单片机中断级别 中断源 默认中断级别 序号(C语言用) INT0---外部中断0 最高 0 T0 ---定时器/计数器0中断 第2 1 INT1---外部中断1 第3 ...

    51单片机中断级别

    中断源                                默认中断级别    序号(C语言用)
    INT0---外部中断0                   最高              0 
    T0    ---定时器/计数器0中断    第2               1
    INT1---外部中断1                    第3               2
    T1   ----定时器/计数器1中断    第4               3
    TX/RX---串行口中断                第5               4
    T2   ---定时器/计数器2中断     最低              5
    ————————————————

    定时器/计数器模式控制寄存器TMOD是一个逐位定义的8位寄存器,但只能使用字节寻址,其字节地址为89H。

     

    D0~D3为T0定时/计数器的设置,D4~D7为T1定时/计数器的设置 。

    GATE  :为门控位,GATE=0时,只要在编写程序时,使TCON中的TRO或TR1为1,就可以启动定时器/计数器工作。

                                     GATE=1时,不仅要在编写程序时,使TCON中的TRO或TR1为1,且需要外部引脚也为高电平,才能 工作。

    C/T    :定时/计数模式切换,C/T=0时为定时模式,C/T=1时为计数模式。

    M1,M0:用来选择定时计/计数器的工作方式,一般使用都是采用16位的计时计数器。

     TCON 定时器控制寄存器

    定时器控制寄存器,作用是控制定时器的启、停,标志定时器溢出和中断情况。

    TF1  :TF1=1表示T1有中断产生。(Timer Flag,定时器标志位)

    TR1  :TR1=1表示T1开始运行。(单片机中T0引脚,需要高低电平的驱动)

    TF0  :TF0=1表示T0有中断产生。

    TR0  :TR0=1表示T0开始运行。(单片机中T1引脚,需要高低电平的驱动)

    IE1   :IE1=1表示INT1有中断产生。

    IT1   :IT1=1表示INT1为下降沿触发,IT1=0表示INT1为低电平触发。

    IE0   :IE0=1表示INT0有中断产生。

    IT0   :IT0=1表示INT0为下降沿(负跳变)触发,IT0=0表示INT0为低电平触发。

           外部中断:

               IE0/IE1:外部中断请求标志位

                       当INT0(INT1)引脚出现有效的请求信号,此位由单片机自动置1,

                       CPU开始响应,处理中断,而当入中断程序后由单片机自动置0.

               IT0/IT1:外部中断触发方式控制位          //选择有效信号

                       IT0/IT1=1:脉冲触发方式,下降沿有效。

                       IT0/IT1=0:电平触发方式,低电平有效。
    ————————————————

    中断允许寄存器  IE (A8H)

    EA    :整体中断允许位;EA=1允许中断。

    ET2   :T2中断允许位;ET2=1允许中断(S52才有)。

    ES    :串行中断允许位;ES=1允许中断。

    ET1   :T1中断允许位;ET1=1允许中断。

    EX1   :INT1中断允许位;EX1=1允许中断。

    ET0   :T0中断允许位;ET0=1允许中断。

    EX0   :INT0中断允许位;EX0=1允许中断。


    在程序中,通过设订两个8位寄存器中TH与TL的值,来决定定时值和计数值。TH与TL的计算过程如下:

    假设定时器的时间常数为X,定时器的位数为N
    定时时间T=(2的N次方-X)12/单片机晶振频率   (例如11.0592MHZ的振荡器频率F=1/11.0592)
    N为定时器的工作方式(关于定时/计数器的4中工作方式,以下会有具体介绍):

     方式0时,N=13(此为TH为8位,TL为5位)
     方式1时,N=16(此为TH为8位,TL为8位)
     方式2时,N=8(此为TH为8位,TL为0位)                                                                                                                                       方式3时,N=8(此为TH为8位,TL为8位,只适用于T0,且T0被分成两个独立的8位计数器TH与TL)


    根据定时时间和工作方式,通过公式:定时时间T=(2的N次方-X)12/单片机晶振频率,计算出时间常数X
    把X转换成二进制数,高8位送给TH1,低8位送给TL1,就可以启动定时器开始定时了。

    定时器的3种工作方式图解:

    工作方式0:

    工作方式1:

    工作方式2:

    工作方式3:

    总结定时器的操作步骤如下:

    1.选择工作方式(设置M0,M1的值) 

    2.选择控制方式GATE(为0是只要软件设定好参数即可,为1则需要软件设定参数,且定时器/计数器的中断引脚需要为高电平)

    3.确定定时器的工作模式,是定时模式还是计数模式 C/T.

    4.给定时器设初值(设置THX与TLX)

    5.开启定时器中断(设置ET0或ET1)

    6.开启总中断(设置EA的值)

    7.定时器/计数器的选择T0/T1(设置TR1或TR0的值)

    例:设置一个LED灯每500ms的评率闪烁

    #include<reg52.h>
     
    sbit led = P1^0;
    int i = 0;
     
    void timer1_init()
    {
        TMOD = 0x10; //定时器0选择工作方式1
        TH1 = 0x4C;     //设置初始值,定时50ms
        TL1 = 0x00; 
        EA = 1;             //打开总中断
        ET1 = 1;         //打开定时器0中断
        TR1 = 1;         //启动定时器0
    }
     
    void main()
    {
        led = 1;
        timer1_init();//定时器1的初始化
        while(1)
        {
            if(i==10)
            {
              led = ~led;
              i = 0; //注意i需要零
            }
        }
    }
     
    void timer1() interrupt 3
    {
        TH1 = 0x4C;     //设置初始值,定时50ms
        TL1 = 0x00;
        i++;
    }
    ¡定时器操作步骤:

    选择工作方式(设

    ¡定时器操作步骤:

    选择工作方式(设置M1,M0)

    选择控制方式(设置GATE)

    选择定时器还是计数器模式(设置C/T)

    给定时/计数器赋初值(设置THx和TLx

    开启定时器中断(设置ET0或ET1

    开启总中断(设置EA)

    打开计数器(设置TR1或TR0)

    置M1,M0)

    选择控制方式(设置GATE)

    选择定时器还是计数器模式(设置C/T)

    给定时/计数器赋初值(设置THx和TLx

    开启定时器中断(设置ET0或ET1)

    开启总中断(设置EA)

    打开计数器(设置TR1或TR0)

     

    定时器操作步骤 

    选择工作方式(设置M1,M0)

    选择控制方式(设置GATE)

    选择定时器还是计数器模式(设置C/ 

    给定时/计数器赋初值(设置THx和TLx)

    开启定时器中断(设置ET0或ET1

    开启总中断(设置EA)

    打开计数器(设置TR1或TR0)

     

    由TL0的低5位(高3位未用)和TH0的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。由TL0的低5位(高3位未用)和TH0的8位组成。TL0的低5位出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。,由TL0的低5位(高3位未用)和TH0的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0 
    ————————————————

    SCON 串口控制寄存器

    SM0、SM1工作方式控制位

    SM2:多机通信控制位,1-允许、0-不允许

    REN:串行接收允许位。1-允许、0-不允许

    TB8:发送数据第九位

    RB8:接收数据第九位

    TI:发送中断标志位

    RI:接收中断标志位

    ①SM0和SM1 :串行口工作方式选择位 ,两个选择位对应四种通信方式,如下图所示,其中fosc是振荡频率

    SM2:多机通信控制位,主要用于方式2和方式3。

    若SM2 = 1;则允许多机通信。多机通信协议规定,第9位数据(D8)为1,说明本帧数据为地址帧;若第9位数据为0,则本帧数据为数据帧。当一个89c51(主机)与多个89c51(从机)通信时,所有从机的SM2位都置1,主机首先发送的一帧数据为地址,即某从机号,其中第9位为1,所有的从机接收数据后,将其中第9位数据装入RB8中。各个从机根据接收到的第9位数据(RB8中)的值来决定从机是否再接收主机的信息、若(RB8)= 0,说明是数据帧,则使接收中断标志位RI = 0,信息丢失,若RB8 = 1,说明是地址帧,数据装入SBUF并置RI = 1,中断所有从机,被寻址的目标从机清除SM2,以接收主机发来的一帧数据,其它从机仍然保持SM2 = 1。

    若SM2 = 0,即不属于多机通信情况,则接收完一帧数据后,不管第9位数据是0还是1,都置RI = 1,接收到的数据装入SBUF中。在方式0时SM2必须置0。在方式1时,若SM2 = 1,则只有接收到有效停止位时,RI才置1,以便接收下一帧数据。

    REN:允许接收控制位,由软件置1或清0

    REN = 1时,允许接收,相当于串行接收的开关

    REN = 0时,禁止接收

    在串行通信接收控制过程中,如果满足RI = 0和REN = 1的条件,就允许接收。

    TB8:发送数据的第9位(D8)装入TB8中。在方式2或方式3中,根据发送数据的需求由软件置位或复位。在许多通信协议中可用作奇偶校验位,也可以在多机通信中作为发送地址帧或者数据帧的标志位。

    RB8:接收数据的第9位,原理同TB8

    TI:发送中断标志位,在一帧数据发送完时被置位。在串行发送到停止位的开始时由硬件置位,可用软件查询。它同时也申请中断。TI置位意味着向CPU提供“发送缓冲器SBUF已空”的信息,CPU可以准备发送下一帧数据。串行口发送中断被响应后,TI不会自动清0,必须软件清0.

    RI:接收中断标志,在接收到一帧数据后由硬件置位。当RI = 1时,申请中断,表示一帧数据接收结束,并已装入接收SBUF中,要求CPU取走数据,CPU响应中断,取走数据。RI位也必须由软件来清0,。

    串行发送中断标志TI和接收中断标志RI是同一个中断源,CPU事先不知道是发送中断TI还是接收中断RI产生的中断请求,所以,在全双工通信时,必须由软件来判别。复位时SCON所有位都清0.

    /*
    SMOD为PCON的最高位
    9600==(2^SMOD / 32)*(T1溢出率)

    T1溢出率==11059200/12/(256-TH)

    9600=(1/32)*( 11059200/12/(256-TH) )

    TH==256-11059200/12/32/9600==256-3=0xFD
    */

    /*
    *****************************************
    **函数功能:串口初始化函数
    *****************************************
    */
    void UART_Init()
    {
         
                TMOD = 0x20; //定时器1工作模式2,自动重装8位计数器
                TH1 = 0xfd;
                TL1 = 0xfd;   //定时器溢出时,会自动将高8位中的值赋值给低8位.比特率9600
                TR1 = 1;
                SM0 = 0;
                SM1 = 1;
                REN = 1;
                EA = 1;
                ES = 1;
    }
    /*
    ********************************************
    **函数名称:串口中断函数
    ********************************************
    */
    void UART() interrupt 4
    {
        if(RI == 1)        //如果接收到计算机发的数据
            {
                num = SBUF;  //取出数据
                num++;       
                RI = 0;       //清除标志位
                SBUF = num;  //把数据加1后再发送给计算机
            }
            if(TI == 1)    //如果发送完毕
            {
                TI = 0;       //清除标志位
            }
    }
    ————————————————

    PCON 电源控制位寄存器

    电源控制位寄存器PCON中只有SMOD位与串口工作有关,如下图所示

    SMOD:波特率倍增位。在方式1、2、3中,当SMOD = 1时,波特率提高一倍。

     

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

    万次阅读 多人点赞 2019-05-28 21:50:38
    定时器/计数器TMOD设定 TMOD格式 上图为TMOD格式,8位分为两组,高四位控制T1,低四位控制T0 TMOD各位的说明 GATE ...0:仅由运行控制位TRx(x = 0...0:为定时器工作模式,对单片机的晶体振荡器12分频后的脉冲进行...

    51单片机:定时器/计数器TMOD设定

    TMOD格式

    TMOD格式

    上图为TMOD格式,8位分为两组,高四位控制T1,低四位控制T0

    TMOD各位的说明

    • GATE

    0:仅由运行控制位TRx(x = 0,1)来控制定时器/计数器运行。
    1:用外中断引脚( INT0或 INT1)上的电平与运行控制位TRx共同来控制定时器/计数器运行。

    • C/T*

    0:为定时器工作模式,对单片机的晶体振荡器12分频后的脉冲进行计数。
    1:为计数器工作模式,计数器对外部输入引脚T0(P3.4)或T1(P3.5)的外部脉冲(负跳变)计数。

    • M1/M2工作方式选择

      M1 M2 工作方式
      0 0 方式0,是13位定时器/计数器
      0 1 方式1,是16位定时器/计数器
      1 0 方式2,8位常数自动装入定时器/计数器
      1 1 方式3,仅适用于T0,这时T0分为两个8位计数器,T1停止计数

    几种TMOD设置

    定时器工作模式下,GATE = 0

    • TMOD = 0X01 (T0工作在方式1)
    • TMOD = 0X02 (T0工作在方式2)
    • TMOD = 0X10 (T1工作在方式1)
    • TMOD = 0X20 (T1工作在方式2)

    计数器工作模式下,GATE = 0

    • TMOD = 0X05 (T0工作在方式1, T0的二进制码为0101,转化为十六进制为5H,因此TMOD =0x05)
    • TMOD = 0X06 (T0工作在方式2, T0的二进制码为0110,转化为十六进制为6H,因此TMOD =0x06)
      (采用计数器模式,需要在外部引脚T0(P3.4)或T1(P3.5)提供一个能够进行负跳变的设备,比如开关按键)

    (参考课本《单片机原理及应用》第三版 张毅刚等编著)

    展开全文
  • 至于那些书上都有的理论知识我就不说了,就简单的说一下吧,楼主可以想简单点 ...1、确定使用哪个定时器,使用哪种方式,这一步通过TMOD设置,TMOD的低四位是设置定时器0的,高四位是用来设置定时...
    
    转自:http://zhidao.baidu.com/question/265791981.html
    
    
    
    
    至于那些书上都有的理论知识我就不说了,就简单的说一下吧,楼主可以想简单点
    定时器工作的流程可以按照这个顺序(以51为例用定时器0方式一产生50毫秒的定时)
    1、确定使用哪个定时器,使用哪种方式,这一步通过TMOD设置,TMOD的低四位是设置定时器0的,高四位是用来设置定时器1的,其中的M0,M1是用来设置定时器工作在哪种方式,GATE一般用不要设置,C/T是选择计数模式还是定时模式的,如:TMOD = 0X01,就说明定时器0工作在方式1。
    2、接下来就要设置定时的时间,用定时器定时50毫秒,可以用这种方式TH0 = (65535 - 50000) / 256,TL0 = (65535 - 50000) % 256;可以这样理解:因为这是定时器的初值,也就是说计数脉冲就是在这个数的基础上向上递增,到达65535后就溢出产生中断,至于为什么是对256取整,和取余的话楼主自己先琢磨吧, 不懂再hi我;
    3、第三步就要打开中断了,使用IE寄存器,我一般是对各个位进行单独设置,这样看起来感觉更好,首先打开总中断EA = 1,这一步是所有中断所必须的,然后打开定时器0中断,ET0 =1;
    4、这时准备工作都准备好了就要开始启动定时器了,使用TCON寄存器,TR0 = 1,到现在为止就实现了一个50毫秒的定时了;
    总结一下:TMOD = 0X01; TH0 = (65535 - 5000) / 256; TL0 = (65535 - 50000) % 256; EA = 1; ET0 = 1; TR0 = 1,至于那个中断函数我就不写了,要注意的是方式0 ,1, 3是不能自动重装的,所以得在中断函数中重新对TH0 ,TL0赋初值,楼主说的那个SCON寄存器就是用于串口的,定时器会用了的话,串口也就会了的,希望能够帮助楼主了
    展开全文
  • TMOD:工作方式控制寄存器 寄存器地址89H,不可位寻址。 位序 B7 B6 B5 B4 B3 B2 B1 B0 位符号 GATE C/T M1 M0 GATE C/...
  • TMOD - Timer/Counter 0 and 1 Modes 定时器/计数器模式寄存器 GATE 可用于高电平计时,上文有提到 C/T 定时器还是计数器,0定时,1计数(T1从p3.5,T0从P3.4输入) M1/0X 四种模式,与...
  •  1 1 方式3 T0分为2个8位计数器,T1为波特率发生器 TMOD=0x03  ================================================================       TCON:定时器/计数器控制寄存器 可以通过设置此寄存器里面...
  • 51单片机串口通讯

    2017-11-10 12:56:04
    51单片机串口通讯,涉及波特率设置,SCON、TMOD的设置。
  • MCS51单片机定时器系统1、掌握MCS51单片机定时器/计数器的硬件... 2、掌握MCS51单片机定时器/计数器 寄存器TMOD 、TCON 3、掌握MCS51单片机定时器/计数器 工作方式 4、掌握MCS51单片机定时器/计数器 的编程与应用。
  • 4.3.1 定时/计数器的控制寄存器 定时/计数器具有两个控制寄存器定时/计数器控制TCON88H和定时/计数器工作模式寄存器TMOD89H 1计数寄存器TH和TL 2定时/计数器控制寄存器TCON 3定时/计数器方式控制寄存器TMOD 4.3.2 ...
  • 51单片机小精灵.rar

    2020-05-14 08:58:42
    基于51单片机,用于延时计算,定时器/计数器的TMOD计算,串口波特率计算,中断控制,编程指令速查。
  • 51单片机中断篇

    千次阅读 多人点赞 2021-01-27 23:59:10
    51单片机中断51单片机中断原理中断的概念:中断作用中断源及相关寄存器中断源及优先级定时器/计数器控制寄存器 TCON中断允许寄存器 IE中断优先寄存器 IP工作方式寄存器TMOD定时器初值寄存器THx 和 TLx计数器初值的...
  • 51单片机串口通信

    2021-01-06 04:54:53
    最近在学习51单片机,需要做一个通过串口与MCU通信来控制LED亮灭的小项目。不多逼逼,直接开搞。  串口初始化 使用串口通信,需要对SCON、PCON和TMOD三个特殊寄存器进行配置。 SCON 串口工作方式寄存器SCON(98H)...
  • 原理示意图如下(以51单片机为例,1个机器周期=12个 时钟周期(振荡周期) ): Ⅰ,GATE——门控制。 ● GATE=1 时 ,“与门”的输出信号K由INTx输入电平和TRx位的状态一起决定(即此时K=TRx·INTx),当且仅...
  • C51单片机总结

    2019-12-08 14:43:07
    C51单片机摘抄总结单片机总览<1> 四组8位并行I/O端口:<2> 三大外设:外部中断、定时/计数、串行通信(1)外部中断(2)定时/计数(3)串行通信补充IE/IP寄存器<3> 五个中断源:2个外部中断、2个定时/...
  • 89C51单片机的定时计数功能由特殊功能寄存器TMOD和TCON共同控制。 TMOD没有位地址,不能进行位操作。
  • /*配置的寄存器有TMOD:模式控制寄存器TCON:定时器控制器控制寄存器IE:中断允许寄存器IP:中断优先级寄存器*/#include "reg52.h"#define BASE (50000/(12/11.0592)) // 定义50ms的基数sbit led = P1^0;void time_...
  • 1、 定时器/计数器的方式寄存器TMODTMOD是一个8位的特殊功能寄存器,对应的地址是89H,不可...B TMOD的低4位是控制T0的字段(T0--P3.4 定时器/计数器0外部事件脉冲输入端)TMOD的高4位是控制T1的字段(T1--P3.5定时器/...
  • 51单片机定时器

    2014-10-02 15:00:00
    51单片机共有两个定时器,T0与T1,包含计数和定时两种模式,使用定时器需要设置的寄存器如下 1.TMOD TMOD寄存器低四位为T0模式选择 高四位为T1 GATE——门控制。 GATE=1时,由外部中断引脚INT0、INT1来启动定时器...
  • 51单片机初值计算方法

    千次阅读 2018-05-07 17:56:31
    奶爸业余单片机学习之:定时器以工作方式1运行时的初值的计算方法(51单片机)//==========51单片机========/*定时器以工作方式1运行TMOD = 0x01;//定时器0TMOD = 0x10;//定时器1TMOD =0x11;//定时器0/1同时工作*/...
  • 在这里,小编带你一起 从零开始学51。基于单片机的定时器原理图如下所示: 我们学单片机是首先学的就是 闪烁,那是用延时程序做的,现在回想起来,这样做不很恰当,为什么呢?我们的主程序做了灯的闪烁,就不能再...
  • 51单片机 方波

    2018-12-13 18:53:00
    51单片机 方波 产生一个占空比为80%的方波。 #include <reg51.h> unsigned char a,b; sbit OUT = P0^0; // 定时器中断初始化 void timer0_init() { EA = 0; TMOD = 0X01; ET0 = 1; ...
  • 呼吸灯 51单片机 仿真

    2019-05-27 17:14:49
    047 51单片机 呼吸灯 仿真 更多资料请访问我下载主页 void main() { upCounter = MIN; downCounter = MAX; //计数器初始化 TMOD = 0x01; //设置定时器工作方式 TH0 = 0xF0; TL0 = 0xF0 ; //T0初始化值 EA = ...
  • 标准的 51 单片机内部有 T0 和 T1 这两个定时器,T 就是 Timer 的缩写。 定时器的寄存器 T0和T1的控制由两个8位特殊功能寄存器完成:一个为定时器的方式选择寄存器TMOD用于确定定时器还是计数器工作模式;另一个叫做...
  • 51单片机自学笔记

    2016-07-27 22:24:19
    9.3 51单片机串行口171, 9.3.1 数据格式的设置171, 9.3.2 波特率的设置173, 9.3.3 成功设置串口初始化的步骤总结174, 9.4 两片51单片机“眉来眼去”174, 9.4.1 查询方式收发数据174, 9.4.2 中断方式收发数据178, ...
  • 51单片机 串口通信

    2020-02-14 13:46:37
    文档:普中科技51单片机教程 步骤 1、确定定时器T1的工作方式(TMOD) 这里我们用的是T1定时器的工作方式2,自动重装初值 2、计算T1的初值(TH1,TH2) 计算公式: SMOD = 0波特率正常。SMOD = 1波特率增倍...
  • 51单片机资料

    2014-02-11 23:03:06
    TMOD = 0x20; //定时器1定时方式2 TCON = 0x40; //设定时器1开始计数 TH1 = 0xE8; //11.0592MHz 1200波特率 TL1 = 0xE8; TI = 1; TR1 = 1; //启动定时器 while(1) { printf ("Hello World!\n"); //...
  • 定时器方式2: 8位自动重装 波特率 9600#includevoid delayms(int x){int i, j;for(i = x; i; --i)for(j= 110; j; --j);return ;}void initSCI(void){SM0 = 0; /*Step 1 : 确定串口...TMOD = 0x20; /*step 2: 根据串...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 510
精华内容 204
关键字:

51单片机tmod