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

📄 tumode.c

📁 电能表源码
💻 C
字号:
/*************************************************************************************

	文件类型:底层驱动函数文件
	文件作用:
	修改权限:底层驱动维护人员
	文件相关:
	
	创 建 人:GeminiKQ
	创建日期:2006.12.20
	当前版本:Ver0.2
	
	版本信息:Ver0.1					GeminiKQ
	          Ver0.2	add uart3~5		GeminiKQ

**************************************************************************************/
#include "ChipDefine.h"
#include "ExTigReg.h"
#include "HardwareDef.h"

//=======================================================
//函数名:Init_ExTU2
//函数作用:外扩timer2及uart2模块初始化
//入口参数:无
//出口参数:无
//
//======================================================= 
void Init_ExTU2(void)
{
	// timer mode control
	TMOD2 = ExT2M;
	
	TL20 = ExT2TL;
	TH20 = ExT2TH;
#ifdef	ExT2_4CLK
	// T0M = 1 -> t0clk = system.clk/4
	TCON2 |= BIT4;
#endif
	// TR0 = 1; <TCON2.0>
	TCON2 |= 0x01;
	
// 以下为串口设置
 	SCON2 = ExU2M;	// 波特率方式1
#ifdef	ExU2_SMOD1	
	TCON2 |= BIT7;	// SET SMOD,波特率加倍
#endif
	TL21 = ExU2TL;
	TH21 = ExU2TH;	//
	// T1M = 1;
	TCON2 |= BIT5;
#ifdef	ExU2_38K	
	// 载波38K选择
	Txd2FS = 0x01;
#endif	
	// 打开定时器1
	TCON2 |= BIT1;
}
//=======================================================
//函数名:Init_ExTU3
//函数作用:外扩timer3及uart3模块初始化
//入口参数:无
//出口参数:无
//
//======================================================= 
void Init_ExTU3(void)
{
	// timer mode control
	TMOD3 = ExT3M;
	
	TL30 = ExT3TL;
	TH30 = ExT3TH;
#ifdef	ExT3_4CLK
	// T0M = 1 -> t0clk = system.clk/4
	TCON3 |= BIT4;
#endif
	// TR0 = 1; <TCON2.0>
	TCON3 |= 0x01;
	
// 以下为串口设置
 	SCON3 = ExU3M;	// 波特率方式1
#ifdef	ExU3_SMOD1	
	TCON3 |= BIT7;	// SET SMOD,波特率加倍
#endif
	TL31 = ExU3TL;
	TH31 = ExU3TH;	//
	// T1M = 1;
	TCON3 |= BIT5;
	// 打开定时器1
	TCON3 |= BIT1;
}
//=======================================================
//函数名:Init_ExTU4
//函数作用:外扩timer4及uart4模块初始化
//入口参数:无
//出口参数:无
//
//======================================================= 
void Init_ExTU4(void)
{
	// timer mode control
	TMOD4 = ExT4M;
	
	TL40 = ExT4TL;
	TH40 = ExT4TH;
#ifdef	ExT4_4CLK
	// T0M = 1 -> t0clk = system.clk/4
	TCON4 |= BIT4;
#endif
	// TR0 = 1; <TCON2.0>
	TCON4 |= 0x01;
	
// 以下为串口设置
 	SCON4 = ExU4M;	// 波特率方式1
#ifdef	ExU4_SMOD1	
	TCON4 |= BIT7;	// SET SMOD,波特率加倍
#endif
	TL41 = ExU4TL;
	TH41 = ExU4TH;	//
	// T1M = 1;
	TCON4 |= BIT5;
	// 打开定时器1
	TCON4 |= BIT1;
}
//=======================================================
//函数名:Init_ExTU5
//函数作用:外扩timer5及uart5模块初始化
//入口参数:无
//出口参数:无
//
//======================================================= 
void Init_ExTU5(void)
{
	// timer mode control
	TMOD5 = ExT5M;
	
	TL50 = ExT5TL;
	TH50 = ExT5TH;
#ifdef	ExT5_4CLK
	// T0M = 1 -> t0clk = system.clk/4
	TCON5 |= BIT4;
#endif
	// TR0 = 1; <TCON2.0>
	TCON5 |= 0x01;
	
// 以下为串口设置
 	SCON5 = ExU5M;	// 波特率方式1
#ifdef	ExU5_SMOD1	
	TCON5 |= BIT7;	// SET SMOD,波特率加倍
#endif
	TL51 = ExU5TL;
	TH51 = ExU5TH;	//
	// T1M = 1;
	TCON5 |= BIT5;
	// 打开定时器1
	TCON5 |= BIT1;
}

/* 初始化Timer0 */
void Init_Timer0(void)
{	
	TMOD = 0x11;	// 2个定时器全部为方式2
//	TH1 = 0;
//	TL1 = 0;
	TH0 = 0x9d;
	TL0 = 0xf6;		// 启动第一次进中断的时间设定
//	TR1 = 1;
	TR0 = 1;		// 开定时器0
//	ET1 = 1;
	ET0 = 1;		// enable timer0 interrupt
}

void Init_Timer1(void)
{
	//
}

void Init_Uart1(void)
{
	TMOD = 0x21;	// 定时器1方式2
	SCON1 = 0xd0;	// 波特率方式3
	EICON = 0x80;	// set smod
	TH1 = 0xc7;		//
	TL1 = 0xc7;		// 波特率设置
	TR1 = 1;		// 开定时器1
}
//=======================================================
//函数名:Init_Timer2
//函数作用:内核Timer2的初始化
//入口参数:无
//出口参数:无
//
//======================================================= 
void Init_Timer2(void)
{
	RCAP2L = 0x00;	// reload data low byte
	RCAP2H = 0x50;	// reload data high byte

	TL2 = 0x00;
	TH2 = 0x00;
	
	CP_RL2 = 0;		// reload mode 
	TR2 = 1; 		// start timer2
}

⌨️ 快捷键说明

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