📄 hal.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 + -