羊肉切片机厂家
免费服务热线

Free service

hotline

010-00000000
羊肉切片机厂家
热门搜索:
技术资讯
当前位置:首页 > 技术资讯

基于MSP430的太阳能热水器上水控制器V10.1 免费猫

发布时间:2020-02-17 13:00:18 阅读: 来源:羊肉切片机厂家

基于MSP430的太阳能热水器上水控制器V10.1

/*****************************************************************************

基本定时器中断函数 *

*****************************************************************************/

#pragma vector=BASICTIMER_VECTOR

__interrupt void BasTimer()

static uchar times;

if(enable_guanfajishi) //开阀上水后进行关阀延时计时,以防溢水信号失效

n_guanfa++;

if(n_guanfa > 15) //(>3600)1h后

LPM3_EXIT; //退出中断后退出低功耗模式。

enable_guanfajishi = 0;

n_guanfa = 0;

Guanfa(); //关阀门

TAR = 0; //Timer_A 清除原计时

CCTL0 = CCIE; //允许CCR0 interrupt

Ledon(); //开LED

enable_famenoperate = 2; //阀门状态为关动作中

enable_LED = 0; //关瞬闪

if(enable_LED) //瞬闪LED:开阀停止后打开此瞬闪,关阀信号中断时关闭此瞬闪

Ledon();

Delayms(20);

Ledoff();

times++;

if(times > time_yanshi)

times = 0;

enable_tmptest = 1; //允许温度测试

LPM3_EXIT; //退出中断后退出低功耗模式。

/*****************************************************************************

定时器A中断函数 *

中断源:CC0 *

*****************************************************************************/

#pragma vector=TIMERA0_VECTOR //定时4s,防止阀门到位信号失效

__interrupt void TimerA0()

CCTL0 &= ~CCIE; //禁止CCR0 interrupt

CCR0 = 65535; //预置值,4s

LPM3_EXIT; //退出中断后退出低功耗模式。

TingZhi(); //阀门动作停止

if(enable_famenoperate == 3) //判断之前是开阀还是关阀动作

{ //之前为开阀

enable_famenoperate = 1;//阀门状态为开

enable_LED = 1; //开瞬闪

else if(enable_famenoperate == 2)

{ //之前为关阀

enable_famenoperate = 0;//阀门状为关

/*****************************************************************************

端口1中断函数 *

多中断中断源:P1IFG.0~P1IFG7 *

进入中断后应首先判断中断源,退出中断前应清除中断标志,否则将再次引发中断 *

*****************************************************************************/

#pragma vector=PORT1_VECTOR

__interrupt void Port1()

if((P1IFG&BIT2) == BIT2) //处理P1IN.2中断

P1IFG &= ~BIT2; //清除中断标志

P1IES ^= BIT2; //P1.2中断为0->1和1->0切换

P1DIR //P1.2为输入方式

if(P1IN&BIT2 ) //判断P1.2电平高低

LCDMEM[0] &= ~BIT4;

IE2 |= BTIE;//打开基本定时器中断

LCDMEM[0] |= BIT4 ; //显示"换电池"

IE2 &= ~BTIE; //关闭基本定时器中断

else if((P1IFG&BIT6) ==BIT6) //处理P1IN.6中断,开阀上水

P1IFG &= ~BIT6; //清除中断标志

//在此先判断阀门状态,如为关才开阀

if((P2IN&BIT2 == BIT2) && ~(P2IN&BIT3)) //P2.2开阀到位线为1,P2.3关阀到位线为0,关阀状态

if(wendu_zhensu 60)

IoIn_DQ();

temp = ReadDQ();

Delayus(500); //us

return temp;

/********************************************************

* 写bit2DS18B20 *

********************************************************/

void Ds18b20_WriteBit(uchar bitdata)

IoOut_DQ();

if(bitdata)

PullDownDQ();

Delayus(2); //2us(>1us)

ReleaseDQ(); //(上述1-15)

Delayus(85); //86us(45- x,总时间>60)

}else

PullDownDQ();

Delayus(85); //86us(60-120)

ReleaseDQ();

Delayus(2); //2us(>1us)

/********************************************************

* 写Byte DS18B20 *

********************************************************/

void Ds18b20_WriteByte(uchar chrdata)

uchar ii;

for(ii = 0; ii >= 1;

/********************************************************

* 写 DS18B20 *

********************************************************/

//void Ds18b20_Write(uchar *p_readdata, uchar bytes)

// while(bytes--)

// Ds18b20_WriteByte(*p_readdata);

// p_readdata++;

沉珂故事

谐音的故事

连州市旗袍

风筝的故事