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

📄 timer2bk

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

//*********************************************************
// 项  目:  通用控制器-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];
//***********************************************
//函数开始
/***************************************
T2 定时器初始化
/***************************************/
void Timer2_Init(void)	//T2 20毫秒定时		
{                       //T3MH,T3ML,T2MH,T2ML,T1M,T0M,SCA1,SCA0
    CKCON &= 0xCF;		//  X    X    0   0    X   X  SYSCK/12
	TMR2CN = 04;		//TF2H,TF2L,TF2LEN,TF2CEN,T2SPT,TR2,-,T2XCLK
	                    //	
	TMR2RLH = (-SYSCLK/12/50)>>8;   //
	TMR2RLL = (-SYSCLK/12/50);		//
	TR2 = 1;
	//ET2 = 1;
}

/**********************************************
20毫秒定时中断
/**********************************************/
void Timer2_INT(void) interrupt 5	//
{  
   static UINT count1,tmp;

   TF2H =0;
   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任意值清看门狗
//		Temp_Conver();
//		Temp = T_Compute();

   
}
//**********************************************
//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/1000)>>8;
    TL0    = (-SYSCLK/12/1000);
	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--;
	   // Count1msInc++;
/*
	if (Count10ms)
		Count10ms--;
	else   //Count10ms=0
	    {
		  Count10ms=10;    		     //10ms
		  if (Count1s) Count1s--;

		  else{   //Count1s=0
			    Count1s=100;		//1s
			    TSecond++;
			    if(TSecond>=60)
				{
				  TSecond=0;		//1min
				  TMinute++;
				  if (TMinute==60) TMinute=0;
		        }
		      }
	    } 
*/
}
//====================================================
//ms级T0中断精确延时程序
//====================================================
void Delay1ms(unsigned char T)
{
   Count1ms = T;
   while (Count1ms);
}
/**************************************************
//us级延时程序
/**************************************************/
/*void Delay10us(unsigned char t)
{
   UINT ta;    //EA=0,SYSCLK=24.5M/2
               //时仪器测试
   ta = t*12;  //T = 12us(精确)

   while (ta--); 
}*/
/**************************************************
功能: 输入状态时间扫描;
描述:STS1,STS2输入状态变化时:生成格式数据包并发送
/**************************************************/
/*void CheckEvents(void)
{
 //    UCHAR  aa,i;

	if (Count20ms)

	   {Count20ms--; return; }

       iosts1 = P1;
	   IO2 = STS2;      //
	   iosts1 &=0x07;
   
    if (iosts1 != iosts0)
	  {
	    Count20ms = 100;
	    iosts0 = iosts1;
//		LED1 =  IO0;
//		LED2 =  IO2;
        tx_buf[0] = 0xAA;     //包头
	    tx_buf[1] = 0x08;     //包长度
        tx_buf[2] = 0x81;     //目标地址     
	    tx_buf[3] = 0x92;     //源地址  
	    tx_buf[4] = 0x03;     //'03',前端事件包
	    tx_buf[5] = 0x20;     //命令
        tx_buf[6] = iosts1;   //口状态
	    tx_buf[7] = 0XBB;     //包尾
        //
//		TX_Mode();            //发送事件包到无线口
        //
        //tx_to_com();        //发送事件包到本板COM口        
		//SPI_RW_Reg(WRITE_REG+STATUS,SPI_Read(READ_REG+STATUS));	// 清 TX_DS		
		
	

	  }
}*/
/****************************************
tx_buf数据传送到ComTBuf
/****************************************
void tx_to_com(void)
    {
	  UCHAR aa,i;

      aa = tx_buf[1];
	  for(i=0;i<aa;i++)   //TX_LENTH=32
      ComTBuf[i] = tx_buf[i];  //清SPI发送缓存
	  ComTBufHead=1;
	  Sio_Lth = ComTBuf[1];  
	  SBUF0   = ComTBuf[0];	 //启动串口发送      
	}
/*************************************************/

⌨️ 快捷键说明

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