time_module.h

来自「周立功实验板DP-51+的实验程序」· C头文件 代码 · 共 71 行

H
71
字号
#include  <AT89X51.H>
//#include <REG52.H>

//数据类型定义
#define   uchar  unsigned char				
#define   ulong  unsigned long
#define   uint   unsigned int  

//利用T0定时器以实现精确的延时
#define   Crystal      11059200L     //定义晶体频率11.592MHZ
#define   Base_50us    256-46        //50us溢出时间基准
static uint      data         Tcounter;     //基准时间计数器
static bit       T0IR;                     //T0中断标志

void  Delay_50us(uint _time);       //延时函数,非中断方式,延时时间基准50us
void  TimeOut_Start(uint _time50us);//开始时间溢出,中断方式,时间基准50us
void  TimeOut_Stop(void);           //停止时间溢出定时

//定时器0中断函数
void  T0_Val(void)  interrupt   1   using  2
{
  Tcounter--;
  if(Tcounter == 0)
  {
    T0IR  = 1;              		 //时间定时到,置位标志
    TR0   = 0;
  }
    
} 


//
void  Delay_50us(uint _time50us)
{ uint  TempCount;
  TempCount  = _time50us;
  TMOD |= 0x02;          			//T0,初值自动重装
  TH0  =  Base_50us;     			//设置定时初值
  TL0  =  Base_50us;
  ET0  =  0;            			//禁止T0中断
  TR0  =  1;            			//计时开始
  while( TempCount--)
  {
    while(!TF0);TF0  =  0;			//等待
  } 
  TR0  =  0;         
} 

//
void  TimeOut_Start(uint _time)
{
 Tcounter = _time;
 TMOD |= 0x02;          			//T0,初值自动重装
 TH0  =  Base_50us;     			//设置定时初值
 TL0  =  Base_50us;
 T0IR =  0;             			//清除中断T0标志 
 ET0  =  1;             			//使能T0中断
 EA	  =  1;
 TR0  =  1;             			//计时开始
}
/*

void  TimeOut_Stop(void)
{
 Tcounter=0;
 ET0  =   0;
 TR0  =   0;
}

*/

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?