stc15系列单片机定时器相关寄存器介绍个人笔记(更新中)

注:文中可能会出现错误,如有不善之处,欢迎指正!

如果要使用STC单片机输出硬件PWM,请参考手册第十一章有关内容


  • TCON(Timer Control)定时器控制寄存器

TCON只能控制T0和T1这两个定时器

        可位寻址:支持直接读写寄存器中的某一位。如果要修改某一位,只需要执行一次操作。

        不可位寻址:如果要改变寄存器的某一位,需要对整个寄存器进行重写。如果要修改某一位,需要进行八次写入操作。

        位介绍

        TF1:Timer1 Flag,T1溢出中断标志。硬件置1,CPU响应后置0

        TR1:Timer1 Run,T1运行控制位。软件控制,和TMOD(Timer Mode)寄存器中的Gate位配合,来控制定时器计数

                T1的Gate位=0,TR1=1,T1开始计数;T1的Gate位=0,TR1=0,禁止计数。

                T1的Gate位=1,TR1=1,该配置只有INT1输入高电平时,T1计数

        TF0:Timer0 Flag,T0溢出中断标志。硬件置1,CPU响应后置0

        TR0:Timer0 Run,T0运行控制位。

                T0的Gate位=0,TR0=1,T0开始计数;T0的Gate位=0,TR0=0,禁止计数。

                T0的Gate位=1,TR0=1,该配置只有INT0输入高电平时,T0计数

        IE1:Interrupt1 External,外部中断1(INT1/P33)请求源标志。IE1=1,外部中断1发送请求

        IT1:Interrupt1 Transform,外部中断1触发模式控制。

                IT1=0,边沿触发外部中断1;IT1=1,下降沿触发外部中断1

                注:为INT1,即P33引脚上的边沿。

        IE0:Interrupt0 External,外部中断0(INT0/P32)请求源标志。IE0=1,外部中断0发送请求

        IT0:Interrupt0 Transform,外部中断1触发模式控制。具体同上


  • TMOD(Timer Mode)定时器模式配置寄存器

                可以看到TMOD寄存器的低四位配置定时器0,高四位配置定时器1。

        Gate:可以理解为控制输入的开关。

                Gate=0时,不接收外部输入,TR来决定是否内部计数;

                Gate=1,接收外部输入,TR=1,且INT=1是开启计数;

        C/T: CT=0,作为定时器使用,对内部系统时钟进行计数;

                CT=1,作为计数器使用,对T0或T1引脚进行外部脉冲计数。

                在制作平衡小车时,pid的速度环需要这一脉冲计数值。

        M1,M0位:用来配置定时器模式,重点掌握模式0

        注:T1和T0的模式3不同,下表用红色标注不同

定时器/计数器1模式选择M1M0模式描述
模式00016位自动重装定时器,当溢出时将RL_TH1和RL_TL1存放的值自动重装入TH1和TL1中。
模式10116位不可重装载模式
模式2108位自动重装载定时器,当溢出时将TH1存放的值自动重装入TL1
模式311定时器/计数器1此时无效(停止计数)
定时器/计数器0模式选择M1M0模式描述
模式00016位自动重装定时器,当溢出时将RL_TH0和RL_TL0存放的值自动重装入TH0和TL0中。
模式10116位不可重装载模式
模式2108位自动重装载定时器,当溢出时将TH0存放的值自动重装入TL0
模式311不可屏蔽中断的16位自动重装定时器

  • AUXR(Auxiliary)辅助寄存器

        主要用于调节定时器预分频系数。STC15系列单片机为了兼容传统8051,T0,T1,T2计数频率默认进行了12分频。通过这个寄存器可以修改这一配置

位介绍:

        T0x12:定时器0速度控制位。置0十二分频,置1不分频

        T1x12:定时器1速度控制位。置0十二分频,置1不分频

                注:如果UART1将T1作为波特率发生器,则由该位决定UART1是否十二分频

        UART_M0x6:设置串口1模式0的通信速度。置0十二分频,置1六分频

        T2R:定时器2允许控制位。置0禁止T2运行,置1允许T2运行

        T2_C/T:控制定时器2作为定时器或计数器。置0定时器,置1计数器

        T2x12:定时器2速度控制位。置0十二分频,置1不分频。

                注:如果UART1|UART2将T2作为波特率发生器,则由该位决定UART是否十二分频

        EXTRAM:内部、外部RAM存取控制位。置0允许扩展RAM,置1禁止扩展RAM

                注:此处的RAM指逻辑上在片外、物理上在片内的扩展RAM

        S1ST2:串口选择定时器作为波特率发生器控制位。

                       置0,选择T1作为UART1的波特率发生器;

                       置1,选择T2作为UART1的波特率发生器,此时T1得到释放。


  • INT_CLKO(AUXR2)T0,T1和T2的时钟输出和外部中断允许寄存器

        从低位开始介绍该寄存器:

        位介绍:

        TOCLKO:是否将T0的时钟输出到P3.5/T1引脚上

        T0CLKO=1,将P3.5/T1管脚配置为定时器0的时钟输出

输出时钟频率=T0溢出频率 / 2

        若定时器工作在模式0(16位自动重载模式)

                若C/T=0,定时器T0对内部系统时钟计数,则:

                        T0在1T工作模式(不分频)时,输出时钟频率

$$freq=\frac{Systick}{2*(65536-[RLTH0, RLTL0])}$$

                        T0在12T工作模式(12分频)时,输出时钟频率

$$freq=\frac{Systick}{12*2*(65536-[RLTH0, RLTL0])}$$

                        注:[RLTH0, RLTL0]表示RL_TH0和RL_TL0的十六进制值。

                        RL_TH0:relaod_timer0H,定时器0的自动重装值高八位

                        RL_TL0:relaod_timer0L,定时器0的自动重装值低八位

                若C/T=1,T0对外部脉冲(P3.4/T0)计数,输出时钟频率

$$freq=\frac{T0Pin_{CLK}}{2*(65536-[RLTH0, RLTL0])}$$

        若定时器工作在模式2(8位自动重载模式)则将定时器计数最大值改为256套用以上公式。

        T0CLKO=0,禁止定时器0的时钟输出到P3.5\T1引脚。

        T1CLKO、T2CLKO,与T0CLOK功能类似,不再详细说明,如有需要参考手册P596

        EX4:INT4中断允许位。EX4=1,允许中断;EX4=0,禁止中断。INT4只有下降沿才能触发

        EX3:INT3中断允许位。EX3=1,允许中断;EX3=0,禁止中断。INT3只有下降沿才能触发

        EX2:INT2中断允许位。EX2=1,允许中断;EX2=0,禁止中断。INT2只有下降沿才能触发

总结:

        T0:可对P35输出时钟频率,可对P34进行脉冲计数

        T1:可对P34输出时钟频率,可对P35进行脉冲计数

        T2:可对P30输出时钟频率,可对P31进行脉冲计数

注:

  1. 在使用定时器输出时钟频率功能是,尽量不要使能定时器中断,否则CPU会频繁进入中断。
  2. 这里严格参照手册,T0和T1确定没有弄错引脚。

  • 定时器T0和T1的中断控制寄存器IE和IP

该寄存器支持位寻址,可直接对位进行配置,常见的如EA=1打开总中断

位介绍:

        EA:(Enalbe All)总中断控制允许位。EA=1,开放CPU中断;EA=0,CPU屏蔽所有中断申请。

                注:STC单片机的中断受多级控制,若想开启对应外设的中断,除了要将EA置1,还要                         将对应外设的中断源置位

        ET1:(Enable T1),T1的溢出中断允许。ET1=1,允许T1溢出中断;ET1=0,禁止T0溢出中断。

        ET0:(Enable T0),T0的溢出中断允许。ET0=1,允许T0溢出中断;ET0=0,禁止T0溢出中断。

该寄存器同样可位寻址

位介绍:

        在STC的设计中,中断优先级数字越大,中断优先级越高

        PT1:定时器1中断优先级控制为。PT1=0,T1中断优先级为0;PT1=1,T1中断优先级为1

        PT0:定时器0中断优先级控制为。PT0=0,T0中断优先级为0;PT0=1,T0中断优先级为1

      注:T0工作在模式3时(不可屏蔽中断的16位定时器),中断不受EA控制,且中断优先级最高


  • T4T3M:T4和T3的控制寄存器

该寄存器不可位寻址

位介绍:

        T4R:T4运行控制位。T4R=0,禁止T4运行;T4R=1,允许T4运行

        T4_C/T:选择T4作为定时器或计数器。

                        T4_C/T=0,作定时器;T4_C/T=1,作P07引脚的计数器。

        T4x12:T4速度控制位。T4x12=0,12分频;T4x12=1,不分频。

        T4CLKO:类似于上文,将P06配置为T4时钟输出。

                        T4CLKO=1,允许输出;T4CLKO=0,禁止输出。

        T3控制寄存器类似T4,总结:

T4:可对P06输出时钟频率,可对P07进行脉冲计数

T3:可对P04输出时钟频率,可对P05进行脉冲计数


  • T2、T3和T4的中断控制寄存器:IE2

该寄存器不可位寻址

ET4:定时器4的中断允许位。ET4=1,允许定时器4产生中断;ET4=0,禁止定时器4产生中断。

ET3:定时器3的中断允许位。 1,允许定时器3产生中断; 0,禁止定时器3产生中断。

ES4 : 串行口4中断允许位。 1,允许串行口4中断; 0,禁止串行口4中断.

ES3 : 串行口3中断允许位。 1,允许串行口3中断; 0,禁止串行口3中断。

ET2:定时器2的中断允许位。1,允许定时器2产生中断; 0,禁止定时器2产生中断。

ESPI:SPI中断允许位。 1,允许SPI中断; 0,禁止SPI中断。

ES2 : 串行口2中断允许位。 1,允许串行口2中断; 0,禁止串行口2中断。

  • 33
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Crkylin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值