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

📄 init.c

📁 STC12C5412AD做的温度检测控制的源程序.有AD检测,可控硅过零触发,PID算法.
💻 C
字号:
#include"Globle.h"
#include".\init.h"
extern WordType pca_tmp;

/******************************************************************************************
** 函数名 Timer0_init
** 参数   mode		选择工作方式
**        hvalue    TH0的值
**        lvalue	TL0的值
*******************************************************************************************
** 选择项
		  TIMER0_GATE_ON			 	选择GATE方式	
          TIMER0_COUNTER_ON				选择COUNTER方式,如果不选为TIMER方式
          TIMER0_MODE_0					方式1	
          TIMER0_MODE_1					方式2						
          TIMER0_MODE_2					方式3		
          TIMER0_MODE_3					方式4		 

*******************************************************************************************/
void Timer0_Init(UBYTE mode, UBYTE hvalue, UBYTE lvalue)
{

	TMOD&=0xf0;			//清空timr0相关的设置位
	TMOD|=(mode&0x0f);		//设置工作方式
	TH0=hvalue;
	TL0=lvalue;

}


/******************************************************************************************
** 函数名 Timer1_init
** 参数   mode		选择工作方式
**        hvalue    TH0的值
**        lvalue	TL0的值
*******************************************************************************************
** 选择项
		  TIMER1_GATE_ON			 	选择GATE方式	
          TIMER1_COUNTER_ON				选择COUNTER方式,如果不选为TIMER方式
          TIMER1_MODE_0					方式1	
          TIMER1_MODE_1					方式2						
          TIMER1_MODE_2					方式3		
          TIMER1_MODE_3					方式4		 
*******************************************************************************************/
void Timer1_Init(UBYTE mode, UBYTE hvalue, UBYTE lvalue)
{

	TMOD&=0x0f;			//清空timr0相关的设置位
	TMOD|=mode&0xf0;		//设置工作方式
	TH1=hvalue;
	TL1=lvalue;

}


/******************************************************************************************
** 函数名 Timer2_Init
** 参数   mode		选择工作方式
**        hvalue    TH0的值
**        lvalue	TL0的值
*******************************************************************************************
** 选择项
		  S_RCLK			0x20	//产生接受波特率		
		  S_TCLK			0x10	//产生发送波特率
		  S_EXEN2			0x08	//外部势能 			选择 T2EX有负跳变时发生重载或捕捉
  		  S_TR2				0x04	//T2开始运行 		选择 开始运行
		  S_CT2				0x02	//T/C选择  			选择 为计数器
		  S_CPRL2			0x01	//捕捉 重载选择 	选择 为捕捉模式	 
*******************************************************************************************/
void Timer2_Init(UBYTE mode, UBYTE hvalue, UBYTE lvalue)
{

	T2CON=mode;
	RCAP2H=hvalue;
	RCAP2L=lvalue;
}



/******************************************************************************************
** 函数名 Interrupt_init
** 参数   enable		使能设置
**        run			运行设置
*******************************************************************************************
** 选择项
		  S_TIMER1_RUN			0X40				//TIMER1 RUN FLAG
		  S_TIMER0_RUN			0X10				//TIMER0 RUN FLAG
		  S_EXTERN1_MODE		0X04				//外部中断1方式选择 1边沿触发 0电平触发
		  S_EXTERN0_MODE		0X01				//外部中断0方式选择 1边沿触发 0电平触发
***************************	IE	  ********************************************

		  S_GLOBLE_ENABLE		0X80				//EA 使能
		  S_UART_ENABLE			0X10				//串口中断使能
		  S_TIMER1_ENABLE		0X08				//Timer1中断使能
		  S_EXTERN1_ENABLE		0X04				//外部中断1使能
		  S_TIMER0_ENABLE		0X02				//Timer0中断使能
		  S_EXTERN0_ENABLE		0X01				//外部中断0使能

*******************************************************************************************/
void Interrupt_init(UBYTE enable, UBYTE run)
{
	
	IE=enable;
	TCON=run;

}



/******************************************************************************************
** 函数名 Uart_init
** 参数   mode			方式设置

*******************************************************************************************
** 选择项
		  S_UART_MODE0			0X00				//UART MODE 0
		  S_UART_MODE1			0X40				//UART MODE 1
		  S_UART_MODE2			0X80				//UART MODE 2
		  S_UART_MODE3			0XC0				//UART MODE 3

		  S_MULTI_COM			0X20				//多机通信
		  S_RECEIVE_EN			0X10				//enable receive
		  S_TRANSMIT_8			0X08				//发送第八位
		  S_RECEIVE_8			0X04				//接收第八位
*******************************************************************************************/
void Uart_init(UBYTE mode)
{
	SCON=mode;

}

void Devices_init()
{
	Timer0_Init(TIMER0_MODE_1, TH0_VALUE, TL0_VALUE);				//定时器0初始化

	//Timer1_Init(TIMER1_MODE_2, 0XF5, 0XF5);				//定时器1初始化

	Timer1_Init(TIMER1_MODE_2, TIMER1_BH, TIMER1_BH);
	
	//Timer2_Init((S_RCLK|S_TCLK|S_TR2),TIMER2_BH,TIMER2_BL);		//定时器2初始化
	
	Uart_init(S_UART_MODE1|S_RECEIVE_EN);							//串口初始化

	Interrupt_init((S_UART_ENABLE|S_GLOBLE_ENABLE|S_TIMER0_ENABLE|S_EXTERN0_ENABLE),\
			(S_TIMER0_RUN|S_TIMER1_RUN|S_EXTERN0_MODE));
	
	#if SMOD												//double baud-rate
	PCON|=0x80;					
	#endif
	ADC_CONTR=0x80;
	P1M0=0xff;
	P1M1=0xff;
//-----------------------------------------
	CMOD=0;
	CCON=0;
	CL=0;
	CH=0;
	CCAP0L=0xAF;
	CCAP0H=0x00;
	CCAPM0=0x49;
	
	EPCA_LVD=1;
	CR=1;
	pca_tmp.bytes.bl=0xAF;
	pca_tmp.bytes.bh=0x00;
}

⌨️ 快捷键说明

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