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

📄 timer.c

📁 基于c8051f020的应用
💻 C
字号:
//**************************************************************************************************************************
#include <c8051F020.h>
#include "HEAD.H"
//**************************************************************************************************************************
void Timer3_Init(void)
{
	TMR3CN = 0x04;	// TR3   = 1;运行控制位.0:停止 1:启动
					// T3M   = 0;使用系统时钟的12分频
					// T3XCKL= 0;时钟源由T3M决定

	//TMR3RLH = 0x63;	// 初始值:0x63BF=15535=25ms
	//TMR3RLL = 0xBF;
	TMR3RLH = 0x3C;	// 初始值:0x3CB0=15535=25ms
	TMR3RLL = 0xB0;

	EIE2 |= 0x01;	// Enable Timer3 Interrupt.
}
//**************************************************************************************************************************
// 定时器3用于25ms定时
void Timer3_Interrupt(void) interrupt 14
{		
	TMR3CN &=~0x80;	//  清除中断标志位

	Timer3++;
	if(Timer3%RunLedFre==0x00)	// 
	{
		LED1_CHANGE;
		DI_Station();
	}

	HollSpaceTime++;
	if(HollSpaceTime>=40)
	{
		HollSpaceTime=0x00;
	}

	if(WorkStation==0xBB)
	{
		if(Timer3%TestTime==0x00)
		{
			HollSigNum=TH2*256 + TL2;
			RTUaddress4[6]=HollSigNum>>8;
			RTUaddress4[7]=HollSigNum;

			HollDate[HollDataNum]=HollSigNum;
			HollDataNum++;
			if(HollDataNum>=HollDateLong)
			{
				WorkStation=0x00;
			}
		}
	}
	// 瞬时转速测试
	if(TempT2==TL2)
	{
		Tem2Con++;
	}
	else
	{
		if(Tem2Con<=40*2)
		{
			InstantaneousSpeed=60*40/(float)Tem2Con;
		}
		TempT2=TL2;
		Tem2Con=0x00;
	}
	if(Tem2Con>40*2)
	{
		InstantaneousSpeed=0;
		TempT2=TL2;
		Tem2Con=0x00;
	}
}
//**************************************************************************************************************************
void Timer0_Init(void)
{
	TMOD  |= 0x01;	// 方式1:T0:16位定时器
}
//**************************************************************************************************************************
void Timer0_ReSet(void)
{
	TH0   = 0x8C;	// 初始值:0xFCBE=64702=0.4ms
	TL0   = 0xBE;
	ET0   = 1 ;		// Enable TIMER0 Interrupt.
	TR0   = 1;		// 定时器0运行控制位
}
//**************************************************************************************************************************
void Timer0_Interrupt(void) interrupt 1
{
	TF0   = 0;		// 软件清除标志位
	TR0   = 0;		// 定时器0运行控制位
	ET0   = 0;		// 禁止T0中断	
    
	RTU_Data();
	ComFlag=0x00;
	
}
//**************************************************************************************************************************
// The End
//**************************************************************************************************************************



⌨️ 快捷键说明

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