• STC单片机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
    #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下载

  • 相关阅读:
    《canvas》之第11章 canvas状态
    Three.js本地环境搭建
    python字符串相关
    C#变量命名规则(命名规范)
    算法通关村第16关【黄金】| 滑动窗口与堆结合
    希尔贝壳入选“北京市人工智能大模型高质量数据集发布(第二批)”合作企业
    广和通入驻中国联通5G物联网OpenLab开放实验室,携手共赴5G扬帆新征程
    不小心格式化了硬盘怎么恢复?
    怎么把电影中的声音保存下来?
    封装 Token
  • 原文地址:https://blog.csdn.net/fengyuzhe13/article/details/127829119