⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer2.c

📁 f330与mfrc522 通信 构成读卡器 上传源码和原理图。
💻 C
字号:

//*********************************************************
// 项  目:  通用控制器-V1.0
// 文件名: 	Timer2.C
// 描  述:  定时器2中断服务程序
//*********************************************************

//===============================================
#include "main.h"                    //头文件
#include "Timer2.h" 
#include "MFRC522.h"     
#include "Adc.h"       
//===============================================

//***********************************************
//变量定义
//***********************************************      
UCHAR    iosts0;
UCHAR    bdata  iosts1;  //20mS级计数

sbit	 IO3	=iosts1^3;
sbit	 IO2	=iosts1^2;
sbit	 IO1	=iosts1^1;
sbit	 IO0	=iosts1^0;
//
UINT     Count20ms;
UCHAR    Count1ms;
//
extern   UCHAR  volatile Temp;
extern   UCHAR  data  Sio_Lth;               //数据长度
extern   UCHAR  idata  ComTBufHead;
extern   UINT   SOFTWDT;
extern   UINT   volatile event_word;
UCHAR  xdata tx_buf[TX_PLOAD_WIDTH];
extern   UCHAR  xdata  ComTBuf[Com0TBuf_len];
//***********************************************
//函数开始
/***************************************

/***************************************
T3 定时器初始化
/***************************************/
void Timer3_Init(void)	//T3 20毫秒定时		
{                       //T3MH,T3ML,T2MH,T2ML,T1M,T0M,SCA1,SCA0
    CKCON &= 0x3F;		//  0    0    X      X    X   X  SYSCK/12	
	TMR3RLH = (-SYSCLK/12/50)>>8;   //
	TMR3RLL = (-SYSCLK/12/50);		//
    //TF3H,TF3L,TF3LEN,TF3CEN,T3SPT,TR3,-,T3XCLK
	TMR3CN = 0X04;	    //TR3=1	
}
/**********************************************
20毫秒定时中断
/**********************************************/
void Timer3_INT(void) interrupt 14	//
{  
   static UINT count1,tmp;

   TMR3CN &= 0X3F;
   count1++;                  //20mS+1
   tmp = count1;

   if (!(tmp % 25))          //20*10=200ms
       
	  {event_word  |= EVENT_CARD; }   //寻卡
	   
    if (!(tmp % 25))          
       
       {event_word  |= EVENT_TEMP; } //0。5S事件
 
        event_word  |= EVENT_STS1; //20mS事件
   //
        PCA0CPH2 =0x55; //写PCA0CPH2任意值清看门狗
}
//**********************************************
//T0 初始化(1毫秒中断)
//------------------------------
void Timer0_Init(void) 
      
{   //CKCON=T3H,T3L,T2H,T2L,T1,T0,SCA1,SCA0
    CKCON &= 0xF8;	         // T0M=0,SCA1,0=00,T0CK=SYSCK/12 
    TMOD  |= 0x01;           // T0 方式1,16位
    TH0    = (-SYSCLK/12/2700)>>8;
    TL0    = (-SYSCLK/12/2700);
	TR0    = 1;
	ET0    = 1;			        //中断开放
}
//**********************************************
//T0 1毫秒中断:用于精确时间延时
//------------------------------
void Timer0_ISR (void) interrupt 1  //1ms
{
	TH0    = (-SYSCLK/12/1000)>>8;
    TL0    = (-SYSCLK/12/1000);
	    
	if (Count1ms) 
	   {  
	      Count1ms--;
		  if (BEEP)  BP = 1;   
       }
	else  
	   { BP = 0;  BEEP = 0;} 
	  
}
//====================================================
//ms级T0中断精确延时程序
//====================================================
void Delay1ms(unsigned char T)
{
   Count1ms = T;
   while (Count1ms);
}
/*************************************************/

⌨️ 快捷键说明

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