STC51单片机23——T2定时器的使用

 

/**
TF2 定时器2 溢出标志。定时器2 溢出时置位,必须由软件清除。
当RCLK或TCLK=1 时,TF2 将不会置位。TR2 定时器2 启动/ 停止控制位。
置1 时启动定时器。C/T2 定时器/ 计数器选择。
(定时器2)
CP/RL2 捕获/ 重装标志。置位:EXEN2=1时,T2EX的负跳变产生捕获。
清 零:EXEN2=0 时,定时器2 溢出或T2EX 的负跳变都可使定时器自动重装
。当RCLK=1 或TCLK=1 时,该位无效且定时器强制为溢出时自动重装。
 RCAP2H,RCAP2L是定时器T2一个专门存放预置数的寄存器。
 定时器2 递增计数到0FFFFH,并在溢出后将TF2 置位,
 然后将RCAP2L 和RCAP2H 中的16 位值作为重新装载值装入定时器2。
 RCAP2L 和RCAP2H 的值是通过软件预设的。
 [T2CON=0x09;//必须将T2CON.7位置1才能进行外部捕获 /或者外部T2EX由1到0时产生中断]

T2CON     EQU     0C8H ; T2 控制寄存器,用以程控定时器2和外部中断操作格式
 T2CON.7   TF2 溢出中断标志位
T2CON.6   EXF2 外部中断标志位
T2CON.5   RCLK 串行接口接受时钟标志位
T2CON.4   TCLK 串行接口发送时钟标志位
T2CON.3   EXEN2   外部允许控制位
T2CON.2   TR2 运行控制为
T2CON.1   C/T2 定时器/计数器功能选择位
T2CON.0   CP/RL2 捕捉/重装载标志位

T2MOD EQU     0C9H ; T2 控制寄存器,用以定时器2在装入计数方式选择
; T2MOD.0   DCEN   向下计数允许位
; T2MOD.1   T2OE   T2输出允许位
TL2    EQU     0CCH    ; T2 计数寄存器低字节
TH2    EQU     0CDH    ; T2 计数寄存器高字节
TR2    EQU     0C8H.2 ; T2 启动位
RCAP2L EQU 0CAH     ; T2 计数重载寄存器低字节
RCAP2H EQU     0CBH ; T2 计数重载寄存器高字节
TF2    EQU     0C8H.7 ; 定时计数器2计满回零溢出中断请求标志位
ET2    EQU     IE.5        ; 定时器T2中断允许
;PT2    EQU     IP.       ; 定时器T2的中断优先级控制位,

 或的书写方式 TMOD|=0x30;
 书写格式:
  void  Time2_Init(void) interrupt 5
{
      EA=1;          //开启总中断
      ET2=1;      //允许T2中断  .T2CON 师T2的控制寄存器
      EXEN2=0;       //定时器2 溢出或T2EX 的负跳变都可使定时器自动重装(也得软件清零溢出位,不然没法自动重装)
      C_T2=0;      // 定时器/ 计数器选择      0= 内部定时器(OSC/12 或OSC/6) 1= 外部事件计数器(下降沿触发)
      TF2=0;       //溢出位软件清零
      RCAP2L=(65535-18432)%256;     //捕获模式
      RCAP2H=(65535-18432)/256;

}
**/


#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit Led=P0^0; //定义LED位
void Timer2() interrupt 5 //调用定时器2,自动重装载模式(也得软件清零溢出位)
{
static uchar i=0; //定义静态变量i
TF2=0; //定时器2的中断标志要软件清0
i++; //计数标志自加1
if(i==16) //判断是否到1s
{
i=0; //将静态变量清0
Led=~Led; //LED位求反
}}
void main()
{
TH2=(65536-62500)/256; //重装载计数器赋初值
TL2=(65536-62500)%256;
ET2=1;//开定时器2中断
EA=1;//开总中断
TR2=1;//开启定时器,并设置为自动重装载模式
while(1);
}

完整资料打包(含仿真):

STC51单片机23-T2定时器的使用-单片机文档类资源-CSDN下载

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

fengyuzhe13

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

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

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

打赏作者

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

抵扣说明:

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

余额充值