Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <HW/REG935.H>
- #include <HW/HW_I2C.H>
- #include <HW/SETTING.H>
- #include <RF/RF.H>
- #include <HW/TIME.H>
- #include <BUTTON/BUTTON.H>
- #include <LCD/LCD.H>
- #include <FUNCTION/FUNCTION.H>
- #include <MAIN/MAIN_TASK.H>
- bit NoKeyPressed = 1;
- uint RPM_supply, RPM_exhaust;
- uchar T,t1,t2,t3,t4,T1_speed,T2_speed,T3_speed,T4_speed,WeekDay,hour,minute;
- uchar fan_speed1,fan_speed2,fan_speed3;
- xdata uchar state_mark; //pms, 051228, changed to xdata
- uchar first_enter;
- uchar Temperature1;
- uchar options,fireplace;
- uchar error_code;
- uchar error_flag;
- xdata uchar check_temp=0; //pms xdata
- xdata uchar check_cal_time; //pms
- bit T1_fault =0; //pms
- bit T2_fault =0; //pms
- bit T3_fault =0; //pms
- bit T4_fault =0; //pms
- bit S1_fault =0; //pms
- bit S2_fault =0; //pms
- bit AirFilter_fault = 0;
- bit RedSysPress_fault = 0; //pms, V01.01.00
- xdata uchar Error_number =0; //pms, 060107
- xdata uchar Machine_Type = P300; //pms, 060403
- xdata uchar ProgActive = 0; //pms, 060403
- code uchar Start_flag _at_ Start_flag_code_addr;
- uchar temperature_sel;
- extern uchar left_right_delay,up_down_delay,enter_esc_delay;
- extern xdata uchar setadr_flag; //pms, 051228, changed to xdata
- //extern uchar reset_flag,fireplace_flag;
- extern xdata uchar reset_flag,fireplace_flag,cali_flag, setflow_flag; //pms, 051013 //pms, 051228, changed to xdata
- extern xdata uchar setSOS, SOS_flag; // ---Jiang 20060106
- extern uchar temp;
- //extern bit RfRec;
- extern xdata uchar key_mark,enter_counter,left_right,up_down; //pms, 051228, changed to xdata
- extern xdata uchar flash_adr,flash_data,flash_data; //pms, 051228, changed to xdata
- extern xdata uchar Time_Dis; //pms, 051228, changed to xdata
- extern xdata uint StartUpCounter; //pms 051228, changed to xdata
- extern uchar idata User_Add[2];
- extern xdata struct{
- uchar Te_Fan;
- uchar Information;
- uchar T_Num1;
- uchar T_Num2;
- uchar T_Num3;
- uchar Te_Degree;
- uchar Fan_Speed;
- uchar Icon;
- uchar Date;
- uchar Time_Start;
- uchar Time_HH;
- uchar Time_HL;
- uchar Time_Degree;
- uchar Time_MH;
- uchar Time_ML;
- uchar Time_M3;
- uchar Time_End;
- }LcdDisStruct,User, LcdFlash;
- main()
- { uchar xdata i;
- uchar idata j;
- //uchar code Start_flag=0;
- P2M1=0x01;
- P2M2=0x01;
- P3M1 &=0xFE; // zsg 2005-09-09, bitfor P3.0 service
- P3M2 &=0xFE;
- EA=0;
- delay(1); //pms, 060107. This will ensure the remote do not self-start during power down
- power_ctr=0;//turn on power
- delay(1);
- InitTarget(); // EA=0, EKBI=1,EWDRT=1, EX1=1 ;
- //***********
- EA = 1; //enable interrupt to activate timer and the timer's call of LCD update
- delay(3);
- EA = 0;
- //***********
- EX1=0;
- /*
- LCD_CLEAR(); //clear screen
- LcdDisStruct.T_Num1=0; //First display " 000 " --- Jiang
- LcdDisStruct.T_Num2=0;
- LcdDisStruct.T_Num3=0;
- Lcd_Display();
- */
- if(Start_flag != 15)
- { //do
- LCD_CLEAR(); //clear screen
- LcdDisStruct.T_Num1=0; //First display " 000 " --- Jiang
- LcdDisStruct.T_Num2=0;
- LcdDisStruct.T_Num3=0;
- // Lcd_Display(); //pms 060110 removed
- //} while( up||down );
- Adr_Check();
- j=15;
- WriteROM_X(Start_flag_code_addr, &j, 1);
- EA=0;
- AUXR1 = 8; //Reset
- // while(!EA);
- } //---- Jiang
- EA=0;
- RF_SB();
- User_Add[0]=ReadEEPROM(0); // Low address
- for(i=0; i<250;i++);
- for(i=0; i<250;i++);
- for(i=0; i<250;i++);
- User_Add[1]=ReadEEPROM(1); // High address
- InitRf(); // write Tx address again
- EKBI=1;
- InitInt(); // EA=1
- service = 1; //use as input
- Pre_Start();
- while(1)
- {
- switch (state_mark)
- {
- case 0x01: Normal_Operator(); break;
- case 0x02: Set_Function(); break;
- case 0x03: Set_DayTime(); break;
- case 0x04: Set_Program(); break;
- case 0x05: Display_FanSpeed(); break;
- case 0x06: Set_Filter(); break;
- case 0x07: Set_ByPass(); break;
- case 0x08: Set_Heater(); break;
- case 0x09: Calibration(); break;
- case 0x0A: StartUp(); break;
- case 0x0B: SOS(); break;
- case 0x0C: Set_FanSpeed(); break;
- default: break;
- }
- }
- }
- //*************************** WriteROM_X **********************************
- char WriteROM_X(uint page, uchar idata *ptr, uchar len)
- {
- uchar i;
- uchar Fm_stat;
- uchar page_hi;
- uchar page_lo;
- page_hi = page >> 8;
- page_lo = page & 0xFF;
- FMCON = WriteROM_LOAD; //load command, clears page reg
- FMADRH = page_hi; //
- FMADRL = page_lo; //write my page address to addr regs
- for (i=0;i<len;i=i+1)
- {
- FMDATA = ptr[i];
- }
- FMCON = WriteROM_EP; //erase & prog page command
- Fm_stat = FMCON; //read the result status
- // UNLOCK(); //pms
- if ((Fm_stat & 0x0F) != 0) return 1;
- return 0;
- }
- //**************** AddrCheck *******************************************
- //
- //
- //**************** AddrCheck *******************************************
- void Adr_Check(void) //---- Jiang
- {
- uchar idata Buf[10];
- uchar xdata Adr;
- uchar xdata i;
- uint xdata Time_Out_Cnt;
- Time_Out_Cnt=0;
- Adr=0;
- Buf[0]=0;
- Buf[1]=0;
- Buf[2]=0;
- RF_SB(); // stand_by mode
- RF_Transmit(Read,1,0x1f,Buf); //Sent Addr
- do
- {
- RF_RX();
- delay(1);
- RF_Receive(&Adr,Buf); // EA=1;
- Time_Out_Cnt++;
- if(Time_Out_Cnt>=RF_Delay) // 9 times
- {
- Time_Out_Cnt=0;
- delay(1);
- Buf[0]=0;
- Buf[1]=0;
- Buf[2]=0;
- RF_Transmit(Read,1,0x1f,Buf); // software command
- }
- } while(Adr!=0x1f);
- LcdDisStruct.T_Num1=3; // display 333 when receiving right address --- Jiang
- LcdDisStruct.T_Num2=3; // middle SN_H
- LcdDisStruct.T_Num3=3; // right SN_L
- // Lcd_Display(); //pms 060110, removed
- if( (ReadEEPROM(0)!=Buf[0]) || (ReadEEPROM(1)!=Buf[1]) ) // Write again
- { WriteEEPROM(Buf[0], 0x00);
- for(i=0; i<250;i++);
- WriteEEPROM(Buf[1], 0x01);
- /*
- LcdDisStruct.T_Num1=5; // display 555 when receiving wrong code --- Jiang
- LcdDisStruct.T_Num2=5; // middle SN_H
- LcdDisStruct.T_Num3=5; // right SN_L
- Lcd_Display();
- */
- }
- for(i=0; i<250;i++);
- delay(1);
- }
- void WriteEEPROM(uchar EE_data, uchar EE_Address)
- {
- /*
- DEECON.7 EEIF=1 ( Data EEPROM interrupt flag ). Set when a read or write finishes, reset by software.
- DEECON.6 HVERR High voltage error. Indicates a programming voltage error during program or erase.
- DEECON.5-4 ECTL.1,ECTL.0 Operation mode selection.
- 00 Byte read / write mode
- 10 Row (64 bytes) fill
- 11 Block (512 bytes) fill
- DEECON.3-1 - Reserved for future use. Should not be set to 1 by user program.
- DEECON.0 EADR8 Most Significant Bit address ( b8 ) of the Data EEPROM. while EADR7-0 are in DEEADR (b7~b0).
- */
- DEECON &= 0x00; // 0000 0000, address 0-255 , Read&Write byte, ADR8=0
- EA=0;
- DEEDAT = EE_data; // write data
- DEEADR = EE_Address; // write EEPROM address
- while((DEECON&0x80)==0); // Check finishing writing ?
- EA=1;
- }
- /////////////////////////////////////////////////////////////
- // ********************** ReadEEPROM ************
- ////////////////////////////////////////////////////////////
- uchar ReadEEPROM(uchar EE_Address)
- {
- DEECON &= 0x00; // 0000 0000, address 0-255, Read&Write byte, ADR8=0
- EA=0;
- DEEADR = EE_Address; // write EEPROM address
- while((DEECON&0x80)==0); // Check finishing reading ?
- EA =1;
- return DEEDAT;
- }
- // *************** eXclusive OR addr******************************************
- /*
- uchar Crc_Cnt(uchar idata *address, uint amount)
- { uchar uTemp;
- uint i;
- uTemp=*(address+2);
- for(i=1; i<amount; i++)
- {
- uTemp=uTemp ^ *(address+2+i);
- }
- return(uTemp);
- }
- */
- //************* SOS() **************************
- void SOS(void)
- { //setSOS=0x00;
- // SOS_flag=0x00;
- LCD_CLEAR(); //clear screen
- LcdDisStruct.T_Num1=0x53; //S --- Jiang
- LcdDisStruct.T_Num2=0x4F; //O
- LcdDisStruct.T_Num3=0x53; //S
- // Lcd_Display();
- state_mark=0x0B;
- while(1);
- }
- void Calibration(void)
- {
- LCD_CLEAR(); //clear screen zsg
- LcdDisStruct.T_Num1=0x43; //C zsg
- LcdDisStruct.T_Num2=0x41; //A
- LcdDisStruct.T_Num3=0x4C; //L
- // Lcd_Display();
- while(1);
- // if (Get_Calibration != 1)
- // Set_Calibration();
- }
- void InitTarget(void)
- {
- uchar i,j;
- P0M1=0x00;
- P0M2=0x00;
- P1M1=0x00;
- P1M2=0x00;
- P3M1=0x00;
- P3M2=0x00;
- //moved to xdata
- LcdDisStruct.Te_Fan=0;
- LcdDisStruct.Information=0;
- LcdDisStruct.T_Num1=0;
- LcdDisStruct.T_Num2=0;
- LcdDisStruct.T_Num3=0;
- LcdDisStruct.Te_Degree=0;
- LcdDisStruct.Fan_Speed=0;
- LcdDisStruct.Icon=0;
- LcdDisStruct.Date=0;
- LcdDisStruct.Time_Start=0;
- LcdDisStruct.Time_HH=0;
- LcdDisStruct.Time_HL=0;
- LcdDisStruct.Time_Degree=0;
- LcdDisStruct.Time_MH=0;
- LcdDisStruct.Time_ML=0;
- LcdDisStruct.Time_M3=0;
- LcdDisStruct.Time_End=0;
- User=LcdDisStruct;
- LcdDisStruct.Time_HH=0xff;
- LcdDisStruct.Time_HL=0xff;
- LcdDisStruct.Time_MH=0xff;
- LcdDisStruct.Time_ML=0xff;
- User.T_Num1=LcdDisStruct.T_Num1=0xff;
- User.Time_M3=LcdDisStruct.Time_M3=0xff;
- LcdFlash.Te_Fan=0xff;
- LcdFlash.Information=0xff;
- LcdFlash.T_Num1=0xff;
- LcdFlash.T_Num2=0xff;
- LcdFlash.T_Num3=0xff;
- LcdFlash.Te_Degree=0xff;
- LcdFlash.Fan_Speed=0xff;
- LcdFlash.Icon=0xff;
- LcdFlash.Date=0xff;
- LcdFlash.Time_Start=0xff;
- LcdFlash.Time_HH=0xff;
- LcdFlash.Time_HL=0xff;
- LcdFlash.Time_Degree=0xff;
- LcdFlash.Time_MH=0xff;
- LcdFlash.Time_ML=0xff;
- LcdFlash.Time_M3=0xff;
- LcdFlash.Time_End=0xff;
- PCF8576_Init();
- for(j=0; j<250; j++)
- { for(i=0; i<200; i++); }
- PWR_UP=0; //enable RF
- TRX_CE=0;
- TX_EN=0;
- InitSPI();
- InitRf();
- //InitENT1(); // ET1=1, EX1=1, EA=0, No ExtInt1
- key_button_init(); // EKBI=1, EA=0
- RTC_Init(); // EWDRT=1, EA=0
- //InitInt(); // EA=1, IPxH IP0
- //delay(4);
- //setadr_flag = 0;
- //if(setadr_flag!=0) //---Jiang
- // Set_Address();
- }
- void Pre_Start(void)
- {
- xdata uchar CalibrationState; //pms
- CalibrationState = Get_Calibration();
- //CalibrationState=CALIBRATION_DONE; // --- Jiang
- switch (CalibrationState)
- {
- case CALIBRATION_DONE:
- // Get_SpeedLevel();
- Get_SpeedLevel();
- Read_Fan_Speed();
- NoKeyPressed = 1; //used for Humidity. Auto step "3"
- Get_Temperature(0x01);
- Get_Options();
- Get_DayTime();
- Get_ErrorCode();
- state_mark=0x01; //Normal operator
- Read_Fan_Speed();
- NoKeyPressed = 1;
- break;
- case CALIBRATION_NOT_DONE:
- Get_SpeedLevel();
- Get_StartUpTime();//pms
- state_mark=0x0A; //StartUp
- // left_right=1;
- break;
- case CALIBRATION_REQ_TO_START:
- case CALIBRATION_IN_ACION:
- state_mark=0x09; //Calibration
- break;
- case SOS_ON:
- //SOS();
- Time_Dis=0;
- state_mark=0x0B;
- break;
- }
- // if (CalibrationState == 3) // SOS, Calibration done
- // {
- // }else{
- // }
- //pms, 051229
- left_right=1;
- key_mark=0xff; //clear button mark
- enter_counter=0x00;
- }
- void Normal_Operator(void)
- {
- static xdata uchar STATE_READ;
- bit BypassClosed = 1;
- // uint pdata KeyCnt; //zsg 2005-09-09
- left_right_delay=6; //set key respone
- enter_esc_delay=10;
- up_down_delay=5;
- if(check_temp>=5) //pms changed from 10 to 15. Changed to 5 - new system using switch
- {
- // Read_Temp();
- // Get_ErrorCode();
- if (fireplace) //fireplace
- {
- User.Information=LcdDisStruct.Information |= 0x08;
- }else{
- User.Information=LcdDisStruct.Information &= 0xF7;
- }
- check_temp=0;
- switch (STATE_READ)
- {
- case STATE_READ_TEMPERATURE:
- Read_Temp();
- STATE_READ = STATE_READ_ERROR;
- break;
- case STATE_READ_ERROR:
- Get_ErrorCode();
- STATE_READ = STATE_READ_FAN_SPEED;
- break;
- case STATE_READ_FAN_SPEED:
- Read_Fan_Speed();
- if ((ProgActive & 0x7F) == 50) //masking out the bit for bypass closed
- {
- User.Time_Start=LcdDisStruct.Time_Start=1; //display prog running
- User.Time_End=LcdDisStruct.Time_End=1;
- }else{
- User.Time_Start=LcdDisStruct.Time_Start=0;
- User.Time_End=LcdDisStruct.Time_End=0;
- }
- if ((ProgActive & 0x80) == 0x80) BypassClosed = 1; else BypassClosed = 0;
- Lcd_Flash(Select_Icon, mask_Icon_ByPass, ~BypassClosed); //pms, 060107
- STATE_READ = STATE_READ_SPEED_LEVEL;
- break;
- case STATE_READ_SPEED_LEVEL:
- Get_SpeedLevel();
- STATE_READ = STATE_READ_TEMPERATURE;
- break;
- default:
- STATE_READ = STATE_READ_TEMPERATURE;
- break;
- }
- }
- /* if (ProgActive == 100)
- {
- User.Time_Start=LcdDisStruct.Time_Start=1;
- User.Time_End=LcdDisStruct.Time_End=1;
- }else{
- User.Time_Start=LcdDisStruct.Time_Start=0;
- User.Time_End=LcdDisStruct.Time_End=0;
- }
- */
- if(fireplace_flag) check_fireplace();
- switch (key_mark)
- {
- case enter_press:state_mark=0x02;
- break;
- case left_press :key_mark=0xff;
- if (service)
- {
- if(left_right<=1)left_right=1;
- Get_Temperature(left_right);
- }//else{
- // check_cal_time = 0;
- // while ((~service)||(check_cal_time>3)); //service button hold down for 10 sec
- // if (check_cal_time > 3)
- // {
- // state_mark = 0x09; // SOS, Calibration
- // }
- // }
- break;
- case right_press:key_mark=0xff;
- if(left_right>=6)left_right=6;
- Get_Temperature(left_right);
- break;
- case up_press :key_mark=0xff;
- LcdDisStruct.Fan_Speed++;
- if(LcdDisStruct.Fan_Speed>=3)LcdDisStruct.Fan_Speed=3;
- User.Fan_Speed=LcdDisStruct.Fan_Speed;
- Chang_SpeedLevel();
- break;
- case down_press :key_mark=0xff;
- LcdDisStruct.Fan_Speed--;
- if(LcdDisStruct.Fan_Speed<=1)LcdDisStruct.Fan_Speed=1;
- User.Fan_Speed=LcdDisStruct.Fan_Speed;
- Chang_SpeedLevel();
- break;
- case esc_press :
- key_mark=0xff;
- state_mark=0x01;
- key_mark=0x00;
- flash(Icon_adr,User.Icon);
- enter_counter=0x00;
- Get_DayTime();
- //Get_StartUpTime();//pms
- Get_SpeedLevel();
- Get_Temperature(1);
- User.Time_M3=LcdDisStruct.Time_M3=0xff;
- break;
- default:break;
- }
- if(cali_flag)
- {
- Set_Calibration();
- state_mark = 0x09; //SOS, Calibration
- }
- if (SOS_flag)
- {
- Set_SOS(); // Jiang --- for testing
- //state_mark = 0x0B; //SOS, Calibration
- SOS();
- }
- if ((service == 0)&&(left_right==5)) Display_RPM(RPM_exhaust);
- if ((service == 0)&&(left_right==6)) Display_RPM(RPM_supply);
- if (setflow_flag) //pms, 051013
- {
- flash(Icon_adr,(User.Icon&0xfb));state_mark=0x0C;
- // Set_FanSpeed(); // --- Jiang
- // state_mark = 0x05; //Set fan speed
- }
- }
- void StartUp(void)
- {
- left_right_delay=6; //set key respone
- enter_esc_delay=10;
- up_down_delay=5;
- Display_Error(1);
- switch (key_mark)
- {
- case enter_press: key_mark=0xff;
- // DisplayStartupTime(StartUpCounter);//pms 051228
- break;
- case left_press : key_mark=0xff;
- // if (!service)
- // {
- // check_cal_time = 0;
- // while ((~service)||(check_cal_time>3)); //service button hold down for 10 sec
- // if (check_cal_time > 3)
- // {
- // Set_Calibration();
- // state_mark = 0x09; // SOS, Calibration
- // }
- // }
- break;
- case right_press:key_mark=0xff;
- break;
- case up_press :key_mark=0xff;
- LcdDisStruct.Fan_Speed++;
- if(LcdDisStruct.Fan_Speed>=3)LcdDisStruct.Fan_Speed=3;
- User.Fan_Speed=LcdDisStruct.Fan_Speed;
- Chang_SpeedLevel();
- break;
- case down_press :key_mark=0xff;
- LcdDisStruct.Fan_Speed--;
- if(LcdDisStruct.Fan_Speed<=1)LcdDisStruct.Fan_Speed=1;
- User.Fan_Speed=LcdDisStruct.Fan_Speed;
- Chang_SpeedLevel();
- break;
- case esc_press :key_mark=0xff;
- // DisplayStartupTime(StartUpCounter);//pms 051228
- break;
- default:break;
- }
- if(cali_flag)
- {
- Set_Calibration();
- state_mark = 0x09; // Calibration
- }
- if (setflow_flag) //pms, 051013
- {
- flash(Icon_adr,(User.Icon&0xfb));state_mark=0x0C;
- // Set_FanSpeed();
- // state_mark = 0x05; //Set fan speed
- }
- }
- void Read_Temp(void) //get temperature
- {
- uchar buf[3]={0,0,0};
- uchar Adr=0xFA;//0xff;
- uchar Time_Out_Cnt;
- EKBI=0;
- if((temperature_sel==1)||(temperature_sel==2))
- {delay(1);
- RF_Transmit(Read,1,0x01,buf); //Get T1 T2
- do
- {
- delay(1);
- RF_Receive(&Adr,buf);
- Time_Out_Cnt++;
- if(Time_Out_Cnt>=RF_Delay)
- {
- Time_Out_Cnt=0;delay(1);
- RF_Transmit(Read,1,0x01,buf);
- }
- } while(Adr!=0x01);
- Temperature1=buf[0];
- if(temperature_sel==1)Display_Temperature(Temperature1,0x01,0x00);
- if(temperature_sel==2)Display_Temperature(buf[1],0x02,0x00);
- }
- if((temperature_sel==3)||(temperature_sel==4))
- {
- delay(1);
- RF_Transmit(Read,1,0x03,buf); //Get T3 T4
- do
- {
- delay(1);
- RF_Receive(&Adr,buf);
- Time_Out_Cnt++;
- if(Time_Out_Cnt>=RF_Delay)
- {
- Time_Out_Cnt=0;delay(1);
- RF_Transmit(Read,1,0x03,buf);
- }
- } while(Adr!=0x03);
- if(temperature_sel==3)Display_Temperature(buf[0],0x04,0x00);
- if(temperature_sel==4)Display_Temperature(buf[1],0x08,0x00);
- }
- EKBI=1;
- }
- void Get_Temperature(uchar T)
- {
- uchar buf[3]={0,0,0};
- uchar Adr=0xFA;//0xff;
- uchar Time_Out_Cnt;
- switch (T)
- {
- case 0x01:User.Te_Fan=LcdDisStruct.Te_Fan=0x01;
- EKBI=0;
- temperature_sel=1;
- delay(1);
- RF_Transmit(Read,0,0x01,buf); //Get T1
- do
- {
- delay(1);
- RF_Receive(&Adr,buf);
- Time_Out_Cnt++;
- if(Time_Out_Cnt>=RF_Delay)
- {
- Time_Out_Cnt=0;delay(1);
- RF_Transmit(Read,0,0x01,buf);
- }
- } while(Adr!=0x01);
- Temperature1=buf[0];
- Display_Temperature(Temperature1,0x01,0x00);
- EKBI=1;
- break;
- case 0x02:User.Te_Fan=LcdDisStruct.Te_Fan=0x02;
- EKBI=0;
- temperature_sel=2;
- delay(1);
- RF_Transmit(Read,0,0x02,buf); //Get T2
- do
- {
- delay(1);
- RF_Receive(&Adr,buf);
- Time_Out_Cnt++;
- if(Time_Out_Cnt>=RF_Delay)
- {
- Time_Out_Cnt=0;delay(1);
- RF_Transmit(Read,0,0x02,buf);
- }
- } while(Adr!=0x02);
- Display_Temperature(buf[0],0x02,0x00);
- EKBI=1;
- break;
- case 0x03 :User.Te_Fan=LcdDisStruct.Te_Fan=0x04;
- EKBI=0;
- temperature_sel=3;
- delay(1);
- RF_Transmit(Read,0,0x03,buf); //Get T3
- do
- {
- delay(1);
- RF_Receive(&Adr,buf);
- Time_Out_Cnt++;
- if(Time_Out_Cnt>=RF_Delay)
- {
- Time_Out_Cnt=0;delay(1);
- RF_Transmit(Read,0,0x03,buf);
- }
- } while(Adr!=0x03);
- Display_Temperature(buf[0],0x04,0x00);
- EKBI=1;
- break;
- case 0x04:User.Te_Fan=LcdDisStruct.Te_Fan=0x08;
- EKBI=0;
- temperature_sel=4;
- delay(1);
- RF_Transmit(Read,0,0x04,buf); //Get T4
- do
- {
- delay(1);
- RF_Receive(&Adr,buf);
- Time_Out_Cnt++;
- if(Time_Out_Cnt>=RF_Delay)
- {
- Time_Out_Cnt=0;delay(1);
- RF_Transmit(Read,0,0x04,buf);
- }
- } while(Adr!=0x04);
- Display_Temperature(buf[0],0x08,0x00);
- EKBI=1;
- break;
- case 0x05:User.Te_Fan=LcdDisStruct.Te_Fan=0x10;
- EKBI=0;
- temperature_sel=0;
- delay(1);
- RF_Transmit(Read,0,0x05,buf); //Get S1
- // RF_Transmit(Read,2,0x05,buf); //Get S1
- do
- {
- delay(1);
- RF_Receive(&Adr,buf);
- Time_Out_Cnt++;
- if(Time_Out_Cnt>=RF_Delay)
- {
- Time_Out_Cnt=0;delay(1);
- RF_Transmit(Read,0,0x05,buf);
- // RF_Transmit(Read,2,0x05,buf);
- }
- } while(Adr!=0x05);
- Display_Speed(buf[0]);//,0x10,0x00); //removed 060105, inserted 060329
- RPM_exhaust = buf[1] << 8;
- RPM_exhaust = RPM_exhaust + buf[2];
- //Display_RPM(RPM_exhaust); //pms 060101
- EKBI=1;
- break;
- case 0x06:User.Te_Fan=LcdDisStruct.Te_Fan=0x20;
- EKBI=0;
- temperature_sel=0;
- delay(1);
- RF_Transmit(Read,0,0x06,buf); //Get S2
- do
- {
- delay(1);
- RF_Receive(&Adr,buf);
- Time_Out_Cnt++;
- if(Time_Out_Cnt>=RF_Delay)
- {
- Time_Out_Cnt=0;delay(1);
- RF_Transmit(Read,0,0x06,buf);
- }
- } while(Adr!=0x06);
- Display_Speed(buf[0]);//,0x20,0x00); //removed 060105, inserted 060329
- RPM_supply = buf[1] << 8; //pms
- RPM_supply = RPM_supply + buf[2]; //pms
- //Display_RPM(RPM_supply); //pms 060101
- EKBI=1;
- break;
- default:break;
- }
- }
- void Get_SpeedLevel()
- {
- uchar buf[3]={0,0,0};
- uchar Adr=0xFA;//0xff;
- uchar Time_Out_Cnt;
- //uchar Time_Out;
- delay(1);
- RF_Transmit(Read,0,13,buf); //Get Speed level
- do
- {
- delay(1);
- RF_Receive(&Adr,buf);
- Time_Out_Cnt++;
- if(Time_Out_Cnt>=10)//wait 2s
- {
- // Time_Out++;
- // if(Time_Out>5){error_flag=1;break;}
- // Display_Error(0x0d);
- Time_Out_Cnt=0;delay(1);
- RF_Transmit(Read,0,13,buf);
- }
- } while(Adr!=13);
- // Display_Error(buf[0]); //pms, 051228
- if(buf[0]>=3)buf[0]=3;
- if(buf[0]<=1)buf[0]=1;
- User.Fan_Speed=LcdDisStruct.Fan_Speed=buf[0];
- }
- void Chang_SpeedLevel(void)
- {
- uchar buf[3]={0,0,0};
- uchar Adr=0xFA;//0xff;
- uchar Time_Out_Cnt;
- buf[0]=User.Fan_Speed;
- delay(1);
- RF_Transmit(Write,0,13,buf);
- do
- {
- delay(1);
- RF_Receive(&Adr,buf);
- Time_Out_Cnt++;
- // if(Time_Out_Cnt>=RF_Delay)
- if(Time_Out_Cnt>=20) //pms 051230, quickfix
- {
- Time_Out_Cnt=0;delay(1);
- buf[0]=User.Fan_Speed; //pms 051230, quickfix
- RF_Transmit(Write,0,13,buf);
- }
- } while(Adr!=13);
- }
- void Get_Options(void)
- {
- uchar buf[3]={0,0,0};
- uchar Adr=0xFA;//0xff;
- uchar Time_Out_Cnt;
- delay(1);
- RF_Transmit(Read,0,23,buf); //Get Speed level
- do
- {
- delay(1);
- RF_Receive(&Adr,buf);
- Time_Out_Cnt++;
- if(Time_Out_Cnt>=RF_Delay)
- {
- Time_Out_Cnt=0;delay(1);
- RF_Transmit(Read,0,23,buf);
- }
- } while(Adr!=23);
- options=buf[0];
- if(options&0x01)fireplace=0xff;
- User.Icon=LcdDisStruct.Icon=0x07; //pms, 060403 inserted SetSpeed Ican again
- // User.Icon=LcdDisStruct.Icon=0x03; //pms, 060110 remove SetSpeed Icon
- if(options&0x02)User.Icon=LcdDisStruct.Icon|=0x20; //pre heater
- if(options&0x04)User.Icon=LcdDisStruct.Icon|=0x10; //by-pass
- }
- void Get_ErrorCode(void)
- {
- uchar buf[3]={0,0,0};
- uchar Adr=0xFA;//0xff;
- uchar Time_Out_Cnt;
- //xdata uchar Error_number =0; //pms, 060107
- xdata uchar Error_minor =0;
- bit Pressure_fault = 0;
- bit Fan_fault = 0;
- bit AirFilter_Dirty = 0;
- bit Temperature_fault =0;
- delay(1);
- RF_Transmit(Read,0,20,buf); //Get error code
- do
- {
- delay(1);
- RF_Receive(&Adr,buf);
- Time_Out_Cnt++;
- if(Time_Out_Cnt>=RF_Delay)
- {
- Time_Out_Cnt=0;delay(1);
- RF_Transmit(Read,0,20,buf);
- }
- } while(Adr!=20);
- error_code=buf[0];
- Error_number =0;
- AirFilter_fault = 0;
- Pressure_fault = 0;
- Fan_fault = 0;
- RedSysPress_fault = 0;
- Temperature_fault =0;
- if((error_code&0xF0) == 0x10){AirFilter_Dirty = 1; }else{AirFilter_Dirty = 0;} // ERR 002 AirFilter
- if((error_code&0xF0) == 0x20){Pressure_fault = 1; Error_number =4;} // ERR 004 Pressure
- if((error_code&0xF0) == 0x50){Fan_fault = 1; Error_number =5;} // ERR 005 Fan
- if((error_code&0xF0) == 0x70){RedSysPress_fault = 1; Error_number =6;} // ERR 006 Reduced system pressure
- if((error_code&0xF0) == 0x80){Temperature_fault = 1; Error_number =3;} // ERR 003 Temperature
- Error_minor = (error_code & 0x0F);
- if (AirFilter_Dirty)
- {
- User.Icon=LcdDisStruct.Icon|=0x08; //set filter icon
- Lcd_Flash(Select_Icon, mask_Icon_Filter, ON); //flash filter icon
- if (Error_minor & 0x02)
- {
- Error_number =2;
- AirFilter_fault = 1;
- }
- }else{
- User.Icon=LcdDisStruct.Icon&=0xf7; //close the filter icon
- }
- T1_fault =0;
- T2_fault =0;
- T3_fault =0;
- T4_fault =0;
- if(Temperature_fault)
- {
- if(Error_minor & 0x01){T1_fault=1;} //T1 temperature sensor error
- if(Error_minor & 0x02){T2_fault=1;}
- if(Error_minor & 0x04){T3_fault=1;}
- if(Error_minor & 0x08){T4_fault=1;}
- }
- S1_fault = 0;
- S2_fault = 0;
- if(Pressure_fault)
- {
- if(Error_minor & 0x01){S1_fault=1;} //T1 temperature sensor error
- if(Error_minor & 0x02){S2_fault=1;}
- }
- if(Fan_fault)
- {
- if(Error_minor & 0x01){S1_fault=1;} //T1 temperature sensor error
- if(Error_minor & 0x02){S2_fault=1;}
- }
- if (Error_number != 0)
- {
- Display_Error(Error_number);
- temperature_sel=0; //avoid temperature update overwrite error
- Display_Temperature(0,0,0);
- }
- }
- void Set_SOS(void)
- {
- uchar Buf[3]={0,0,0};
- uchar Adr=0xFA;//0xff;
- uchar Time_Out_Cnt;
- Buf[0]= 0x80;//value; //start calibration
- delay(1);
- RF_Transmit(Write,0,24,Buf);
- do
- {
- delay(1);
- RF_Receive(&Adr,Buf);
- Time_Out_Cnt++;
- if(Time_Out_Cnt>=RF_Delay)
- {
- Time_Out_Cnt=0;delay(1);
- Buf[0]= 0x80;//value; //start calibration
- RF_Transmit(Write,0,24,Buf);
- }
- } while(Adr!=24);
- }
- void Set_Calibration(void)
- {
- uchar buf[3]={0,0,0};
- uchar Adr=0xFA;//0xff;
- uchar Time_Out_Cnt;
- buf[0]= 1;//value; //start calibration
- delay(1);
- RF_Transmit(Write,0,24,buf);
- do
- {
- delay(1);
- RF_Receive(&Adr,buf);
- Time_Out_Cnt++;
- if(Time_Out_Cnt>=RF_Delay)
- {
- Time_Out_Cnt=0;delay(1);
- buf[0]= 1;//value; //start calibration
- RF_Transmit(Write,0,24,buf);
- }
- } while(Adr!=24);
- }
- uchar Get_Calibration()
- {
- uchar buf[3]={0,0,0};
- uchar Adr=0xFA;//0xff;
- uchar Time_Out_Cnt;
- //uchar Time_Out;
- delay(1);
- RF_Transmit(Read,0,24,buf); //Get Speed level
- do
- {
- delay(1);
- RF_Receive(&Adr,buf);
- Time_Out_Cnt++;
- // Display_Error(Time_Out_Cnt); //pms, 051228
- if(Time_Out_Cnt>=10)//wait 2s
- {
- // Time_Out++;
- // if(Time_Out>5){error_flag=1;break;}
- // Display_Error(0x0d);
- Time_Out_Cnt=0;delay(1);
- RF_Transmit(Read,0,24,buf);
- }
- } while(Adr!=24);
- return buf[0];
- }
Add Comment
Please, Sign In to add comment