打印

发一个定时器T2的精确定时参考例子

[复制链接]
1410|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lwyjw|  楼主 | 2012-7-27 10:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "reg52.h"                               // 包含头文件     
#define uint unsigned int
#define uchar unsigned char

sbit P1_7 = P1 ^ 7;                              // 定义位变量                             

/*************************************************************
* 函数名称:Timer2_Server()
* 功    能:定时器2溢出中断。
* 入口参数:无
* 出口参数:无
*************************************************************/
void Timer2_Server(void) interrupt 5
{
  static uint T2_Count;              
// 定义静态变量,用来计数T2定时器的溢出次数(进入本函数的次数)

  TF2=0;            // T2定时器发生溢出中断时,需要用户自己清除溢出标记.                     
  T2_Count++;
  if(T2_Count==16)      // T2定时器的预装载值为0x0BDC,溢出16次就是1秒钟。
    {
      T2_Count=0;
      P1_7=~P1_7;       // LED11反转显示。
    }
}



void main (void)                 
{
  P1_7=1;                            // LED11灭

  /* T2定时器赋预装载值,溢出16次就是1秒。 */
  RCAP2H=0x0B;
  RCAP2L=0xDC;

  ET2=1;                           // 允许T2定时器中断
  EA=1;                            // 打开总中断

  TR2=1;                           // 启动T2定时器

  while(1);                        // 死循环,等待T2定时器的溢出中断  
}

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

112

帖子

0

粉丝