Guest User

Untitled

a guest
Jan 22nd, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 30.36 KB | None | 0 0
  1. #include <HW/REG935.H>
  2. #include <HW/HW_I2C.H>
  3. #include <HW/SETTING.H>
  4. #include <RF/RF.H>
  5. #include <HW/TIME.H>
  6. #include <BUTTON/BUTTON.H>
  7. #include <LCD/LCD.H>
  8. #include <FUNCTION/FUNCTION.H>
  9. #include <MAIN/MAIN_TASK.H>
  10.  
  11. bit NoKeyPressed = 1;
  12.  
  13. uint RPM_supply, RPM_exhaust;
  14. uchar T,t1,t2,t3,t4,T1_speed,T2_speed,T3_speed,T4_speed,WeekDay,hour,minute;
  15. uchar fan_speed1,fan_speed2,fan_speed3;
  16. xdata uchar state_mark; //pms, 051228, changed to xdata
  17. uchar first_enter;
  18. uchar Temperature1;
  19. uchar options,fireplace;
  20. uchar error_code;
  21. uchar error_flag;
  22. xdata uchar check_temp=0; //pms xdata
  23. xdata uchar check_cal_time; //pms
  24. bit T1_fault =0; //pms
  25. bit T2_fault =0; //pms
  26. bit T3_fault =0; //pms
  27. bit T4_fault =0; //pms
  28. bit S1_fault =0; //pms
  29. bit S2_fault =0; //pms
  30. bit AirFilter_fault = 0;
  31. bit RedSysPress_fault = 0; //pms, V01.01.00
  32. xdata uchar Error_number =0; //pms, 060107
  33.  
  34. xdata uchar Machine_Type = P300; //pms, 060403
  35. xdata uchar ProgActive = 0; //pms, 060403
  36.  
  37. code uchar Start_flag _at_ Start_flag_code_addr;
  38.  
  39.  
  40. uchar temperature_sel;
  41. extern uchar left_right_delay,up_down_delay,enter_esc_delay;
  42. extern xdata uchar setadr_flag; //pms, 051228, changed to xdata
  43. //extern uchar reset_flag,fireplace_flag;
  44. extern xdata uchar reset_flag,fireplace_flag,cali_flag, setflow_flag; //pms, 051013 //pms, 051228, changed to xdata
  45. extern xdata uchar setSOS, SOS_flag; // ---Jiang 20060106
  46. extern uchar temp;
  47. //extern bit RfRec;
  48. extern xdata uchar key_mark,enter_counter,left_right,up_down; //pms, 051228, changed to xdata
  49. extern xdata uchar flash_adr,flash_data,flash_data; //pms, 051228, changed to xdata
  50. extern xdata uchar Time_Dis; //pms, 051228, changed to xdata
  51. extern xdata uint StartUpCounter; //pms 051228, changed to xdata
  52. extern uchar idata User_Add[2];
  53.  
  54. extern xdata struct{
  55. uchar Te_Fan;
  56. uchar Information;
  57. uchar T_Num1;
  58. uchar T_Num2;
  59. uchar T_Num3;
  60. uchar Te_Degree;
  61. uchar Fan_Speed;
  62. uchar Icon;
  63. uchar Date;
  64. uchar Time_Start;
  65. uchar Time_HH;
  66. uchar Time_HL;
  67. uchar Time_Degree;
  68. uchar Time_MH;
  69. uchar Time_ML;
  70. uchar Time_M3;
  71. uchar Time_End;
  72. }LcdDisStruct,User, LcdFlash;
  73.  
  74.  
  75. main()
  76. { uchar xdata i;
  77. uchar idata j;
  78. //uchar code Start_flag=0;
  79. P2M1=0x01;
  80. P2M2=0x01;
  81. P3M1 &=0xFE; // zsg 2005-09-09, bitfor P3.0 service
  82. P3M2 &=0xFE;
  83.  
  84. EA=0;
  85. delay(1); //pms, 060107. This will ensure the remote do not self-start during power down
  86.  
  87. power_ctr=0;//turn on power
  88. delay(1);
  89.  
  90. InitTarget(); // EA=0, EKBI=1,EWDRT=1, EX1=1 ;
  91.  
  92. //***********
  93. EA = 1; //enable interrupt to activate timer and the timer's call of LCD update
  94. delay(3);
  95. EA = 0;
  96. //***********
  97. EX1=0;
  98.  
  99. /*
  100. LCD_CLEAR(); //clear screen
  101. LcdDisStruct.T_Num1=0; //First display " 000 " --- Jiang
  102. LcdDisStruct.T_Num2=0;
  103. LcdDisStruct.T_Num3=0;
  104. Lcd_Display();
  105. */
  106.  
  107. if(Start_flag != 15)
  108. { //do
  109. LCD_CLEAR(); //clear screen
  110. LcdDisStruct.T_Num1=0; //First display " 000 " --- Jiang
  111. LcdDisStruct.T_Num2=0;
  112. LcdDisStruct.T_Num3=0;
  113. // Lcd_Display(); //pms 060110 removed
  114. //} while( up||down );
  115.  
  116. Adr_Check();
  117.  
  118. j=15;
  119. WriteROM_X(Start_flag_code_addr, &j, 1);
  120. EA=0;
  121. AUXR1 = 8; //Reset
  122. // while(!EA);
  123. } //---- Jiang
  124.  
  125.  
  126. EA=0;
  127. RF_SB();
  128. User_Add[0]=ReadEEPROM(0); // Low address
  129. for(i=0; i<250;i++);
  130. for(i=0; i<250;i++);
  131. for(i=0; i<250;i++);
  132. User_Add[1]=ReadEEPROM(1); // High address
  133. InitRf(); // write Tx address again
  134.  
  135. EKBI=1;
  136. InitInt(); // EA=1
  137.  
  138.  
  139. service = 1; //use as input
  140. Pre_Start();
  141.  
  142.  
  143. while(1)
  144. {
  145. switch (state_mark)
  146. {
  147. case 0x01: Normal_Operator(); break;
  148. case 0x02: Set_Function(); break;
  149. case 0x03: Set_DayTime(); break;
  150. case 0x04: Set_Program(); break;
  151. case 0x05: Display_FanSpeed(); break;
  152. case 0x06: Set_Filter(); break;
  153. case 0x07: Set_ByPass(); break;
  154. case 0x08: Set_Heater(); break;
  155. case 0x09: Calibration(); break;
  156. case 0x0A: StartUp(); break;
  157. case 0x0B: SOS(); break;
  158. case 0x0C: Set_FanSpeed(); break;
  159. default: break;
  160. }
  161. }
  162. }
  163.  
  164.  
  165.  
  166. //*************************** WriteROM_X **********************************
  167.  
  168. char WriteROM_X(uint page, uchar idata *ptr, uchar len)
  169. {
  170. uchar i;
  171. uchar Fm_stat;
  172. uchar page_hi;
  173. uchar page_lo;
  174.  
  175. page_hi = page >> 8;
  176. page_lo = page & 0xFF;
  177.  
  178. FMCON = WriteROM_LOAD; //load command, clears page reg
  179. FMADRH = page_hi; //
  180. FMADRL = page_lo; //write my page address to addr regs
  181.  
  182. for (i=0;i<len;i=i+1)
  183. {
  184. FMDATA = ptr[i];
  185. }
  186.  
  187. FMCON = WriteROM_EP; //erase & prog page command
  188. Fm_stat = FMCON; //read the result status
  189.  
  190. // UNLOCK(); //pms
  191.  
  192. if ((Fm_stat & 0x0F) != 0) return 1;
  193.  
  194. return 0;
  195. }
  196.  
  197.  
  198.  
  199. //**************** AddrCheck *******************************************
  200. //
  201. //
  202. //**************** AddrCheck *******************************************
  203.  
  204. void Adr_Check(void) //---- Jiang
  205. {
  206. uchar idata Buf[10];
  207. uchar xdata Adr;
  208. uchar xdata i;
  209. uint xdata Time_Out_Cnt;
  210. Time_Out_Cnt=0;
  211. Adr=0;
  212.  
  213. Buf[0]=0;
  214. Buf[1]=0;
  215. Buf[2]=0;
  216.  
  217. RF_SB(); // stand_by mode
  218. RF_Transmit(Read,1,0x1f,Buf); //Sent Addr
  219.  
  220. do
  221. {
  222. RF_RX();
  223. delay(1);
  224. RF_Receive(&Adr,Buf); // EA=1;
  225. Time_Out_Cnt++;
  226. if(Time_Out_Cnt>=RF_Delay) // 9 times
  227. {
  228. Time_Out_Cnt=0;
  229. delay(1);
  230. Buf[0]=0;
  231. Buf[1]=0;
  232. Buf[2]=0;
  233. RF_Transmit(Read,1,0x1f,Buf); // software command
  234. }
  235. } while(Adr!=0x1f);
  236.  
  237. LcdDisStruct.T_Num1=3; // display 333 when receiving right address --- Jiang
  238. LcdDisStruct.T_Num2=3; // middle SN_H
  239. LcdDisStruct.T_Num3=3; // right SN_L
  240. // Lcd_Display(); //pms 060110, removed
  241.  
  242. if( (ReadEEPROM(0)!=Buf[0]) || (ReadEEPROM(1)!=Buf[1]) ) // Write again
  243. { WriteEEPROM(Buf[0], 0x00);
  244. for(i=0; i<250;i++);
  245. WriteEEPROM(Buf[1], 0x01);
  246. /*
  247. LcdDisStruct.T_Num1=5; // display 555 when receiving wrong code --- Jiang
  248. LcdDisStruct.T_Num2=5; // middle SN_H
  249. LcdDisStruct.T_Num3=5; // right SN_L
  250. Lcd_Display();
  251. */
  252. }
  253.  
  254. for(i=0; i<250;i++);
  255.  
  256. delay(1);
  257. }
  258.  
  259.  
  260. void WriteEEPROM(uchar EE_data, uchar EE_Address)
  261. {
  262. /*
  263. DEECON.7 EEIF=1 ( Data EEPROM interrupt flag ). Set when a read or write finishes, reset by software.
  264. DEECON.6 HVERR High voltage error. Indicates a programming voltage error during program or erase.
  265. DEECON.5-4 ECTL.1,ECTL.0 Operation mode selection.
  266. 00 Byte read / write mode
  267. 10 Row (64 bytes) fill
  268. 11 Block (512 bytes) fill
  269. DEECON.3-1 - Reserved for future use. Should not be set to 1 by user program.
  270. DEECON.0 EADR8 Most Significant Bit address ( b8 ) of the Data EEPROM. while EADR7-0 are in DEEADR (b7~b0).
  271. */
  272. DEECON &= 0x00; // 0000 0000, address 0-255 , Read&Write byte, ADR8=0
  273. EA=0;
  274. DEEDAT = EE_data; // write data
  275. DEEADR = EE_Address; // write EEPROM address
  276. while((DEECON&0x80)==0); // Check finishing writing ?
  277. EA=1;
  278. }
  279.  
  280.  
  281. /////////////////////////////////////////////////////////////
  282. // ********************** ReadEEPROM ************
  283. ////////////////////////////////////////////////////////////
  284.  
  285. uchar ReadEEPROM(uchar EE_Address)
  286. {
  287. DEECON &= 0x00; // 0000 0000, address 0-255, Read&Write byte, ADR8=0
  288. EA=0;
  289. DEEADR = EE_Address; // write EEPROM address
  290. while((DEECON&0x80)==0); // Check finishing reading ?
  291. EA =1;
  292. return DEEDAT;
  293. }
  294.  
  295.  
  296. // *************** eXclusive OR addr******************************************
  297. /*
  298. uchar Crc_Cnt(uchar idata *address, uint amount)
  299. { uchar uTemp;
  300. uint i;
  301.  
  302. uTemp=*(address+2);
  303. for(i=1; i<amount; i++)
  304. {
  305. uTemp=uTemp ^ *(address+2+i);
  306. }
  307. return(uTemp);
  308. }
  309. */
  310.  
  311.  
  312. //************* SOS() **************************
  313. void SOS(void)
  314. { //setSOS=0x00;
  315. // SOS_flag=0x00;
  316. LCD_CLEAR(); //clear screen
  317. LcdDisStruct.T_Num1=0x53; //S --- Jiang
  318. LcdDisStruct.T_Num2=0x4F; //O
  319. LcdDisStruct.T_Num3=0x53; //S
  320. // Lcd_Display();
  321. state_mark=0x0B;
  322. while(1);
  323. }
  324.  
  325.  
  326. void Calibration(void)
  327. {
  328. LCD_CLEAR(); //clear screen zsg
  329. LcdDisStruct.T_Num1=0x43; //C zsg
  330. LcdDisStruct.T_Num2=0x41; //A
  331. LcdDisStruct.T_Num3=0x4C; //L
  332. // Lcd_Display();
  333. while(1);
  334. // if (Get_Calibration != 1)
  335. // Set_Calibration();
  336.  
  337. }
  338.  
  339.  
  340. void InitTarget(void)
  341. {
  342. uchar i,j;
  343.  
  344. P0M1=0x00;
  345. P0M2=0x00;
  346. P1M1=0x00;
  347. P1M2=0x00;
  348. P3M1=0x00;
  349. P3M2=0x00;
  350. //moved to xdata
  351. LcdDisStruct.Te_Fan=0;
  352. LcdDisStruct.Information=0;
  353. LcdDisStruct.T_Num1=0;
  354. LcdDisStruct.T_Num2=0;
  355. LcdDisStruct.T_Num3=0;
  356. LcdDisStruct.Te_Degree=0;
  357. LcdDisStruct.Fan_Speed=0;
  358. LcdDisStruct.Icon=0;
  359. LcdDisStruct.Date=0;
  360. LcdDisStruct.Time_Start=0;
  361. LcdDisStruct.Time_HH=0;
  362. LcdDisStruct.Time_HL=0;
  363. LcdDisStruct.Time_Degree=0;
  364. LcdDisStruct.Time_MH=0;
  365. LcdDisStruct.Time_ML=0;
  366. LcdDisStruct.Time_M3=0;
  367. LcdDisStruct.Time_End=0;
  368. User=LcdDisStruct;
  369.  
  370. LcdDisStruct.Time_HH=0xff;
  371. LcdDisStruct.Time_HL=0xff;
  372. LcdDisStruct.Time_MH=0xff;
  373. LcdDisStruct.Time_ML=0xff;
  374. User.T_Num1=LcdDisStruct.T_Num1=0xff;
  375. User.Time_M3=LcdDisStruct.Time_M3=0xff;
  376.  
  377. LcdFlash.Te_Fan=0xff;
  378. LcdFlash.Information=0xff;
  379. LcdFlash.T_Num1=0xff;
  380. LcdFlash.T_Num2=0xff;
  381. LcdFlash.T_Num3=0xff;
  382. LcdFlash.Te_Degree=0xff;
  383. LcdFlash.Fan_Speed=0xff;
  384. LcdFlash.Icon=0xff;
  385. LcdFlash.Date=0xff;
  386. LcdFlash.Time_Start=0xff;
  387. LcdFlash.Time_HH=0xff;
  388. LcdFlash.Time_HL=0xff;
  389. LcdFlash.Time_Degree=0xff;
  390. LcdFlash.Time_MH=0xff;
  391. LcdFlash.Time_ML=0xff;
  392. LcdFlash.Time_M3=0xff;
  393. LcdFlash.Time_End=0xff;
  394.  
  395. PCF8576_Init();
  396.  
  397. for(j=0; j<250; j++)
  398. { for(i=0; i<200; i++); }
  399.  
  400. PWR_UP=0; //enable RF
  401. TRX_CE=0;
  402. TX_EN=0;
  403.  
  404. InitSPI();
  405. InitRf();
  406. //InitENT1(); // ET1=1, EX1=1, EA=0, No ExtInt1
  407.  
  408. key_button_init(); // EKBI=1, EA=0
  409. RTC_Init(); // EWDRT=1, EA=0
  410.  
  411. //InitInt(); // EA=1, IPxH IP0
  412.  
  413. //delay(4);
  414. //setadr_flag = 0;
  415. //if(setadr_flag!=0) //---Jiang
  416. // Set_Address();
  417.  
  418. }
  419.  
  420.  
  421.  
  422. void Pre_Start(void)
  423. {
  424. xdata uchar CalibrationState; //pms
  425.  
  426. CalibrationState = Get_Calibration();
  427. //CalibrationState=CALIBRATION_DONE; // --- Jiang
  428. switch (CalibrationState)
  429. {
  430. case CALIBRATION_DONE:
  431. // Get_SpeedLevel();
  432. Get_SpeedLevel();
  433. Read_Fan_Speed();
  434. NoKeyPressed = 1; //used for Humidity. Auto step "3"
  435. Get_Temperature(0x01);
  436. Get_Options();
  437. Get_DayTime();
  438. Get_ErrorCode();
  439. state_mark=0x01; //Normal operator
  440. Read_Fan_Speed();
  441. NoKeyPressed = 1;
  442. break;
  443.  
  444. case CALIBRATION_NOT_DONE:
  445. Get_SpeedLevel();
  446. Get_StartUpTime();//pms
  447. state_mark=0x0A; //StartUp
  448. // left_right=1;
  449. break;
  450.  
  451. case CALIBRATION_REQ_TO_START:
  452. case CALIBRATION_IN_ACION:
  453. state_mark=0x09; //Calibration
  454. break;
  455. case SOS_ON:
  456. //SOS();
  457. Time_Dis=0;
  458. state_mark=0x0B;
  459. break;
  460.  
  461. }
  462.  
  463. // if (CalibrationState == 3) // SOS, Calibration done
  464. // {
  465. // }else{
  466. // }
  467. //pms, 051229
  468. left_right=1;
  469. key_mark=0xff; //clear button mark
  470. enter_counter=0x00;
  471.  
  472. }
  473.  
  474.  
  475. void Normal_Operator(void)
  476. {
  477. static xdata uchar STATE_READ;
  478. bit BypassClosed = 1;
  479.  
  480. // uint pdata KeyCnt; //zsg 2005-09-09
  481.  
  482. left_right_delay=6; //set key respone
  483. enter_esc_delay=10;
  484. up_down_delay=5;
  485.  
  486.  
  487. if(check_temp>=5) //pms changed from 10 to 15. Changed to 5 - new system using switch
  488. {
  489. // Read_Temp();
  490. // Get_ErrorCode();
  491. if (fireplace) //fireplace
  492. {
  493. User.Information=LcdDisStruct.Information |= 0x08;
  494. }else{
  495. User.Information=LcdDisStruct.Information &= 0xF7;
  496. }
  497.  
  498. check_temp=0;
  499.  
  500. switch (STATE_READ)
  501. {
  502. case STATE_READ_TEMPERATURE:
  503. Read_Temp();
  504. STATE_READ = STATE_READ_ERROR;
  505. break;
  506.  
  507. case STATE_READ_ERROR:
  508. Get_ErrorCode();
  509. STATE_READ = STATE_READ_FAN_SPEED;
  510. break;
  511.  
  512. case STATE_READ_FAN_SPEED:
  513. Read_Fan_Speed();
  514. if ((ProgActive & 0x7F) == 50) //masking out the bit for bypass closed
  515. {
  516. User.Time_Start=LcdDisStruct.Time_Start=1; //display prog running
  517. User.Time_End=LcdDisStruct.Time_End=1;
  518. }else{
  519. User.Time_Start=LcdDisStruct.Time_Start=0;
  520. User.Time_End=LcdDisStruct.Time_End=0;
  521. }
  522. if ((ProgActive & 0x80) == 0x80) BypassClosed = 1; else BypassClosed = 0;
  523. Lcd_Flash(Select_Icon, mask_Icon_ByPass, ~BypassClosed); //pms, 060107
  524.  
  525. STATE_READ = STATE_READ_SPEED_LEVEL;
  526. break;
  527.  
  528. case STATE_READ_SPEED_LEVEL:
  529. Get_SpeedLevel();
  530. STATE_READ = STATE_READ_TEMPERATURE;
  531. break;
  532.  
  533.  
  534. default:
  535. STATE_READ = STATE_READ_TEMPERATURE;
  536. break;
  537. }
  538.  
  539. }
  540.  
  541.  
  542.  
  543. /* if (ProgActive == 100)
  544. {
  545. User.Time_Start=LcdDisStruct.Time_Start=1;
  546. User.Time_End=LcdDisStruct.Time_End=1;
  547. }else{
  548. User.Time_Start=LcdDisStruct.Time_Start=0;
  549. User.Time_End=LcdDisStruct.Time_End=0;
  550. }
  551. */
  552.  
  553.  
  554. if(fireplace_flag) check_fireplace();
  555.  
  556.  
  557. switch (key_mark)
  558. {
  559. case enter_press:state_mark=0x02;
  560. break;
  561. case left_press :key_mark=0xff;
  562. if (service)
  563. {
  564. if(left_right<=1)left_right=1;
  565. Get_Temperature(left_right);
  566. }//else{
  567. // check_cal_time = 0;
  568. // while ((~service)||(check_cal_time>3)); //service button hold down for 10 sec
  569. // if (check_cal_time > 3)
  570. // {
  571. // state_mark = 0x09; // SOS, Calibration
  572. // }
  573. // }
  574. break;
  575. case right_press:key_mark=0xff;
  576. if(left_right>=6)left_right=6;
  577. Get_Temperature(left_right);
  578. break;
  579. case up_press :key_mark=0xff;
  580. LcdDisStruct.Fan_Speed++;
  581. if(LcdDisStruct.Fan_Speed>=3)LcdDisStruct.Fan_Speed=3;
  582. User.Fan_Speed=LcdDisStruct.Fan_Speed;
  583. Chang_SpeedLevel();
  584. break;
  585. case down_press :key_mark=0xff;
  586. LcdDisStruct.Fan_Speed--;
  587. if(LcdDisStruct.Fan_Speed<=1)LcdDisStruct.Fan_Speed=1;
  588. User.Fan_Speed=LcdDisStruct.Fan_Speed;
  589. Chang_SpeedLevel();
  590. break;
  591. case esc_press :
  592. key_mark=0xff;
  593. state_mark=0x01;
  594. key_mark=0x00;
  595. flash(Icon_adr,User.Icon);
  596. enter_counter=0x00;
  597. Get_DayTime();
  598. //Get_StartUpTime();//pms
  599. Get_SpeedLevel();
  600. Get_Temperature(1);
  601. User.Time_M3=LcdDisStruct.Time_M3=0xff;
  602. break;
  603. default:break;
  604. }
  605.  
  606. if(cali_flag)
  607. {
  608. Set_Calibration();
  609. state_mark = 0x09; //SOS, Calibration
  610. }
  611.  
  612.  
  613. if (SOS_flag)
  614. {
  615. Set_SOS(); // Jiang --- for testing
  616. //state_mark = 0x0B; //SOS, Calibration
  617. SOS();
  618.  
  619.  
  620. }
  621.  
  622.  
  623. if ((service == 0)&&(left_right==5)) Display_RPM(RPM_exhaust);
  624. if ((service == 0)&&(left_right==6)) Display_RPM(RPM_supply);
  625.  
  626. if (setflow_flag) //pms, 051013
  627. {
  628. flash(Icon_adr,(User.Icon&0xfb));state_mark=0x0C;
  629. // Set_FanSpeed(); // --- Jiang
  630. // state_mark = 0x05; //Set fan speed
  631. }
  632.  
  633. }
  634.  
  635.  
  636.  
  637. void StartUp(void)
  638. {
  639.  
  640. left_right_delay=6; //set key respone
  641. enter_esc_delay=10;
  642. up_down_delay=5;
  643.  
  644. Display_Error(1);
  645.  
  646. switch (key_mark)
  647. {
  648. case enter_press: key_mark=0xff;
  649. // DisplayStartupTime(StartUpCounter);//pms 051228
  650. break;
  651.  
  652. case left_press : key_mark=0xff;
  653. // if (!service)
  654. // {
  655. // check_cal_time = 0;
  656. // while ((~service)||(check_cal_time>3)); //service button hold down for 10 sec
  657. // if (check_cal_time > 3)
  658. // {
  659. // Set_Calibration();
  660. // state_mark = 0x09; // SOS, Calibration
  661. // }
  662. // }
  663. break;
  664. case right_press:key_mark=0xff;
  665. break;
  666.  
  667. case up_press :key_mark=0xff;
  668. LcdDisStruct.Fan_Speed++;
  669. if(LcdDisStruct.Fan_Speed>=3)LcdDisStruct.Fan_Speed=3;
  670. User.Fan_Speed=LcdDisStruct.Fan_Speed;
  671. Chang_SpeedLevel();
  672. break;
  673. case down_press :key_mark=0xff;
  674. LcdDisStruct.Fan_Speed--;
  675. if(LcdDisStruct.Fan_Speed<=1)LcdDisStruct.Fan_Speed=1;
  676. User.Fan_Speed=LcdDisStruct.Fan_Speed;
  677. Chang_SpeedLevel();
  678. break;
  679. case esc_press :key_mark=0xff;
  680. // DisplayStartupTime(StartUpCounter);//pms 051228
  681. break;
  682. default:break;
  683. }
  684.  
  685. if(cali_flag)
  686. {
  687. Set_Calibration();
  688. state_mark = 0x09; // Calibration
  689. }
  690.  
  691. if (setflow_flag) //pms, 051013
  692. {
  693. flash(Icon_adr,(User.Icon&0xfb));state_mark=0x0C;
  694. // Set_FanSpeed();
  695. // state_mark = 0x05; //Set fan speed
  696. }
  697.  
  698.  
  699. }
  700.  
  701. void Read_Temp(void) //get temperature
  702. {
  703. uchar buf[3]={0,0,0};
  704. uchar Adr=0xFA;//0xff;
  705. uchar Time_Out_Cnt;
  706.  
  707. EKBI=0;
  708. if((temperature_sel==1)||(temperature_sel==2))
  709. {delay(1);
  710. RF_Transmit(Read,1,0x01,buf); //Get T1 T2
  711. do
  712. {
  713. delay(1);
  714. RF_Receive(&Adr,buf);
  715. Time_Out_Cnt++;
  716. if(Time_Out_Cnt>=RF_Delay)
  717. {
  718. Time_Out_Cnt=0;delay(1);
  719. RF_Transmit(Read,1,0x01,buf);
  720. }
  721. } while(Adr!=0x01);
  722. Temperature1=buf[0];
  723. if(temperature_sel==1)Display_Temperature(Temperature1,0x01,0x00);
  724. if(temperature_sel==2)Display_Temperature(buf[1],0x02,0x00);
  725. }
  726. if((temperature_sel==3)||(temperature_sel==4))
  727. {
  728. delay(1);
  729. RF_Transmit(Read,1,0x03,buf); //Get T3 T4
  730. do
  731. {
  732. delay(1);
  733. RF_Receive(&Adr,buf);
  734. Time_Out_Cnt++;
  735. if(Time_Out_Cnt>=RF_Delay)
  736. {
  737. Time_Out_Cnt=0;delay(1);
  738. RF_Transmit(Read,1,0x03,buf);
  739. }
  740. } while(Adr!=0x03);
  741. if(temperature_sel==3)Display_Temperature(buf[0],0x04,0x00);
  742. if(temperature_sel==4)Display_Temperature(buf[1],0x08,0x00);
  743. }
  744. EKBI=1;
  745.  
  746. }
  747.  
  748.  
  749. void Get_Temperature(uchar T)
  750. {
  751. uchar buf[3]={0,0,0};
  752. uchar Adr=0xFA;//0xff;
  753. uchar Time_Out_Cnt;
  754.  
  755.  
  756. switch (T)
  757. {
  758. case 0x01:User.Te_Fan=LcdDisStruct.Te_Fan=0x01;
  759. EKBI=0;
  760. temperature_sel=1;
  761. delay(1);
  762. RF_Transmit(Read,0,0x01,buf); //Get T1
  763. do
  764. {
  765. delay(1);
  766. RF_Receive(&Adr,buf);
  767. Time_Out_Cnt++;
  768. if(Time_Out_Cnt>=RF_Delay)
  769. {
  770. Time_Out_Cnt=0;delay(1);
  771. RF_Transmit(Read,0,0x01,buf);
  772. }
  773. } while(Adr!=0x01);
  774. Temperature1=buf[0];
  775. Display_Temperature(Temperature1,0x01,0x00);
  776. EKBI=1;
  777. break;
  778. case 0x02:User.Te_Fan=LcdDisStruct.Te_Fan=0x02;
  779. EKBI=0;
  780. temperature_sel=2;
  781. delay(1);
  782. RF_Transmit(Read,0,0x02,buf); //Get T2
  783. do
  784. {
  785. delay(1);
  786. RF_Receive(&Adr,buf);
  787. Time_Out_Cnt++;
  788. if(Time_Out_Cnt>=RF_Delay)
  789. {
  790. Time_Out_Cnt=0;delay(1);
  791. RF_Transmit(Read,0,0x02,buf);
  792. }
  793. } while(Adr!=0x02);
  794. Display_Temperature(buf[0],0x02,0x00);
  795. EKBI=1;
  796. break;
  797. case 0x03 :User.Te_Fan=LcdDisStruct.Te_Fan=0x04;
  798. EKBI=0;
  799. temperature_sel=3;
  800. delay(1);
  801. RF_Transmit(Read,0,0x03,buf); //Get T3
  802. do
  803. {
  804. delay(1);
  805. RF_Receive(&Adr,buf);
  806. Time_Out_Cnt++;
  807. if(Time_Out_Cnt>=RF_Delay)
  808. {
  809. Time_Out_Cnt=0;delay(1);
  810. RF_Transmit(Read,0,0x03,buf);
  811. }
  812. } while(Adr!=0x03);
  813. Display_Temperature(buf[0],0x04,0x00);
  814. EKBI=1;
  815. break;
  816. case 0x04:User.Te_Fan=LcdDisStruct.Te_Fan=0x08;
  817. EKBI=0;
  818. temperature_sel=4;
  819. delay(1);
  820. RF_Transmit(Read,0,0x04,buf); //Get T4
  821. do
  822. {
  823. delay(1);
  824. RF_Receive(&Adr,buf);
  825. Time_Out_Cnt++;
  826. if(Time_Out_Cnt>=RF_Delay)
  827. {
  828. Time_Out_Cnt=0;delay(1);
  829. RF_Transmit(Read,0,0x04,buf);
  830. }
  831. } while(Adr!=0x04);
  832.  
  833. Display_Temperature(buf[0],0x08,0x00);
  834. EKBI=1;
  835. break;
  836. case 0x05:User.Te_Fan=LcdDisStruct.Te_Fan=0x10;
  837. EKBI=0;
  838. temperature_sel=0;
  839. delay(1);
  840. RF_Transmit(Read,0,0x05,buf); //Get S1
  841. // RF_Transmit(Read,2,0x05,buf); //Get S1
  842. do
  843. {
  844. delay(1);
  845. RF_Receive(&Adr,buf);
  846. Time_Out_Cnt++;
  847. if(Time_Out_Cnt>=RF_Delay)
  848. {
  849. Time_Out_Cnt=0;delay(1);
  850. RF_Transmit(Read,0,0x05,buf);
  851. // RF_Transmit(Read,2,0x05,buf);
  852. }
  853. } while(Adr!=0x05);
  854. Display_Speed(buf[0]);//,0x10,0x00); //removed 060105, inserted 060329
  855. RPM_exhaust = buf[1] << 8;
  856. RPM_exhaust = RPM_exhaust + buf[2];
  857. //Display_RPM(RPM_exhaust); //pms 060101
  858. EKBI=1;
  859. break;
  860. case 0x06:User.Te_Fan=LcdDisStruct.Te_Fan=0x20;
  861. EKBI=0;
  862. temperature_sel=0;
  863. delay(1);
  864. RF_Transmit(Read,0,0x06,buf); //Get S2
  865. do
  866. {
  867. delay(1);
  868. RF_Receive(&Adr,buf);
  869. Time_Out_Cnt++;
  870. if(Time_Out_Cnt>=RF_Delay)
  871. {
  872. Time_Out_Cnt=0;delay(1);
  873. RF_Transmit(Read,0,0x06,buf);
  874. }
  875. } while(Adr!=0x06);
  876. Display_Speed(buf[0]);//,0x20,0x00); //removed 060105, inserted 060329
  877. RPM_supply = buf[1] << 8; //pms
  878. RPM_supply = RPM_supply + buf[2]; //pms
  879. //Display_RPM(RPM_supply); //pms 060101
  880. EKBI=1;
  881. break;
  882. default:break;
  883. }
  884. }
  885.  
  886.  
  887. void Get_SpeedLevel()
  888. {
  889. uchar buf[3]={0,0,0};
  890. uchar Adr=0xFA;//0xff;
  891. uchar Time_Out_Cnt;
  892. //uchar Time_Out;
  893. delay(1);
  894. RF_Transmit(Read,0,13,buf); //Get Speed level
  895. do
  896. {
  897. delay(1);
  898. RF_Receive(&Adr,buf);
  899. Time_Out_Cnt++;
  900. if(Time_Out_Cnt>=10)//wait 2s
  901. {
  902. // Time_Out++;
  903. // if(Time_Out>5){error_flag=1;break;}
  904. // Display_Error(0x0d);
  905. Time_Out_Cnt=0;delay(1);
  906. RF_Transmit(Read,0,13,buf);
  907. }
  908. } while(Adr!=13);
  909. // Display_Error(buf[0]); //pms, 051228
  910. if(buf[0]>=3)buf[0]=3;
  911. if(buf[0]<=1)buf[0]=1;
  912. User.Fan_Speed=LcdDisStruct.Fan_Speed=buf[0];
  913. }
  914.  
  915. void Chang_SpeedLevel(void)
  916. {
  917. uchar buf[3]={0,0,0};
  918. uchar Adr=0xFA;//0xff;
  919. uchar Time_Out_Cnt;
  920.  
  921. buf[0]=User.Fan_Speed;
  922. delay(1);
  923. RF_Transmit(Write,0,13,buf);
  924. do
  925. {
  926. delay(1);
  927. RF_Receive(&Adr,buf);
  928. Time_Out_Cnt++;
  929. // if(Time_Out_Cnt>=RF_Delay)
  930. if(Time_Out_Cnt>=20) //pms 051230, quickfix
  931. {
  932. Time_Out_Cnt=0;delay(1);
  933. buf[0]=User.Fan_Speed; //pms 051230, quickfix
  934. RF_Transmit(Write,0,13,buf);
  935. }
  936. } while(Adr!=13);
  937. }
  938.  
  939.  
  940. void Get_Options(void)
  941. {
  942. uchar buf[3]={0,0,0};
  943. uchar Adr=0xFA;//0xff;
  944. uchar Time_Out_Cnt;
  945.  
  946. delay(1);
  947. RF_Transmit(Read,0,23,buf); //Get Speed level
  948. do
  949. {
  950. delay(1);
  951. RF_Receive(&Adr,buf);
  952. Time_Out_Cnt++;
  953. if(Time_Out_Cnt>=RF_Delay)
  954. {
  955. Time_Out_Cnt=0;delay(1);
  956. RF_Transmit(Read,0,23,buf);
  957. }
  958. } while(Adr!=23);
  959.  
  960. options=buf[0];
  961. if(options&0x01)fireplace=0xff;
  962. User.Icon=LcdDisStruct.Icon=0x07; //pms, 060403 inserted SetSpeed Ican again
  963. // User.Icon=LcdDisStruct.Icon=0x03; //pms, 060110 remove SetSpeed Icon
  964.  
  965. if(options&0x02)User.Icon=LcdDisStruct.Icon|=0x20; //pre heater
  966. if(options&0x04)User.Icon=LcdDisStruct.Icon|=0x10; //by-pass
  967. }
  968.  
  969.  
  970. void Get_ErrorCode(void)
  971. {
  972. uchar buf[3]={0,0,0};
  973. uchar Adr=0xFA;//0xff;
  974. uchar Time_Out_Cnt;
  975. //xdata uchar Error_number =0; //pms, 060107
  976. xdata uchar Error_minor =0;
  977. bit Pressure_fault = 0;
  978. bit Fan_fault = 0;
  979. bit AirFilter_Dirty = 0;
  980. bit Temperature_fault =0;
  981.  
  982.  
  983.  
  984. delay(1);
  985. RF_Transmit(Read,0,20,buf); //Get error code
  986. do
  987. {
  988. delay(1);
  989. RF_Receive(&Adr,buf);
  990. Time_Out_Cnt++;
  991. if(Time_Out_Cnt>=RF_Delay)
  992. {
  993. Time_Out_Cnt=0;delay(1);
  994. RF_Transmit(Read,0,20,buf);
  995. }
  996. } while(Adr!=20);
  997. error_code=buf[0];
  998.  
  999. Error_number =0;
  1000. AirFilter_fault = 0;
  1001. Pressure_fault = 0;
  1002. Fan_fault = 0;
  1003. RedSysPress_fault = 0;
  1004. Temperature_fault =0;
  1005.  
  1006. if((error_code&0xF0) == 0x10){AirFilter_Dirty = 1; }else{AirFilter_Dirty = 0;} // ERR 002 AirFilter
  1007. if((error_code&0xF0) == 0x20){Pressure_fault = 1; Error_number =4;} // ERR 004 Pressure
  1008. if((error_code&0xF0) == 0x50){Fan_fault = 1; Error_number =5;} // ERR 005 Fan
  1009. if((error_code&0xF0) == 0x70){RedSysPress_fault = 1; Error_number =6;} // ERR 006 Reduced system pressure
  1010. if((error_code&0xF0) == 0x80){Temperature_fault = 1; Error_number =3;} // ERR 003 Temperature
  1011.  
  1012. Error_minor = (error_code & 0x0F);
  1013.  
  1014. if (AirFilter_Dirty)
  1015. {
  1016. User.Icon=LcdDisStruct.Icon|=0x08; //set filter icon
  1017. Lcd_Flash(Select_Icon, mask_Icon_Filter, ON); //flash filter icon
  1018. if (Error_minor & 0x02)
  1019. {
  1020. Error_number =2;
  1021. AirFilter_fault = 1;
  1022. }
  1023. }else{
  1024. User.Icon=LcdDisStruct.Icon&=0xf7; //close the filter icon
  1025. }
  1026.  
  1027. T1_fault =0;
  1028. T2_fault =0;
  1029. T3_fault =0;
  1030. T4_fault =0;
  1031. if(Temperature_fault)
  1032. {
  1033. if(Error_minor & 0x01){T1_fault=1;} //T1 temperature sensor error
  1034. if(Error_minor & 0x02){T2_fault=1;}
  1035. if(Error_minor & 0x04){T3_fault=1;}
  1036. if(Error_minor & 0x08){T4_fault=1;}
  1037. }
  1038.  
  1039. S1_fault = 0;
  1040. S2_fault = 0;
  1041. if(Pressure_fault)
  1042. {
  1043. if(Error_minor & 0x01){S1_fault=1;} //T1 temperature sensor error
  1044. if(Error_minor & 0x02){S2_fault=1;}
  1045. }
  1046.  
  1047. if(Fan_fault)
  1048. {
  1049. if(Error_minor & 0x01){S1_fault=1;} //T1 temperature sensor error
  1050. if(Error_minor & 0x02){S2_fault=1;}
  1051. }
  1052.  
  1053.  
  1054. if (Error_number != 0)
  1055. {
  1056. Display_Error(Error_number);
  1057. temperature_sel=0; //avoid temperature update overwrite error
  1058. Display_Temperature(0,0,0);
  1059. }
  1060. }
  1061.  
  1062.  
  1063. void Set_SOS(void)
  1064. {
  1065. uchar Buf[3]={0,0,0};
  1066. uchar Adr=0xFA;//0xff;
  1067. uchar Time_Out_Cnt;
  1068.  
  1069. Buf[0]= 0x80;//value; //start calibration
  1070. delay(1);
  1071. RF_Transmit(Write,0,24,Buf);
  1072. do
  1073. {
  1074. delay(1);
  1075. RF_Receive(&Adr,Buf);
  1076. Time_Out_Cnt++;
  1077. if(Time_Out_Cnt>=RF_Delay)
  1078. {
  1079. Time_Out_Cnt=0;delay(1);
  1080. Buf[0]= 0x80;//value; //start calibration
  1081. RF_Transmit(Write,0,24,Buf);
  1082. }
  1083. } while(Adr!=24);
  1084. }
  1085.  
  1086.  
  1087. void Set_Calibration(void)
  1088. {
  1089. uchar buf[3]={0,0,0};
  1090. uchar Adr=0xFA;//0xff;
  1091. uchar Time_Out_Cnt;
  1092.  
  1093. buf[0]= 1;//value; //start calibration
  1094. delay(1);
  1095. RF_Transmit(Write,0,24,buf);
  1096. do
  1097. {
  1098. delay(1);
  1099. RF_Receive(&Adr,buf);
  1100. Time_Out_Cnt++;
  1101. if(Time_Out_Cnt>=RF_Delay)
  1102. {
  1103. Time_Out_Cnt=0;delay(1);
  1104. buf[0]= 1;//value; //start calibration
  1105. RF_Transmit(Write,0,24,buf);
  1106. }
  1107. } while(Adr!=24);
  1108. }
  1109.  
  1110.  
  1111. uchar Get_Calibration()
  1112. {
  1113. uchar buf[3]={0,0,0};
  1114. uchar Adr=0xFA;//0xff;
  1115. uchar Time_Out_Cnt;
  1116. //uchar Time_Out;
  1117. delay(1);
  1118. RF_Transmit(Read,0,24,buf); //Get Speed level
  1119. do
  1120. {
  1121. delay(1);
  1122. RF_Receive(&Adr,buf);
  1123. Time_Out_Cnt++;
  1124. // Display_Error(Time_Out_Cnt); //pms, 051228
  1125. if(Time_Out_Cnt>=10)//wait 2s
  1126. {
  1127. // Time_Out++;
  1128. // if(Time_Out>5){error_flag=1;break;}
  1129. // Display_Error(0x0d);
  1130. Time_Out_Cnt=0;delay(1);
  1131. RF_Transmit(Read,0,24,buf);
  1132. }
  1133. } while(Adr!=24);
  1134.  
  1135. return buf[0];
  1136. }
Add Comment
Please, Sign In to add comment