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

📄 hal.c

📁 原创
💻 C
字号:
#include <iom16v.h>
#include <macros.h>
#include "hal.h"
#include "main.h"
#include "uart.h"
#include "Temp.h"
   

uint8 u7_data=0xff,u9_data=0xff,u18_data=0xff,u19_data=0xff;

/*************************************************************************************************************
*	函数名称 :
*	功能描述 :
*	实际参数 :
*	返回值   :
*	说明     :
*************************************************************************************************************/
void U7 (uint8 data){
	 CLR_CS0;
 
	 PORTB = data;
	 asm ("nop");
	 asm ("nop");
	 asm ("nop"); 
	  
	 SET_CS0;
	 
	 asm ("nop");
	 asm ("nop");
	 asm ("nop"); 	
	  
	 CLR_CS0;	 
}
/*************************************************************************************************************
*	函数名称 :
*	功能描述 :
*	实际参数 :
*	返回值   :
*	说明     :
*************************************************************************************************************/
void U18 (uint8 data){
	 CLR_CS1;
 
	 PORTB = data;
	 asm ("nop");
	 asm ("nop");
	 asm ("nop"); 
	  
	 SET_CS1;
	 
	 asm ("nop");
	 asm ("nop");
	 asm ("nop"); 	
	  
	 CLR_CS1;	
}
/*************************************************************************************************************
*	函数名称 :
*	功能描述 :
*	实际参数 :
*	返回值   :
*	说明     :
*************************************************************************************************************/
void U9 (uint8 data){
	 CLR_CS2;
 
	 PORTB = data;
	 asm ("nop");
	 asm ("nop");
	 asm ("nop"); 
	  
	 SET_CS2;
	 
	 asm ("nop");
	 asm ("nop");
	 asm ("nop"); 	
	  
	 CLR_CS2;	 
}
/*************************************************************************************************************
*	函数名称 :
*	功能描述 :
*	实际参数 :
*	返回值   :
*	说明     :
*************************************************************************************************************/
void U19 (uint8 data){
	 CLR_CS3;
 
	 PORTB = data;
	 asm ("nop");
	 asm ("nop");
	 asm ("nop"); 
	  
	 SET_CS3;
	 
	 asm ("nop");
	 asm ("nop");
	 asm ("nop"); 	
	  
	 CLR_CS3;		 
}
/*************************************************************************************************************
*	函数名称 :TempCs
*	功能描述 :6675片选
*	实际参数 :选择为0
*	返回值   :
*	说明     :
*************************************************************************************************************/
void TempCs(unsigned char onoff){
	if(onoff){
		 PORTA|= 0x08;
	}
	else{
		 PORTA&=~0x08;
	}
}

/*************************************************************************************************************
*	函数名称 :TempRelayOnoff
*	功能描述 :
*	实际参数 :        
*	返回值   :
*	说明     :
**************************************************************************************************************/
void TempRelayOnoff(unsigned char onoff,unsigned char number){
	 if (onoff){		  //ON
	    u7_data = 0x00;
		u19_data&=~0x03;
		
	 	if(0==number) u7_data|= 0x80;
	 	if(1==number) u7_data|= 0x40; 
	 	if(2==number) u7_data|= 0x20; 
	 	if(3==number) u7_data|= 0x10; 
	 	if(4==number) u7_data|= 0x08; 
	 	if(5==number) u7_data|= 0x04; 
	 	if(6==number) u7_data|= 0x02; 
	 	if(7==number) u7_data|= 0x01; 
	 	if(8==number) u19_data|= 0x01;
	 	if(9==number) u19_data|= 0x02;
		
		U7(u7_data);
		U19(u19_data);								
	 }
	 else{			 	  //OFF
	 	u7_data = 0;	
		u19_data&=~0x03;				  
		U7(u7_data);
		U19(u19_data);			  
	 }
}
/*************************************************************************************************************
*	函数名称 :TempRelayOnoff
*	功能描述 :
*	实际参数 :        
*	返回值   :
*	说明     ://0--on   1-off
**************************************************************************************************************/
void TempHeatOnOff(unsigned char onoff,unsigned char number){
	 if (onoff){
		if (0==number) u9_data&=~0x01;
		if (1==number) u9_data&=~0x02;
		if (2==number) u9_data&=~0x04;
		if (3==number) u9_data&=~0x08;						
		if (4==number) u9_data&=~0x10;
		if (5==number) u9_data&=~0x20;
		if (6==number) u9_data&=~0x40;
		if (7==number) u9_data&=~0x80;
		if (8==number) u19_data&=~0x04;
		if (9==number) u19_data&=~0x08;
						
		U9(u9_data);
		U19(u19_data);	
	 }
	 else{
		if (0==number) u9_data|=0x01;
		if (1==number) u9_data|=0x02;
		if (2==number) u9_data|=0x04;
		if (3==number) u9_data|=0x08;						
		if (4==number) u9_data|=0x10;
		if (5==number) u9_data|=0x20;
		if (6==number) u9_data|=0x40;
		if (7==number) u9_data|=0x80;
		if (8==number) u19_data|=0x04;
		if (9==number) u19_data|=0x08;
		
		U9(u9_data);
		U19(u19_data);	
			 
	 } 
	 
	 
}


/*************************************************************************************************************
*	函数名称 :delay_1ms
*	功能描述 :不是1ms的延时
*	实际参数 :
*	返回值   :
*	说明     :
*************************************************************************************************************/
void delay_1ms (void)
{ 
 	 unsigned int i;
	 for (i=1;i<1140;i++)
	 ;
}
/*************************************************************************************************************
*	函数名称 :delay
*	功能描述 :
*	实际参数 :
*	返回值   :
*	说明     :
*************************************************************************************************************/
void delay (unsigned int n)
{
 	 unsigned int i=0;
	 while (i<n)
	 {
	 delay_1ms();
	 i++;
	 }	 
}	


/*************************************************************************************************************
*	函数名称 :TempDelay
*	功能描述 :有关温度的延时
*	实际参数 :
*	返回值   :
*	说明     :
*************************************************************************************************************/
void TempDelay (void){
	 	asm("nop");			 		
	 	asm("nop");
		asm("nop");
	 	asm("nop");		
	 	asm("nop");			 		
	 	asm("nop");
		asm("nop");
	 	asm("nop");		
 		asm("nop");			 		
	 	asm("nop");
		asm("nop");
	 	asm("nop");		
 		asm("nop");			 		
	 	asm("nop");
		asm("nop");
	 	asm("nop");
}



/*************************************************************************************************************
*	函数名称 :TempRead6675Dat
*	功能描述 :读取温度
*	实际参数 :
*	返回值   :
*	说明     :
*************************************************************************************************************/
unsigned int TempRead6675Dat(void)
{
	unsigned char i;
	unsigned int tmp=0;
	
	CLRSCK;

	for(i=0;i<15;i++)
	{
	 	TempDelay ();													
		if(RSO)
			tmp|=1;
		SETSCK;
		tmp<<=1;
	 	TempDelay ();
		CLRSCK;
	}
	return(tmp>>2);
}



/*************************************************************************************************************
*	函数名称 :TempInit
*	功能描述 :初始化6675
*	实际参数 :
*	返回值   :
*	说明     :
*************************************************************************************************************/
void TempInit (void){
	 DDRA|= 0x04;	   //TSCK
	 DDRA&=~0x02;	   //TMISO

	 TempCs(0);        //CS = 0,Enable 6675
	  																																	  
	 TempRead6675Dat();//进行第一次哑转换

	 TempCs(1);        //CS = 0,Disable 6675	 
}



⌨️ 快捷键说明

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