📄 main.c
字号:
#include "SysDef.h"
unsigned char RcFlag,LoopFlag;
SHT11Data envionment_variables;
int main( void)
{
SysInit();
LoopFlag = 1;
P4DIR |= 0x06; // P4.1 - P4.6 output
P4SEL |= 0x06; // P4.1 - P4.6 TBx options
TBCCR0 = 1000-1; // PWM Period
TBCCTL1 = OUTMOD_7; // CCR1 reset/set
//上电若为4mA 为990,若为20mA 为100
TBCCR1 = 985; //75 ==20 // CCR1 PWM duty cycle
TBCCTL2 = OUTMOD_7;
TBCCR2 = 999;
envionment_variables.RHPWM_OUTNUM = 500;
TBCTL = TBSSEL_2 + MC_1; // SMCLK TBSSEL_2 , ACLK TBSSEL_1 up mode
_EINT();
//envionment_variables.temperature = 20.0;
//envionment_variables.humidity = 40.0;
while(1)
{
TaskConfig();
if(RcFlag > 5)
{
MeasureSHT11Task();
if(LoopFlag == 1)
{
OutCurrentLoop();
TBCCR1 = envionment_variables.RHPWM_OUTNUM;
TBCCR2 = envionment_variables.TCPWM_OUTNUM;
}
RcFlag = 0;
}
}
}
void OutCurrentLoop()
{
float A,B,K,CurVar0;
U16 CurVar;
//温度输出
if(envionment_variables.temperature <= envionment_variables.Mini_temperature)
{
envionment_variables.TCPWM_OUTNUM = envionment_variables.TCDATable[0];
}
else if(envionment_variables.temperature >= envionment_variables.Max_temperature)
{
envionment_variables.TCPWM_OUTNUM = envionment_variables.TCDATable[8];
}
else
{
A = 16;
B = envionment_variables.Max_temperature - envionment_variables.Mini_temperature;
K = envionment_variables.temperature - envionment_variables.Mini_temperature;
CurVar0 = 4 + K*A/B; //输出的电流
CurVar = CurVar0;
CurVar -= 4;
CurVar /= 2;
A = envionment_variables.TCDATable[CurVar] - envionment_variables.TCDATable[CurVar + 1];
B = 2;
K = CurVar0 - CurVar*2 - 4;
envionment_variables.TCPWM_OUTNUM = envionment_variables.TCDATable[CurVar] - K*A/B;
}
if(envionment_variables.humidity <= envionment_variables.Mini_humidity)
{
envionment_variables.RHPWM_OUTNUM = envionment_variables.RHDATable[0];
}
else if(envionment_variables.humidity >= envionment_variables.Max_humidity)
{
envionment_variables.RHPWM_OUTNUM = envionment_variables.RHDATable[0];
}
else
{
A = 16;
B = envionment_variables.Max_humidity - envionment_variables.Mini_humidity;
K = envionment_variables.humidity - envionment_variables.Mini_humidity;
CurVar0 = 4 + K*A/B; //输出的电流
CurVar = CurVar0;
CurVar -= 4;
CurVar /= 2;
A = envionment_variables.RHDATable[CurVar] - envionment_variables.RHDATable[CurVar + 1];
B = 2;
K = CurVar0 - CurVar*2 - 4;
envionment_variables.RHPWM_OUTNUM = envionment_variables.RHDATable[CurVar] - K*A/B;
/*
envionment_variables.RHPWM_OUTNUM = envionment_variables.RH_DA4mA -
(envionment_variables.humidity - envionment_variables.Mini_humidity)*
(envionment_variables.RH_DA4mA - envionment_variables.RH_DA20mA)/
(envionment_variables.Max_humidity - envionment_variables.Mini_humidity);
*/
}
//计算出错的 处理
/*
if(envionment_variables.TCPWM_OUTNUM > TBCCR0)
{
envionment_variables.TCPWM_OUTNUM = TBCCR0 - 1;
}
if(envionment_variables.RHPWM_OUTNUM > TBCCR0)
{
envionment_variables.RHPWM_OUTNUM = TBCCR0 - 1;
}
*/
}
#pragma vector=TIMERA0_VECTOR
__interrupt void timer_a(void)
{
RcFlag ++;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -