南昌大学共青学院毕业设计(论文) 附录A 源程序
LED_XiDi = 1; LED_PiaoXi = 1; LED_TuoShui = 1; PIN_BaoJing = 1; PIN_JinShui = 1; PIN_PaiShui = 1; PIN_Motor_A = 1; PIN_Motor_B = 1; }
/********************中断初始化程序********************/ void ExInt_Init(void) { IT0 = 1; EX0 = 1; IT1 = 1; EX1 = 1; }
/*******************定时器0初始化程序******************/ void Timer0_Init(void) { TMOD = TMOD | 0X01; TH0 = 0X3C; TL0 = 0XB0; TR0 = 1; _50ms = 0; s = 0; }
/*******************定时器1初始化程序******************/ void Timer1_Init(void) { TMOD = TMOD | 0X10; TH1 = 0X3C; TL1 = 0XB0; }
/********************电机初始化程序********************/ void T_Motor_Ctl(uchar t1,uchar t2,uchar t3) { if(!flag_SEl_QiangRuo) T_Motor = t1;
if(flag_SEl_QiangRuo) T_Motor = t2; if(flag_TuoShui) T_Motor = t3; }
/********************电机初始化程序********************/ void Motor_Init(void) { ZhengZhuan();
T_Motor_Ctl(4,3,5);
35
南昌大学共青学院毕业设计(论文) 附录A 源程序
}
/**********************解除报警************************/ void No_BaoJing(void) { flag_BaoJing= 0; PIN_BaoJing = 1; TR1 = 0; }
/*******外部中断0程序为运行、解除报警或者暂停***********/ void int0(void) interrupt 0 {
if(!p32)
{ Delay_10ms(1); if(!p32)
{ if(!flag_Run)
flag_Run = 1; else if(flag_BaoJing) No_BaoJing(); else if(flag_Ok)
{ static bit flag_ZanTing;
flag_ZanTing = ~flag_ZanTing; if(flag_ZanTing) {ZanTing();}
else {JiXu();} } } } }
/**********************报警程序************************/ void BaoJing(void)
{ flag_BaoJing= 1; TR0 = 0; TR1 = 1; }
/*******************时间到处理程序*********************/ void Ok_Timer(void) { s = 0;
if(flag_JinShui || flag_PaiShui) { BaoJing(); } else
{ flag_XiDi = 0; flag_PiaoXi = 0; flag_TuoShui= 0;
36
南昌大学共青学院毕业设计(论文) 附录A 源程序
Stop(); } }
/********************电机控制程序**********************/ void Motor(void)
{ static uchar s_Motor; s_Motor++;
if(s_Motor==T_Motor) { static uchar Motors; s_Motor = 0; Motors++;
if(Motors==3) Motors = 0; switch(Motors)
{ case ZHENGZHUAN : ZhengZhuan();
T_Motor_Ctl(4,3,5); break; case STOP : Stop();
T_Motor_Ctl(1,1,2); break;
case FANZHUAN : FanZhuan();
T_Motor_Ctl(4,3,5); break; default : break; } } }
/*******************定时器0中断程序********************/ void Timer0(void) interrupt 1 {
TR0 = 0; TH0 = 0X3C; TL0 = 0XB0; TR0 = 1; _50ms++;
if(_50ms == 20) { _50ms = 0; s++;
if(s == T_S) Ok_Timer(); if(flag_XiDi || flag_PiaoXi || flag_TuoShui) Motor(); } }
37
南昌大学共青学院毕业设计(论文) 附录A 源程序
/**********外部中断1程序为水位到或者盖开处理***********/ void int1(void) interrupt 2 { if(!p33)
{ Delay_10ms(1); if(!p33) { } } }
/************定时器1中断程序作为闪烁及报警**************/ void Timer1(void) interrupt 3 { static uchar _50ms; TR1 = 0; TH1 = 0X3C; TL1 = 0XB0; TR1 = 1; _50ms++;
if(_50ms == 14) { _50ms = 0;
if(flag_XiDi) LED_XiDi = ~LED_XiDi; if(flag_PiaoXi) LED_PiaoXi = ~LED_PiaoXi; if(flag_TuoShui) LED_TuoShui = ~LED_TuoShui; if(flag_BaoJing)
PIN_BaoJing = ~PIN_BaoJing; } }
/**********************程序选择程序********************/ void SEL_ChengXU(void)
{ if(!K_SEL_ChengXu) { Delay_10ms(1); if(!K_SEL_ChengXu)
{ while(!K_SEL_ChengXu); flag_SEL_ChengXu++; if(flag_SEL_ChengXu==5) flag_SEL_ChengXu = 0; switch(flag_SEL_ChengXu)
{ case BIAOZHUN : LED_BiaoZhun= 0; LED_JingJi = 1; LED_DanDu = 1;
LED_PaiShui = 1;
38