MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 1 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00001 00002 ; CC8E Version 1.2A, Copyright (c) B Knudsen Data 00003 ; C compiler for the PIC18 microcontrollers 00004 ; ************ 9. Oct 2008 17:18 ************* 00005 00006 processor PIC18F2580 00007 radix DEC 00008 Warning[230]: __CONFIG has been deprecated for PIC18 devices. Use directive CONFIG. 300000 46FF 00009 __config 0x300001, 0x46 Warning[230]: __CONFIG has been deprecated for PIC18 devices. Use directive CONFIG. 00010 __config 0x300002, 0xE Warning[230]: __CONFIG has been deprecated for PIC18 devices. Use directive CONFIG. 300002 0F0E 00011 __config 0x300003, 0xF Warning[230]: __CONFIG has been deprecated for PIC18 devices. Use directive CONFIG. 300004 80FF 00012 __config 0x300005, 0x80 Warning[230]: __CONFIG has been deprecated for PIC18 devices. Use directive CONFIG. 300006 FF81 00013 __config 0x300006, 0x81 Warning[230]: __CONFIG has been deprecated for PIC18 devices. Use directive CONFIG. 00014 __config 0x300008, 0xF Warning[230]: __CONFIG has been deprecated for PIC18 devices. Use directive CONFIG. 300008 C00F 00015 __config 0x300009, 0xC0 Warning[230]: __CONFIG has been deprecated for PIC18 devices. Use directive CONFIG. 00016 __config 0x30000A, 0xF Warning[230]: __CONFIG has been deprecated for PIC18 devices. Use directive CONFIG. 30000A C00F 00017 __config 0x30000B, 0xC0 Warning[230]: __CONFIG has been deprecated for PIC18 devices. Use directive CONFIG. 00018 __config 0x30000C, 0xF Warning[230]: __CONFIG has been deprecated for PIC18 devices. Use directive CONFIG. 30000C 400F 00019 __config 0x30000D, 0x40 00020 00000FFC 00021 STKPTR EQU 0xFFC 00000FF9 00022 PCL EQU 0xFF9 00000FF8 00023 TBLPTRU EQU 0xFF8 00000FF7 00024 TBLPTRH EQU 0xFF7 00000FF6 00025 TBLPTRL EQU 0xFF6 00000FF6 00026 TBLPTR EQU 0xFF6 00000FF5 00027 TABLAT EQU 0xFF5 00000FF4 00028 PRODH EQU 0xFF4 00000FF3 00029 PRODL EQU 0xFF3 00000FEF 00030 INDF0 EQU 0xFEF 00000FEE 00031 POSTINC0 EQU 0xFEE 00000FED 00032 POSTDEC0 EQU 0xFED 00000FEA 00033 FSR0H EQU 0xFEA 00000FE9 00034 FSR0L EQU 0xFE9 00000FE9 00035 FSR0 EQU 0xFE9 00000FE8 00036 WREG EQU 0xFE8 00000FE7 00037 INDF1 EQU 0xFE7 00000FE6 00038 POSTINC1 EQU 0xFE6 00000FE5 00039 POSTDEC1 EQU 0xFE5 00000FE1 00040 FSR1 EQU 0xFE1 00000FE0 00041 BSR EQU 0xFE0 00000FDE 00042 POSTINC2 EQU 0xFDE MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 2 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000FD9 00043 FSR2 EQU 0xFD9 00000FD8 00044 STATUS EQU 0xFD8 00000000 00045 Carry EQU 0 00000002 00046 Zero_ EQU 2 00000FD7 00047 TMR0H EQU 0xFD7 00000FD6 00048 TMR0L EQU 0xFD6 00000FD5 00049 T0CON EQU 0xFD5 00000FCF 00050 TMR1H EQU 0xFCF 00000FCE 00051 TMR1L EQU 0xFCE 00000FCD 00052 T1CON EQU 0xFCD 00000FCB 00053 PR2 EQU 0xFCB 00000FCA 00054 T2CON EQU 0xFCA 00000FC9 00055 SSPBUF EQU 0xFC9 00000FC8 00056 SSPADD EQU 0xFC8 00000FC7 00057 SSPSTAT EQU 0xFC7 00000FC6 00058 SSPCON1 EQU 0xFC6 00000FC5 00059 SSPCON2 EQU 0xFC5 00000FC1 00060 ADCON1 EQU 0xFC1 00000FBD 00061 CCP1CON EQU 0xFBD 00000FB1 00062 T3CON EQU 0xFB1 00000FAF 00063 SPBRG EQU 0xFAF 00000FAE 00064 RCREG EQU 0xFAE 00000FAD 00065 TXREG EQU 0xFAD 00000FA9 00066 EEADR EQU 0xFA9 00000FA8 00067 EEDATA EQU 0xFA8 00000FA7 00068 EECON2 EQU 0xFA7 00000F9B 00069 OSCTUNE EQU 0xF9B 00000F94 00070 TRISC EQU 0xF94 00000F93 00071 TRISB EQU 0xF93 00000F92 00072 TRISA EQU 0xF92 00000F82 00073 PORTC EQU 0xF82 00000F81 00074 PORTB EQU 0xF81 00000F80 00075 PORTA EQU 0xF80 00000F73 00076 CIOCON EQU 0xF73 00000F6F 00077 CANCON EQU 0xF6F 00000F6E 00078 CANSTAT EQU 0xF6E 00000006 00079 PEIE EQU 6 00000007 00080 GIE EQU 7 00000000 00081 RBIP EQU 0 00000005 00082 INTEDG1 EQU 5 00000006 00083 INTEDG0 EQU 6 00000007 00084 RBPU EQU 7 00000000 00085 INT1IF EQU 0 00000003 00086 INT1IE EQU 3 00000006 00087 INT1IP EQU 6 00000003 00088 PSA EQU 3 00000006 00089 T08BIT EQU 6 00000007 00090 TMR0ON EQU 7 00000003 00091 TO EQU 3 00000007 00092 IPEN EQU 7 00000002 00093 TMR2ON EQU 2 00000002 00094 RW_ EQU 2 00000007 00095 SMP EQU 7 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 3 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000004 00096 CKP EQU 4 00000007 00097 WCOL EQU 7 00000000 00098 SEN EQU 0 00000001 00099 RSEN EQU 1 00000002 00100 PEN EQU 2 00000003 00101 RCEN EQU 3 00000004 00102 ACKEN EQU 4 00000005 00103 ACKDT EQU 5 00000006 00104 ACKSTAT EQU 6 00000000 00105 ADON EQU 0 00000000 00106 TMR3ON EQU 0 00000000 00107 TX9D EQU 0 00000001 00108 TRMT EQU 1 00000002 00109 BRGH EQU 2 00000004 00110 SYNC EQU 4 00000005 00111 TXEN EQU 5 00000006 00112 TX9 EQU 6 00000001 00113 OERR EQU 1 00000003 00114 ADDEN EQU 3 00000004 00115 CREN EQU 4 00000006 00116 RX9 EQU 6 00000007 00117 SPEN EQU 7 00000000 00118 RD EQU 0 00000001 00119 WR EQU 1 00000002 00120 WREN EQU 2 00000004 00121 FREE EQU 4 00000006 00122 CFGS EQU 6 00000007 00123 EEPGD EQU 7 00000001 00124 TMR3IP EQU 1 00000001 00125 TMR3IF EQU 1 00000003 00126 BCLIF EQU 3 00000001 00127 TMR3IE EQU 1 00000000 00128 TMR1IP EQU 0 00000001 00129 TMR2IP EQU 1 00000000 00130 TMR1IF EQU 0 00000001 00131 TMR2IF EQU 1 00000003 00132 SSPIF EQU 3 00000004 00133 TXIF EQU 4 00000005 00134 RCIF EQU 5 00000000 00135 TMR1IE EQU 0 00000001 00136 TMR2IE EQU 1 00000013 00137 _TaskS1 EQU 0x13 00000001 00138 _TESTPIN EQU 1 00000005 00139 K_TVP EQU 5 00000002 00140 K_JM EQU 2 00000000 00141 KstateJM EQU 0 00000001 00142 KstateTVP EQU 1 00000000 00143 VPU_OUT EQU 0 00000004 00144 GW_IN EQU 4 00000007 00145 GR_ON EQU 7 00000100 00146 Boards EQU 0x100 00000204 00147 BoardNumb EQU 0x204 00000205 00148 AvarExpl EQU 0x205 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 4 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000206 00149 AvarGroup EQU 0x206 00000004 00150 stateJM EQU 4 00000005 00151 stateOS EQU 5 00000207 00152 uptime_sec EQU 0x207 0000020B 00153 tmp_sec EQU 0x20B 00000015 00154 clk_buff EQU 0x15 00000016 00155 bcd_min EQU 0x16 00000017 00156 bcd_hr EQU 0x17 00000018 00157 bcd_day EQU 0x18 00000019 00158 bcd_date EQU 0x19 0000001A 00159 bcd_mns EQU 0x1A 0000001B 00160 bcd_yr EQU 0x1B 00000006 00161 corrected_octbr EQU 6 00000007 00162 corrected_march EQU 7 0000001D 00163 ind_states EQU 0x1D 0000001E 00164 ind_blink EQU 0x1E 0000001F 00165 ind_live EQU 0x1F 0000020C 00166 last_event EQU 0x20C 00000020 00167 as_state0 EQU 0x20 00000006 00168 as_ru EQU 6 00000005 00169 as_du EQU 5 00000000 00170 as_allred EQU 0 00000001 00171 as_zu EQU 1 00000022 00172 as_state1 EQU 0x22 00000022 00173 as_faza EQU 0x22 00000023 00174 as_ctrl EQU 0x23 00000060 00175 rs_buff EQU 0x60 00000024 00176 alarms_cnt EQU 0x24 00000025 00177 curr_alarm_day EQU 0x25 00000026 00178 Faza EQU 0x26 0000002A 00179 current_prg EQU 0x2A 0000002B 00180 current_step EQU 0x2B 0000002C 00181 current_faza EQU 0x2C 0000002D 00182 current_delay EQU 0x2D 0000002E 00183 next_step EQU 0x2E 0000002F 00184 prev_faza EQU 0x2F 00000030 00185 tvp_step EQU 0x30 00000031 00186 prom_step EQU 0x31 00000032 00187 faza2change EQU 0x32 00000033 00188 fazaRemoteDelay EQU 0x33 00000034 00189 fazaRDTillTimeDH EQU 0x34 00000035 00190 fazaRDTillTimeEH EQU 0x35 00000036 00191 fazaRDTillTimeDM EQU 0x36 00000037 00192 fazaRDTillTimeEM EQU 0x37 00000038 00193 sys_flags EQU 0x38 00000000 00194 GreenWave EQU 0 00000001 00195 Peshehodik EQU 1 00000002 00196 ASUDD EQU 2 00000003 00197 GSMGPRS EQU 3 00000039 00198 RedDelay EQU 0x39 0000003A 00199 FazesCnt EQU 0x3A 0000003B 00200 GreenWaveDir EQU 0x3B 0000003C 00201 GreenWaveDelay EQU 0x3C MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 5 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0000003C 00202 PeshehodnikDelay EQU 0x3C 0000003D 00203 GWmask EQU 0x3D 00000FB2 00204 TMR3 EQU 0xFB2 00000300 00205 timeGW EQU 0x300 00000302 00206 GWCorrCntMs EQU 0x302 00000304 00207 PrevTimeGW EQU 0x304 00000000 00208 Red0Logged EQU 0 00000001 00209 Red1Logged EQU 1 00000002 00210 Red2Logged EQU 2 00000003 00211 Red3Logged EQU 3 0000003E 00212 EventStates EQU 0x3E 00000041 00213 tmrvpu EQU 0x41 00000043 00214 vpu_time EQU 0x43 00000045 00215 vpu_cmd EQU 0x45 00000046 00216 vpu_cmd_loc EQU 0x46 0000020E 00217 Trspt_ID EQU 0x20E 000000C8 00218 FlashSize EQU 0xC8 00000002 00219 fazes12 EQU 2 00000047 00220 sms_nbr EQU 0x47 00000003 00221 lead_zero EQU 3 00000148 00222 gsm_buff EQU 0x148 000002C0 00223 gsm_buffACK EQU 0x2C0 000001FC 00224 ptr_gsm_buff EQU 0x1FC 00000048 00225 gsm_rx_cnt EQU 0x48 00000049 00226 gsm_rx_timeout EQU 0x49 0000004B 00227 reg_code EQU 0x4B 0000004C 00228 sms_id EQU 0x4C 0000004E 00229 sms_msg EQU 0x4E 0000004F 00230 sms_ldt EQU 0x4F 00000050 00231 sms_mess_begin EQU 0x50 00000052 00232 sms_mess_lenght EQU 0x52 00000054 00233 CRC EQU 0x54 00000000 00234 svrSTATUS EQU 0x00 00000001 00235 svrBSR EQU 0x01 00000002 00236 svrWREG EQU 0x02 000000CA 00237 softTimer EQU 0xCA 00000056 00238 tTimeout EQU 0x56 00000058 00239 previousTMR0 EQU 0x58 00000059 00240 subClock EQU 0x59 00000005 00241 sample EQU 0x05 00000006 00242 i_2 EQU 0x06 00000007 00243 mask EQU 0x07 00000011 00244 dat EQU 0x11 00000000 00245 ack EQU 0 00000F7F 00246 msec EQU 0xF7F 00000F7F 00247 i_3 EQU 0xF7F 00000006 00248 adress EQU 0x06 0000000D 00249 addr EQU 0x0D 0000000F 00250 lenght EQU 0x0F 00000010 00251 ptr EQU 0x10 0000000C 00252 addr_2 EQU 0x0C 0000000E 00253 rez EQU 0x0E 00000008 00254 addr_3 EQU 0x08 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 6 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0000000A 00255 val EQU 0x0A 00000009 00256 addr_4 EQU 0x09 00000005 00257 event_cod EQU 0x05 00000006 00258 adr_2 EQU 0x06 0000000D 00259 h0 EQU 0x0D 0000000E 00260 m0 EQU 0x0E 0000000F 00261 h1 EQU 0x0F 00000010 00262 m1 EQU 0x10 00000F7F 00263 idx0 EQU 0xF7F 00000F7F 00264 idx1 EQU 0xF7F 00000008 00265 day EQU 0x08 00000009 00266 i_4 EQU 0x09 0000000A 00267 j_2 EQU 0x0A 0000000B 00268 base EQU 0x0B 00000005 00269 tmp1 EQU 0x05 00000006 00270 tmp2 EQU 0x06 00000007 00271 tmp3 EQU 0x07 00000005 00272 prg EQU 0x05 00000006 00273 step EQU 0x06 00000007 00274 base_2 EQU 0x07 00000005 00275 prg_2 EQU 0x05 00000006 00276 base_3 EQU 0x06 00000005 00277 faza EQU 0x05 00000006 00278 base_4 EQU 0x06 00000005 00279 from_faza EQU 0x05 00000006 00280 to_faza EQU 0x06 00000007 00281 tact_step EQU 0x07 00000008 00282 base_5 EQU 0x08 0000000A 00283 base_to EQU 0x0A 0000005A 00284 _TaskS2 EQU 0x5A 0000005B 00285 _TaskS3 EQU 0x5B 0000005C 00286 _TaskS4 EQU 0x5C 0000005D 00287 _TaskS5 EQU 0x5D 0000005E 00288 _TaskS6 EQU 0x5E 0000005F 00289 _TaskS7 EQU 0x5F 000000E2 00290 _TaskS8 EQU 0xE2 000000E3 00291 _TaskS9 EQU 0xE3 000000E4 00292 _TaskS10 EQU 0xE4 000000E5 00293 _TaskS11 EQU 0xE5 000000E6 00294 _TaskS12 EQU 0xE6 00000006 00295 cmd EQU 0x06 000000E7 00296 _TaskS13 EQU 0xE7 000000EA 00297 rcv EQU 0xEA 000000EB 00298 tcicl EQU 0xEB 000000ED 00299 cfg_size EQU 0xED 00000005 00300 addr_5 EQU 0x05 00000005 00301 i_5 EQU 0x05 00000007 00302 addr_6 EQU 0x07 00000008 00303 dat_2 EQU 0x08 00000000 00304 ack_2 EQU 0 000000EF 00305 _TaskS14 EQU 0xEF 00000004 00306 flash EQU 4 00000005 00307 i_7 EQU 0x05 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 7 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000006 00308 adr_3 EQU 0x06 00000005 00309 i_8 EQU 0x05 00000006 00310 cnt EQU 0x06 00000007 00311 state_2 EQU 0x07 00000005 00312 i_9 EQU 0x05 00000006 00313 cnt_2 EQU 0x06 00000007 00314 state_3 EQU 0x07 00000008 00315 rtcreg EQU 0x08 00000009 00316 rtcvalue EQU 0x09 00000005 00317 cnt_3 EQU 0x05 00000008 00318 tmp_2 EQU 0x08 00000005 00319 _hour EQU 0x05 00000006 00320 _min EQU 0x06 00000007 00321 _day EQU 0x07 00000005 00322 year EQU 0x05 00000009 00323 adr_4 EQU 0x09 0000000A 00324 rez_2 EQU 0x0A 000000F6 00325 _TaskS15 EQU 0xF6 00000005 00326 idat EQU 0x05 00000000 00327 ack_3 EQU 0 00000148 00328 asudd_buff_tx EQU 0x148 0000015A 00329 asudd_buff_rx EQU 0x15A 0000015F 00330 asudd_err_code EQU 0x15F 00000160 00331 asudd_du_mode EQU 0x160 00000161 00332 asudd_zu_mode EQU 0x161 00000162 00333 asudd_faze EQU 0x162 00000201 00334 ACrc EQU 0x201 00000201 00335 cLow EQU 0x201 00000202 00336 cHigh EQU 0x202 00000203 00337 i_10 EQU 0x203 00000200 00338 i_11 EQU 0x200 00000200 00339 i_12 EQU 0x200 00000200 00340 ACrc_2 EQU 0x200 00000200 00341 cLow_2 EQU 0x200 00000201 00342 cHigh_2 EQU 0x201 00000202 00343 i_13 EQU 0x202 000000F7 00344 _TaskS16 EQU 0xF7 00000005 00345 i_14 EQU 0x05 000000F8 00346 trys EQU 0xF8 00000005 00347 i_15 EQU 0x05 00000005 00348 i_16 EQU 0x05 00000005 00349 i_17 EQU 0x05 00000006 00350 rez_3 EQU 0x06 00000005 00351 i_18 EQU 0x05 00000006 00352 j_3 EQU 0x06 00000005 00353 cnt_4 EQU 0x05 00000005 00354 i_19 EQU 0x05 00000005 00355 i_20 EQU 0x05 00000005 00356 i_21 EQU 0x05 00000005 00357 mode EQU 0x05 00000009 00358 hi EQU 0x09 0000000A 00359 lo EQU 0x0A 00000007 00360 rez_4 EQU 0x07 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 8 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000005 00361 nbr EQU 0x05 00000008 00362 nbr_2 EQU 0x08 00000006 00363 nbr_3 EQU 0x06 00000009 00364 nbr_4 EQU 0x09 0000000A 00365 tmp_3 EQU 0x0A 00000000 00366 flag EQU 0 00000005 00367 numb EQU 0x05 00000006 00368 ptr_2 EQU 0x06 00000007 00369 addr_7 EQU 0x07 00000008 00370 snd EQU 0x08 00000007 00371 nbr_5 EQU 0x07 00000008 00372 i_22 EQU 0x08 00000000 00373 vpu_start EQU 0 00000001 00374 gw_st EQU 1 00000003 00375 vpu_cnt EQU 0x03 00000005 00376 trspID EQU 0x05 00000007 00377 i_23 EQU 0x07 00000008 00378 j_4 EQU 0x08 00000009 00379 tmout EQU 0x09 00000005 00380 i_24 EQU 0x05 000000F9 00381 _TaskS17 EQU 0xF9 000000FA 00382 i_25 EQU 0xFA 000000FB 00383 t_jm EQU 0xFB 000000FC 00384 t_tvp EQU 0xFC 00000005 00385 new_prg EQU 0x05 000000FD 00386 ln EQU 0xFD 00000006 00387 flag_2 EQU 6 000000FE 00388 dir EQU 0xFE 00000005 00389 diff EQU 0x05 00000007 00390 tmhalf EQU 0x07 00000005 00391 C17cnt EQU 0x05 00000005 00392 C19cnt EQU 0x05 00000005 00393 base_6 EQU 0x05 00000005 00394 mask_2 EQU 0x05 00000005 00395 tmp_4 EQU 0x05 00000F7F 00396 i_26 EQU 0xF7F 00000F7F 00397 j_5 EQU 0xF7F 00000005 00398 i_27 EQU 0x05 00000006 00399 j_6 EQU 0x06 00000005 00400 i_28 EQU 0x05 00000F7F 00401 ln_2 EQU 0xF7F 00000F7F 00402 rez_5 EQU 0xF7F 00000F7F 00403 ln_3 EQU 0xF7F 00000F7F 00404 ln_4 EQU 0xF7F 00000F7F 00405 ln_5 EQU 0xF7F 00000F7F 00406 ln_6 EQU 0xF7F 00000F7F 00407 state_4 EQU 0xF7F 00000F7F 00408 rez_6 EQU 0xF7F 0000000A 00409 numb_2 EQU 0x0A 0000000B 00410 color EQU 0x0B 0000000C 00411 syst EQU 0x0C 0000000D 00412 tmp_5 EQU 0x0D 0000000E 00413 pos EQU 0x0E MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 9 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0000000F 00414 ptr_3 EQU 0x0F 00000011 00415 bt EQU 0x11 00000012 00416 C23cnt EQU 0x12 00000012 00417 C24cnt EQU 0x12 00000005 00418 ctrl EQU 0x05 00000006 00419 lmp EQU 0x06 00000007 00420 i_29 EQU 0x07 00000008 00421 x EQU 0x08 00000009 00422 colr EQU 0x09 00000005 00423 i_30 EQU 0x05 00000006 00424 cicl EQU 0x06 00000007 00425 prg_3 EQU 0x07 00000008 00426 h0_2 EQU 0x08 00000009 00427 m0_2 EQU 0x09 0000000A 00428 h1_2 EQU 0x0A 0000000B 00429 m1_2 EQU 0x0B 0000000C 00430 rez_7 EQU 0x0C 00000250 00431 i EQU 0x250 00000251 00432 j EQU 0x251 00000253 00433 comp_cmd EQU 0x253 00000254 00434 last_state EQU 0x254 00000148 00435 adr EQU 0x148 00000F7F 00436 nbr_6 EQU 0xF7F 00000F7F 00437 i_31 EQU 0xF7F 00000009 00438 ci EQU 0x09 00439 000004 00440 ORG 0x0004 000004 EFDA F018 00441 GOTO main 00442 00443 ; FILE main.c 00444 ;#define EMUL 1 00445 ; 00446 ;#pragma chip PIC18F2580 00447 ; 00448 ;#pragma config[1] = 0x46 00449 ;// PLL 4x4=16Mhz 00450 ; 00451 ;#pragma config[2] = 0x0E 00452 ;#pragma config[3] = 0x0F 00453 ;#pragma config[5] = 0x80 00454 ;#pragma config[6] = 0x81 00455 ; 00456 ;// core read protect 00457 ;#pragma config[8] = 0x00 00458 ;#pragma config[9] = 0x80 00459 ;#pragma config[8] = 0x0F 00460 ;#pragma config[9] = 0xC0 00461 ;// open table read/write 00462 ;#pragma config[0x0a] = 0x0f 00463 ;#pragma config[0x0b] = 0xc0 00464 ;#pragma config[0x0c] = 0x0f 00465 ;#pragma config[0x0d] = 0x40 00466 ; MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 10 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00467 ;#pragma taskOptions 3 00468 ;#pragma taskOptions 9 00469 ; 00470 ;#define BOOT 0x7b00 00471 ;#define STARTUP 0x0004 00472 ;#include "hexcodes.h" 00473 ; 00474 ;#ifdef BOOT 00475 ; #pragma cdata[0]=__GOTO(BOOT) 00476 ; #pragma resetVector 0x0004 00477 ;#endif 00478 ; 00479 ;// low level 00480 ;void _lowPriorityInt(void); 00481 ; 00482 ;#include "int18XXX.h" 00483 ;#include "define.h" 00484 ;#include "logevents.h" 00485 ;#include "gsm.h" 00486 ; 00487 ;#pragma origin 0x18 000018 00488 ORG 0x0018 00489 ;interrupt lowPriorityIntServer(void) 00490 ;{ 000018 00491 lowPriorityIntServer 00492 ; int_save_registers 000018 CFD8 F000 00493 MOVFF STATUS,svrSTATUS 00001C CFE0 F001 00494 MOVFF BSR,svrBSR 000020 6E02 00495 MOVWF svrWREG,0 00496 ; if(TMR3IE && TMR3IF){ // for GW 000022 0103 00497 MOVLB 0x03 000024 A2A0 00498 BTFSS 0xFA0,TMR3IE,0 000026 D010 00499 BRA m002 000028 A2A1 00500 BTFSS 0xFA1,TMR3IF,0 00002A D00E 00501 BRA m002 00502 ; TMR3=T3ADDER; 00002C 0E64 00503 MOVLW 0x64 00002E 6EB2 00504 MOVWF TMR3,0 000030 0EF0 00505 MOVLW 0xF0 000032 6EB3 00506 MOVWF TMR3+1,0 00507 ; timeGW++; 000034 2B00 00508 INCF timeGW,1,1 000036 0E00 00509 MOVLW 0x00 000038 2301 00510 ADDWFC timeGW+1,1,1 00511 ; if(timeGW==0) timeGW=0xffff; 00003A 5100 00512 MOVF timeGW,W,1 00003C 1101 00513 IORWF timeGW+1,W,1 00003E E102 00514 BNZ m001 000040 6900 00515 SETF timeGW,1 000042 6901 00516 SETF timeGW+1,1 00517 ; TMR3IF=0; 000044 92A1 00518 m001 BCF 0xFA1,TMR3IF,0 00519 ; }else{ MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 11 LOC OBJECT CODE LINE SOURCE TEXT VALUE 000046 D002 00520 BRA m003 00521 ; _lowPriorityInt(); // in VPU.c 000048 ECA8 F010 00522 m002 CALL _lowPriorityInt 00523 ; } 00524 ; int_restore_registers 00004C 5002 00525 m003 MOVF svrWREG,W,0 00004E C001 FFE0 00526 MOVFF svrBSR,BSR 000052 C000 FFD8 00527 MOVFF svrSTATUS,STATUS 00528 ;} 000056 0010 00529 RETFIE 00530 ; 00531 ;#pragma insertConst 000058 00532 _const1 000058 6E09 00533 MOVWF ci,0 00005A 0F6C 00534 ADDLW 0x6C 00005C 6EF6 00535 MOVWF TBLPTR,0 00005E 0E00 00536 MOVLW 0x00 000060 6AF7 00537 CLRF TBLPTR+1,0 000062 22F7 00538 ADDWFC TBLPTR+1,1,0 000064 6AF8 00539 CLRF TBLPTR+2,0 000066 0008 00540 TBLRD * 000068 50F5 00541 MOVF TABLAT,W,0 00006A 0012 00542 RETURN 00006C 1D13 00543 DW 0x1D13 00006E 3326 00544 DW 0x3326 000070 463C 00545 DW 0x463C 000072 6258 00546 DW 0x6258 000074 7C72 00547 DW 0x7C72 000076 9185 00548 DW 0x9185 000078 A69A 00549 DW 0xA69A 00007A B9AD 00550 DW 0xB9AD 00007C CEC2 00551 DW 0xCEC2 00007E 41DC 00552 DW 0x41DC 000080 2B54 00553 DW 0x2B54 000082 5043 00554 DW 0x5043 000084 4E49 00555 DW 0x4E49 000086 803D 00556 DW 0x803D 000088 4100 00557 DW 0x4100 00008A 2B54 00558 DW 0x2B54 00008C 5343 00559 DW 0x5343 00008E 4143 00560 DW 0x4143 000090 003F 00561 DW 0x3F 000092 5441 00562 DW 0x5441 000094 432B 00563 DW 0x432B 000096 4353 00564 DW 0x4353 000098 3D41 00565 DW 0x3D41 00009A 7800 00566 DW 0x7800 00009C 3238 00567 DW 0x3238 00009E 4100 00568 DW 0x4100 0000A0 2B54 00569 DW 0x2B54 0000A2 5243 00570 DW 0x5243 0000A4 4745 00571 DW 0x4745 0000A6 003F 00572 DW 0x3F MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 12 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0000A8 5441 00573 DW 0x5441 0000AA 432B 00574 DW 0x432B 0000AC 474D 00575 DW 0x474D 0000AE 3D46 00576 DW 0x3D46 0000B0 0031 00577 DW 0x31 0000B2 5441 00578 DW 0x5441 0000B4 432B 00579 DW 0x432B 0000B6 4D4E 00580 DW 0x4D4E 0000B8 3D49 00581 DW 0x3D49 0000BA 2C32 00582 DW 0x2C32 0000BC 2C31 00583 DW 0x2C31 0000BE 2C30 00584 DW 0x2C30 0000C0 2C30 00585 DW 0x2C30 0000C2 0031 00586 DW 0x31 0000C4 5441 00587 DW 0x5441 0000C6 432B 00588 DW 0x432B 0000C8 474D 00589 DW 0x474D 0000CA 3D44 00590 DW 0x3D44 0000CC 0083 00591 DW 0x83 0000CE 5441 00592 DW 0x5441 0000D0 432B 00593 DW 0x432B 0000D2 474D 00594 DW 0x474D 0000D4 3D53 00595 DW 0x3D53 0000D6 8122 00596 DW 0x8122 0000D8 2C22 00597 DW 0x2C22 0000DA 3431 00598 DW 0x3431 0000DC 0035 00599 DW 0x35 0000DE 5441 00600 DW 0x5441 0000E0 432B 00601 DW 0x432B 0000E2 474D 00602 DW 0x474D 0000E4 3D52 00603 DW 0x3D52 0000E6 0083 00604 DW 0x83 0000E8 5441 00605 DW 0x5441 0000EA 432B 00606 DW 0x432B 0000EC 504F 00607 DW 0x504F 0000EE 3F53 00608 DW 0x3F53 0000F0 4100 00609 DW 0x4100 0000F2 5E54 00610 DW 0x5E54 0000F4 4353 00611 DW 0x4353 0000F6 4D54 00612 DW 0x4D54 0000F8 303D 00613 DW 0x303D 0000FA 312C 00614 DW 0x312C 0000FC 4100 00615 DW 0x4100 0000FE 5E54 00616 DW 0x5E54 000100 4353 00617 DW 0x4353 000102 4D54 00618 DW 0x4D54 000104 003F 00619 DW 0x3F 000106 5441 00620 DW 0x5441 000108 432B 00621 DW 0x432B 00010A 5546 00622 DW 0x5546 00010C 3D4E 00623 DW 0x3D4E 00010E 2C30 00624 DW 0x2C30 000110 0031 00625 DW 0x31 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 13 LOC OBJECT CODE LINE SOURCE TEXT VALUE 000112 5441 00626 DW 0x5441 000114 432B 00627 DW 0x432B 000116 5153 00628 DW 0x5153 000118 4100 00629 DW 0x4100 00011A 2B54 00630 DW 0x2B54 00011C 4643 00631 DW 0x4643 00011E 4E55 00632 DW 0x4E55 000120 313D 00633 DW 0x313D 000122 302C 00634 DW 0x302C 000124 4100 00635 DW 0x4100 000126 2B54 00636 DW 0x2B54 000128 5043 00637 DW 0x5043 00012A 4E49 00638 DW 0x4E49 00012C 003F 00639 DW 0x3F 00012E 5441 00640 DW 0x5441 000130 535E 00641 DW 0x535E 000132 324D 00642 DW 0x324D 000134 3D30 00643 DW 0x3D30 000136 2C31 00644 DW 0x2C31 000138 0030 00645 DW 0x30 00013A 5441 00646 DW 0x5441 00013C 432B 00647 DW 0x432B 00013E 4353 00648 DW 0x4353 000140 3D53 00649 DW 0x3D53 000142 4722 00650 DW 0x4722 000144 4D53 00651 DW 0x4D53 000146 0022 00652 DW 0x22 000148 5441 00653 DW 0x5441 00014A 432B 00654 DW 0x432B 00014C 4D50 00655 DW 0x4D50 00014E 3D53 00656 DW 0x3D53 000150 4D22 00657 DW 0x4D22 000152 2245 00658 DW 0x2245 000154 0000 00659 DW 0x0 00660 00661 ; FILE C:\CC8e\delay.h 00662 ;/* 00663 ; ---------------------------------------------------------- 00664 ; TIMING/DELAY LIBRARY FOR LEANSLICE MULTITASKING 00665 ; 00666 ; Copyright (c) B Knudsen Data, Trondheim, Norway, 1999-2002 00667 ; ---------------------------------------------------------- 00668 ; 00669 ; ==> The timer module (delay.h) implements 8, 16 or 24 bit software 00670 ; timers that can be used in the tasks to get precise delays. 00671 ; The timer increments must of course have to be much slower 00672 ; than the instruction cycles. This means that the software 00673 ; timer operates around 100 or 1000 Hz when the microcontroller 00674 ; run at 4 - 20 MHz. Around 1000 instruction cycles for each 00675 ; software timer decrement is normally sufficient. Note that 00676 ; math operations are time consuming. It is possible to modify 00677 ; module delay.h if the actual timing requirements is outside 00678 ; the implemented options. MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 14 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00679 ; 00680 ; The module delay.h offers both simple delays or active waiting. It 00681 ; is possible to define a timer for each task. 00682 ; 00683 ; Required definitions in the application program: 00684 ; 00685 ; enum {TimerA, TimerB}; // Timer identifiers 00686 ; #define FreqOsc 4000000 // Oscillator frequenzy 00687 ; #define FreqTimer 1000 // Timer frequency, 1000 or 100 Hz 00688 ; #define TimerType uns16 // uns8, uns16 or uns24 00689 ; #define NoOfTimers 2 // 1 .. 8 00690 ; #define DELAY_TYPE 1 00691 ; #include "delay.h" 00692 ; 00693 ; Initialization and increments: 00694 ; 00695 ; initTimers(); // initialization on application startup 00696 ; 00697 ; // The timers need to be incremented by making frequent calls 00698 ; // to timerTick()in main. The calls must not be more infrequent 00699 ; // than the timer decrement period 00700 ; timerTick(); 00701 ; 00702 ; Using the timers by active waiting or simple delays: 00703 ; 00704 ; // active waiting means starting the timer and checking for timeout: 00705 ; startTimer(TimerA, 100); 00706 ; if (timeout(TimerA)) .. 00707 ; 00708 ; // Simple delays with built-in task switching until timeout: 00709 ; delay(TimerA, 1000); // delay up to 1000 timer ticks 00710 ; 00711 ; Note that delay(1) will not be precise because the timer 00712 ; decrements depends on a single hardware timer, and it is not 00713 ; possible to tell when the next increment occurs. The duration of 00714 ; delay(1) will be in the interval 0.0 to 1.0 period. For example, 00715 ; if half of the period to the next hardware timer increment have 00716 ; expired, then the actual period will be 0.5. This means that a 00717 ; series of delays will be more precise than a single delay. The 00718 ; reason for this is that several task may need service at a 00719 ; timeout, and some tasks may have to wait a fraction of the next 00720 ; timer increment before the task is scheduled. On the other hand, 00721 ; if the timer is started because of an external IO event, then the 00722 ; duration of delay(100) will be in the interval 99.0 - 100.0. 00723 ; 00724 ; The software timers is implemented using the 8 bit hardware timer 00725 ; TMR0 and the prescaler. Up to 8 timers is allowed. 00726 ; 00727 ; timerTick() : 23+ instruction words. The size increases depending 00728 ; on the timer size (8, 16 or 24 bit) and the number of timers. 00729 ; Three 16 bit timers requires 46 instruction words. The function 00730 ; executes in minimum 12 instructions cycles when the next hardware 00731 ; timeout period have not expired. This increases when software MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 15 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00732 ; timers needs to be decremented (around 49 instruction cycles when 00733 ; decrementing three active 16 bit timers). Required definitions in 00734 ; the application program: 00735 ; 00736 ; 00737 ; FreqOsc / (4*FreqTimer) = Cycles = PrescalerDivide * MaxTimerCount 00738 ; 20000000 / (4*1000) = 5000 = 32 * 156.25 00739 ; 16000000 / (4*1000) = 4000 = 32 * 125 00740 ; 12000000 / (4*1000) = 3000 = 16 * 187.5 00741 ; 10000000 / (4*1000) = 2500 = 16 * 156.25 00742 ; 8000000 / (4*1000) = 2000 = 16 * 125 00743 ; 4000000 / (4*1000) = 1000 = 8 * 125 00744 ; 4000000 / (4*100) = 10000 = 64 * 156.25 00745 ; 2000000 / (4*1000) = 500 = 4 * 125 00746 ; 2000000 / (4*100) = 5000 = 32 * 156.25 00747 ; 1000000 / (4*100) = 2500 = 16 * 156.25 00748 ; 400000 / (4*100) = 1000 = 8 * 125 00749 ; 100000 / (4*100) = 250 = 2 * 125 00750 ; 32768 / (4*20) = 409.6 = 2 * 204.8 00751 ; 32768 / (4*10) = 819.2 = 4 * 204.8 00752 ; 00753 ; 'Cycles' telles how many instructions can be executed between 00754 ; each timer increment. 00755 ;*/ 00756 ; 00757 ;#if !defined FreqOsc || !defined FreqTimer 00758 ; #error FreqOsc and FreqTimer must be properly defined 00759 ;#endif 00760 ; 00761 ; 00762 ;#if FreqOsc % (4*FreqTimer) != 0 00763 ; #if FreqOsc == 32768 && FreqTimer == 10 00764 ; #define PrescalerDivide 1 00765 ; #define MaxTimerCount 204 00766 ; #define TimerDecimals 205 00767 ; #elif FreqOsc == 32768 && FreqTimer == 20 00768 ; #define PrescalerDivide 0 00769 ; #define MaxTimerCount 204 00770 ; #define TimerDecimals 205 00771 ; #else 00772 ; #error Combination of FreqOsc and FreqTimer is not implemented 00773 ; #endif 00774 ;#else 00775 ; #if FreqOsc / (4*FreqTimer) == 250 00776 ; #define PrescalerDivide 0 00777 ; // 1:2 00778 ; #define MaxTimerCount 125 00779 ; #elif FreqOsc / (4*FreqTimer) == 500 00780 ; #define PrescalerDivide 1 00781 ; // 1:4 00782 ; #define MaxTimerCount 125 00783 ; #elif FreqOsc / (4*FreqTimer) == 1000 00784 ; #define PrescalerDivide 2 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 16 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00785 ; // 1:8 00786 ; #define MaxTimerCount 125 00787 ; #elif FreqOsc / (4*FreqTimer) == 2000 00788 ; #define PrescalerDivide 3 00789 ; // 1:16 00790 ; #define MaxTimerCount 125 00791 ; #elif FreqOsc / (4*FreqTimer) == 4000 00792 ; #define PrescalerDivide 4 00793 ; // 1:32 00794 ; #define MaxTimerCount 125 00795 ; #elif FreqOsc / (4*FreqTimer) == 8000 00796 ; #define PrescalerDivide 5 00797 ; // 1:64 00798 ; #define MaxTimerCount 125 00799 ; #elif FreqOsc / (4*FreqTimer) == 3000 00800 ; #define PrescalerDivide 3 00801 ; // 1:16 00802 ; #define MaxTimerCount 187 00803 ; #define TimerDecimals 0x80 00804 ; #elif FreqOsc / (4*FreqTimer) == 2500 00805 ; #define PrescalerDivide 3 00806 ; // 1:16 00807 ; #define MaxTimerCount 156 00808 ; #define TimerDecimals 0x40 00809 ; #elif FreqOsc / (4*FreqTimer) == 5000 00810 ; #define PrescalerDivide 4 00811 ; // 1:32 00812 ; #define MaxTimerCount 156 00813 ; #define TimerDecimals 0x40 00814 ; #elif FreqOsc / (4*FreqTimer) == 10000 00815 ; #define PrescalerDivide 5 00816 ; // 1:64 00817 ; #define MaxTimerCount 156 00818 ; #define TimerDecimals 0x40 00819 ; #else 00820 ; #error Combination of FreqOsc and FreqTimer is not implemented 00821 ; #endif 00822 ;#endif 00823 ; 00824 ; 00825 ; 00826 ;#ifndef DELAY_TYPE 00827 ; #error The DELAY_TYPE have to be defined (1,..) 00828 ;#endif 00829 ; 00830 ; 00831 ; 00832 ; 00833 ;// ------------------------------------------- 00834 ;#if DELAY_TYPE == 1 00835 ; 00836 ;TimerType softTimer[NoOfTimers]; 00837 ;#if NoOfTimers >= 9 && NoOfTimers <= 16 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 17 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00838 ;uns16 tTimeout; 00839 ;#else 00840 ;char tTimeout; 00841 ;#endif 00842 ;char previousTMR0, subClock; 00843 ; 00844 ; 00845 ;#define initTimers() \ 00846 ;{ \ 00847 ; tTimeout = -1; \ 00848 ; previousTMR0 = 0; \ 00849 ; subClock = 0; \ 00850 ; TMR0H=0;\ 00851 ; T0CON = PrescalerDivide; \ 00852 ; TMR0ON=1; T08BIT=1; PSA=0;\ 00853 ;} 00854 ; 00855 ;#define startTimer(TimerNo, count) \ 00856 ;{ \ 00857 ; softTimer[TimerNo] = count; \ 00858 ; tTimeout.TimerNo = 0; \ 00859 ;} 00860 ; 00861 ;#define timeout(TimerNo) tTimeout.TimerNo 00862 ; 00863 ;#define delay(TimerNo, count) \ 00864 ;{ \ 00865 ; softTimer[TimerNo] = count; \ 00866 ; tTimeout.TimerNo = 0; \ 00867 ; while (!tTimeout.TimerNo) \ 00868 ; waitState(); \ 00869 ;} 00870 ; 00871 ; 00872 ;void timerTick( void) 00873 ;/* 00874 ; - decrements active software timers 00875 ;*/ 00876 ;{ 000156 00877 timerTick 00878 ; char sample; 00879 ; sample = TMR0L; // sampling the timer 000156 CFD6 F005 00880 MOVFF TMR0L,sample 00881 ; subClock -= sample - previousTMR0; 00015A 5058 00882 MOVF previousTMR0,W,0 00015C 5C05 00883 SUBWF sample,W,0 00015E 5E59 00884 SUBWF subClock,1,0 00885 ; previousTMR0 = sample; 000160 C005 F058 00886 MOVFF sample,previousTMR0 00887 ; if ( Carry) 000164 B0D8 00888 BTFSC 0xFD8,Carry,0 00889 ; return; 000166 0012 00890 RETURN MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 18 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00891 ; 00892 ; /* new timer tick */ 00893 ; subClock += MaxTimerCount; 000168 0E7D 00894 MOVLW 0x7D 00016A 2659 00895 ADDWF subClock,1,0 00896 ; 00897 ; #ifdef TimerDecimals 00898 ; char decim; 00899 ; decim += TimerDecimals; 00900 ; if (Carry) 00901 ; subClock ++; 00902 ; #endif 00903 ; 00904 ; #if NoOfTimers <= 3 00905 ; if ( !tTimeout.0) { 00906 ; softTimer[0] -= 1; 00907 ; if ( softTimer[0] == 0) 00908 ; tTimeout.0 = 1; 00909 ; } 00910 ; 00911 ; #if NoOfTimers >= 2 00912 ; if ( !tTimeout.1) { 00913 ; softTimer[1] -= 1; 00914 ; if ( softTimer[1] == 0) 00915 ; tTimeout.1 = 1; 00916 ; } 00917 ; #endif 00918 ; 00919 ; #if NoOfTimers >= 3 00920 ; if ( !tTimeout.2) { 00921 ; softTimer[2] -= 1; 00922 ; if ( softTimer[2] == 0) 00923 ; tTimeout.2 = 1; 00924 ; } 00925 ; #endif 00926 ; 00927 ; #elif sizeof( TimerType) <= 3 && NoOfTimers <= 8 00928 ; 00929 ; char i = 0; 00930 ; char mask = 1; 00931 ; do { 00932 ; if ( (mask & tTimeout) == 0) { 00933 ; softTimer[i] -= 1; 00934 ; if(softTimer[i] == 0) tTimeout |= mask; 00935 ; } 00936 ; mask <<= 1; 00937 ; } while ( ++i < NoOfTimers); 00938 ; 00939 ; #elif sizeof( TimerType) <= 3 && NoOfTimers <= 16 00940 ; 00941 ; char i = 0; 00016C 6A06 00942 CLRF i_2,0 00943 ; uns16 mask = 1; MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 19 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00016E 0E01 00944 MOVLW 0x01 000170 6E07 00945 MOVWF mask,0 000172 6A08 00946 CLRF mask+1,0 00947 ; do { 00948 ; if ( (mask.low8 & tTimeout.low8) == 0 && (mask.high8 & tTimeout.high8) == 0) { 000174 5056 00949 m004 MOVF tTimeout,W,0 000176 1407 00950 ANDWF mask,W,0 000178 E117 00951 BNZ m005 00017A 5057 00952 MOVF tTimeout+1,W,0 00017C 1408 00953 ANDWF mask+1,W,0 00017E E114 00954 BNZ m005 00955 ; softTimer[i] -= 1; 000180 6AEA 00956 CLRF FSR0+1,0 000182 90D8 00957 BCF 0xFD8,Carry,0 000184 3406 00958 RLCF i_2,W,0 000186 0FCA 00959 ADDLW 0xCA 000188 6EE9 00960 MOVWF FSR0,0 00018A 06EE 00961 DECF POSTINC0,1,0 00018C 0E00 00962 MOVLW 0x00 00018E 5AEF 00963 SUBWFB INDF0,1,0 00964 ; if(softTimer[i] == 0) {tTimeout.low8 |= mask.low8; tTimeout.high8 | = mask.high8;} 000190 6AEA 00965 CLRF FSR0+1,0 000192 90D8 00966 BCF 0xFD8,Carry,0 000194 3406 00967 RLCF i_2,W,0 000196 0FCA 00968 ADDLW 0xCA 000198 6EE9 00969 MOVWF FSR0,0 00019A 50EE 00970 MOVF POSTINC0,W,0 00019C 10EF 00971 IORWF INDF0,W,0 00019E E104 00972 BNZ m005 0001A0 5007 00973 MOVF mask,W,0 0001A2 1256 00974 IORWF tTimeout,1,0 0001A4 5008 00975 MOVF mask+1,W,0 0001A6 1257 00976 IORWF tTimeout+1,1,0 00977 ; } 00978 ; mask <<= 1; 0001A8 90D8 00979 m005 BCF 0xFD8,Carry,0 0001AA 3607 00980 RLCF mask,1,0 0001AC 3608 00981 RLCF mask+1,1,0 00982 ; } while ( ++i < NoOfTimers); 0001AE 2A06 00983 INCF i_2,1,0 0001B0 0E0B 00984 MOVLW 0x0B 0001B2 6406 00985 CPFSGT i_2,0 0001B4 D7DF 00986 BRA m004 00987 ; 00988 ; #else 00989 ; #error Not implemented 00990 ; #endif 00991 ;} 0001B6 0012 00992 RETURN 00993 00994 ; FILE i2c_hard.c MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 20 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00995 ; 00996 ;void setup_harw_iic(){ 0001B8 00997 setup_harw_iic 00998 ; PORTC.3 = 1; 0001B8 8682 00999 BSF PORTC,3,0 01000 ; PORTC.4 = 1; 0001BA 8882 01001 BSF PORTC,4,0 01002 ; TRISC.4 = 1; 0001BC 8894 01003 BSF TRISC,4,0 01004 ; TRISC.3 = 1; 0001BE 8694 01005 BSF TRISC,3,0 01006 ; 01007 ; SSPADD=39; // 100kHz=39 50kHz=79 0001C0 0E27 01008 MOVLW 0x27 0001C2 6EC8 01009 MOVWF SSPADD,0 01010 ; SSPCON1=0b00.1.0.1000; 0001C4 0E28 01011 MOVLW 0x28 0001C6 6EC6 01012 MOVWF SSPCON1,0 01013 ; SSPSTAT=0; 0001C8 6AC7 01014 CLRF SSPSTAT,0 01015 ; SMP=1; 0001CA 8EC7 01016 BSF 0xFC7,SMP,0 01017 ; SSPCON2=0; 0001CC 6AC5 01018 CLRF SSPCON2,0 01019 ; SSPIF=0; 0001CE 969E 01020 BCF 0xF9E,SSPIF,0 01021 ; BCLIF=0; 0001D0 96A1 01022 BCF 0xFA1,BCLIF,0 01023 ;} 0001D2 0012 01024 RETURN 01025 ;/* 01026 ; MSSP hardware I2C operate functions 01027 ; used: memory.c; indicate.c; clock.c 01028 ;*/ 01029 ; 01030 ;void i2c_wait_idle_hrdw(void) { 0001D4 01031 i2c_wait_idle_hrdw 01032 ; WCOL=0; 0001D4 9EC6 01033 BCF 0xFC6,WCOL,0 01034 ; CKP=1; 0001D6 88C6 01035 BSF 0xFC6,CKP,0 01036 ; while((SSPCON2 & 0x1F) || RW_); 0001D8 0E1F 01037 m006 MOVLW 0x1F 0001DA 14C5 01038 ANDWF SSPCON2,W,0 0001DC E1FD 01039 BNZ m006 0001DE B4C7 01040 BTFSC 0xFC7,RW_,0 0001E0 D7FB 01041 BRA m006 01042 ;} 0001E2 0012 01043 RETURN 01044 ; 01045 ;void i2c_start_hrdw(void) { 0001E4 01046 i2c_start_hrdw 01047 ; i2c_wait_idle_hrdw(); MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 21 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0001E4 DFF7 01048 RCALL i2c_wait_idle_hrdw 01049 ; SSPIF=0; 0001E6 969E 01050 BCF 0xF9E,SSPIF,0 01051 ; SEN = 1; 0001E8 80C5 01052 BSF 0xFC5,SEN,0 01053 ;} 0001EA 0012 01054 RETURN 01055 ; 01056 ;void i2c_stop_hrdw(void) { 0001EC 01057 i2c_stop_hrdw 01058 ; i2c_wait_idle_hrdw(); 0001EC DFF3 01059 RCALL i2c_wait_idle_hrdw 01060 ; SSPIF=0; 0001EE 969E 01061 BCF 0xF9E,SSPIF,0 01062 ; PEN = 1; 0001F0 84C5 01063 BSF 0xFC5,PEN,0 01064 ; while(!SSPIF); 0001F2 A69E 01065 m007 BTFSS 0xF9E,SSPIF,0 0001F4 D7FE 01066 BRA m007 01067 ;} 0001F6 0012 01068 RETURN 01069 ; 01070 ;void i2c_restart_hrdw(void) { 0001F8 01071 i2c_restart_hrdw 01072 ; i2c_wait_idle_hrdw(); 0001F8 DFED 01073 RCALL i2c_wait_idle_hrdw 01074 ; SSPIF=0; 0001FA 969E 01075 BCF 0xF9E,SSPIF,0 01076 ; RSEN = 1; 0001FC 82C5 01077 BSF 0xFC5,RSEN,0 01078 ;} 0001FE 0012 01079 RETURN 01080 ; 01081 ;bit i2c_write_hrdw(char dat) { 000200 01082 i2c_write_hrdw 000200 6E11 01083 MOVWF dat,0 01084 ; i2c_wait_idle_hrdw(); 000202 DFE8 01085 RCALL i2c_wait_idle_hrdw 01086 ; ACKSTAT=0; 000204 9CC5 01087 BCF 0xFC5,ACKSTAT,0 01088 ; SSPIF=0; 000206 969E 01089 BCF 0xF9E,SSPIF,0 01090 ; SSPBUF = dat; 000208 C011 FFC9 01091 MOVFF dat,SSPBUF 01092 ; while(!SSPIF); 00020C A69E 01093 m008 BTFSS 0xF9E,SSPIF,0 00020E D7FE 01094 BRA m008 01095 ; return !ACKSTAT; // 1-ACK 0-NAK 000210 80D8 01096 BSF 0xFD8,Carry,0 000212 BCC5 01097 BTFSC 0xFC5,ACKSTAT,0 000214 90D8 01098 BCF 0xFD8,Carry,0 000216 0012 01099 RETURN 01100 ;} MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 22 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01101 ; 01102 ;char i2c_read_hrdw(bit ack) { 000218 01103 i2c_read_hrdw 01104 ; i2c_wait_idle_hrdw(); 000218 DFDD 01105 RCALL i2c_wait_idle_hrdw 01106 ; SSPIF=0; 00021A 969E 01107 BCF 0xF9E,SSPIF,0 01108 ; RCEN = 1; 00021C 86C5 01109 BSF 0xFC5,RCEN,0 01110 ; while(!SSPIF); 00021E A69E 01111 m009 BTFSS 0xF9E,SSPIF,0 000220 D7FE 01112 BRA m009 01113 ; ACKDT=!ack; 000222 A011 01114 BTFSS 0x11,ack,0 000224 8AC5 01115 BSF 0xFC5,ACKDT,0 000226 B011 01116 BTFSC 0x11,ack,0 000228 9AC5 01117 BCF 0xFC5,ACKDT,0 01118 ; SSPIF=0; 00022A 969E 01119 BCF 0xF9E,SSPIF,0 01120 ; ACKEN=1; 00022C 88C5 01121 BSF 0xFC5,ACKEN,0 01122 ; i2c_wait_idle_hrdw(); 00022E DFD2 01123 RCALL i2c_wait_idle_hrdw 01124 ; return SSPBUF; 000230 50C9 01125 MOVF SSPBUF,W,0 000232 0012 01126 RETURN 01127 01128 ; FILE system.c 01129 ;void ms_pause(char msec){ 000234 01130 ms_pause 000234 6E7F 01131 MOVWF msec,0 01132 ; char i; 01133 ; do{ 01134 ; for(i=235; i>0; --i) {nop2();nop2();nop2();nop2();nop2();nop2(); } 000236 0EEB 01135 m010 MOVLW 0xEB 000238 6E7F 01136 MOVWF i_3,0 00023A 507F 01137 m011 MOVF i_3,W,0 00023C E008 01138 BZ m018 00023E D000 01139 BRA m012 000240 D000 01140 m012 BRA m013 000242 D000 01141 m013 BRA m014 000244 D000 01142 m014 BRA m015 000246 D000 01143 m015 BRA m016 000248 D000 01144 m016 BRA m017 00024A 067F 01145 m017 DECF i_3,1,0 00024C D7F6 01146 BRA m011 01147 ; }while(--msec); 00024E 067F 01148 m018 DECF msec,1,0 000250 507F 01149 MOVF msec,W,0 000252 E1F1 01150 BNZ m010 01151 ;} 000254 0012 01152 RETURN MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 23 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01153 ; 01154 ;#define ms_delay ms_pause 01155 ; 01156 ; 01157 ;char read_eeprom(char adress){ 000256 01158 read_eeprom 000256 6E06 01159 MOVWF adress,0 01160 ; EEADR=adress; 000258 C006 FFA9 01161 MOVFF adress,EEADR 01162 ; EEPGD=OFF; 00025C 9EA6 01163 BCF 0xFA6,EEPGD,0 01164 ; CFGS=OFF; 00025E 9CA6 01165 BCF 0xFA6,CFGS,0 01166 ; RD=1; 000260 80A6 01167 BSF 0xFA6,RD,0 01168 ; return EEDATA; 000262 50A8 01169 MOVF EEDATA,W,0 000264 0012 01170 RETURN 01171 01172 ; FILE memory.c 01173 ; 01174 ;#define MEM_WRITE 0xA0 01175 ;#define MEM_READ 0xA1 01176 ; 01177 ;void mem_read(uns16 addr, uns8 lenght, char size1 * ptr){ // i2c mem read N bytes 000266 01178 mem_read 01179 ; i2c_start_hrdw(); 000266 DFBE 01180 RCALL i2c_start_hrdw 01181 ; i2c_write_hrdw(MEM_WRITE); 000268 0EA0 01182 MOVLW 0xA0 00026A DFCA 01183 RCALL i2c_write_hrdw 01184 ; i2c_write_hrdw(addr.high8); 00026C 500E 01185 MOVF addr+1,W,0 00026E DFC8 01186 RCALL i2c_write_hrdw 01187 ; i2c_write_hrdw(addr.low8); 000270 500D 01188 MOVF addr,W,0 000272 DFC6 01189 RCALL i2c_write_hrdw 01190 ; i2c_restart_hrdw(); 000274 DFC1 01191 RCALL i2c_restart_hrdw 01192 ; i2c_write_hrdw(MEM_READ); 000276 0EA1 01193 MOVLW 0xA1 000278 DFC3 01194 RCALL i2c_write_hrdw 01195 ; FSR0=ptr; 00027A C010 FFE9 01196 MOVFF ptr,FSR0 00027E 6AEA 01197 CLRF FSR0+1,0 01198 ; do{ 01199 ; POSTINC0=i2c_read_hrdw(1); 000280 8011 01200 m019 BSF 0x11,ack,0 000282 DFCA 01201 RCALL i2c_read_hrdw 000284 6EEE 01202 MOVWF POSTINC0,0 01203 ; }while(--lenght); 000286 2E0F 01204 DECFSZ lenght,1,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 24 LOC OBJECT CODE LINE SOURCE TEXT VALUE 000288 D7FB 01205 BRA m019 01206 ; i2c_read_hrdw(0); // this!!! +1 byte 00028A 9011 01207 BCF 0x11,ack,0 00028C DFC5 01208 RCALL i2c_read_hrdw 01209 ; i2c_stop_hrdw(); 00028E D7AE 01210 BRA i2c_stop_hrdw 01211 ;} 01212 ; 01213 ;char mem_read_byte(uns16 addr){ 000290 01214 mem_read_byte 01215 ; i2c_start_hrdw(); 000290 DFA9 01216 RCALL i2c_start_hrdw 01217 ; i2c_write_hrdw(MEM_WRITE); 000292 0EA0 01218 MOVLW 0xA0 000294 DFB5 01219 RCALL i2c_write_hrdw 01220 ; i2c_write_hrdw(addr.high8); 000296 500D 01221 MOVF addr_2+1,W,0 000298 DFB3 01222 RCALL i2c_write_hrdw 01223 ; i2c_write_hrdw(addr.low8); 00029A 500C 01224 MOVF addr_2,W,0 00029C DFB1 01225 RCALL i2c_write_hrdw 01226 ; i2c_restart_hrdw(); 00029E DFAC 01227 RCALL i2c_restart_hrdw 01228 ; i2c_write_hrdw(MEM_READ); 0002A0 0EA1 01229 MOVLW 0xA1 0002A2 DFAE 01230 RCALL i2c_write_hrdw 01231 ; char rez=i2c_read_hrdw(0); 0002A4 9011 01232 BCF 0x11,ack,0 0002A6 DFB8 01233 RCALL i2c_read_hrdw 0002A8 6E0E 01234 MOVWF rez,0 01235 ; i2c_stop_hrdw(); 0002AA DFA0 01236 RCALL i2c_stop_hrdw 01237 ; return rez; 0002AC 500E 01238 MOVF rez,W,0 0002AE 0012 01239 RETURN 01240 ;} 01241 ; 01242 ;void mem_write_byte(uns16 addr, char val){ 0002B0 01243 mem_write_byte 0002B0 6E0A 01244 MOVWF val,0 01245 ; i2c_start_hrdw(); 0002B2 DF98 01246 RCALL i2c_start_hrdw 01247 ; i2c_write_hrdw(MEM_WRITE); 0002B4 0EA0 01248 MOVLW 0xA0 0002B6 DFA4 01249 RCALL i2c_write_hrdw 01250 ; i2c_write_hrdw(addr.high8); 0002B8 5009 01251 MOVF addr_3+1,W,0 0002BA DFA2 01252 RCALL i2c_write_hrdw 01253 ; i2c_write_hrdw(addr.low8); 0002BC 5008 01254 MOVF addr_3,W,0 0002BE DFA0 01255 RCALL i2c_write_hrdw 01256 ; i2c_write_hrdw(val); 0002C0 500A 01257 MOVF val,W,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 25 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0002C2 DF9E 01258 RCALL i2c_write_hrdw 01259 ; i2c_stop_hrdw(); 0002C4 D793 01260 BRA i2c_stop_hrdw 01261 ;} 01262 ; 01263 ;void mem_set_base(uns16 addr){ 0002C6 01264 mem_set_base 01265 ; i2c_start_hrdw(); 0002C6 DF8E 01266 RCALL i2c_start_hrdw 01267 ; i2c_write_hrdw(MEM_WRITE); 0002C8 0EA0 01268 MOVLW 0xA0 0002CA DF9A 01269 RCALL i2c_write_hrdw 01270 ; i2c_write_hrdw(addr.high8); 0002CC 500A 01271 MOVF addr_4+1,W,0 0002CE DF98 01272 RCALL i2c_write_hrdw 01273 ; i2c_write_hrdw(addr.low8); 0002D0 5009 01274 MOVF addr_4,W,0 0002D2 DF96 01275 RCALL i2c_write_hrdw 01276 ; i2c_stop_hrdw(); 0002D4 D78B 01277 BRA i2c_stop_hrdw 01278 ;} 01279 ; 01280 ; 01281 ;void log_event(char event_cod){ 0002D6 01282 log_event 0002D6 6E05 01283 MOVWF event_cod,0 01284 ;// if error message -> send SMS 01285 ; if(event_cod == last_event) return; // don't double 0002D8 0102 01286 MOVLB 0x02 0002DA 630C 01287 CPFSEQ last_event,1 0002DC D002 01288 BRA m020 0002DE 0103 01289 MOVLB 0x03 0002E0 0012 01290 RETURN 01291 ; last_event=event_cod; 0002E2 C005 F20C 01292 m020 MOVFF event_cod,last_event 01293 ; if(event_cod>=LE_NOFAZA1) setEvent(evtGSMSNDERR); 0002E6 0E06 01294 MOVLW 0x06 0002E8 6005 01295 CPFSLT event_cod,0 0002EA 823E 01296 BSF EventStates,1,0 01297 ;// 01298 ; uns16 adr; 01299 ; if(fazes12){ 0002EC A421 01300 BTFSS 0x21,fazes12,0 0002EE D01F 01301 BRA m022 01302 ; adr.high8=mem_read_byte(_LOG_ADDR12); 0002F0 0EA0 01303 MOVLW 0xA0 0002F2 6E0C 01304 MOVWF addr_2,0 0002F4 0E1A 01305 MOVLW 0x1A 0002F6 6E0D 01306 MOVWF addr_2+1,0 0002F8 DFCB 01307 RCALL mem_read_byte 0002FA 6E07 01308 MOVWF adr_2+1,0 01309 ; adr.low8=mem_read_byte(_LOG_ADDR12+1); 0002FC 0EA1 01310 MOVLW 0xA1 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 26 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0002FE 6E0C 01311 MOVWF addr_2,0 000300 0E1A 01312 MOVLW 0x1A 000302 6E0D 01313 MOVWF addr_2+1,0 000304 DFC5 01314 RCALL mem_read_byte 000306 6E06 01315 MOVWF adr_2,0 01316 ; if(adr < _BASE_LOG_START12) adr=_BASE_LOG_START12; 000308 0EA2 01317 MOVLW 0xA2 00030A 5C06 01318 SUBWF adr_2,W,0 00030C 0E1A 01319 MOVLW 0x1A 00030E 5807 01320 SUBWFB adr_2+1,W,0 000310 E204 01321 BC m021 000312 0EA2 01322 MOVLW 0xA2 000314 6E06 01323 MOVWF adr_2,0 000316 0E1A 01324 MOVLW 0x1A 000318 6E07 01325 MOVWF adr_2+1,0 01326 ; if(adr > _BASE_LOG_END12) adr=_BASE_LOG_START12; 00031A 0EFB 01327 m021 MOVLW 0xFB 00031C 5C06 01328 SUBWF adr_2,W,0 00031E 0E1F 01329 MOVLW 0x1F 000320 5807 01330 SUBWFB adr_2+1,W,0 000322 E323 01331 BNC m024 000324 0EA2 01332 MOVLW 0xA2 000326 6E06 01333 MOVWF adr_2,0 000328 0E1A 01334 MOVLW 0x1A 00032A 6E07 01335 MOVWF adr_2+1,0 01336 ; }else{ 00032C D01E 01337 BRA m024 01338 ; adr.high8=mem_read_byte(_LOG_ADDR16); 00032E 0EA0 01339 m022 MOVLW 0xA0 000330 6E0C 01340 MOVWF addr_2,0 000332 0E3A 01341 MOVLW 0x3A 000334 6E0D 01342 MOVWF addr_2+1,0 000336 DFAC 01343 RCALL mem_read_byte 000338 6E07 01344 MOVWF adr_2+1,0 01345 ; adr.low8=mem_read_byte(_LOG_ADDR16+1); 00033A 0EA1 01346 MOVLW 0xA1 00033C 6E0C 01347 MOVWF addr_2,0 00033E 0E3A 01348 MOVLW 0x3A 000340 6E0D 01349 MOVWF addr_2+1,0 000342 DFA6 01350 RCALL mem_read_byte 000344 6E06 01351 MOVWF adr_2,0 01352 ; if(adr < _BASE_LOG_START16) adr=_BASE_LOG_START16; 000346 0EA2 01353 MOVLW 0xA2 000348 5C06 01354 SUBWF adr_2,W,0 00034A 0E3A 01355 MOVLW 0x3A 00034C 5807 01356 SUBWFB adr_2+1,W,0 00034E E204 01357 BC m023 000350 0EA2 01358 MOVLW 0xA2 000352 6E06 01359 MOVWF adr_2,0 000354 0E3A 01360 MOVLW 0x3A 000356 6E07 01361 MOVWF adr_2+1,0 01362 ; if(adr > _BASE_LOG_END16) adr=_BASE_LOG_START16; 000358 0EFB 01363 m023 MOVLW 0xFB MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 27 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00035A 5C06 01364 SUBWF adr_2,W,0 00035C 0E3F 01365 MOVLW 0x3F 00035E 5807 01366 SUBWFB adr_2+1,W,0 000360 E304 01367 BNC m024 000362 0EA2 01368 MOVLW 0xA2 000364 6E06 01369 MOVWF adr_2,0 000366 0E3A 01370 MOVLW 0x3A 000368 6E07 01371 MOVWF adr_2+1,0 01372 ; } 01373 ; i2c_start_hrdw(); 00036A DF3C 01374 m024 RCALL i2c_start_hrdw 01375 ; i2c_write_hrdw(MEM_WRITE); 00036C 0EA0 01376 MOVLW 0xA0 00036E DF48 01377 RCALL i2c_write_hrdw 01378 ; i2c_write_hrdw(adr.high8); 000370 5007 01379 MOVF adr_2+1,W,0 000372 DF46 01380 RCALL i2c_write_hrdw 01381 ; i2c_write_hrdw(adr.low8); 000374 5006 01382 MOVF adr_2,W,0 000376 DF44 01383 RCALL i2c_write_hrdw 01384 ; mem_set_next(clk_buff[4]); //ää 000378 5019 01385 MOVF clk_buff+4,W,0 00037A DF42 01386 RCALL i2c_write_hrdw 01387 ; mem_set_next(clk_buff[5]); //ìì 00037C 501A 01388 MOVF clk_buff+5,W,0 00037E DF40 01389 RCALL i2c_write_hrdw 01390 ; mem_set_next(clk_buff[6]); //ãã 000380 501B 01391 MOVF clk_buff+6,W,0 000382 DF3E 01392 RCALL i2c_write_hrdw 01393 ; mem_set_next(clk_buff[2]); //×× 000384 5017 01394 MOVF clk_buff+2,W,0 000386 DF3C 01395 RCALL i2c_write_hrdw 01396 ; mem_set_next(clk_buff[1]); //ÌÌ 000388 5016 01397 MOVF clk_buff+1,W,0 00038A DF3A 01398 RCALL i2c_write_hrdw 01399 ; mem_set_next(event_cod); 00038C 5005 01400 MOVF event_cod,W,0 00038E DF38 01401 RCALL i2c_write_hrdw 01402 ; adr+=6; 000390 0E06 01403 MOVLW 0x06 000392 2606 01404 ADDWF adr_2,1,0 000394 0E00 01405 MOVLW 0x00 000396 2207 01406 ADDWFC adr_2+1,1,0 01407 ; i2c_restart_hrdw(); 000398 DF2F 01408 RCALL i2c_restart_hrdw 01409 ; i2c_write_hrdw(MEM_WRITE); 00039A 0EA0 01410 MOVLW 0xA0 00039C DF31 01411 RCALL i2c_write_hrdw 01412 ; if(fazes12){ 00039E A421 01413 BTFSS 0x21,fazes12,0 0003A0 D005 01414 BRA m025 01415 ; i2c_write_hrdw(_LOG_ADDR12 / 256); 0003A2 0E1A 01416 MOVLW 0x1A MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 28 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0003A4 DF2D 01417 RCALL i2c_write_hrdw 01418 ; i2c_write_hrdw(_LOG_ADDR12 % 256); 0003A6 0EA0 01419 MOVLW 0xA0 0003A8 DF2B 01420 RCALL i2c_write_hrdw 01421 ; }else{ 0003AA D004 01422 BRA m026 01423 ; i2c_write_hrdw(_LOG_ADDR16 / 256); 0003AC 0E3A 01424 m025 MOVLW 0x3A 0003AE DF28 01425 RCALL i2c_write_hrdw 01426 ; i2c_write_hrdw(_LOG_ADDR16 % 256); 0003B0 0EA0 01427 MOVLW 0xA0 0003B2 DF26 01428 RCALL i2c_write_hrdw 01429 ; } 01430 ; i2c_write_hrdw(adr.high8); 0003B4 5007 01431 m026 MOVF adr_2+1,W,0 0003B6 DF24 01432 RCALL i2c_write_hrdw 01433 ; i2c_write_hrdw(adr.low8); 0003B8 5006 01434 MOVF adr_2,W,0 0003BA DF22 01435 RCALL i2c_write_hrdw 01436 ; i2c_stop_hrdw(); 0003BC DF17 01437 RCALL i2c_stop_hrdw 01438 ;} 0003BE 0103 01439 MOVLB 0x03 0003C0 0012 01440 RETURN 01441 ; 01442 ;// return 0 if equal 01443 ;// return 1 if h0m0 > h1m1 01444 ;// return -1 if h1m1 > h0m0 01445 ;char compare_time(char h0, char m0, char h1, char m1){ 0003C2 01446 compare_time 0003C2 6E10 01447 MOVWF m1,0 01448 ; if(h0 > h1) return 1; 0003C4 500D 01449 MOVF h0,W,0 0003C6 600F 01450 CPFSLT h1,0 0003C8 D001 01451 BRA m027 0003CA 0C01 01452 RETLW 0x01 01453 ; if(h0 < h1) return -1; 0003CC 500F 01454 m027 MOVF h1,W,0 0003CE 600D 01455 CPFSLT h0,0 0003D0 D001 01456 BRA m028 0003D2 0CFF 01457 RETLW 0xFF 01458 ; if(h0==h1 && m0==m1) return 0; 0003D4 500D 01459 m028 MOVF h0,W,0 0003D6 620F 01460 CPFSEQ h1,0 0003D8 D004 01461 BRA m029 0003DA 500E 01462 MOVF m0,W,0 0003DC 6210 01463 CPFSEQ m1,0 0003DE D001 01464 BRA m029 0003E0 0C00 01465 RETLW 0x00 01466 ; if(m0 > m1) return 1; 0003E2 500E 01467 m029 MOVF m0,W,0 0003E4 6010 01468 CPFSLT m1,0 0003E6 D001 01469 BRA m030 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 29 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0003E8 0C01 01470 RETLW 0x01 01471 ; return -1; 0003EA 0CFF 01472 m030 RETLW 0xFF 01473 ;} 01474 ; 01475 ;void alarm_swap(char idx0, char idx1){ 0003EC 01476 alarm_swap 0003EC 6E7F 01477 MOVWF idx1,0 01478 ; char tmp; 01479 ; FSR0=&alarms[idx0].programm; 0003EE 6AEA 01480 CLRF FSR0+1,0 0003F0 0E03 01481 MOVLW 0x03 0003F2 027F 01482 MULWF idx0,0 0003F4 50F3 01483 MOVF PRODL,W,0 0003F6 0FB0 01484 ADDLW 0xB0 0003F8 6EE9 01485 MOVWF FSR0,0 01486 ; FSR1=&alarms[idx1].programm; 0003FA 6AE2 01487 CLRF FSR1+1,0 0003FC 0E03 01488 MOVLW 0x03 0003FE 027F 01489 MULWF idx1,0 000400 50F3 01490 MOVF PRODL,W,0 000402 0FB0 01491 ADDLW 0xB0 000404 6EE1 01492 MOVWF FSR1,0 01493 ; W=INDF0; 000406 50EF 01494 MOVF INDF0,W,0 01495 ; POSTINC0=INDF1; 000408 CFE7 FFEE 01496 MOVFF INDF1,POSTINC0 01497 ; POSTINC1=W; 00040C 6EE6 01498 MOVWF POSTINC1,0 01499 ; W=INDF0; 00040E 50EF 01500 MOVF INDF0,W,0 01501 ; POSTINC0=INDF1; 000410 CFE7 FFEE 01502 MOVFF INDF1,POSTINC0 01503 ; POSTINC1=W; 000414 6EE6 01504 MOVWF POSTINC1,0 01505 ; W=INDF0; 000416 50EF 01506 MOVF INDF0,W,0 01507 ; POSTINC0=INDF1; 000418 CFE7 FFEE 01508 MOVFF INDF1,POSTINC0 01509 ; POSTINC1=W; 00041C 6EE6 01510 MOVWF POSTINC1,0 01511 ;} 00041E 0012 01512 RETURN 01513 ; 01514 ; 01515 ;// creates alarms for day of week 0..6 [mon..sun] 01516 ;// return alarms count for day 01517 ;// 8.75ms 01518 ;// called each 1 minute in Task(ClockTick) 01519 ;char get_alarms(char day){ 000420 01520 get_alarms 000420 6E08 01521 MOVWF day,0 01522 ; curr_alarm_day = day; // marker MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 30 LOC OBJECT CODE LINE SOURCE TEXT VALUE 000422 C008 F025 01523 MOVFF day,curr_alarm_day 01524 ; // clear alarms array 01525 ; char i,j; 01526 ; FSR0=&alarms[0].programm; 000426 EE00 F0B0 01527 LFSR 0,176 01528 ; for(i=0; i<8*3; i++) POSTINC0=0; 00042A 6A09 01529 CLRF i_4,0 00042C 0E18 01530 m031 MOVLW 0x18 00042E 6009 01531 CPFSLT i_4,0 000430 D003 01532 BRA m032 000432 6AEE 01533 CLRF POSTINC0,0 000434 2A09 01534 INCF i_4,1,0 000436 D7FA 01535 BRA m031 01536 ; // read from flash 01537 ; uns16 base=(uns16)day*24; 000438 5008 01538 m032 MOVF day,W,0 00043A 0D18 01539 MULLW 0x18 00043C CFF3 F00B 01540 MOVFF PRODL,base 000440 CFF4 F00C 01541 MOVFF PRODH,base+1 01542 ; base += _ALARMS; 000444 0E07 01543 MOVLW 0x07 000446 260B 01544 ADDWF base,1,0 000448 0E00 01545 MOVLW 0x00 00044A 220C 01546 ADDWFC base+1,1,0 01547 ; mem_read(base, 24, &alarms[0]); 00044C C00B F00D 01548 MOVFF base,addr 000450 C00C F00E 01549 MOVFF base+1,addr+1 000454 0E18 01550 MOVLW 0x18 000456 6E0F 01551 MOVWF lenght,0 000458 0EB0 01552 MOVLW 0xB0 00045A 6E10 01553 MOVWF ptr,0 00045C DF04 01554 RCALL mem_read 01555 ; j=0; 00045E 6A0A 01556 CLRF j_2,0 01557 ; for(i=0; i<8; i++){ 000460 6A09 01558 CLRF i_4,0 000462 0E08 01559 m033 MOVLW 0x08 000464 6009 01560 CPFSLT i_4,0 000466 D00B 01561 BRA m035 01562 ; if(alarms[i].programm & 0x80) j++; 000468 6AEA 01563 CLRF FSR0+1,0 00046A 0E03 01564 MOVLW 0x03 00046C 0209 01565 MULWF i_4,0 00046E 50F3 01566 MOVF PRODL,W,0 000470 0FB0 01567 ADDLW 0xB0 000472 6EE9 01568 MOVWF FSR0,0 000474 AEEF 01569 BTFSS INDF0,7,0 000476 D003 01570 BRA m035 000478 2A0A 01571 INCF j_2,1,0 01572 ; else break; 01573 ; } 00047A 2A09 01574 m034 INCF i_4,1,0 00047C D7F2 01575 BRA m033 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 31 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01576 ; return j; 00047E 500A 01577 m035 MOVF j_2,W,0 000480 0012 01578 RETURN 01579 ;} 01580 ; 01581 ;// set FlashSize variable to (8192 / 16384) 01582 ;// tested work OK 01583 ;void detect_flash_size(void){ 000482 01584 detect_flash_size 01585 ; char tmp1, tmp2, tmp3; 01586 ; tmp1=mem_read_byte(8191); 000482 680C 01587 SETF addr_2,0 000484 0E1F 01588 MOVLW 0x1F 000486 6E0D 01589 MOVWF addr_2+1,0 000488 DF03 01590 RCALL mem_read_byte 00048A 6E05 01591 MOVWF tmp1,0 01592 ; tmp2=mem_read_byte(16383); 00048C 680C 01593 SETF addr_2,0 00048E 0E3F 01594 MOVLW 0x3F 000490 6E0D 01595 MOVWF addr_2+1,0 000492 DEFE 01596 RCALL mem_read_byte 000494 6E06 01597 MOVWF tmp2,0 01598 ; mem_write_byte(16383, 0xff^tmp1); 000496 6808 01599 SETF addr_3,0 000498 0E3F 01600 MOVLW 0x3F 00049A 6E09 01601 MOVWF addr_3+1,0 00049C 1C05 01602 COMF tmp1,W,0 00049E DF08 01603 RCALL mem_write_byte 01604 ; tmp3=mem_read_byte(8191); 0004A0 680C 01605 SETF addr_2,0 0004A2 0E1F 01606 MOVLW 0x1F 0004A4 6E0D 01607 MOVWF addr_2+1,0 0004A6 DEF4 01608 RCALL mem_read_byte 0004A8 6E07 01609 MOVWF tmp3,0 01610 ; mem_write_byte(16383, tmp2); 0004AA 6808 01611 SETF addr_3,0 0004AC 0E3F 01612 MOVLW 0x3F 0004AE 6E09 01613 MOVWF addr_3+1,0 0004B0 5006 01614 MOVF tmp2,W,0 0004B2 DEFE 01615 RCALL mem_write_byte 01616 ; mem_write_byte(8191, tmp1); 0004B4 6808 01617 SETF addr_3,0 0004B6 0E1F 01618 MOVLW 0x1F 0004B8 6E09 01619 MOVWF addr_3+1,0 0004BA 5005 01620 MOVF tmp1,W,0 0004BC DEF9 01621 RCALL mem_write_byte 01622 ; if(tmp1 == tmp3) FlashSize=16384; 0004BE 5005 01623 MOVF tmp1,W,0 0004C0 6207 01624 CPFSEQ tmp3,0 0004C2 D004 01625 BRA m036 0004C4 6BC8 01626 CLRF FlashSize,1 0004C6 0E40 01627 MOVLW 0x40 0004C8 6FC9 01628 MOVWF FlashSize+1,1 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 32 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01629 ; else FlashSize=8192; 0004CA D003 01630 BRA m037 0004CC 6BC8 01631 m036 CLRF FlashSize,1 0004CE 0E20 01632 MOVLW 0x20 0004D0 6FC9 01633 MOVWF FlashSize+1,1 01634 ;} 0004D2 0012 01635 m037 RETURN 01636 ; 01637 ;void read_prg_step(char prg, char step){ 0004D4 01638 read_prg_step 0004D4 6E06 01639 MOVWF step,0 01640 ; current_prg = prg; 0004D6 C005 F02A 01641 MOVFF prg,current_prg 01642 ; current_step = step; 0004DA C006 F02B 01643 MOVFF step,current_step 01644 ; uns16 base=((uns16)prg)*(96+1); //32steps*3 + 1tvp 0004DE 5005 01645 MOVF prg,W,0 0004E0 0D61 01646 MULLW 0x61 0004E2 CFF3 F007 01647 MOVFF PRODL,base_2 0004E6 CFF4 F008 01648 MOVFF PRODH,base_2+1 01649 ; if(fazes12) base+=_PRG12; 0004EA A421 01650 BTFSS 0x21,fazes12,0 0004EC D005 01651 BRA m038 0004EE 0E0F 01652 MOVLW 0x0F 0004F0 2607 01653 ADDWF base_2,1,0 0004F2 0E14 01654 MOVLW 0x14 0004F4 2208 01655 ADDWFC base_2+1,1,0 01656 ; else base+=_PRG16; 0004F6 D004 01657 BRA m039 0004F8 0E3F 01658 m038 MOVLW 0x3F 0004FA 2607 01659 ADDWF base_2,1,0 0004FC 0E23 01660 MOVLW 0x23 0004FE 2208 01661 ADDWFC base_2+1,1,0 01662 ; step *= 3; 000500 0E03 01663 m039 MOVLW 0x03 000502 0206 01664 MULWF step,0 000504 CFF3 F006 01665 MOVFF PRODL,step 01666 ; base += step; 000508 5006 01667 MOVF step,W,0 00050A 2607 01668 ADDWF base_2,1,0 00050C 0E00 01669 MOVLW 0x00 00050E 2208 01670 ADDWFC base_2+1,1,0 01671 ; mem_set_base(base); 000510 C007 F009 01672 MOVFF base_2,addr_4 000514 C008 F00A 01673 MOVFF base_2+1,addr_4+1 000518 DED6 01674 RCALL mem_set_base 01675 ; i2c_start_hrdw(); 00051A DE64 01676 RCALL i2c_start_hrdw 01677 ; i2c_write_hrdw(MEM_READ); 00051C 0EA1 01678 MOVLW 0xA1 00051E DE70 01679 RCALL i2c_write_hrdw 01680 ; current_faza=mem_get_next(1); 000520 8011 01681 BSF 0x11,ack,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 33 LOC OBJECT CODE LINE SOURCE TEXT VALUE 000522 DE7A 01682 RCALL i2c_read_hrdw 000524 6E2C 01683 MOVWF current_faza,0 01684 ; current_delay=mem_get_next(1); 000526 8011 01685 BSF 0x11,ack,0 000528 DE77 01686 RCALL i2c_read_hrdw 00052A 6E2D 01687 MOVWF current_delay,0 01688 ; next_step=mem_get_next(0); 00052C 9011 01689 BCF 0x11,ack,0 00052E DE74 01690 RCALL i2c_read_hrdw 000530 6E2E 01691 MOVWF next_step,0 01692 ; i2c_stop_hrdw(); 000532 D65C 01693 BRA i2c_stop_hrdw 01694 ;} 01695 ; 01696 ;// get tvp_step for current programm 01697 ;void read_prg_tvp_step(char prg){ 000534 01698 read_prg_tvp_step 000534 6E05 01699 MOVWF prg_2,0 01700 ; uns16 base; 01701 ; base = (uns16)prg*(96+1); //32steps*3 + 1tvp 000536 0D61 01702 MULLW 0x61 000538 CFF3 F006 01703 MOVFF PRODL,base_3 00053C CFF4 F007 01704 MOVFF PRODH,base_3+1 01705 ; if(fazes12) base+=_PRG12; 000540 A421 01706 BTFSS 0x21,fazes12,0 000542 D005 01707 BRA m040 000544 0E0F 01708 MOVLW 0x0F 000546 2606 01709 ADDWF base_3,1,0 000548 0E14 01710 MOVLW 0x14 00054A 2207 01711 ADDWFC base_3+1,1,0 01712 ; else base+=_PRG16; 00054C D004 01713 BRA m041 00054E 0E3F 01714 m040 MOVLW 0x3F 000550 2606 01715 ADDWF base_3,1,0 000552 0E23 01716 MOVLW 0x23 000554 2207 01717 ADDWFC base_3+1,1,0 01718 ; base += 96; // offset to TVP step number 000556 0E60 01719 m041 MOVLW 0x60 000558 2606 01720 ADDWF base_3,1,0 00055A 0E00 01721 MOVLW 0x00 00055C 2207 01722 ADDWFC base_3+1,1,0 01723 ; tvp_step=mem_read_byte(base); 00055E C006 F00C 01724 MOVFF base_3,addr_2 000562 C007 F00D 01725 MOVFF base_3+1,addr_2+1 000566 DE94 01726 RCALL mem_read_byte 000568 6E30 01727 MOVWF tvp_step,0 01728 ;} 00056A 0012 01729 RETURN 01730 ; 01731 ;void read_faza(char faza){ 00056C 01732 read_faza 00056C 6E05 01733 MOVWF faza,0 01734 ; uns16 base=_FAZES; MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 34 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00056E 6806 01735 SETF base_4,0 000570 6A07 01736 CLRF base_4+1,0 01737 ; base += faza*8; 000572 0E08 01738 MOVLW 0x08 000574 0205 01739 MULWF faza,0 000576 50F3 01740 MOVF PRODL,W,0 000578 2606 01741 ADDWF base_4,1,0 00057A 0E00 01742 MOVLW 0x00 00057C 2207 01743 ADDWFC base_4+1,1,0 01744 ; mem_read(base, 4, &Faza.fz[0]); 00057E C006 F00D 01745 MOVFF base_4,addr 000582 C007 F00E 01746 MOVFF base_4+1,addr+1 000586 0E04 01747 MOVLW 0x04 000588 6E0F 01748 MOVWF lenght,0 00058A 0E26 01749 MOVLW 0x26 00058C 6E10 01750 MOVWF ptr,0 00058E DE6B 01751 RCALL mem_read 01752 ; as_faza=faza&0x07; 000590 0E07 01753 MOVLW 0x07 000592 1405 01754 ANDWF faza,W,0 000594 6E22 01755 MOVWF as_faza,0 01756 ; as_faza+=1; //for asudd 000596 2A22 01757 INCF as_faza,1,0 01758 ;} 000598 0012 01759 RETURN 01760 ; 01761 ;// read promtact set to Faza array 01762 ;void read_promtact(char from_faza, char to_faza, char tact_step){ 00059A 01763 read_promtact 00059A 6E07 01764 MOVWF tact_step,0 01765 ; current_delay = 0; 00059C 6A2D 01766 CLRF current_delay,0 01767 ; if(from_faza == to_faza) return; 00059E 5005 01768 MOVF from_faza,W,0 0005A0 6206 01769 CPFSEQ to_faza,0 0005A2 D001 01770 BRA m042 0005A4 0012 01771 RETURN 01772 ; if(tact_step > 3) return; 0005A6 0E04 01773 m042 MOVLW 0x04 0005A8 6007 01774 CPFSLT tact_step,0 0005AA 0012 01775 RETURN 01776 ; uns16 base=540; // 15*36 0005AC 0E1C 01777 MOVLW 0x1C 0005AE 6E08 01778 MOVWF base_5,0 0005B0 0E02 01779 MOVLW 0x02 0005B2 6E09 01780 MOVWF base_5+1,0 01781 ; if(fazes12){ 0005B4 A421 01782 BTFSS 0x21,fazes12,0 0005B6 D008 01783 BRA m043 01784 ; base=396; //11*36 0005B8 0E8C 01785 MOVLW 0x8C 0005BA 6E08 01786 MOVWF base_5,0 0005BC 0E01 01787 MOVLW 0x01 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 35 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0005BE 6E09 01788 MOVWF base_5+1,0 01789 ; if(from_faza>11) return;} 0005C0 0E0B 01790 MOVLW 0x0B 0005C2 6405 01791 CPFSGT from_faza,0 0005C4 D004 01792 BRA m044 0005C6 0012 01793 RETURN 01794 ; else{ 01795 ; if(from_faza>15) return;} 0005C8 0E10 01796 m043 MOVLW 0x10 0005CA 6005 01797 CPFSLT from_faza,0 0005CC 0012 01798 RETURN 01799 ; base *= from_faza; 0005CE 5009 01800 m044 MOVF base_5+1,W,0 0005D0 0205 01801 MULWF from_faza,0 0005D2 CFF3 F009 01802 MOVFF PRODL,base_5+1 0005D6 5008 01803 MOVF base_5,W,0 0005D8 0205 01804 MULWF from_faza,0 0005DA CFF3 F008 01805 MOVFF PRODL,base_5 0005DE 50F4 01806 MOVF PRODH,W,0 0005E0 2609 01807 ADDWF base_5+1,1,0 01808 ; if(to_faza > from_faza) to_faza--; // skip one 0005E2 5006 01809 MOVF to_faza,W,0 0005E4 6005 01810 CPFSLT from_faza,0 0005E6 D001 01811 BRA m045 0005E8 0606 01812 DECF to_faza,1,0 01813 ; uns16 base_to=36; 0005EA 0E24 01814 m045 MOVLW 0x24 0005EC 6E0A 01815 MOVWF base_to,0 0005EE 6A0B 01816 CLRF base_to+1,0 01817 ; base_to *= to_faza; 0005F0 500B 01818 MOVF base_to+1,W,0 0005F2 0206 01819 MULWF to_faza,0 0005F4 CFF3 F00B 01820 MOVFF PRODL,base_to+1 0005F8 500A 01821 MOVF base_to,W,0 0005FA 0206 01822 MULWF to_faza,0 0005FC CFF3 F00A 01823 MOVFF PRODL,base_to 000600 50F4 01824 MOVF PRODH,W,0 000602 260B 01825 ADDWF base_to+1,1,0 01826 ; base += _TRANZ; 000604 0E7F 01827 MOVLW 0x7F 000606 2608 01828 ADDWF base_5,1,0 000608 0E01 01829 MOVLW 0x01 00060A 2209 01830 ADDWFC base_5+1,1,0 01831 ; base += base_to; 00060C 500A 01832 MOVF base_to,W,0 00060E 2608 01833 ADDWF base_5,1,0 000610 500B 01834 MOVF base_to+1,W,0 000612 2209 01835 ADDWFC base_5+1,1,0 01836 ; base += tact_step*9; 000614 0E09 01837 MOVLW 0x09 000616 0207 01838 MULWF tact_step,0 000618 50F3 01839 MOVF PRODL,W,0 00061A 2608 01840 ADDWF base_5,1,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 36 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00061C 0E00 01841 MOVLW 0x00 00061E 2209 01842 ADDWFC base_5+1,1,0 01843 ; mem_read(base, 4, &Faza.fz[0]); 000620 C008 F00D 01844 MOVFF base_5,addr 000624 C009 F00E 01845 MOVFF base_5+1,addr+1 000628 0E04 01846 MOVLW 0x04 00062A 6E0F 01847 MOVWF lenght,0 00062C 0E26 01848 MOVLW 0x26 00062E 6E10 01849 MOVWF ptr,0 000630 DE1A 01850 RCALL mem_read 01851 ; current_delay = mem_read_byte(base+8); 000632 0E08 01852 MOVLW 0x08 000634 2408 01853 ADDWF base_5,W,0 000636 6E0C 01854 MOVWF addr_2,0 000638 0E00 01855 MOVLW 0x00 00063A 2009 01856 ADDWFC base_5+1,W,0 00063C 6E0D 01857 MOVWF addr_2+1,0 00063E DE28 01858 RCALL mem_read_byte 000640 6E2D 01859 MOVWF current_delay,0 01860 ;} 000642 0012 01861 RETURN 01862 01863 ; FILE work232.c 01864 ;Task ClockTick(void); 01865 ;Task RS232Connect(void); 01866 ;Task SvLogick(void); 01867 ;Task ProgrammStep(void); 01868 ;Task MakePromTact(void); 01869 ;Task Vpu(void); 01870 ;Task Asudd(void); 01871 ;Task ControlLamps(void); 01872 ;Task GreenWaveChain(void); 01873 ;Task LocalKeys(void); 01874 ;Task GSM(void); 01875 ; 01876 ;void rtc_set_clock(); 01877 ;void test_need_correct(void); 01878 ;void get_correct_flags(void); 01879 ;void clear_correct(void); 01880 ;void __store(char, char); 01881 ;char __restore(char); 01882 ;void states_from_buff(void); 01883 ;void buff_from_states(void); 01884 ;void putc(char W); 01885 ;//----------------------------------------------------------------------------- -- 01886 ; 01887 ;void response_OK(char cmd){ 000644 01888 response_OK 000644 6E06 01889 MOVWF cmd,0 01890 ; putc('@'); 000646 0E40 01891 MOVLW 0x40 000648 EC5D F009 01892 CALL putc MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 37 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01893 ; putc(cmd); 00064C 5006 01894 MOVF cmd,W,0 00064E EC5D F009 01895 CALL putc 01896 ; putc(mem_read_byte(_SN_HIGH)); 000652 6A0C 01897 CLRF addr_2,0 000654 6A0D 01898 CLRF addr_2+1,0 000656 DE1C 01899 RCALL mem_read_byte 000658 EC5D F009 01900 CALL putc 01901 ; putc(mem_read_byte(_SN_LOW)); 00065C 0E01 01902 MOVLW 0x01 00065E 6E0C 01903 MOVWF addr_2,0 000660 6A0D 01904 CLRF addr_2+1,0 000662 DE16 01905 RCALL mem_read_byte 000664 EF5D F009 01906 GOTO putc 01907 ;} 01908 ; 01909 ;Task RSTimeout(void){ 000668 01910 RSTimeout 000668 51E7 01911 MOVF _TaskS13,W,1 00066A E003 01912 BZ m046 00066C 0A01 01913 XORLW 0x01 00066E E006 01914 BZ m047 000670 0C80 01915 RETLW 0x80 01916 ; delay(T_RSTM, 8000); 000672 0E40 01917 m046 MOVLW 0x40 000674 6FD0 01918 MOVWF softTimer+6,1 000676 0E1F 01919 MOVLW 0x1F 000678 6FD1 01920 MOVWF softTimer+7,1 00067A 9656 01921 BCF tTimeout,3,0 00067C A656 01922 m047 BTFSS tTimeout,3,0 00067E 0C01 01923 RETLW 0x01 01924 ; startTask(RS232Connect); 000680 6A5B 01925 CLRF _TaskS3,0 01926 ; i2c_stop_hrdw(); 000682 DDB4 01927 RCALL i2c_stop_hrdw 01928 ;} 000684 0C80 01929 RETLW 0x80 01930 ; 01931 ;Task RS232Connect(void){ 000686 01932 RS232Connect 000686 0E03 01933 MOVLW 0x03 000688 5C5B 01934 SUBWF _TaskS3,W,0 00068A B0D8 01935 BTFSC 0xFD8,Carry,0 00068C 0C00 01936 RETLW 0x00 00068E 50F9 01937 MOVF PCL,W,0 000690 445B 01938 RLNCF _TaskS3,W,0 000692 26F9 01939 ADDWF PCL,1,0 000694 D002 01940 BRA m048 000696 D003 01941 BRA m049 000698 D00A 01942 BRA m050 01943 ;static char * p_states; 01944 ;static char * p_health; 01945 ; do{ MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 38 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01946 ; clearTask(RSTimeout); 00069A 0E80 01947 m048 MOVLW 0x80 00069C 6FE7 01948 MOVWF _TaskS13,1 01949 ; while(!RCIF) waitState(); 00069E AA9E 01950 m049 BTFSS 0xF9E,RCIF,0 0006A0 0C01 01951 RETLW 0x01 01952 ; static char rcv; rcv=RCREG; 0006A2 CFAE F0EA 01953 MOVFF RCREG,rcv 01954 ; if (rcv !='@') restartTask(); 0006A6 0E40 01955 MOVLW 0x40 0006A8 63EA 01956 CPFSEQ rcv,1 0006AA 0C00 01957 RETLW 0x00 01958 ; startTask(RSTimeout); 0006AC 6BE7 01959 CLRF _TaskS13,1 01960 ; while(!RCIF) waitState(); 0006AE AA9E 01961 m050 BTFSS 0xF9E,RCIF,0 0006B0 0C02 01962 RETLW 0x02 01963 ; static uns16 tcicl, cfg_size; 01964 ; rcv=RCREG; 0006B2 CFAE F0EA 01965 MOVFF RCREG,rcv 01966 ; { // work only with comp - no more svetofor logic here!!! 01967 ; clearTask(SvLogick); 0006B6 0E80 01968 MOVLW 0x80 0006B8 6E5C 01969 MOVWF _TaskS4,0 01970 ; clearTask(ProgrammStep); 0006BA 6E5D 01971 MOVWF _TaskS5,0 01972 ; clearTask(MakePromTact); 0006BC 6E5E 01973 MOVWF _TaskS6,0 01974 ; clearTask(Vpu); 0006BE 6E5F 01975 MOVWF _TaskS7,0 01976 ; clearTask(Asudd); 0006C0 6FE2 01977 MOVWF _TaskS8,1 01978 ; clearTask(ControlLamps); 0006C2 6FE3 01979 MOVWF _TaskS9,1 01980 ; clearTask(GreenWaveChain); 0006C4 6FE4 01981 MOVWF _TaskS10,1 01982 ; clearTask(LocalKeys); 0006C6 6FE5 01983 MOVWF _TaskS11,1 01984 ; clearTask(GSMRcv); 0006C8 6E13 01985 MOVWF _TaskS1,0 01986 ; clearTask(GSM); 0006CA 6FE6 01987 MOVWF _TaskS12,1 01988 ; setEvent(evtRS232); 0006CC 823F 01989 BSF EventStates+1,1,0 01990 ; } 01991 ; switch(rcv){ 0006CE 51EA 01992 MOVF rcv,W,1 0006D0 0A30 01993 XORLW 0x30 0006D2 E035 01994 BZ m051 0006D4 0A01 01995 XORLW 0x01 0006D6 E036 01996 BZ m052 0006D8 0A03 01997 XORLW 0x03 0006DA E066 01998 BZ m060 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 39 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0006DC 0A01 01999 XORLW 0x01 0006DE B4D8 02000 BTFSC 0xFD8,Zero_,0 0006E0 D093 02001 BRA m066 0006E2 0A07 02002 XORLW 0x07 0006E4 B4D8 02003 BTFSC 0xFD8,Zero_,0 0006E6 D0B3 02004 BRA m074 0006E8 0A0B 02005 XORLW 0x0B 0006EA B4D8 02006 BTFSC 0xFD8,Zero_,0 0006EC D0C6 02007 BRA m075 0006EE 0A02 02008 XORLW 0x02 0006F0 B4D8 02009 BTFSC 0xFD8,Zero_,0 0006F2 D0CE 02010 BRA m077 0006F4 0A1C 02011 XORLW 0x1C 0006F6 B4D8 02012 BTFSC 0xFD8,Zero_,0 0006F8 D0DC 02013 BRA m081 0006FA 0A0B 02014 XORLW 0x0B 0006FC B4D8 02015 BTFSC 0xFD8,Zero_,0 0006FE D0DC 02016 BRA m082 000700 0A0E 02017 XORLW 0x0E 000702 B4D8 02018 BTFSC 0xFD8,Zero_,0 000704 D0DD 02019 BRA m083 000706 0A01 02020 XORLW 0x01 000708 B4D8 02021 BTFSC 0xFD8,Zero_,0 00070A D0FF 02022 BRA m088 00070C 0A1B 02023 XORLW 0x1B 00070E B4D8 02024 BTFSC 0xFD8,Zero_,0 000710 D12B 02025 BRA m095 000712 0A02 02026 XORLW 0x02 000714 B4D8 02027 BTFSC 0xFD8,Zero_,0 000716 D13B 02028 BRA m099 000718 0A71 02029 XORLW 0x71 00071A B4D8 02030 BTFSC 0xFD8,Zero_,0 00071C D147 02031 BRA m100 00071E 0A05 02032 XORLW 0x05 000720 B4D8 02033 BTFSC 0xFD8,Zero_,0 000722 D14B 02034 BRA m101 000724 0A01 02035 XORLW 0x01 000726 B4D8 02036 BTFSC 0xFD8,Zero_,0 000728 D14F 02037 BRA m102 00072A 0A06 02038 XORLW 0x06 00072C B4D8 02039 BTFSC 0xFD8,Zero_,0 00072E D15A 02040 BRA m106 000730 0A08 02041 XORLW 0x08 000732 B4D8 02042 BTFSC 0xFD8,Zero_,0 000734 D164 02043 BRA m107 000736 0A20 02044 XORLW 0x20 000738 B4D8 02045 BTFSC 0xFD8,Zero_,0 00073A D17F 02046 BRA m112 00073C D188 02047 BRA m114 02048 ; case('0'):{ // Present echo 2 byte serial number 02049 ; response_OK('0'); 00073E 0E30 02050 m051 MOVLW 0x30 000740 DF81 02051 RCALL response_OK MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 40 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02052 ; break;} 000742 D185 02053 BRA m114 02054 ; case('1'):{ // settings comp->contr writes config 02055 ; DI; 000744 9EF2 02056 m052 BCF 0xFF2,GIE,0 000746 9EF2 02057 BCF 0xFF2,GIE,0 02058 ; i2c_start_hrdw(); 000748 DD4D 02059 RCALL i2c_start_hrdw 02060 ; i2c_write_hrdw(MEM_WRITE); 00074A 0EA0 02061 MOVLW 0xA0 00074C DD59 02062 RCALL i2c_write_hrdw 02063 ; i2c_write_hrdw(_CFG_START / 256); 00074E 0E00 02064 MOVLW 0x00 000750 DD57 02065 RCALL i2c_write_hrdw 02066 ; i2c_write_hrdw(_CFG_START % 256); 000752 0E00 02067 MOVLW 0x00 000754 DD55 02068 RCALL i2c_write_hrdw 02069 ; if(fazes12) cfg_size=_CFG_SIZE12; 000756 A421 02070 BTFSS 0x21,fazes12,0 000758 D005 02071 BRA m053 00075A 0E9F 02072 MOVLW 0x9F 00075C 6FED 02073 MOVWF cfg_size,1 00075E 0E1A 02074 MOVLW 0x1A 000760 6FEE 02075 MOVWF cfg_size+1,1 02076 ; else cfg_size=_CFG_SIZE16; 000762 D004 02077 BRA m054 000764 0ECF 02078 m053 MOVLW 0xCF 000766 6FED 02079 MOVWF cfg_size,1 000768 0E29 02080 MOVLW 0x29 00076A 6FEE 02081 MOVWF cfg_size+1,1 02082 ; for(tcicl=0; tcicl < cfg_size; tcicl++){ 00076C 6BEB 02083 m054 CLRF tcicl,1 00076E 6BEC 02084 CLRF tcicl+1,1 000770 51ED 02085 m055 MOVF cfg_size,W,1 000772 5DEB 02086 SUBWF tcicl,W,1 000774 51EE 02087 MOVF cfg_size+1,W,1 000776 59EC 02088 SUBWFB tcicl+1,W,1 000778 E212 02089 BC m059 02090 ; while(!RCIF && !OERR); 00077A BA9E 02091 m056 BTFSC 0xF9E,RCIF,0 00077C D002 02092 BRA m057 00077E A2AB 02093 BTFSS 0xFAB,OERR,0 000780 D7FC 02094 BRA m056 02095 ; clrwdt(); 000782 0004 02096 m057 CLRWDT 02097 ; if(OERR) {i2c_stop_hrdw(); EI; restartTa sk();} 000784 A2AB 02098 BTFSS 0xFAB,OERR,0 000786 D003 02099 BRA m058 000788 DD31 02100 RCALL i2c_stop_hrdw 00078A 8EF2 02101 BSF 0xFF2,GIE,0 00078C 0C00 02102 RETLW 0x00 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 41 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02103 ; rcv=RCREG; 00078E CFAE F0EA 02104 m058 MOVFF RCREG,rcv 02105 ; mem_set_next(rcv); 000792 51EA 02106 MOVF rcv,W,1 000794 DD35 02107 RCALL i2c_write_hrdw 02108 ; } 000796 2BEB 02109 INCF tcicl,1,1 000798 0E00 02110 MOVLW 0x00 00079A 23EC 02111 ADDWFC tcicl+1,1,1 00079C D7E9 02112 BRA m055 02113 ; i2c_stop_hrdw(); 00079E DD26 02114 m059 RCALL i2c_stop_hrdw 02115 ; EI; 0007A0 8EF2 02116 BSF 0xFF2,GIE,0 02117 ; response_OK('1'); 0007A2 0E31 02118 MOVLW 0x31 0007A4 DF4F 02119 RCALL response_OK 02120 ; break;} 0007A6 D153 02121 BRA m114 02122 ; case('2'):{ // settings contr->comp reads config 02123 ; DI; 0007A8 9EF2 02124 m060 BCF 0xFF2,GIE,0 0007AA 9EF2 02125 BCF 0xFF2,GIE,0 02126 ; i2c_start_hrdw(); 0007AC DD1B 02127 RCALL i2c_start_hrdw 02128 ; i2c_write_hrdw(MEM_WRITE); 0007AE 0EA0 02129 MOVLW 0xA0 0007B0 DD27 02130 RCALL i2c_write_hrdw 02131 ; i2c_write_hrdw(_CFG_START / 256); 0007B2 0E00 02132 MOVLW 0x00 0007B4 DD25 02133 RCALL i2c_write_hrdw 02134 ; i2c_write_hrdw(_CFG_START % 256); //from a ddr=0 0007B6 0E00 02135 MOVLW 0x00 0007B8 DD23 02136 RCALL i2c_write_hrdw 02137 ; i2c_restart_hrdw(); 0007BA DD1E 02138 RCALL i2c_restart_hrdw 02139 ; i2c_write_hrdw(MEM_READ); 0007BC 0EA1 02140 MOVLW 0xA1 0007BE DD20 02141 RCALL i2c_write_hrdw 02142 ; if(fazes12) cfg_size=_CFG_SIZE12; 0007C0 A421 02143 BTFSS 0x21,fazes12,0 0007C2 D005 02144 BRA m061 0007C4 0E9F 02145 MOVLW 0x9F 0007C6 6FED 02146 MOVWF cfg_size,1 0007C8 0E1A 02147 MOVLW 0x1A 0007CA 6FEE 02148 MOVWF cfg_size+1,1 02149 ; else cfg_size=_CFG_SIZE16; 0007CC D004 02150 BRA m062 0007CE 0ECF 02151 m061 MOVLW 0xCF 0007D0 6FED 02152 MOVWF cfg_size,1 0007D2 0E29 02153 MOVLW 0x29 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 42 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0007D4 6FEE 02154 MOVWF cfg_size+1,1 02155 ; for(tcicl=0; tcicl < cfg_size; tcicl++) {put(mem _get_next(1))} 0007D6 6BEB 02156 m062 CLRF tcicl,1 0007D8 6BEC 02157 CLRF tcicl+1,1 0007DA 51ED 02158 m063 MOVF cfg_size,W,1 0007DC 5DEB 02159 SUBWF tcicl,W,1 0007DE 51EE 02160 MOVF cfg_size+1,W,1 0007E0 59EC 02161 SUBWFB tcicl+1,W,1 0007E2 E20D 02162 BC m065 0007E4 989E 02163 BCF 0xF9E,TXIF,0 0007E6 8011 02164 BSF 0x11,ack,0 0007E8 DD17 02165 RCALL i2c_read_hrdw 0007EA 6EAD 02166 MOVWF TXREG,0 0007EC A2AC 02167 m064 BTFSS 0xFAC,TRMT,0 0007EE D7FE 02168 BRA m064 0007F0 A89E 02169 BTFSS 0xF9E,TXIF,0 0007F2 D7FC 02170 BRA m064 0007F4 0004 02171 CLRWDT 0007F6 2BEB 02172 INCF tcicl,1,1 0007F8 0E00 02173 MOVLW 0x00 0007FA 23EC 02174 ADDWFC tcicl+1,1,1 0007FC D7EE 02175 BRA m063 02176 ; mem_get_next(0); //just a fake reads 0007FE 9011 02177 m065 BCF 0x11,ack,0 000800 DD0B 02178 RCALL i2c_read_hrdw 02179 ; i2c_stop_hrdw(); 000802 DCF4 02180 RCALL i2c_stop_hrdw 02181 ; EI; 000804 8EF2 02182 BSF 0xFF2,GIE,0 02183 ; break;} 000806 D123 02184 BRA m114 02185 ; case('3'):{ // comp->contr correction Time ääììããÄÄ××ÌÌC C 02186 ; clrwdt(); 000808 0004 02187 m066 CLRWDT 02188 ; while(!RCIF); clk_buff[4]=RCREG; // ää 00080A AA9E 02189 m067 BTFSS 0xF9E,RCIF,0 00080C D7FE 02190 BRA m067 00080E CFAE F019 02191 MOVFF RCREG,clk_buff+4 02192 ; while(!RCIF); clk_buff[5]=RCREG; // ìì 000812 AA9E 02193 m068 BTFSS 0xF9E,RCIF,0 000814 D7FE 02194 BRA m068 000816 CFAE F01A 02195 MOVFF RCREG,clk_buff+5 02196 ; while(!RCIF); clk_buff[6]=RCREG; // ãã 00081A AA9E 02197 m069 BTFSS 0xF9E,RCIF,0 00081C D7FE 02198 BRA m069 00081E CFAE F01B 02199 MOVFF RCREG,clk_buff+6 02200 ; while(!RCIF); clk_buff[3]=RCREG; // ÄÄ 000822 AA9E 02201 m070 BTFSS 0xF9E,RCIF,0 000824 D7FE 02202 BRA m070 000826 CFAE F018 02203 MOVFF RCREG,clk_buff+3 02204 ; while(!RCIF); clk_buff[2]=RCREG; // ×× MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 43 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00082A AA9E 02205 m071 BTFSS 0xF9E,RCIF,0 00082C D7FE 02206 BRA m071 00082E CFAE F017 02207 MOVFF RCREG,clk_buff+2 02208 ; while(!RCIF); clk_buff[1]=RCREG; // ÌÌ 000832 AA9E 02209 m072 BTFSS 0xF9E,RCIF,0 000834 D7FE 02210 BRA m072 000836 CFAE F016 02211 MOVFF RCREG,clk_buff+1 02212 ; while(!RCIF); clk_buff[0]=RCREG; // ÑÑ 00083A AA9E 02213 m073 BTFSS 0xF9E,RCIF,0 00083C D7FE 02214 BRA m073 00083E CFAE F015 02215 MOVFF RCREG,clk_buff 02216 ; rtc_set_clock(); 000842 DA44 02217 RCALL rtc_set_clock 02218 ; response_OK('3'); 000844 0E33 02219 MOVLW 0x33 000846 DEFE 02220 RCALL response_OK 02221 ; get_correct_flags(); 000848 DB20 02222 RCALL get_correct_flags 02223 ; test_need_correct(); 00084A DAEA 02224 RCALL test_need_correct 02225 ; break;} 00084C D100 02226 BRA m114 02227 ; case('4'):{ // contr->comp read Time ääììããÄÄ××ÌÌÑÑ 02228 ; putc(clk_buff[4]); 00084E 5019 02229 m074 MOVF clk_buff+4,W,0 000850 EC5D F009 02230 CALL putc 02231 ; putc(clk_buff[5]); 000854 501A 02232 MOVF clk_buff+5,W,0 000856 EC5D F009 02233 CALL putc 02234 ; putc(clk_buff[6]); 00085A 501B 02235 MOVF clk_buff+6,W,0 00085C EC5D F009 02236 CALL putc 02237 ; putc(clk_buff[3]); 000860 5018 02238 MOVF clk_buff+3,W,0 000862 EC5D F009 02239 CALL putc 02240 ; putc(clk_buff[2]); 000866 5017 02241 MOVF clk_buff+2,W,0 000868 EC5D F009 02242 CALL putc 02243 ; putc(clk_buff[1]); 00086C 5016 02244 MOVF clk_buff+1,W,0 00086E EC5D F009 02245 CALL putc 02246 ; putc(clk_buff[0]); 000872 5015 02247 MOVF clk_buff,W,0 000874 EC5D F009 02248 CALL putc 02249 ; break;} 000878 D0EA 02250 BRA m114 02251 ; case('?'):{ // contr->comp read 32bytes states 02252 ; buff_from_states(); 00087A D976 02253 m075 RCALL buff_from_states 02254 ; FSR0=&rs_buff[0]; 00087C EE00 F060 02255 LFSR 0,96 02256 ; rcv=32; 000880 0E20 02257 MOVLW 0x20 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 44 LOC OBJECT CODE LINE SOURCE TEXT VALUE 000882 6FEA 02258 MOVWF rcv,1 02259 ; do{ 02260 ; putc(POSTINC0); 000884 50EE 02261 m076 MOVF POSTINC0,W,0 000886 EC5D F009 02262 CALL putc 02263 ; }while(--rcv); 00088A 2FEA 02264 DECFSZ rcv,1,1 00088C D7FB 02265 BRA m076 02266 ; break;} 00088E D0DF 02267 BRA m114 02268 ; case('='):{ // comp->contr set 32bytes states 02269 ; FSR0=&rs_buff[0]; 000890 EE00 F060 02270 m077 LFSR 0,96 02271 ; for(rcv=0; rcv<32; rcv++){ 000894 6BEA 02272 CLRF rcv,1 000896 0E20 02273 m078 MOVLW 0x20 000898 61EA 02274 CPFSLT rcv,1 00089A D007 02275 BRA m080 02276 ; clrwdt(); 00089C 0004 02277 CLRWDT 02278 ; while(!RCIF); 00089E AA9E 02279 m079 BTFSS 0xF9E,RCIF,0 0008A0 D7FE 02280 BRA m079 02281 ; POSTINC0 = RCREG;} 0008A2 CFAE FFEE 02282 MOVFF RCREG,POSTINC0 0008A6 2BEA 02283 INCF rcv,1,1 0008A8 D7F6 02284 BRA m078 02285 ; response_OK('='); 0008AA 0E3D 02286 m080 MOVLW 0x3D 0008AC DECB 02287 RCALL response_OK 02288 ; states_from_buff(); 0008AE D942 02289 RCALL states_from_buff 02290 ; break;} 0008B0 D0CE 02291 BRA m114 02292 ; case('!'):{ // comp->contr run self test 02293 ; response_OK('!'); // always tests 0008B2 0E21 02294 m081 MOVLW 0x21 0008B4 DEC7 02295 RCALL response_OK 02296 ; break;} 0008B6 D0CB 02297 BRA m114 02298 ; case('*'):{ // comp->contr restart controller 02299 ; response_OK('*'); 0008B8 0E2A 02300 m082 MOVLW 0x2A 0008BA DEC4 02301 RCALL response_OK 02302 ; #asm 02303 ; DW 0x00FF 0008BC 00FF 02304 DW 0xFF 02305 ; #endasm 02306 ; break;} 0008BE D0C7 02307 BRA m114 02308 ; case('$'):{ // contr->comp read log 02309 ; tcicl=0; MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 45 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0008C0 6BEB 02310 m083 CLRF tcicl,1 0008C2 6BEC 02311 CLRF tcicl+1,1 02312 ; if(fazes12) mem_set_base(_BASE_LOG_START12); 0008C4 A421 02313 BTFSS 0x21,fazes12,0 0008C6 D006 02314 BRA m084 0008C8 0EA2 02315 MOVLW 0xA2 0008CA 6E09 02316 MOVWF addr_4,0 0008CC 0E1A 02317 MOVLW 0x1A 0008CE 6E0A 02318 MOVWF addr_4+1,0 0008D0 DCFA 02319 RCALL mem_set_base 02320 ; else mem_set_base(_BASE_LOG_START16); 0008D2 D005 02321 BRA m085 0008D4 0EA2 02322 m084 MOVLW 0xA2 0008D6 6E09 02323 MOVWF addr_4,0 0008D8 0E3A 02324 MOVLW 0x3A 0008DA 6E0A 02325 MOVWF addr_4+1,0 0008DC DCF4 02326 RCALL mem_set_base 02327 ; i2c_start_hrdw(); 0008DE DC82 02328 m085 RCALL i2c_start_hrdw 02329 ; i2c_write_hrdw(MEM_READ); 0008E0 0EA1 02330 MOVLW 0xA1 0008E2 DC8E 02331 RCALL i2c_write_hrdw 02332 ; for(tcicl=0; tcicl < _LOG_SIZE; tcicl++){ 0008E4 6BEB 02333 CLRF tcicl,1 0008E6 6BEC 02334 CLRF tcicl+1,1 0008E8 0E5E 02335 m086 MOVLW 0x5E 0008EA 5DEB 02336 SUBWF tcicl,W,1 0008EC 0E05 02337 MOVLW 0x05 0008EE 59EC 02338 SUBWFB tcicl+1,W,1 0008F0 E208 02339 BC m087 02340 ; putc(mem_get_next(1)); 0008F2 8011 02341 BSF 0x11,ack,0 0008F4 DC91 02342 RCALL i2c_read_hrdw 0008F6 EC5D F009 02343 CALL putc 02344 ; } 0008FA 2BEB 02345 INCF tcicl,1,1 0008FC 0E00 02346 MOVLW 0x00 0008FE 23EC 02347 ADDWFC tcicl+1,1,1 000900 D7F3 02348 BRA m086 02349 ; mem_get_next(0); 000902 9011 02350 m087 BCF 0x11,ack,0 000904 DC89 02351 RCALL i2c_read_hrdw 02352 ; i2c_stop_hrdw(); 000906 DC72 02353 RCALL i2c_stop_hrdw 02354 ; break;} 000908 D0A2 02355 BRA m114 02356 ; case('%'):{ // clear log memory (set to 00) 02357 ; tcicl=0; 00090A 6BEB 02358 m088 CLRF tcicl,1 00090C 6BEC 02359 CLRF tcicl+1,1 02360 ; if(fazes12) mem_set_base(_LOG_ADDR12); 00090E A421 02361 BTFSS 0x21,fazes12,0 000910 D006 02362 BRA m089 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 46 LOC OBJECT CODE LINE SOURCE TEXT VALUE 000912 0EA0 02363 MOVLW 0xA0 000914 6E09 02364 MOVWF addr_4,0 000916 0E1A 02365 MOVLW 0x1A 000918 6E0A 02366 MOVWF addr_4+1,0 00091A DCD5 02367 RCALL mem_set_base 02368 ; else mem_set_base(_LOG_ADDR16); 00091C D005 02369 BRA m090 00091E 0EA0 02370 m089 MOVLW 0xA0 000920 6E09 02371 MOVWF addr_4,0 000922 0E3A 02372 MOVLW 0x3A 000924 6E0A 02373 MOVWF addr_4+1,0 000926 DCCF 02374 RCALL mem_set_base 02375 ; i2c_start_hrdw(); 000928 DC5D 02376 m090 RCALL i2c_start_hrdw 02377 ; i2c_write_hrdw(MEM_WRITE); 00092A 0EA0 02378 MOVLW 0xA0 00092C DC69 02379 RCALL i2c_write_hrdw 02380 ; if(fazes12){ 00092E A421 02381 BTFSS 0x21,fazes12,0 000930 D005 02382 BRA m091 02383 ; i2c_write_hrdw(_LOG_ADDR12 / 256); 000932 0E1A 02384 MOVLW 0x1A 000934 DC65 02385 RCALL i2c_write_hrdw 02386 ; i2c_write_hrdw(_LOG_ADDR12 % 256); 000936 0EA0 02387 MOVLW 0xA0 000938 DC63 02388 RCALL i2c_write_hrdw 02389 ; }else{ 00093A D004 02390 BRA m092 02391 ; i2c_write_hrdw(_LOG_ADDR16 / 256); 00093C 0E3A 02392 m091 MOVLW 0x3A 00093E DC60 02393 RCALL i2c_write_hrdw 02394 ; i2c_write_hrdw(_LOG_ADDR16 % 256); 000940 0EA0 02395 MOVLW 0xA0 000942 DC5E 02396 RCALL i2c_write_hrdw 02397 ; } 02398 ; for(tcicl=0; tcicl < _LOG_SIZE; tcicl++){ 000944 6BEB 02399 m092 CLRF tcicl,1 000946 6BEC 02400 CLRF tcicl+1,1 000948 0E5E 02401 m093 MOVLW 0x5E 00094A 5DEB 02402 SUBWF tcicl,W,1 00094C 0E05 02403 MOVLW 0x05 00094E 59EC 02404 SUBWFB tcicl+1,W,1 000950 E207 02405 BC m094 02406 ; mem_set_next(0); 000952 0E00 02407 MOVLW 0x00 000954 DC55 02408 RCALL i2c_write_hrdw 02409 ; clrwdt(); 000956 0004 02410 CLRWDT 02411 ; } 000958 2BEB 02412 INCF tcicl,1,1 00095A 0E00 02413 MOVLW 0x00 00095C 23EC 02414 ADDWFC tcicl+1,1,1 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 47 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00095E D7F4 02415 BRA m093 02416 ; i2c_stop_hrdw(); 000960 DC45 02417 m094 RCALL i2c_stop_hrdw 02418 ; response_OK('%'); 000962 0E25 02419 MOVLW 0x25 000964 DE6F 02420 RCALL response_OK 02421 ; break;} 000966 D073 02422 BRA m114 02423 ; case('>'):{ // copyright information 02424 ; char addr=0; 000968 6A05 02425 m095 CLRF addr_5,0 02426 ; do{ 02427 ; rcv=read_eeprom(addr); 00096A 5005 02428 m096 MOVF addr_5,W,0 00096C DC74 02429 RCALL read_eeprom 00096E 6FEA 02430 MOVWF rcv,1 02431 ; addr++; 000970 2A05 02432 INCF addr_5,1,0 02433 ; if(rcv==0xff){putc(0); break;} 000972 3DEA 02434 INCFSZ rcv,W,1 000974 D004 02435 BRA m097 000976 0E00 02436 MOVLW 0x00 000978 EC5D F009 02437 CALL putc 00097C D068 02438 BRA m114 02439 ; if(rcv==0) rcv=0x20; 00097E 67EA 02440 m097 TSTFSZ rcv,1 000980 D002 02441 BRA m098 000982 0E20 02442 MOVLW 0x20 000984 6FEA 02443 MOVWF rcv,1 02444 ; putc(rcv); 000986 51EA 02445 m098 MOVF rcv,W,1 000988 EC5D F009 02446 CALL putc 02447 ; }while(TRUE); 00098C D7EE 02448 BRA m096 02449 ; break;} 02450 ; case('<'):{ // sys variables 02451 ; putc(__restore(0x10));// year of ZIMA time corre ction 00098E 0E10 02452 m099 MOVLW 0x10 000990 DAB2 02453 RCALL __restore 000992 EC5D F009 02454 CALL putc 02455 ; putc(__restore(0x11));// year of LETO time corre ction 000996 0E11 02456 MOVLW 0x11 000998 DAAE 02457 RCALL __restore 00099A EC5D F009 02458 CALL putc 02459 ; putc(BoardNumb*4); // channals count 00099E 0E04 02460 MOVLW 0x04 0009A0 0102 02461 MOVLB 0x02 0009A2 0304 02462 MULWF BoardNumb,1 0009A4 50F3 02463 MOVF PRODL,W,0 0009A6 EC5D F009 02464 CALL putc 02465 ; break;} MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 48 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0009AA D051 02466 BRA m114 02467 ; case('M'):{ // flash size 02468 ; putc(FlashSize.high8); 0009AC 51C9 02469 m100 MOVF FlashSize+1,W,1 0009AE EC5D F009 02470 CALL putc 02471 ; putc(FlashSize.low8); 0009B2 51C8 02472 MOVF FlashSize,W,1 0009B4 EC5D F009 02473 CALL putc 02474 ; break;} 0009B8 D04A 02475 BRA m114 02476 ; case('H'):{ // hardware description 02477 ; putc(H_DESCR/256); 0009BA 0E01 02478 m101 MOVLW 0x01 0009BC EC5D F009 02479 CALL putc 02480 ; putc(H_DESCR%256); 0009C0 0E00 02481 MOVLW 0x00 0009C2 EC5D F009 02482 CALL putc 02483 ; break;} 0009C6 D043 02484 BRA m114 02485 ; case('I'):{ // comp -> contr set indicator states 02486 ; clrwdt(); 0009C8 0004 02487 m102 CLRWDT 02488 ; while(!RCIF); W=RCREG; 0009CA AA9E 02489 m103 BTFSS 0xF9E,RCIF,0 0009CC D7FE 02490 BRA m103 0009CE 50AE 02491 MOVF RCREG,W,0 02492 ; while(!RCIF); W=RCREG; 0009D0 AA9E 02493 m104 BTFSS 0xF9E,RCIF,0 0009D2 D7FE 02494 BRA m104 0009D4 50AE 02495 MOVF RCREG,W,0 02496 ; while(!RCIF); ind_states=RCREG; 0009D6 AA9E 02497 m105 BTFSS 0xF9E,RCIF,0 0009D8 D7FE 02498 BRA m105 0009DA CFAE F01D 02499 MOVFF RCREG,ind_states 02500 ; response_OK('I'); 0009DE 0E49 02501 MOVLW 0x49 0009E0 DE31 02502 RCALL response_OK 02503 ; break;} 0009E2 D035 02504 BRA m114 02505 ; case('O'):{ // comp -> contr set indicator states 02506 ; putc(ind_states); 0009E4 501D 02507 m106 MOVF ind_states,W,0 0009E6 EC5D F009 02508 CALL putc 02509 ; putc(0); 0009EA 0E00 02510 MOVLW 0x00 0009EC EC5D F009 02511 CALL putc 02512 ; putc(0); 0009F0 0E00 02513 MOVLW 0x00 0009F2 EC5D F009 02514 CALL putc 02515 ; putc(ind_live); 0009F6 501F 02516 MOVF ind_live,W,0 0009F8 EC5D F009 02517 CALL putc 02518 ; break;} MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 49 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0009FC D028 02519 BRA m114 02520 ; case('G'):{ // comp -> contr set GSM data 02521 ; FSR0=&rs_buff[0]; 0009FE EE00 F060 02522 m107 LFSR 0,96 02523 ; for(rcv=0; rcv<32; rcv++){ 000A02 6BEA 02524 CLRF rcv,1 000A04 0E20 02525 m108 MOVLW 0x20 000A06 61EA 02526 CPFSLT rcv,1 000A08 D007 02527 BRA m110 02528 ; clrwdt(); 000A0A 0004 02529 CLRWDT 02530 ; while(!RCIF); 000A0C AA9E 02531 m109 BTFSS 0xF9E,RCIF,0 000A0E D7FE 02532 BRA m109 02533 ; POSTINC0 = RCREG;} 000A10 CFAE FFEE 02534 MOVFF RCREG,POSTINC0 000A14 2BEA 02535 INCF rcv,1,1 000A16 D7F6 02536 BRA m108 02537 ; response_OK('G'); 000A18 0E47 02538 m110 MOVLW 0x47 000A1A DE14 02539 RCALL response_OK 02540 ; rcv=GSM_DATA; 000A1C 0E12 02541 MOVLW 0x12 000A1E 6FEA 02542 MOVWF rcv,1 02543 ; char i; 02544 ; FSR0=&rs_buff[0]; 000A20 EE00 F060 02545 LFSR 0,96 02546 ; for(i=0; i<32; i++){ 000A24 6A05 02547 CLRF i_5,0 000A26 0E20 02548 m111 MOVLW 0x20 000A28 6005 02549 CPFSLT i_5,0 000A2A D011 02550 BRA m114 02551 ; __store(rcv,POSTINC0); // store to clock NVRAM 000A2C C0EA F008 02552 MOVFF rcv,rtcreg 000A30 50EE 02553 MOVF POSTINC0,W,0 000A32 D908 02554 RCALL rtc_set 02555 ; rcv++; 000A34 2BEA 02556 INCF rcv,1,1 02557 ; } 000A36 2A05 02558 INCF i_5,1,0 000A38 D7F6 02559 BRA m111 02560 ; break;} 02561 ; case('g'):{ // contr -> comp get GSM data 02562 ; rcv=GSM_DATA; 000A3A 0E12 02563 m112 MOVLW 0x12 000A3C 6FEA 02564 MOVWF rcv,1 02565 ; do{ 02566 ; putc(__restore(rcv)); 000A3E 51EA 02567 m113 MOVF rcv,W,1 000A40 DA5A 02568 RCALL __restore 000A42 EC5D F009 02569 CALL putc 02570 ; rcv++; MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 50 LOC OBJECT CODE LINE SOURCE TEXT VALUE 000A46 2BEA 02571 INCF rcv,1,1 02572 ; }while(rcv != GSM_DATA+32); 000A48 0E32 02573 MOVLW 0x32 000A4A 63EA 02574 CPFSEQ rcv,1 000A4C D7F8 02575 BRA m113 02576 ; break;} 02577 ; default:{ // error 02578 ; break;} 02579 ; } 02580 ; }while(TRUE); 000A4E 0100 02581 m114 MOVLB 0x00 000A50 D624 02582 BRA m048 02583 ;} 02584 02585 ; FILE channals.c 02586 ;#define WR_CHANNAL 0b0100.000.0 02587 ;#define WR_CHANNALA 0b0111.000.0 02588 ; 02589 ;#define RD_CHANNAL 0b0000.000.1 02590 ; 02591 ;void setAllGood(void); 02592 ; 02593 ;bit set_channal(char addr, char dat){ 000A52 02594 set_channal 000A52 6E08 02595 MOVWF dat_2,0 02596 ;#ifdef EMUL 02597 ; return TRUE; 000A54 80D8 02598 BSF 0xFD8,Carry,0 000A56 0012 02599 RETURN 02600 ;#endif 02601 ; 02602 ; bit ack; 02603 ; i2c_start_hrdw(); 000A58 ECF2 F000 02604 CALL i2c_start_hrdw 02605 ; ack=i2c_write_hrdw( addr ); 000A5C 5007 02606 MOVF addr_6,W,0 000A5E EC00 F001 02607 CALL i2c_write_hrdw 000A62 9009 02608 BCF 0x09,ack_2,0 000A64 B0D8 02609 BTFSC 0xFD8,Carry,0 000A66 8009 02610 BSF 0x09,ack_2,0 02611 ; if(ack){ 000A68 A009 02612 BTFSS 0x09,ack_2,0 000A6A D003 02613 BRA m115 02614 ; i2c_write_hrdw( dat ); 000A6C 5008 02615 MOVF dat_2,W,0 000A6E EC00 F001 02616 CALL i2c_write_hrdw 02617 ; } 02618 ; i2c_stop_hrdw(); 000A72 ECF6 F000 02619 m115 CALL i2c_stop_hrdw 02620 ; return ack; 000A76 90D8 02621 BCF 0xFD8,Carry,0 000A78 B009 02622 BTFSC 0x09,ack_2,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 51 LOC OBJECT CODE LINE SOURCE TEXT VALUE 000A7A 80D8 02623 BSF 0xFD8,Carry,0 000A7C 0012 02624 RETURN 02625 ;} 02626 ; 02627 ; 02628 ;// Borders Channals Server 02629 ;// sinchronize remote & local variables 02630 ; 02631 ;Task Ch_server(void){ 000A7E 02632 Ch_server 000A7E 0E03 02633 MOVLW 0x03 000A80 5DEF 02634 SUBWF _TaskS14,W,1 000A82 B0D8 02635 BTFSC 0xFD8,Carry,0 000A84 0C00 02636 RETLW 0x00 000A86 50F9 02637 MOVF PCL,W,0 000A88 45EF 02638 RLNCF _TaskS14,W,1 000A8A 26F9 02639 ADDWF PCL,1,0 000A8C D002 02640 BRA m116 000A8E D006 02641 BRA m117 000A90 D00C 02642 BRA m118 02643 ; static bit flash; 02644 ;// write 02645 ; static char i; 02646 ; static char send; 02647 ; static char last_send; 02648 ; static char state; 02649 ; static char health; 02650 ;#ifndef EMUL 02651 ; for(i=0; i0xF0) clk_buff[3]=6; // convert from 0..6[mon..sun] to 1..7[sun..sa t] 000C14 08F0 02985 SUBLW 0xF0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 58 LOC OBJECT CODE LINE SOURCE TEXT VALUE 000C16 E202 02986 BC m134 000C18 0E06 02987 MOVLW 0x06 000C1A 6E18 02988 MOVWF clk_buff+3,0 02989 ; W=i2c_read(1); //read from addr 04h // date 000C1C 8011 02990 m134 BSF 0x11,ack,0 000C1E EC0C F001 02991 CALL i2c_read_hrdw 02992 ; clk_buff[4]=W&0x3f; 000C22 0B3F 02993 ANDLW 0x3F 000C24 6E19 02994 MOVWF clk_buff+4,0 02995 ; W=i2c_read(1); //read from addr 05h // month 000C26 8011 02996 BSF 0x11,ack,0 000C28 EC0C F001 02997 CALL i2c_read_hrdw 02998 ; clk_buff[5]=W&0x1f; 000C2C 0B1F 02999 ANDLW 0x1F 000C2E 6E1A 03000 MOVWF clk_buff+5,0 03001 ; W=i2c_read(1); //read from addr 06h // year 000C30 8011 03002 BSF 0x11,ack,0 000C32 EC0C F001 03003 CALL i2c_read_hrdw 03004 ; clk_buff[6]=W; 000C36 6E1B 03005 MOVWF clk_buff+6,0 03006 ; W=i2c_read(0); //read from addr 07h // control 000C38 9011 03007 BCF 0x11,ack,0 000C3A EC0C F001 03008 CALL i2c_read_hrdw 03009 ; clk_buff[7]=W; // <-- no ACK ! 000C3E 6E1C 03010 MOVWF clk_buff+7,0 03011 ; 03012 ;exit: 03013 ; i2c_stop(); 000C40 EFF6 F000 03014 GOTO i2c_stop_hrdw 03015 ;} 03016 ; 03017 ;void rtc_set(char rtcreg, char rtcvalue){ 000C44 03018 rtc_set 000C44 6E09 03019 MOVWF rtcvalue,0 03020 ; i2c_start(); 000C46 ECF2 F000 03021 CALL i2c_start_hrdw 03022 ; i2c_write(DS_WRITE); //use DS1307 000C4A 0ED0 03023 MOVLW 0xD0 000C4C EC00 F001 03024 CALL i2c_write_hrdw 03025 ; i2c_write(rtcreg); //from addr rtcreg 000C50 5008 03026 MOVF rtcreg,W,0 000C52 EC00 F001 03027 CALL i2c_write_hrdw 03028 ; i2c_write(rtcvalue); //rtcvalue 000C56 5009 03029 MOVF rtcvalue,W,0 000C58 EC00 F001 03030 CALL i2c_write_hrdw 03031 ; i2c_stop(); 000C5C EFF6 F000 03032 GOTO i2c_stop_hrdw 03033 ;} 03034 ; 03035 ;void rtc_on(void){ 000C60 03036 rtc_on 03037 ; rtc_read(); 000C60 DFB0 03038 RCALL rtc_read MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 59 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03039 ; if (clk_buff[0].7 == ON){ 000C62 AE15 03040 BTFSS clk_buff,7,0 000C64 D01B 03041 BRA m137 03042 ; i2c_start(); 000C66 ECF2 F000 03043 CALL i2c_start_hrdw 03044 ; i2c_write(DS_WRITE); 000C6A 0ED0 03045 MOVLW 0xD0 000C6C EC00 F001 03046 CALL i2c_write_hrdw 03047 ; i2c_write(0x00); 000C70 0E00 03048 MOVLW 0x00 000C72 EC00 F001 03049 CALL i2c_write_hrdw 03050 ; char cnt; 03051 ; for(cnt=0;cnt<7;cnt++){clk_buff[cnt]=0; i2c_write(0);} 000C76 6A05 03052 CLRF cnt_3,0 000C78 0E07 03053 m135 MOVLW 0x07 000C7A 6005 03054 CPFSLT cnt_3,0 000C7C D00A 03055 BRA m136 000C7E 6AEA 03056 CLRF FSR0+1,0 000C80 0E15 03057 MOVLW 0x15 000C82 2405 03058 ADDWF cnt_3,W,0 000C84 6EE9 03059 MOVWF FSR0,0 000C86 6AEF 03060 CLRF INDF0,0 000C88 0E00 03061 MOVLW 0x00 000C8A EC00 F001 03062 CALL i2c_write_hrdw 000C8E 2A05 03063 INCF cnt_3,1,0 000C90 D7F3 03064 BRA m135 03065 ; i2c_write(0b0000.0000); // addr 0x07 000C92 0E00 03066 m136 MOVLW 0x00 000C94 EC00 F001 03067 CALL i2c_write_hrdw 03068 ; i2c_stop(); 000C98 ECF6 F000 03069 CALL i2c_stop_hrdw 03070 ; } 03071 ; clk_buff[2] &= 0x3f; 000C9C 0E3F 03072 m137 MOVLW 0x3F 000C9E 1617 03073 ANDWF clk_buff+2,1,0 03074 ; rtc_set(0x02, clk_buff[2]); 000CA0 0E02 03075 MOVLW 0x02 000CA2 6E08 03076 MOVWF rtcreg,0 000CA4 5017 03077 MOVF clk_buff+2,W,0 000CA6 DFCE 03078 RCALL rtc_set 03079 ; rtc_set(0x07, 0b0000.0000 ); 000CA8 0E07 03080 MOVLW 0x07 000CAA 6E08 03081 MOVWF rtcreg,0 000CAC 0E00 03082 MOVLW 0x00 000CAE D7CA 03083 BRA rtc_set 03084 ; 03085 ;// setup_harw_iic(); 03086 ;} 03087 ; 03088 ;// 2.7 ms 03089 ;void rtc_get_clock(void){ 000CB0 03090 rtc_get_clock 03091 ; rtc_read(); MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 60 LOC OBJECT CODE LINE SOURCE TEXT VALUE 000CB0 DF88 03092 RCALL rtc_read 03093 ; // test all OK 03094 ; if(clk_buff[0].7){ 000CB2 AE15 03095 BTFSS clk_buff,7,0 000CB4 D00A 03096 BRA m138 03097 ; i2c_start(); 000CB6 ECF2 F000 03098 CALL i2c_start_hrdw 03099 ; i2c_write(DS_WRITE); 000CBA 0ED0 03100 MOVLW 0xD0 000CBC EC00 F001 03101 CALL i2c_write_hrdw 03102 ; i2c_write(0x00); 000CC0 0E00 03103 MOVLW 0x00 000CC2 EC00 F001 03104 CALL i2c_write_hrdw 03105 ; i2c_stop(); 000CC6 EFF6 F000 03106 GOTO i2c_stop_hrdw 03107 ; return; 03108 ; } 03109 ;} 000CCA 0012 03110 m138 RETURN 03111 ; 03112 ;// 2.2 ms 03113 ;void rtc_set_clock(){ 000CCC 03114 rtc_set_clock 03115 ; i2c_start(); 000CCC ECF2 F000 03116 CALL i2c_start_hrdw 03117 ; i2c_write(DS_WRITE); 000CD0 0ED0 03118 MOVLW 0xD0 000CD2 EC00 F001 03119 CALL i2c_write_hrdw 03120 ; i2c_write(0x00); // addr 000CD6 0E00 03121 MOVLW 0x00 000CD8 EC00 F001 03122 CALL i2c_write_hrdw 03123 ; 03124 ; char tmp; 03125 ; i2c_write(clk_buff[0]); 000CDC 5015 03126 MOVF clk_buff,W,0 000CDE EC00 F001 03127 CALL i2c_write_hrdw 03128 ; i2c_write(clk_buff[1]); 000CE2 5016 03129 MOVF clk_buff+1,W,0 000CE4 EC00 F001 03130 CALL i2c_write_hrdw 03131 ; i2c_write(clk_buff[2]); 000CE8 5017 03132 MOVF clk_buff+2,W,0 000CEA EC00 F001 03133 CALL i2c_write_hrdw 03134 ; clk_buff[3] += 2; 000CEE 0E02 03135 MOVLW 0x02 000CF0 2618 03136 ADDWF clk_buff+3,1,0 03137 ; tmp=clk_buff[3]; 000CF2 C018 F008 03138 MOVFF clk_buff+3,tmp_2 03139 ; if(tmp > 6) clk_buff[3]=1; 000CF6 0E06 03140 MOVLW 0x06 000CF8 6408 03141 CPFSGT tmp_2,0 000CFA D002 03142 BRA m139 000CFC 0E01 03143 MOVLW 0x01 000CFE 6E18 03144 MOVWF clk_buff+3,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 61 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03145 ; i2c_write(clk_buff[3]);// day week 0..6 [mon..sun] convert to 1..7[sun.. sat] 000D00 5018 03146 m139 MOVF clk_buff+3,W,0 000D02 EC00 F001 03147 CALL i2c_write_hrdw 03148 ; i2c_write(clk_buff[4]); 000D06 5019 03149 MOVF clk_buff+4,W,0 000D08 EC00 F001 03150 CALL i2c_write_hrdw 03151 ; i2c_write(clk_buff[5]); 000D0C 501A 03152 MOVF clk_buff+5,W,0 000D0E EC00 F001 03153 CALL i2c_write_hrdw 03154 ; i2c_write(clk_buff[6]); 000D12 501B 03155 MOVF clk_buff+6,W,0 000D14 EC00 F001 03156 CALL i2c_write_hrdw 03157 ; i2c_write(0);// control 000D18 0E00 03158 MOVLW 0x00 000D1A EC00 F001 03159 CALL i2c_write_hrdw 03160 ; i2c_stop(); 000D1E EFF6 F000 03161 GOTO i2c_stop_hrdw 03162 ;} 03163 ; 03164 ;Task ClockTick(void){ 000D22 03165 ClockTick 000D22 505A 03166 MOVF _TaskS2,W,0 000D24 E003 03167 BZ m140 000D26 0A01 03168 XORLW 0x01 000D28 E021 03169 BZ m143 000D2A 0C80 03170 RETLW 0x80 03171 ; { 03172 ; char _hour=bcd_hr; 000D2C C017 F005 03173 m140 MOVFF bcd_hr,_hour 03174 ; char _min=bcd_min; 000D30 C016 F006 03175 MOVFF bcd_min,_min 03176 ; char _day=bcd_date; 000D34 C019 F007 03177 MOVFF bcd_date,_day 03178 ; rtc_get_clock(); 000D38 DFBB 03179 RCALL rtc_get_clock 03180 ; if(_min != bcd_min){ // next min occure! -> read new alarms 000D3A 5006 03181 MOVF _min,W,0 000D3C 1816 03182 XORWF bcd_min,W,0 000D3E E007 03183 BZ m141 03184 ; if(curr_alarm_day != bcd_day) // next day alarms read 000D40 5025 03185 MOVF curr_alarm_day,W,0 000D42 1818 03186 XORWF bcd_day,W,0 000D44 E004 03187 BZ m141 03188 ; alarms_cnt = get_alarms(bcd_day); // 0.. 6 000D46 5018 03189 MOVF bcd_day,W,0 000D48 EC10 F002 03190 CALL get_alarms 000D4C 6E24 03191 MOVWF alarms_cnt,0 03192 ; } 03193 ; if(_hour != bcd_hr) {setEvent(evtMDMRECVR); setEvent(evtClearRec overy);} // next hour occure 000D4E 5005 03194 m141 MOVF _hour,W,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 62 LOC OBJECT CODE LINE SOURCE TEXT VALUE 000D50 1817 03195 XORWF bcd_hr,W,0 000D52 E002 03196 BZ m142 000D54 8440 03197 BSF EventStates+2,2,0 000D56 863F 03198 BSF EventStates+1,3,0 03199 ; if(!corrected_octbr) clock_correct_oct(); 000D58 AC14 03200 m142 BTFSS 0x14,corrected_octbr,0 000D5A D817 03201 RCALL clock_correct_oct 03202 ; if(!corrected_march) clock_correct_march(); 000D5C AE14 03203 BTFSS 0x14,corrected_march,0 000D5E D83D 03204 RCALL clock_correct_march 03205 ; } 03206 ; delay(T_CLK, 1000); // 1s 000D60 0EE8 03207 MOVLW 0xE8 000D62 0100 03208 MOVLB 0x00 000D64 6FCC 03209 MOVWF softTimer+2,1 000D66 0E03 03210 MOVLW 0x03 000D68 6FCD 03211 MOVWF softTimer+3,1 000D6A 9256 03212 BCF tTimeout,1,0 000D6C 0102 03213 m143 MOVLB 0x02 000D6E A256 03214 BTFSS tTimeout,1,0 000D70 0C01 03215 RETLW 0x01 03216 ; // count uptime sec 03217 ; uptime_sec++; 000D72 2B07 03218 INCF uptime_sec,1,1 000D74 0E00 03219 MOVLW 0x00 000D76 2308 03220 ADDWFC uptime_sec+1,1,1 000D78 2309 03221 ADDWFC uptime_sec+2,1,1 000D7A 230A 03222 ADDWFC uptime_sec+3,1,1 03223 ; // update temporary shared second counter 03224 ; if(isEvent(evTempSec)) tmp_sec++; 000D7C BA3F 03225 BTFSC EventStates+1,5,0 000D7E 2B0B 03226 INCF tmp_sec,1,1 03227 ; // update transport counters 03228 ; UpdateTransportCounters(); 000D80 ECC9 F011 03229 CALL UpdateTransportCounters 03230 ; restartTask(); 000D84 0C00 03231 RETLW 0x00 03232 ;} 000D86 0102 03233 MOVLB 0x02 000D88 0C80 03234 RETLW 0x80 03235 ; 03236 ;// adr 0x10 - year of correction october clock 03237 ;// adr 0x11 - year of correction march clock 03238 ;/* 03239 ;ïåðåõîä íà çèìíåå âðåìÿ îñóùåñòâëÿåòñÿ â ïîñëåäíåå âîñêðåñåíüå îêòÿáðÿ 03240 ;â òðè ÷àñà íî÷è ïóòåì ïåðåâîäà ñòðåëîê íà îäèí ÷àñ íàçàä. 03241 ;Ïåðåõîä íà ëåòíåå âðåìÿ ïðîèñõîäèò â ïîñëåäíåå âîñêðåñåíüå ìàðòà 03242 ;â äâà ÷àñà íî÷è ïóòåì ïåðåâîäà ñòðåëîê íà ÷àñ âïåðåä. 03243 ;ïîñëåäíåå âîñêðåñåíüå - äàòà îò 26ãî ÷èñëà äî 31 03244 ;*/ 03245 ;void clock_correct_oct(void){ 000D8A 03246 clock_correct_oct 03247 ; // test last october sunday MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 63 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03248 ; if((bcd_mns==0x10 && bcd_day==0x06 && bcd_date > 0x25) || // if last oct ober SUNDAY 000D8A 0E10 03249 MOVLW 0x10 000D8C 621A 03250 CPFSEQ bcd_mns,0 000D8E D006 03251 BRA m144 000D90 0E06 03252 MOVLW 0x06 000D92 6218 03253 CPFSEQ bcd_day,0 000D94 D003 03254 BRA m144 000D96 0E26 03255 MOVLW 0x26 000D98 6019 03256 CPFSLT bcd_date,0 000D9A D00C 03257 BRA m146 03258 ; (bcd_mns==0x10 && bcd_day<0x06 && bcd_date > 0x25) || // or last octo ber days 000D9C 0E10 03259 m144 MOVLW 0x10 000D9E 621A 03260 CPFSEQ bcd_mns,0 000DA0 D006 03261 BRA m145 000DA2 0E06 03262 MOVLW 0x06 000DA4 6018 03263 CPFSLT bcd_day,0 000DA6 D003 03264 BRA m145 000DA8 0E26 03265 MOVLW 0x26 000DAA 6019 03266 CPFSLT bcd_date,0 000DAC D003 03267 BRA m146 03268 ; (bcd_mns > 0x10)){ // if other data greater then last october SUNDAY 000DAE 0E10 03269 m145 MOVLW 0x10 000DB0 641A 03270 CPFSGT bcd_mns,0 000DB2 D012 03271 BRA m147 03272 ; if(bcd_min < 0x10 && bcd_hr==3){ // at 3:00 000DB4 0E10 03273 m146 MOVLW 0x10 000DB6 6016 03274 CPFSLT bcd_min,0 000DB8 D00F 03275 BRA m147 000DBA 0E03 03276 MOVLW 0x03 000DBC 6217 03277 CPFSEQ bcd_hr,0 000DBE D00C 03278 BRA m147 03279 ; bcd_hr -= 1; // correct hour-1 2:00 000DC0 0617 03280 DECF bcd_hr,1,0 03281 ; rtc_set_clock(); 000DC2 DF84 03282 RCALL rtc_set_clock 03283 ; __store(0x10, bcd_yr); // set a flag to prevent next cor rection in this year 000DC4 0E10 03284 MOVLW 0x10 000DC6 6E08 03285 MOVWF rtcreg,0 000DC8 501B 03286 MOVF bcd_yr,W,0 000DCA DF3C 03287 RCALL rtc_set 03288 ; __store(0x11, bcd_yr); // set a flag to prevent next cor rection in this year 000DCC 0E11 03289 MOVLW 0x11 000DCE 6E08 03290 MOVWF rtcreg,0 000DD0 501B 03291 MOVF bcd_yr,W,0 000DD2 DF38 03292 RCALL rtc_set 03293 ; corrected_octbr=1; 000DD4 8C14 03294 BSF 0x14,corrected_octbr,0 03295 ; corrected_march=1; 000DD6 8E14 03296 BSF 0x14,corrected_march,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 64 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03297 ; } 03298 ; } 03299 ;} 000DD8 0012 03300 m147 RETURN 03301 ; 03302 ;void clock_correct_march(void){ 000DDA 03303 clock_correct_march 03304 ; // test last march sunday 03305 ; if((bcd_mns==0x03 && bcd_day==0x06 && bcd_date > 0x25) || // if last mar ch SUNDAY 000DDA 0E03 03306 MOVLW 0x03 000DDC 621A 03307 CPFSEQ bcd_mns,0 000DDE D006 03308 BRA m148 000DE0 0E06 03309 MOVLW 0x06 000DE2 6218 03310 CPFSEQ bcd_day,0 000DE4 D003 03311 BRA m148 000DE6 0E26 03312 MOVLW 0x26 000DE8 6019 03313 CPFSLT bcd_date,0 000DEA D00C 03314 BRA m150 03315 ; (bcd_mns==0x03 && bcd_day<0x06 && bcd_date > 0x25) || // or last marc h days 000DEC 0E03 03316 m148 MOVLW 0x03 000DEE 621A 03317 CPFSEQ bcd_mns,0 000DF0 D006 03318 BRA m149 000DF2 0E06 03319 MOVLW 0x06 000DF4 6018 03320 CPFSLT bcd_day,0 000DF6 D003 03321 BRA m149 000DF8 0E26 03322 MOVLW 0x26 000DFA 6019 03323 CPFSLT bcd_date,0 000DFC D003 03324 BRA m150 03325 ; (bcd_mns > 0x03)){// if other data greater then last march SUNDAY 000DFE 0E03 03326 m149 MOVLW 0x03 000E00 641A 03327 CPFSGT bcd_mns,0 000E02 D00D 03328 BRA m151 03329 ; if(bcd_min < 0x10 && bcd_hr==2){ // in 2:00 000E04 0E10 03330 m150 MOVLW 0x10 000E06 6016 03331 CPFSLT bcd_min,0 000E08 D00A 03332 BRA m151 000E0A 0E02 03333 MOVLW 0x02 000E0C 6217 03334 CPFSEQ bcd_hr,0 000E0E D007 03335 BRA m151 03336 ; bcd_hr += 1; // correct hour+1 = 3:00 000E10 2A17 03337 INCF bcd_hr,1,0 03338 ; rtc_set_clock(); 000E12 DF5C 03339 RCALL rtc_set_clock 03340 ; __store(0x11, bcd_yr); // set a flag to prevent next cor rection in this year 000E14 0E11 03341 MOVLW 0x11 000E16 6E08 03342 MOVWF rtcreg,0 000E18 501B 03343 MOVF bcd_yr,W,0 000E1A DF14 03344 RCALL rtc_set 03345 ; corrected_march=1; 000E1C 8E14 03346 BSF 0x14,corrected_march,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 65 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03347 ; } 03348 ; } 03349 ;} 000E1E 0012 03350 m151 RETURN 03351 ; 03352 ;// this doing after sinchronize with a comp 03353 ;// comp is corrected 03354 ;void test_need_correct(void){ 000E20 03355 test_need_correct 03356 ; if((bcd_mns==0x10 && bcd_day==0x06 && bcd_date > 0x25) || 000E20 0E10 03357 MOVLW 0x10 000E22 621A 03358 CPFSEQ bcd_mns,0 000E24 D006 03359 BRA m152 000E26 0E06 03360 MOVLW 0x06 000E28 6218 03361 CPFSEQ bcd_day,0 000E2A D003 03362 BRA m152 000E2C 0E26 03363 MOVLW 0x26 000E2E 6019 03364 CPFSLT bcd_date,0 000E30 D00C 03365 BRA m154 03366 ; (bcd_mns==0x10 && bcd_day<0x06 && bcd_date > 0x25) || // or last oct days 000E32 0E10 03367 m152 MOVLW 0x10 000E34 621A 03368 CPFSEQ bcd_mns,0 000E36 D006 03369 BRA m153 000E38 0E06 03370 MOVLW 0x06 000E3A 6018 03371 CPFSLT bcd_day,0 000E3C D003 03372 BRA m153 000E3E 0E26 03373 MOVLW 0x26 000E40 6019 03374 CPFSLT bcd_date,0 000E42 D003 03375 BRA m154 03376 ; (bcd_mns > 0x10)){ 000E44 0E10 03377 m153 MOVLW 0x10 000E46 641A 03378 CPFSGT bcd_mns,0 000E48 D005 03379 BRA m155 03380 ; __store(0x10, bcd_yr); // set a flag to prevent next correction in this year 000E4A 0E10 03381 m154 MOVLW 0x10 000E4C 6E08 03382 MOVWF rtcreg,0 000E4E 501B 03383 MOVF bcd_yr,W,0 000E50 DEF9 03384 RCALL rtc_set 03385 ; corrected_octbr=1; 000E52 8C14 03386 BSF 0x14,corrected_octbr,0 03387 ; } 03388 ; if((bcd_mns==0x03 && bcd_day==0x06 && bcd_date > 0x25) || 000E54 0E03 03389 m155 MOVLW 0x03 000E56 621A 03390 CPFSEQ bcd_mns,0 000E58 D006 03391 BRA m156 000E5A 0E06 03392 MOVLW 0x06 000E5C 6218 03393 CPFSEQ bcd_day,0 000E5E D003 03394 BRA m156 000E60 0E26 03395 MOVLW 0x26 000E62 6019 03396 CPFSLT bcd_date,0 000E64 D00C 03397 BRA m158 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 66 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03398 ; (bcd_mns==0x03 && bcd_day<0x06 && bcd_date > 0x25) || // or last march days 000E66 0E03 03399 m156 MOVLW 0x03 000E68 621A 03400 CPFSEQ bcd_mns,0 000E6A D006 03401 BRA m157 000E6C 0E06 03402 MOVLW 0x06 000E6E 6018 03403 CPFSLT bcd_day,0 000E70 D003 03404 BRA m157 000E72 0E26 03405 MOVLW 0x26 000E74 6019 03406 CPFSLT bcd_date,0 000E76 D003 03407 BRA m158 03408 ; (bcd_mns > 0x03)){ 000E78 0E03 03409 m157 MOVLW 0x03 000E7A 641A 03410 CPFSGT bcd_mns,0 000E7C D005 03411 BRA m159 03412 ; __store(0x11, bcd_yr); // set a flag to prevent next correction in this year 000E7E 0E11 03413 m158 MOVLW 0x11 000E80 6E08 03414 MOVWF rtcreg,0 000E82 501B 03415 MOVF bcd_yr,W,0 000E84 DEDF 03416 RCALL rtc_set 03417 ; corrected_march=1; 000E86 8E14 03418 BSF 0x14,corrected_march,0 03419 ; } 03420 ;} 000E88 0012 03421 m159 RETURN 03422 ; 03423 ; 03424 ;void get_correct_flags(void){ 000E8A 03425 get_correct_flags 03426 ; char year; 03427 ; year = __restore(0x10); 000E8A 0E10 03428 MOVLW 0x10 000E8C D834 03429 RCALL __restore 000E8E 6E05 03430 MOVWF year,0 03431 ; // test for correct year date 03432 ; if(((year&0xf0) > 0x90) || ((year&0x0f) > 0x09) || year!=bcd_yr){ 000E90 0EF0 03433 MOVLW 0xF0 000E92 1405 03434 ANDWF year,W,0 000E94 0890 03435 SUBLW 0x90 000E96 E307 03436 BNC m160 000E98 0E0F 03437 MOVLW 0x0F 000E9A 1405 03438 ANDWF year,W,0 000E9C 0809 03439 SUBLW 0x09 000E9E E303 03440 BNC m160 000EA0 5005 03441 MOVF year,W,0 000EA2 181B 03442 XORWF bcd_yr,W,0 000EA4 E006 03443 BZ m161 03444 ; __store(0x10, 0xff); 000EA6 0E10 03445 m160 MOVLW 0x10 000EA8 6E08 03446 MOVWF rtcreg,0 000EAA 0EFF 03447 MOVLW 0xFF 000EAC DECB 03448 RCALL rtc_set MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 67 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03449 ; corrected_octbr=0; 000EAE 9C14 03450 BCF 0x14,corrected_octbr,0 03451 ; }else corrected_octbr=1; // have been corrected 000EB0 D001 03452 BRA m162 000EB2 8C14 03453 m161 BSF 0x14,corrected_octbr,0 03454 ; year = __restore(0x11); 000EB4 0E11 03455 m162 MOVLW 0x11 000EB6 D81F 03456 RCALL __restore 000EB8 6E05 03457 MOVWF year,0 03458 ; // test for correct year date 03459 ; if(((year&0xf0) > 0x90) || ((year&0x0f) > 0x09) || year!=bcd_yr){ 000EBA 0EF0 03460 MOVLW 0xF0 000EBC 1405 03461 ANDWF year,W,0 000EBE 0890 03462 SUBLW 0x90 000EC0 E307 03463 BNC m163 000EC2 0E0F 03464 MOVLW 0x0F 000EC4 1405 03465 ANDWF year,W,0 000EC6 0809 03466 SUBLW 0x09 000EC8 E303 03467 BNC m163 000ECA 5005 03468 MOVF year,W,0 000ECC 181B 03469 XORWF bcd_yr,W,0 000ECE E006 03470 BZ m164 03471 ; __store(0x11, 0xff); 000ED0 0E11 03472 m163 MOVLW 0x11 000ED2 6E08 03473 MOVWF rtcreg,0 000ED4 0EFF 03474 MOVLW 0xFF 000ED6 DEB6 03475 RCALL rtc_set 03476 ; corrected_march=0; 000ED8 9E14 03477 BCF 0x14,corrected_march,0 03478 ; }else corrected_march=1; // have been corrected 000EDA D001 03479 BRA m165 000EDC 8E14 03480 m164 BSF 0x14,corrected_march,0 03481 ;} 000EDE 0012 03482 m165 RETURN 03483 ; 03484 ;void clear_correct(void){ 000EE0 03485 clear_correct 03486 ; __store(0x10, 0xff); 000EE0 0E10 03487 MOVLW 0x10 000EE2 6E08 03488 MOVWF rtcreg,0 000EE4 0EFF 03489 MOVLW 0xFF 000EE6 DEAE 03490 RCALL rtc_set 03491 ; __store(0x11, 0xff); 000EE8 0E11 03492 MOVLW 0x11 000EEA 6E08 03493 MOVWF rtcreg,0 000EEC 0EFF 03494 MOVLW 0xFF 000EEE DEAA 03495 RCALL rtc_set 03496 ; corrected_octbr=0; 000EF0 9C14 03497 BCF 0x14,corrected_octbr,0 03498 ; corrected_march=0; 000EF2 9E14 03499 BCF 0x14,corrected_march,0 03500 ;} 000EF4 0012 03501 RETURN MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 68 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03502 ; 03503 ; 03504 ; 03505 ;char __restore(char adr){ 000EF6 03506 __restore 000EF6 6E09 03507 MOVWF adr_4,0 03508 ; i2c_start(); 000EF8 ECF2 F000 03509 CALL i2c_start_hrdw 03510 ; i2c_write(DS_WRITE); //use DS1307 000EFC 0ED0 03511 MOVLW 0xD0 000EFE EC00 F001 03512 CALL i2c_write_hrdw 03513 ; i2c_write(adr); //from adr 000F02 5009 03514 MOVF adr_4,W,0 000F04 EC00 F001 03515 CALL i2c_write_hrdw 03516 ; i2c_restart(); 000F08 ECFC F000 03517 CALL i2c_restart_hrdw 03518 ; i2c_write(DS_READ); //read datas 000F0C 0ED1 03519 MOVLW 0xD1 000F0E EC00 F001 03520 CALL i2c_write_hrdw 03521 ; char rez=i2c_read(0); //read from [adr] 000F12 9011 03522 BCF 0x11,ack,0 000F14 EC0C F001 03523 CALL i2c_read_hrdw 000F18 6E0A 03524 MOVWF rez_2,0 03525 ; i2c_stop(); 000F1A ECF6 F000 03526 CALL i2c_stop_hrdw 03527 ; return rez; 000F1E 500A 03528 MOVF rez_2,W,0 000F20 0012 03529 RETURN 03530 03531 ; FILE indicate.c 03532 ;// indicator interface 03533 ;//----------------------------------------------------------- 03534 ;bit ind_send(char idat); 03535 ;//----------------------------------------------------------- 03536 ; 03537 ;Task Indicate(void){ 000F22 03538 Indicate 000F22 51F6 03539 MOVF _TaskS15,W,1 000F24 E003 03540 BZ m166 000F26 0A01 03541 XORLW 0x01 000F28 E01E 03542 BZ m169 000F2A 0C80 03543 RETLW 0x80 03544 ; if(taskBusy(ControlLamps)){ 000F2C BFE3 03545 m166 BTFSC _TaskS9,7,1 000F2E D015 03546 BRA m168 03547 ; ind_states=0; 000F30 6A1D 03548 CLRF ind_states,0 03549 ; if (Boards[0].error_red >= 0x03) ind_states.0=1; 000F32 0E02 03550 MOVLW 0x02 000F34 0101 03551 MOVLB 0x01 000F36 6510 03552 CPFSGT Boards+16,1 000F38 D001 03553 BRA m167 000F3A 801D 03554 BSF ind_states,0,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 69 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03555 ; if (Boards[1].error_red >= 0x03) ind_states.1=1; 000F3C 0E03 03556 m167 MOVLW 0x03 000F3E 6122 03557 CPFSLT Boards+34,1 000F40 821D 03558 BSF ind_states,1,0 03559 ; if (Boards[2].error_red >= 0x03) ind_states.2=1; 000F42 6134 03560 CPFSLT Boards+52,1 000F44 841D 03561 BSF ind_states,2,0 03562 ; if (Boards[3].error_red >= 0x03) ind_states.3=1; 000F46 6146 03563 CPFSLT Boards+70,1 000F48 861D 03564 BSF ind_states,3,0 03565 ; 03566 ; if (Boards[0].error_green >= 0x03) ind_states.4=1; 000F4A 6111 03567 CPFSLT Boards+17,1 000F4C 881D 03568 BSF ind_states,4,0 03569 ; if (Boards[1].error_green >= 0x03) ind_states.5=1; 000F4E 6123 03570 CPFSLT Boards+35,1 000F50 8A1D 03571 BSF ind_states,5,0 03572 ; if (Boards[2].error_green >= 0x03) ind_states.6=1; 000F52 6135 03573 CPFSLT Boards+53,1 000F54 8C1D 03574 BSF ind_states,6,0 03575 ; if (Boards[3].error_green >= 0x03) ind_states.7=1; 000F56 6147 03576 CPFSLT Boards+71,1 000F58 8E1D 03577 BSF ind_states,7,0 03578 ; } 03579 ;#ifndef EMUL 03580 ; ind_health_0 = ind_send(ind_states^0xff); 03581 ;#endif 03582 ; delay(T_IND, 500); // 500ms 000F5A 0EF4 03583 m168 MOVLW 0xF4 000F5C 0100 03584 MOVLB 0x00 000F5E 6FCA 03585 MOVWF softTimer,1 000F60 0E01 03586 MOVLW 0x01 000F62 6FCB 03587 MOVWF softTimer+1,1 000F64 9056 03588 BCF tTimeout,0,0 000F66 0101 03589 m169 MOVLB 0x01 000F68 A056 03590 BTFSS tTimeout,0,0 000F6A 0C01 03591 RETLW 0x01 03592 ; restartTask(); 000F6C 0C00 03593 RETLW 0x00 03594 ;} 03595 ; 03596 ;// if OK return TRUE 03597 ;bit ind_send(char idat){ 000F6E 03598 ind_send 000F6E 6E05 03599 MOVWF idat,0 03600 ; i2c_start_hrdw(); 000F70 ECF2 F000 03601 CALL i2c_start_hrdw 03602 ; bit ack=i2c_write_hrdw(0b01001000); 000F74 0E48 03603 MOVLW 0x48 000F76 EC00 F001 03604 CALL i2c_write_hrdw 000F7A 9006 03605 BCF 0x06,ack_3,0 000F7C B0D8 03606 BTFSC 0xFD8,Carry,0 000F7E 8006 03607 BSF 0x06,ack_3,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 70 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03608 ; if(!ack){ 000F80 B006 03609 BTFSC 0x06,ack_3,0 000F82 D00E 03610 BRA m170 03611 ; i2c_restart_hrdw(); 000F84 ECFC F000 03612 CALL i2c_restart_hrdw 03613 ; ack=i2c_write_hrdw(0b0111.100.0); // try pcf8574A 000F88 0E78 03614 MOVLW 0x78 000F8A EC00 F001 03615 CALL i2c_write_hrdw 000F8E 9006 03616 BCF 0x06,ack_3,0 000F90 B0D8 03617 BTFSC 0xFD8,Carry,0 000F92 8006 03618 BSF 0x06,ack_3,0 03619 ; if(!ack) { 000F94 B006 03620 BTFSC 0x06,ack_3,0 000F96 D004 03621 BRA m170 03622 ; i2c_stop_hrdw(); // send stop bit 000F98 ECF6 F000 03623 CALL i2c_stop_hrdw 03624 ; return FALSE; // nobody presents 000F9C 90D8 03625 BCF 0xFD8,Carry,0 000F9E 0012 03626 RETURN 03627 ; } 03628 ; } 03629 ; // receive ACK, continue... 03630 ; i2c_write_hrdw(idat); 000FA0 5005 03631 m170 MOVF idat,W,0 000FA2 EC00 F001 03632 CALL i2c_write_hrdw 03633 ; i2c_stop_hrdw(); // send stop bit 000FA6 ECF6 F000 03634 CALL i2c_stop_hrdw 03635 ; return TRUE; 000FAA 80D8 03636 BSF 0xFD8,Carry,0 000FAC 0012 03637 RETURN 03638 03639 ; FILE asudd.c 03640 ;void putc(char W); 03641 ;//------------------------------------------- 03642 ; 03643 ;char bank1 asudd_buff_tx[17] @ gsm_buff[0]; 03644 ; 03645 ;// rx decode 03646 ;char bank1 asudd_buff_rx[11] @ gsm_buff[18]; 03647 ;char bank1 asudd_err_code @ asudd_buff_rx[5]; 03648 ;enum {ASD_NOERR, ASD_NOCONN, ASD_ERRCONN}; 03649 ;char bank1 asudd_du_mode @ asudd_buff_rx[6]; 03650 ;char bank1 asudd_zu_mode @ asudd_buff_rx[7]; 03651 ;char bank1 asudd_faze @ asudd_buff_rx[8]; 03652 ;// 1-8 faze 0x0e-JM 0x0f-OS 03653 ;#define ASDCMD_OS 0x0f 03654 ;#define ASDCMD_JM 0x0e 03655 ; 03656 ;// ptr to current gsm_buffer byte 03657 ;#define ptr_asd_buff ptr_gsm_buff 03658 ;// rx byte counts 03659 ;#define asd_rx_cnt gsm_rx_cnt 03660 ;// timeout for receive task MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 71 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03661 ;#define asd_rx_timeout gsm_rx_timeout 03662 ;//------------------------------------------- 03663 ;// test 03664 ;// 22 72 c5 03 0a 00 00 00 00 00 00 00 00 00 0c 75 05 03665 ;void SetAsuddHdr(void){ 000FAE 03666 SetAsuddHdr 03667 ; asudd_buff_tx[0]=0x22; 000FAE 0E22 03668 MOVLW 0x22 000FB0 0101 03669 MOVLB 0x01 000FB2 6F48 03670 MOVWF asudd_buff_tx,1 03671 ; asudd_buff_tx[1]=0x72; 000FB4 0E72 03672 MOVLW 0x72 000FB6 6F49 03673 MOVWF asudd_buff_tx+1,1 03674 ; asudd_buff_tx[2]=0xc5; 000FB8 0EC5 03675 MOVLW 0xC5 000FBA 6F4A 03676 MOVWF asudd_buff_tx+2,1 03677 ; asudd_buff_tx[3]=0x03; // data type 3 000FBC 0E03 03678 MOVLW 0x03 000FBE 6F4B 03679 MOVWF asudd_buff_tx+3,1 03680 ; asudd_buff_tx[4]=0x0a; // 10 bytes lenght 000FC0 0E0A 03681 MOVLW 0x0A 000FC2 6F4C 03682 MOVWF asudd_buff_tx+4,1 03683 ;} 000FC4 0012 03684 RETURN 03685 ; 03686 ;// calculate CRC for send ASUDD data to plate C 03687 ;// place result to FSR0(low) FSR0+1(high) 03688 ;void CalcAsuddCRC(void){ 000FC6 03689 CalcAsuddCRC 03690 ; bank2 uns16 ACrc; 03691 ; bank2 char cLow @ ACrc.low8, cHigh @ ACrc.high8, i; 03692 ; ACrc=0x0003; 000FC6 0E03 03693 MOVLW 0x03 000FC8 6F01 03694 MOVWF ACrc,1 000FCA 6B02 03695 CLRF ACrc+1,1 03696 ; FSR1 = &asudd_buff_tx[0]; 000FCC EE11 F048 03697 LFSR 1,328 03698 ; for(i = 15; i>0; i--){ 000FD0 0E0F 03699 MOVLW 0x0F 000FD2 6F03 03700 MOVWF i_10,1 000FD4 5303 03701 m171 MOVF i_10,1,1 000FD6 E007 03702 BZ m173 03703 ; cLow += POSTINC1; 000FD8 50E6 03704 MOVF POSTINC1,W,0 000FDA 2701 03705 ADDWF cLow,1,1 03706 ; if(Carry){ cHigh+=5; } 000FDC E302 03707 BNC m172 000FDE 0E05 03708 MOVLW 0x05 000FE0 2702 03709 ADDWF cHigh,1,1 03710 ; } 000FE2 0703 03711 m172 DECF i_10,1,1 000FE4 D7F7 03712 BRA m171 03713 ; POSTINC1=cLow; MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 72 LOC OBJECT CODE LINE SOURCE TEXT VALUE 000FE6 C201 FFE6 03714 m173 MOVFF cLow,POSTINC1 03715 ; POSTINC1=cHigh; 000FEA C202 FFE6 03716 MOVFF cHigh,POSTINC1 03717 ;} 000FEE 0012 03718 RETURN 03719 ; 03720 ; 03721 ;void SendTestCPlateExist(void){ 000FF0 03722 SendTestCPlateExist 03723 ; SetAsuddHdr(); 000FF0 DFDE 03724 RCALL SetAsuddHdr 03725 ; FSR0 = &asudd_buff_tx[5]; 000FF2 EE01 F04D 03726 LFSR 0,333 03727 ; POSTINC0=0x00;POSTINC0=0x00;POSTINC0=0x00;POSTINC0=0x00;POSTINC0=0x00; 000FF6 6AEE 03728 CLRF POSTINC0,0 000FF8 6AEE 03729 CLRF POSTINC0,0 000FFA 6AEE 03730 CLRF POSTINC0,0 000FFC 6AEE 03731 CLRF POSTINC0,0 000FFE 6AEE 03732 CLRF POSTINC0,0 03733 ; POSTINC0=0x00;POSTINC0=0x00;POSTINC0=0x00;POSTINC0=0x00; 001000 6AEE 03734 CLRF POSTINC0,0 001002 6AEE 03735 CLRF POSTINC0,0 001004 6AEE 03736 CLRF POSTINC0,0 001006 6AEE 03737 CLRF POSTINC0,0 03738 ; POSTINC0=0x0c; // all Reds !! 001008 0E0C 03739 MOVLW 0x0C 00100A 6EEE 03740 MOVWF POSTINC0,0 03741 ; CalcAsuddCRC(); 00100C 0102 03742 MOVLB 0x02 00100E DFDB 03743 RCALL CalcAsuddCRC 03744 ; bank2 char i; 03745 ; FSR0 = &asudd_buff_tx[0]; 001010 EE01 F048 03746 LFSR 0,328 03747 ; TX9=0; 001014 9CAC 03748 BCF 0xFAC,TX9,0 03749 ; TX9D=1; // start flag 001016 80AC 03750 BSF 0xFAC,TX9D,0 03751 ; _FLASH 001018 9282 03752 BCF 0xF82,_TESTPIN,0 00101A 8282 03753 BSF 0xF82,_TESTPIN,0 00101C D000 03754 BRA m174 00101E 9282 03755 m174 BCF 0xF82,_TESTPIN,0 03756 ; put(POSTINC0); _FLASH 001020 989E 03757 BCF 0xF9E,TXIF,0 001022 CFEE FFAD 03758 MOVFF POSTINC0,TXREG 001026 A2AC 03759 m175 BTFSS 0xFAC,TRMT,0 001028 D7FE 03760 BRA m175 00102A A89E 03761 BTFSS 0xF9E,TXIF,0 00102C D7FC 03762 BRA m175 00102E 0004 03763 CLRWDT 001030 9282 03764 BCF 0xF82,_TESTPIN,0 001032 8282 03765 BSF 0xF82,_TESTPIN,0 001034 D000 03766 BRA m176 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 73 LOC OBJECT CODE LINE SOURCE TEXT VALUE 001036 9282 03767 m176 BCF 0xF82,_TESTPIN,0 03768 ; while(!TRMT); 001038 A2AC 03769 m177 BTFSS 0xFAC,TRMT,0 00103A D7FE 03770 BRA m177 03771 ; TX9D=0; // message flag 00103C 90AC 03772 BCF 0xFAC,TX9D,0 03773 ; for(i=16; i>0; i--){ put(POSTINC0); _FLASH } 00103E 0E10 03774 MOVLW 0x10 001040 6F00 03775 MOVWF i_11,1 001042 5300 03776 m178 MOVF i_11,1,1 001044 E00E 03777 BZ m181 001046 989E 03778 BCF 0xF9E,TXIF,0 001048 CFEE FFAD 03779 MOVFF POSTINC0,TXREG 00104C A2AC 03780 m179 BTFSS 0xFAC,TRMT,0 00104E D7FE 03781 BRA m179 001050 A89E 03782 BTFSS 0xF9E,TXIF,0 001052 D7FC 03783 BRA m179 001054 0004 03784 CLRWDT 001056 9282 03785 BCF 0xF82,_TESTPIN,0 001058 8282 03786 BSF 0xF82,_TESTPIN,0 00105A D000 03787 BRA m180 00105C 9282 03788 m180 BCF 0xF82,_TESTPIN,0 00105E 0700 03789 DECF i_11,1,1 001060 D7F0 03790 BRA m178 03791 ;} 001062 0012 03792 m181 RETURN 03793 ; 03794 ;void SendStateAsd(void){ 001064 03795 SendStateAsd 03796 ; SetAsuddHdr(); 001064 DFA4 03797 RCALL SetAsuddHdr 03798 ; FSR0 = &asudd_buff_tx[5]; 001066 EE01 F04D 03799 LFSR 0,333 03800 ; 03801 ; if(isEvent(evtCHERROR)) POSTINC0=0xFF; 00106A 0102 03802 MOVLB 0x02 00106C A83F 03803 BTFSS EventStates+1,4,0 00106E D002 03804 BRA m182 001070 68EE 03805 SETF POSTINC0,0 03806 ; else POSTINC0=0x00; // br lamps 001072 D001 03807 BRA m183 001074 6AEE 03808 m182 CLRF POSTINC0,0 03809 ; 03810 ; if(as_ru) POSTINC0=0xFF; 001076 AC20 03811 m183 BTFSS 0x20,as_ru,0 001078 D002 03812 BRA m184 00107A 68EE 03813 SETF POSTINC0,0 03814 ; else POSTINC0=0x00; // ru 00107C D001 03815 BRA m185 00107E 6AEE 03816 m184 CLRF POSTINC0,0 03817 ; 03818 ; if(isEvent(evtAVARIA)) POSTINC0=0xFF; 001080 A43F 03819 m185 BTFSS EventStates+1,2,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 74 LOC OBJECT CODE LINE SOURCE TEXT VALUE 001082 D002 03820 BRA m186 001084 68EE 03821 SETF POSTINC0,0 03822 ; else POSTINC0=0x00; // conflict 001086 D001 03823 BRA m187 001088 6AEE 03824 m186 CLRF POSTINC0,0 03825 ; 03826 ; POSTINC0=0x00; // kz ??? 00108A 6AEE 03827 m187 CLRF POSTINC0,0 03828 ; 03829 ; if(stateJM) POSTINC0=0xFF; 00108C A814 03830 BTFSS 0x14,stateJM,0 00108E D002 03831 BRA m188 001090 68EE 03832 SETF POSTINC0,0 03833 ; else POSTINC0=0x00; // jm 001092 D001 03834 BRA m189 001094 6AEE 03835 m188 CLRF POSTINC0,0 03836 ; 03837 ; if(stateOS) POSTINC0=0xFF; 001096 AA14 03838 m189 BTFSS 0x14,stateOS,0 001098 D002 03839 BRA m190 00109A 68EE 03840 SETF POSTINC0,0 03841 ; else POSTINC0=0x00; // os 00109C D001 03842 BRA m191 00109E 6AEE 03843 m190 CLRF POSTINC0,0 03844 ; 03845 ; POSTINC0=0x00; // open door ??? 0010A0 6AEE 03846 m191 CLRF POSTINC0,0 03847 ; 03848 ; if(as_du) POSTINC0=0xff; 0010A2 AA20 03849 BTFSS 0x20,as_du,0 0010A4 D002 03850 BRA m192 0010A6 68EE 03851 SETF POSTINC0,0 03852 ; else POSTINC0=0x00; // du 0010A8 D001 03853 BRA m193 0010AA 6AEE 03854 m192 CLRF POSTINC0,0 03855 ; 03856 ; if(as_zu) POSTINC0=0xff; 0010AC A221 03857 m193 BTFSS 0x21,as_zu,0 0010AE D002 03858 BRA m194 0010B0 68EE 03859 SETF POSTINC0,0 03860 ; else POSTINC0=0x00; // zu green road 0010B2 D001 03861 BRA m195 0010B4 6AEE 03862 m194 CLRF POSTINC0,0 03863 ; 03864 ; if(taskBusy(MakePromTact)) POSTINC0=0x0d; 0010B6 BE5E 03865 m195 BTFSC _TaskS6,7,0 0010B8 D003 03866 BRA m196 0010BA 0E0D 03867 MOVLW 0x0D 0010BC 6EEE 03868 MOVWF POSTINC0,0 03869 ; else if(as_allred) POSTINC0=0x0c; 0010BE D007 03870 BRA m198 0010C0 A021 03871 m196 BTFSS 0x21,as_allred,0 0010C2 D003 03872 BRA m197 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 75 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0010C4 0E0C 03873 MOVLW 0x0C 0010C6 6EEE 03874 MOVWF POSTINC0,0 03875 ; else POSTINC0=current_faza+1; // current faza 0010C8 D002 03876 BRA m198 0010CA 282C 03877 m197 INCF current_faza,W,0 0010CC 6EEE 03878 MOVWF POSTINC0,0 03879 ; 03880 ; CalcAsuddCRC(); 0010CE DF7B 03881 m198 RCALL CalcAsuddCRC 03882 ; bank2 char i; 03883 ; FSR0 = &asudd_buff_tx[0]; 0010D0 EE01 F048 03884 LFSR 0,328 03885 ; TX9=1; 0010D4 8CAC 03886 BSF 0xFAC,TX9,0 03887 ; TX9D=1; // start flag 0010D6 80AC 03888 BSF 0xFAC,TX9D,0 03889 ; put(POSTINC0); 0010D8 989E 03890 BCF 0xF9E,TXIF,0 0010DA CFEE FFAD 03891 MOVFF POSTINC0,TXREG 0010DE A2AC 03892 m199 BTFSS 0xFAC,TRMT,0 0010E0 D7FE 03893 BRA m199 0010E2 A89E 03894 BTFSS 0xF9E,TXIF,0 0010E4 D7FC 03895 BRA m199 0010E6 0004 03896 CLRWDT 03897 ; while(!TRMT); 0010E8 A2AC 03898 m200 BTFSS 0xFAC,TRMT,0 0010EA D7FE 03899 BRA m200 03900 ; TX9D=0; // message flag 0010EC 90AC 03901 BCF 0xFAC,TX9D,0 03902 ; for(i=16; i>0; i--){ put(POSTINC0);} 0010EE 0E10 03903 MOVLW 0x10 0010F0 6F00 03904 MOVWF i_12,1 0010F2 5300 03905 m201 MOVF i_12,1,1 0010F4 E00A 03906 BZ m203 0010F6 989E 03907 BCF 0xF9E,TXIF,0 0010F8 CFEE FFAD 03908 MOVFF POSTINC0,TXREG 0010FC A2AC 03909 m202 BTFSS 0xFAC,TRMT,0 0010FE D7FE 03910 BRA m202 001100 A89E 03911 BTFSS 0xF9E,TXIF,0 001102 D7FC 03912 BRA m202 001104 0004 03913 CLRWDT 001106 0700 03914 DECF i_12,1,1 001108 D7F4 03915 BRA m201 03916 ;} 00110A 0012 03917 m203 RETURN 03918 ; 03919 ;// test valid asudd answer 03920 ;bit isValidAsuddAnswer(void){ 00110C 03921 isValidAsuddAnswer 03922 ; if(asudd_buff_rx[0] != 0x01 || asudd_buff_rx[0] != 0x02) {log_event(LE_ASD_AD R); return ERR;} // address DK 00110C 2D5A 03923 DECFSZ asudd_buff_rx,W,1 00110E D003 03924 BRA m204 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 76 LOC OBJECT CODE LINE SOURCE TEXT VALUE 001110 515A 03925 MOVF asudd_buff_rx,W,1 001112 0A02 03926 XORLW 0x02 001114 E006 03927 BZ m205 001116 0E88 03928 m204 MOVLW 0x88 001118 EC6B F001 03929 CALL log_event 00111C 90D8 03930 BCF 0xFD8,Carry,0 00111E 0102 03931 MOVLB 0x02 001120 0012 03932 RETURN 03933 ; if(asudd_buff_rx[1] != 0xd3) {log_event(LE_ASD_FLG1); return ERR;} // flag 1 001122 515B 03934 m205 MOVF asudd_buff_rx+1,W,1 001124 0AD3 03935 XORLW 0xD3 001126 E006 03936 BZ m206 001128 0E89 03937 MOVLW 0x89 00112A EC6B F001 03938 CALL log_event 00112E 90D8 03939 BCF 0xFD8,Carry,0 001130 0102 03940 MOVLB 0x02 001132 0012 03941 RETURN 03942 ; if(asudd_buff_rx[2] != 0x2e) {log_event(LE_ASD_FLG2); return ERR;} // flag 2 001134 515C 03943 m206 MOVF asudd_buff_rx+2,W,1 001136 0A2E 03944 XORLW 0x2E 001138 E006 03945 BZ m207 00113A 0E8A 03946 MOVLW 0x8A 00113C EC6B F001 03947 CALL log_event 001140 90D8 03948 BCF 0xFD8,Carry,0 001142 0102 03949 MOVLB 0x02 001144 0012 03950 RETURN 03951 ; if(asudd_buff_rx[3] != 0x03) {log_event(LE_ASD_DTVW); return ERR;} // data ty pe 3 001146 515D 03952 m207 MOVF asudd_buff_rx+3,W,1 001148 0A03 03953 XORLW 0x03 00114A E006 03954 BZ m208 00114C 0E8B 03955 MOVLW 0x8B 00114E EC6B F001 03956 CALL log_event 001152 90D8 03957 BCF 0xFD8,Carry,0 001154 0102 03958 MOVLB 0x02 001156 0012 03959 RETURN 03960 ; if(asudd_buff_rx[4] != 0x04) {log_event(LE_ASD_CNT); return ERR;} // byte cou nt 001158 515E 03961 m208 MOVF asudd_buff_rx+4,W,1 00115A 0A04 03962 XORLW 0x04 00115C E006 03963 BZ m209 00115E 0E8C 03964 MOVLW 0x8C 001160 EC6B F001 03965 CALL log_event 001164 90D8 03966 BCF 0xFD8,Carry,0 001166 0102 03967 MOVLB 0x02 001168 0012 03968 RETURN 03969 ; // test CRC 03970 ; bank2 uns16 ACrc; 03971 ; bank2 char cLow @ ACrc.low8, cHigh @ ACrc.high8, i; 03972 ; ACrc=0x0003; 00116A 0E03 03973 m209 MOVLW 0x03 00116C 0102 03974 MOVLB 0x02 00116E 6F00 03975 MOVWF ACrc_2,1 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 77 LOC OBJECT CODE LINE SOURCE TEXT VALUE 001170 6B01 03976 CLRF ACrc_2+1,1 03977 ; FSR1 = &asudd_buff_rx[0]; 001172 EE11 F05A 03978 LFSR 1,346 03979 ; for(i = 9; i>0; i--){ 001176 0E09 03980 MOVLW 0x09 001178 6F02 03981 MOVWF i_13,1 00117A 5302 03982 m210 MOVF i_13,1,1 00117C E007 03983 BZ m212 03984 ; cLow += POSTINC1; 00117E 50E6 03985 MOVF POSTINC1,W,0 001180 2700 03986 ADDWF cLow_2,1,1 03987 ; if(Carry){ 001182 E302 03988 BNC m211 03989 ; cHigh+=5; 001184 0E05 03990 MOVLW 0x05 001186 2701 03991 ADDWF cHigh_2,1,1 03992 ; } 03993 ; } 001188 0702 03994 m211 DECF i_13,1,1 00118A D7F7 03995 BRA m210 03996 ; if(POSTINC1 != cLow ) {log_event(LE_ASD_CRC); return ERR;} // bad CRC 00118C 50E6 03997 m212 MOVF POSTINC1,W,0 00118E 1900 03998 XORWF cLow_2,W,1 001190 E006 03999 BZ m213 001192 0E8D 04000 MOVLW 0x8D 001194 EC6B F001 04001 CALL log_event 001198 90D8 04002 BCF 0xFD8,Carry,0 00119A 0102 04003 MOVLB 0x02 00119C 0012 04004 RETURN 04005 ; if(POSTINC1 != cHigh) {log_event(LE_ASD_CRC); return ERR;} // bad CRC 00119E 50E6 04006 m213 MOVF POSTINC1,W,0 0011A0 1901 04007 XORWF cHigh_2,W,1 0011A2 E006 04008 BZ m214 0011A4 0E8D 04009 MOVLW 0x8D 0011A6 EC6B F001 04010 CALL log_event 0011AA 90D8 04011 BCF 0xFD8,Carry,0 0011AC 0102 04012 MOVLB 0x02 0011AE 0012 04013 RETURN 04014 ; return OK; 0011B0 80D8 04015 m214 BSF 0xFD8,Carry,0 0011B2 0012 04016 RETURN 04017 ;} 04018 ;//------------------------------------------- 04019 ;// rx packet from Plate C 04020 ;Task AsuddRX(void){ 0011B4 04021 AsuddRX 0011B4 51F7 04022 MOVF _TaskS16,W,1 0011B6 E003 04023 BZ m215 0011B8 0A01 04024 XORLW 0x01 0011BA E015 04025 BZ m217 0011BC 0C80 04026 RETLW 0x80 04027 ; ptr_asd_buff=&asudd_buff_rx[0]; 0011BE 0E5A 04028 m215 MOVLW 0x5A MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 78 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0011C0 0101 04029 MOVLB 0x01 0011C2 6FFC 04030 MOVWF ptr_gsm_buff,1 0011C4 0E01 04031 MOVLW 0x01 0011C6 6FFD 04032 MOVWF ptr_gsm_buff+1,1 04033 ; asd_rx_cnt=0; 0011C8 6A48 04034 CLRF gsm_rx_cnt,0 04035 ; clearEvent(evtASDERR); 0011CA 9E3F 04036 BCF EventStates+1,7,0 04037 ; clearEvent(evtASDOK); 0011CC 9040 04038 BCF EventStates+2,0,0 04039 ; RX9=1; 0011CE 8CAB 04040 BSF 0xFAB,RX9,0 04041 ; ADDEN=ON; 0011D0 86AB 04042 BSF 0xFAB,ADDEN,0 04043 ; startTimer(T_ASD, 800); 0011D2 0E20 04044 MOVLW 0x20 0011D4 0100 04045 MOVLB 0x00 0011D6 6FD2 04046 MOVWF softTimer+8,1 0011D8 0E03 04047 MOVLW 0x03 0011DA 6FD3 04048 MOVWF softTimer+9,1 0011DC 9856 04049 BCF tTimeout,4,0 04050 ; do{ 04051 ; do{ 04052 ; if(RCIF) break; 0011DE 0101 04053 m216 MOVLB 0x01 0011E0 BA9E 04054 BTFSC 0xF9E,RCIF,0 0011E2 D004 04055 BRA m218 04056 ; waitState(); 0011E4 0C01 04057 RETLW 0x01 04058 ; }while(!timeout(T_ASD)); 0011E6 A856 04059 m217 BTFSS tTimeout,4,0 0011E8 D7FA 04060 BRA m216 04061 ; if(timeout(T_ASD)) { 0011EA 0101 04062 MOVLB 0x01 0011EC A856 04063 m218 BTFSS tTimeout,4,0 0011EE D006 04064 BRA m219 04065 ; setEvent(evtASDERR); 0011F0 8E3F 04066 BSF EventStates+1,7,0 04067 ; log_event(LE_ASD_NOSTART); 0011F2 0E8E 04068 MOVLW 0x8E 0011F4 EC6B F001 04069 CALL log_event 04070 ; break; 0011F8 0101 04071 MOVLB 0x01 0011FA D00E 04072 BRA m220 04073 ; } 04074 ; *ptr_asd_buff=RCREG; 0011FC C1FC FFE9 04075 m219 MOVFF ptr_gsm_buff,FSR0 001200 C1FD FFEA 04076 MOVFF ptr_gsm_buff+1,FSR0+1 001204 CFAE FFEF 04077 MOVFF RCREG,INDF0 04078 ; ADDEN=OFF; 001208 96AB 04079 BCF 0xFAB,ADDEN,0 04080 ; asd_rx_cnt++; 00120A 2A48 04081 INCF gsm_rx_cnt,1,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 79 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04082 ; ptr_asd_buff++; 00120C 2BFC 04083 INCF ptr_gsm_buff,1,1 00120E 0E00 04084 MOVLW 0x00 001210 23FD 04085 ADDWFC ptr_gsm_buff+1,1,1 04086 ; }while(asd_rx_cnt < 11); 001212 0E0A 04087 MOVLW 0x0A 001214 6448 04088 CPFSGT gsm_rx_cnt,0 001216 D7E3 04089 BRA m216 04090 ; if(asd_rx_cnt != 11){; // rx data count must be exact 11 bytes 001218 5048 04091 m220 MOVF gsm_rx_cnt,W,0 00121A 0A0B 04092 XORLW 0x0B 00121C E005 04093 BZ m221 04094 ; setEvent(evtASDERR); 00121E 8E3F 04095 BSF EventStates+1,7,0 04096 ; log_event(LE_ASD_ERRLEN); 001220 0E8E 04097 MOVLW 0x8E 001222 EC6B F001 04098 CALL log_event 04099 ; } 04100 ;} 001226 0101 04101 MOVLB 0x01 001228 0C80 04102 m221 RETLW 0x80 04103 ; 04104 ;Task Asudd(void){ 00122A 04105 Asudd 00122A 0E05 04106 MOVLW 0x05 00122C 5DE2 04107 SUBWF _TaskS8,W,1 00122E B0D8 04108 BTFSC 0xFD8,Carry,0 001230 0C00 04109 RETLW 0x00 001232 50F9 04110 MOVF PCL,W,0 001234 45E2 04111 RLNCF _TaskS8,W,1 001236 26F9 04112 ADDWF PCL,1,0 001238 D004 04113 BRA m222 00123A D009 04114 BRA m223 00123C D016 04115 BRA m225 00123E D027 04116 BRA m227 001240 D031 04117 BRA m229 04118 ; clearTask(RS232Connect); 001242 0E80 04119 m222 MOVLW 0x80 001244 6E5B 04120 MOVWF _TaskS3,0 04121 ; //test is Line Asudd present ? 04122 ; SendTestCPlateExist(); 001246 0102 04123 MOVLB 0x02 001248 DED3 04124 RCALL SendTestCPlateExist 04125 ; startTask(AsuddRX); 00124A 0100 04126 MOVLB 0x00 00124C 6BF7 04127 CLRF _TaskS16,1 04128 ; while(taskBusy(AsuddRX)) waitState(); 00124E AFF7 04129 m223 BTFSS _TaskS16,7,1 001250 0C01 04130 RETLW 0x01 04131 ; if(!isEvent(evtASDERR)){ //plate C present 001252 BE3F 04132 BTFSC EventStates+1,7,0 001254 D01F 04133 BRA m228 04134 ; // indicate receive MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 80 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04135 ; ind_states.3=1; 001256 861D 04136 BSF ind_states,3,0 04137 ; ind_send(ind_states^0xff); 001258 1C1D 04138 COMF ind_states,W,0 00125A DE89 04139 RCALL ind_send 04140 ; // clear Comp-Contr RS232 Task 04141 ; clearTask(RS232Connect); 00125C 0E80 04142 MOVLW 0x80 00125E 6E5B 04143 MOVWF _TaskS3,0 04144 ; clearTask(RSTimeout); 001260 6FE7 04145 MOVWF _TaskS13,1 04146 ; do{ // main cicl 04147 ; SendStateAsd(); 001262 0102 04148 m224 MOVLB 0x02 001264 DEFF 04149 RCALL SendStateAsd 04150 ; startTask(AsuddRX); 001266 0100 04151 MOVLB 0x00 001268 6BF7 04152 CLRF _TaskS16,1 04153 ; while(taskBusy(AsuddRX)) waitState(); 00126A AFF7 04154 m225 BTFSS _TaskS16,7,1 00126C 0C02 04155 RETLW 0x02 04156 ; if(!isEvent(evtASDERR) && isValidAsuddAnswer()){ 00126E BE3F 04157 BTFSC EventStates+1,7,0 001270 D008 04158 BRA m226 001272 0101 04159 MOVLB 0x01 001274 DF4B 04160 RCALL isValidAsuddAnswer 001276 0100 04161 MOVLB 0x00 001278 E304 04162 BNC m226 04163 ; // decode answer 04164 ; if(asudd_err_code==ASD_NOERR) setEvent(evtASUDD); 00127A 0101 04165 MOVLB 0x01 00127C 535F 04166 MOVF asudd_err_code,1,1 00127E B4D8 04167 BTFSC 0xFD8,Zero_,0 001280 8C3F 04168 BSF EventStates+1,6,0 04169 ; } 04170 ; delay(T_ASD, 1000); // 1 sec pause 001282 0EE8 04171 m226 MOVLW 0xE8 001284 0100 04172 MOVLB 0x00 001286 6FD2 04173 MOVWF softTimer+8,1 001288 0E03 04174 MOVLW 0x03 00128A 6FD3 04175 MOVWF softTimer+9,1 00128C 9856 04176 BCF tTimeout,4,0 00128E B856 04177 m227 BTFSC tTimeout,4,0 001290 D7E8 04178 BRA m224 001292 0C03 04179 RETLW 0x03 04180 ; }while(TRUE); 04181 ; }else{ 04182 ; ind_states.7=1; // ind error 001294 8E1D 04183 m228 BSF ind_states,7,0 04184 ; ind_send(ind_states^0xff); 001296 1C1D 04185 COMF ind_states,W,0 001298 DE6A 04186 RCALL ind_send 04187 ; delay(T_ASD, 1000); // 1 sec pause MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 81 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00129A 0EE8 04188 MOVLW 0xE8 00129C 6FD2 04189 MOVWF softTimer+8,1 00129E 0E03 04190 MOVLW 0x03 0012A0 6FD3 04191 MOVWF softTimer+9,1 0012A2 9856 04192 BCF tTimeout,4,0 0012A4 A856 04193 m229 BTFSS tTimeout,4,0 0012A6 0C04 04194 RETLW 0x04 04195 ; restartTask(); 0012A8 0C00 04196 RETLW 0x00 04197 ; // plate C non present 04198 ; startTask(RS232Connect); 0012AA 6A5B 04199 CLRF _TaskS3,0 04200 ; TX9=OFF; 0012AC 9CAC 04201 BCF 0xFAC,TX9,0 04202 ; RX9=OFF; 0012AE 9CAB 04203 BCF 0xFAB,RX9,0 04204 ; log_event(LE_ASD_NO_CONN); 0012B0 0E87 04205 MOVLW 0x87 0012B2 EC6B F001 04206 CALL log_event 04207 ; } 04208 ;} 0012B6 0100 04209 MOVLB 0x00 0012B8 0C80 04210 RETLW 0x80 04211 04212 ; FILE gsm.c 04213 ;//------------------------------------------------------ 04214 ;void putc(char W){put(W);clrwdt();} 0012BA 04215 putc 0012BA 989E 04216 BCF 0xF9E,TXIF,0 0012BC 6EAD 04217 MOVWF TXREG,0 0012BE A2AC 04218 m230 BTFSS 0xFAC,TRMT,0 0012C0 D7FE 04219 BRA m230 0012C2 A89E 04220 BTFSS 0xF9E,TXIF,0 0012C4 D7FC 04221 BRA m230 0012C6 0004 04222 CLRWDT 0012C8 0004 04223 CLRWDT 0012CA 0012 04224 RETURN 04225 ;void PutCString(char numb); 04226 ;bit DecodeSMS(void); 04227 ;bit TestCNT(void); 04228 ; 04229 ;void EncodeASK(void); 04230 ;void EncodeHEALTH(void); 04231 ;void EncodeTEMPER(void); 04232 ;void EncodeDTIME(void); 04233 ;void EncodeSMSCENTER(void); 04234 ;void EncodeTRNSP_ID(void); 04235 ;void EncodeERROR(void); 04236 ;void EncodeSQUAL(void); 04237 ;void EncodePOWER220(void); 04238 ;void EncodePOWER220COUNTER(void); 04239 ;void EncodeMODE(void); 04240 ;void EncodeFDEL(void); MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 82 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04241 ; 04242 ;bit isPINReady(void); 04243 ;bit isRegistred(void); 04244 ;char FindIncomingSMS(void); 04245 ;void calcCRC(char nbr); 04246 ;void bcd2str(char nbr); 04247 ;void hex8str(char nbr); 04248 ;char str2hex8(void); 04249 ;uns16 str2hex16(void); 04250 ;void hex16str(uns16 nbr); 04251 ;void PutBuff(); 04252 ;void DateTime2Str(void); 04253 ;void SetClock(void); 04254 ;void SetNewFazaDelay(void); 04255 ;//------------------------------------------------------ 04256 ;#define WAIT_RX(__tmout__) \ 04257 ; gsm_rx_timeout=__tmout__; \ 04258 ; startTask(GSMRcv); \ 04259 ; while(taskBusy(GSMRcv)) waitState(); 04260 ; 04261 ;#define PUT_WAIT_RX(__cmd__, __time__) \ 04262 ; PutCString(__cmd__);\ 04263 ; WAIT_RX(__time__) 04264 ;//------------------------------------------------------ 04265 ;Task GSMRcv(void){ 0012CC 04266 GSMRcv 0012CC 0E03 04267 MOVLW 0x03 0012CE 5C13 04268 SUBWF _TaskS1,W,0 0012D0 0101 04269 MOVLB 0x01 0012D2 B0D8 04270 BTFSC 0xFD8,Carry,0 0012D4 0C00 04271 RETLW 0x00 0012D6 50F9 04272 MOVF PCL,W,0 0012D8 4413 04273 RLNCF _TaskS1,W,0 0012DA 26F9 04274 ADDWF PCL,1,0 0012DC D002 04275 BRA m231 0012DE D00D 04276 BRA m232 0012E0 D055 04277 BRA m241 04278 ; ptr_gsm_buff=&gsm_buff[0]; 0012E2 0E48 04279 m231 MOVLW 0x48 0012E4 6FFC 04280 MOVWF ptr_gsm_buff,1 0012E6 0E01 04281 MOVLW 0x01 0012E8 6FFD 04282 MOVWF ptr_gsm_buff+1,1 04283 ; gsm_rx_cnt=0; 0012EA 6A48 04284 CLRF gsm_rx_cnt,0 04285 ; startTimer(T_GSM, gsm_rx_timeout); 0012EC C049 F0E0 04286 MOVFF gsm_rx_timeout,softTimer+22 0012F0 C04A F0E1 04287 MOVFF gsm_rx_timeout+1,softTimer+23 0012F4 9657 04288 BCF tTimeout+1,3,0 04289 ; clearEvent(evtGSMOK); 0012F6 943E 04290 BCF EventStates,2,0 04291 ; clearEvent(evtGSMREADY); 0012F8 963E 04292 BCF EventStates,3,0 04293 ; do{ MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 83 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04294 ; while(!RCIF && !timeout(T_GSM)) waitState(); 0012FA BA9E 04295 m232 BTFSC 0xF9E,RCIF,0 0012FC D002 04296 BRA m233 0012FE A657 04297 BTFSS tTimeout+1,3,0 001300 0C01 04298 RETLW 0x01 04299 ; if(timeout(T_GSM)) break; 001302 B657 04300 m233 BTFSC tTimeout+1,3,0 001304 D025 04301 BRA m235 04302 ; *ptr_gsm_buff=RCREG; 001306 C1FC FFE9 04303 MOVFF ptr_gsm_buff,FSR0 00130A C1FD FFEA 04304 MOVFF ptr_gsm_buff+1,FSR0+1 00130E CFAE FFEF 04305 MOVFF RCREG,INDF0 04306 ; gsm_rx_cnt++; 001312 2A48 04307 INCF gsm_rx_cnt,1,0 04308 ; FSR1=ptr_gsm_buff; 001314 C1FC FFE1 04309 MOVFF ptr_gsm_buff,FSR1 001318 C1FD FFE2 04310 MOVFF ptr_gsm_buff+1,FSR1+1 04311 ; if(gsm_rx_cnt>4 && POSTDEC1==0x0a && POSTDEC1==0x0d && POSTDEC1= ='K' && POSTDEC1=='O') break; 00131C 0E04 04312 MOVLW 0x04 00131E 6448 04313 CPFSGT gsm_rx_cnt,0 001320 D00D 04314 BRA m234 001322 0E0A 04315 MOVLW 0x0A 001324 62E5 04316 CPFSEQ POSTDEC1,0 001326 D00A 04317 BRA m234 001328 0E0D 04318 MOVLW 0x0D 00132A 62E5 04319 CPFSEQ POSTDEC1,0 00132C D007 04320 BRA m234 00132E 0E4B 04321 MOVLW 0x4B 001330 62E5 04322 CPFSEQ POSTDEC1,0 001332 D004 04323 BRA m234 001334 0E4F 04324 MOVLW 0x4F 001336 62E5 04325 CPFSEQ POSTDEC1,0 001338 D001 04326 BRA m234 00133A D00A 04327 BRA m235 04328 ; ptr_gsm_buff++; 00133C 2BFC 04329 m234 INCF ptr_gsm_buff,1,1 00133E 0E00 04330 MOVLW 0x00 001340 23FD 04331 ADDWFC ptr_gsm_buff+1,1,1 04332 ; if(ptr_gsm_buff > &gsm_buff[180]) break; // too much datas 001342 0EFD 04333 MOVLW 0xFD 001344 5DFC 04334 SUBWF ptr_gsm_buff,W,1 001346 0E01 04335 MOVLW 0x01 001348 59FD 04336 SUBWFB ptr_gsm_buff+1,W,1 00134A E202 04337 BC m235 04338 ; }while(!timeout(T_GSM)); 00134C A657 04339 BTFSS tTimeout+1,3,0 00134E D7D5 04340 BRA m232 04341 ; // find 'OK', '>' strings in received buffer and set event 04342 ; if(gsm_rx_cnt){ 001350 5248 04343 m235 MOVF gsm_rx_cnt,1,0 001352 E017 04344 BZ m240 04345 ; char i; MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 84 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04346 ; FSR0=&gsm_buff[0]; 001354 EE01 F048 04347 LFSR 0,328 04348 ; if(INDF0=='>') setEvent(evtGSMREADY); 001358 0E3E 04349 MOVLW 0x3E 00135A 62EF 04350 CPFSEQ INDF0,0 00135C D001 04351 BRA m236 00135E 863E 04352 BSF EventStates,3,0 04353 ; for(i=0; i') setEvent(evtGSMREADY); 001368 0E3E 04359 MOVLW 0x3E 00136A 62EF 04360 CPFSEQ INDF0,0 00136C D001 04361 BRA m238 00136E 863E 04362 BSF EventStates,3,0 04363 ; if(POSTINC0=='O' && INDF0=='K') setEvent(evtGSMOK); 001370 0E4F 04364 m238 MOVLW 0x4F 001372 62EE 04365 CPFSEQ POSTINC0,0 001374 D004 04366 BRA m239 001376 0E4B 04367 MOVLW 0x4B 001378 62EF 04368 CPFSEQ INDF0,0 00137A D001 04369 BRA m239 00137C 843E 04370 BSF EventStates,2,0 04371 ; } 00137E 2A05 04372 m239 INCF i_14,1,0 001380 D7F0 04373 BRA m237 04374 ; } 04375 ; delay(T_GSM, 150); // 150 msec before next send/receive 001382 0E96 04376 m240 MOVLW 0x96 001384 0100 04377 MOVLB 0x00 001386 6FE0 04378 MOVWF softTimer+22,1 001388 6BE1 04379 CLRF softTimer+23,1 00138A 9657 04380 BCF tTimeout+1,3,0 00138C 0101 04381 m241 MOVLB 0x01 00138E A657 04382 BTFSS tTimeout+1,3,0 001390 0C02 04383 RETLW 0x02 04384 ;} 001392 0C80 04385 RETLW 0x80 04386 ; 04387 ;Task GSM(void){ 001394 04388 GSM 001394 0E22 04389 MOVLW 0x22 001396 5DE6 04390 SUBWF _TaskS12,W,1 001398 B0D8 04391 BTFSC 0xFD8,Carry,0 00139A 0C00 04392 RETLW 0x00 00139C 50F9 04393 MOVF PCL,W,0 00139E 45E6 04394 RLNCF _TaskS12,W,1 0013A0 26F9 04395 ADDWF PCL,1,0 0013A2 D021 04396 BRA m242 0013A4 D02D 04397 BRA m243 0013A6 D046 04398 BRA m246 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 85 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0013A8 D04E 04399 BRA m248 0013AA D057 04400 BRA m249 0013AC D060 04401 BRA m250 0013AE D06B 04402 BRA m251 0013B0 D078 04403 BRA m253 0013B2 D083 04404 BRA m254 0013B4 D08C 04405 BRA m255 0013B6 D095 04406 BRA m256 0013B8 D0A0 04407 BRA m258 0013BA D0B8 04408 BRA m260 0013BC D0C3 04409 BRA m262 0013BE D0D7 04410 BRA m265 0013C0 D0E0 04411 BRA m266 0013C2 D0E9 04412 BRA m267 0013C4 D0F2 04413 BRA m268 0013C6 D0FD 04414 BRA m270 0013C8 D107 04415 BRA m271 0013CA D109 04416 BRA m273 0013CC D113 04417 BRA m274 0013CE D11E 04418 BRA m276 0013D0 D12E 04419 BRA m277 0013D2 D13E 04420 BRA m278 0013D4 D148 04421 BRA m279 0013D6 D154 04422 BRA m280 0013D8 D101 04423 BRA m272 0013DA D193 04424 BRA m287 0013DC D1A4 04425 BRA m291 0013DE D1AF 04426 BRA m293 0013E0 D1C9 04427 BRA m299 0013E2 D1D5 04428 BRA m300 0013E4 D1E5 04429 BRA m301 04430 ; clearTask(RSTimeout); 0013E6 0E80 04431 m242 MOVLW 0x80 0013E8 6FE7 04432 MOVWF _TaskS13,1 04433 ; clearTask(RS232Connect); 0013EA 6E5B 04434 MOVWF _TaskS3,0 04435 ; // detect modem 04436 ; putc('A');putc('T');putc(0x0d); // wait for 'AT' response 0013EC 0E41 04437 MOVLW 0x41 0013EE DF65 04438 RCALL putc 0013F0 0E54 04439 MOVLW 0x54 0013F2 DF63 04440 RCALL putc 0013F4 0E0D 04441 MOVLW 0x0D 0013F6 DF61 04442 RCALL putc 04443 ; WAIT_RX(250) 0013F8 0EFA 04444 MOVLW 0xFA 0013FA 6E49 04445 MOVWF gsm_rx_timeout,0 0013FC 6A4A 04446 CLRF gsm_rx_timeout+1,0 0013FE 6A13 04447 CLRF _TaskS1,0 001400 AE13 04448 m243 BTFSS _TaskS1,7,0 001402 0C01 04449 RETLW 0x01 04450 ; // if no modem detected-> stop task 04451 ; if(gsm_rx_cnt<2 || gsm_buff[0]!='A' || gsm_buff[1]!='T'){ MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 86 LOC OBJECT CODE LINE SOURCE TEXT VALUE 001404 0E01 04452 MOVLW 0x01 001406 6448 04453 CPFSGT gsm_rx_cnt,0 001408 D007 04454 BRA m244 00140A 0E41 04455 MOVLW 0x41 00140C 0101 04456 MOVLB 0x01 00140E 6348 04457 CPFSEQ gsm_buff,1 001410 D003 04458 BRA m244 001412 5149 04459 MOVF gsm_buff+1,W,1 001414 0A54 04460 XORLW 0x54 001416 E005 04461 BZ m245 04462 ; log_event(LE_MDM_NO_RESP); 001418 0E80 04463 m244 MOVLW 0x80 00141A EC6B F001 04464 CALL log_event 04465 ; goto gsm_exit; 00141E 0100 04466 MOVLB 0x00 001420 D1CA 04467 BRA m302 04468 ; } 04469 ; // init modem 04470 ; PUT_WAIT_RX(GCM_REGISTRATION_ON,3000) 001422 0E03 04471 m245 MOVLW 0x03 001424 EC1E F010 04472 CALL PutCString 001428 0EB8 04473 MOVLW 0xB8 00142A 6E49 04474 MOVWF gsm_rx_timeout,0 00142C 0E0B 04475 MOVLW 0x0B 00142E 6E4A 04476 MOVWF gsm_rx_timeout+1,0 001430 6A13 04477 CLRF _TaskS1,0 001432 0100 04478 MOVLB 0x00 001434 AE13 04479 m246 BTFSS _TaskS1,7,0 001436 0C02 04480 RETLW 0x02 04481 ; if(isRegistred()) goto registred; 001438 D9E7 04482 RCALL isRegistred 00143A E270 04483 BC m259 04484 ;init: 04485 ; delay(T_GSM, 1000); // 1 sec 00143C 0EE8 04486 m247 MOVLW 0xE8 00143E 6FE0 04487 MOVWF softTimer+22,1 001440 0E03 04488 MOVLW 0x03 001442 6FE1 04489 MOVWF softTimer+23,1 001444 9657 04490 BCF tTimeout+1,3,0 001446 A657 04491 m248 BTFSS tTimeout+1,3,0 001448 0C03 04492 RETLW 0x03 04493 ; PutCString(GCM_REBOOT); 00144A 0E0C 04494 MOVLW 0x0C 00144C EC1E F010 04495 CALL PutCString 04496 ; delay(T_GSM, 5000); // 5 sec wait 001450 0E88 04497 MOVLW 0x88 001452 6FE0 04498 MOVWF softTimer+22,1 001454 0E13 04499 MOVLW 0x13 001456 6FE1 04500 MOVWF softTimer+23,1 001458 9657 04501 BCF tTimeout+1,3,0 00145A A657 04502 m249 BTFSS tTimeout+1,3,0 00145C 0C04 04503 RETLW 0x04 04504 ; PUT_WAIT_RX(GCM_GET_PIN_STATE,500) MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 87 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00145E 0E0F 04505 MOVLW 0x0F 001460 EC1E F010 04506 CALL PutCString 001464 0EF4 04507 MOVLW 0xF4 001466 6E49 04508 MOVWF gsm_rx_timeout,0 001468 0E01 04509 MOVLW 0x01 00146A 6E4A 04510 MOVWF gsm_rx_timeout+1,0 00146C 6A13 04511 CLRF _TaskS1,0 00146E AE13 04512 m250 BTFSS _TaskS1,7,0 001470 0C05 04513 RETLW 0x05 04514 ; if(!isPINReady()){ // need to enter PIN 001472 D9A3 04515 RCALL isPINReady 001474 E211 04516 BC m252 04517 ; PUT_WAIT_RX(GCM_PIN,15000) 001476 0E00 04518 MOVLW 0x00 001478 EC1E F010 04519 CALL PutCString 00147C 0E98 04520 MOVLW 0x98 00147E 6E49 04521 MOVWF gsm_rx_timeout,0 001480 0E3A 04522 MOVLW 0x3A 001482 6E4A 04523 MOVWF gsm_rx_timeout+1,0 001484 6A13 04524 CLRF _TaskS1,0 001486 AE13 04525 m251 BTFSS _TaskS1,7,0 001488 0C06 04526 RETLW 0x06 04527 ; if(!isEvent(evtGSMOK)){ 00148A B43E 04528 BTFSC EventStates,2,0 00148C D005 04529 BRA m252 04530 ; log_event(LE_GSM_ERR_PIN); 00148E 0E81 04531 MOVLW 0x81 001490 EC6B F001 04532 CALL log_event 04533 ; goto gsm_exit; 001494 0100 04534 MOVLB 0x00 001496 D18F 04535 BRA m302 04536 ; } 04537 ; } 04538 ; delay(T_GSM, 5000); // 5 sec wait to accesable data in SIM 001498 0E88 04539 m252 MOVLW 0x88 00149A 6FE0 04540 MOVWF softTimer+22,1 00149C 0E13 04541 MOVLW 0x13 00149E 6FE1 04542 MOVWF softTimer+23,1 0014A0 9657 04543 BCF tTimeout+1,3,0 0014A2 A657 04544 m253 BTFSS tTimeout+1,3,0 0014A4 0C07 04545 RETLW 0x07 04546 ; putc('A');putc('T');putc(0x0d); // wait for 'AT' response 0014A6 0E41 04547 MOVLW 0x41 0014A8 DF08 04548 RCALL putc 0014AA 0E54 04549 MOVLW 0x54 0014AC DF06 04550 RCALL putc 0014AE 0E0D 04551 MOVLW 0x0D 0014B0 DF04 04552 RCALL putc 04553 ; WAIT_RX(250) 0014B2 0EFA 04554 MOVLW 0xFA 0014B4 6E49 04555 MOVWF gsm_rx_timeout,0 0014B6 6A4A 04556 CLRF gsm_rx_timeout+1,0 0014B8 6A13 04557 CLRF _TaskS1,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 88 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0014BA AE13 04558 m254 BTFSS _TaskS1,7,0 0014BC 0C08 04559 RETLW 0x08 04560 ; PUT_WAIT_RX(GCM_SET_ACTIVE_STATE,1000) 0014BE 0E0E 04561 MOVLW 0x0E 0014C0 EC1E F010 04562 CALL PutCString 0014C4 0EE8 04563 MOVLW 0xE8 0014C6 6E49 04564 MOVWF gsm_rx_timeout,0 0014C8 0E03 04565 MOVLW 0x03 0014CA 6E4A 04566 MOVWF gsm_rx_timeout+1,0 0014CC 6A13 04567 CLRF _TaskS1,0 0014CE AE13 04568 m255 BTFSS _TaskS1,7,0 0014D0 0C09 04569 RETLW 0x09 04570 ; PUT_WAIT_RX(GCM_GET_OPSOS,500) 0014D2 0E09 04571 MOVLW 0x09 0014D4 EC1E F010 04572 CALL PutCString 0014D8 0EF4 04573 MOVLW 0xF4 0014DA 6E49 04574 MOVWF gsm_rx_timeout,0 0014DC 0E01 04575 MOVLW 0x01 0014DE 6E4A 04576 MOVWF gsm_rx_timeout+1,0 0014E0 6A13 04577 CLRF _TaskS1,0 0014E2 AE13 04578 m256 BTFSS _TaskS1,7,0 0014E4 0C0A 04579 RETLW 0x0A 04580 ; static char trys; 04581 ; trys=NETW_REG_TRYOUTS; 0014E6 0E1E 04582 MOVLW 0x1E 0014E8 6FF8 04583 MOVWF trys,1 04584 ; do{ 04585 ; PUT_WAIT_RX(GCM_REGISTRATION_ON,3000) 0014EA 0E03 04586 m257 MOVLW 0x03 0014EC EC1E F010 04587 CALL PutCString 0014F0 0EB8 04588 MOVLW 0xB8 0014F2 6E49 04589 MOVWF gsm_rx_timeout,0 0014F4 0E0B 04590 MOVLW 0x0B 0014F6 6E4A 04591 MOVWF gsm_rx_timeout+1,0 0014F8 6A13 04592 CLRF _TaskS1,0 0014FA AE13 04593 m258 BTFSS _TaskS1,7,0 0014FC 0C0B 04594 RETLW 0x0B 04595 ; if(isRegistred()) goto registred; 0014FE D984 04596 RCALL isRegistred 001500 E20D 04597 BC m259 04598 ; }while(--trys); 001502 2FF8 04599 DECFSZ trys,1,1 001504 D7F2 04600 BRA m257 04601 ; if(!isRegistred()){ 001506 D980 04602 RCALL isRegistred 001508 E209 04603 BC m259 04604 ; if(reg_code<4) 00150A 0E04 04605 MOVLW 0x04 00150C 604B 04606 CPFSLT reg_code,0 00150E D153 04607 BRA m302 04608 ; log_event(LE_GSM_ERR_REG+reg_code); 001510 0E82 04609 MOVLW 0x82 001512 244B 04610 ADDWF reg_code,W,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 89 LOC OBJECT CODE LINE SOURCE TEXT VALUE 001514 EC6B F001 04611 CALL log_event 04612 ; goto gsm_exit; 001518 0100 04613 MOVLB 0x00 00151A D14D 04614 BRA m302 04615 ; } 04616 ;registred: 04617 ; PUT_WAIT_RX(GCM_SMS_TEXT_MODE,500) 00151C 0E04 04618 m259 MOVLW 0x04 00151E EC1E F010 04619 CALL PutCString 001522 0EF4 04620 MOVLW 0xF4 001524 6E49 04621 MOVWF gsm_rx_timeout,0 001526 0E01 04622 MOVLW 0x01 001528 6E4A 04623 MOVWF gsm_rx_timeout+1,0 00152A 6A13 04624 CLRF _TaskS1,0 00152C AE13 04625 m260 BTFSS _TaskS1,7,0 00152E 0C0C 04626 RETLW 0x0C 04627 ; trys=NETW_REG_TRYOUTS; 001530 0E1E 04628 MOVLW 0x1E 001532 6FF8 04629 MOVWF trys,1 04630 ; do{ 04631 ; PUT_WAIT_RX(GCM_GET_SMS_CNBR, 3000) 001534 0E01 04632 m261 MOVLW 0x01 001536 EC1E F010 04633 CALL PutCString 00153A 0EB8 04634 MOVLW 0xB8 00153C 6E49 04635 MOVWF gsm_rx_timeout,0 00153E 0E0B 04636 MOVLW 0x0B 001540 6E4A 04637 MOVWF gsm_rx_timeout+1,0 001542 6A13 04638 CLRF _TaskS1,0 001544 AE13 04639 m262 BTFSS _TaskS1,7,0 001546 0C0D 04640 RETLW 0x0D 04641 ; if(isEvent(evtGSMOK)) break; 001548 B43E 04642 BTFSC EventStates,2,0 00154A D002 04643 BRA m263 04644 ; }while(--trys); 00154C 2FF8 04645 DECFSZ trys,1,1 00154E D7F2 04646 BRA m261 04647 ; if(!isEvent(evtGSMOK)){ 001550 B43E 04648 m263 BTFSC EventStates,2,0 001552 D005 04649 BRA m264 04650 ; log_event(LE_GSM_ERR_SMS_CENTER); 001554 0E86 04651 MOVLW 0x86 001556 EC6B F001 04652 CALL log_event 04653 ; goto gsm_exit; 00155A 0100 04654 MOVLB 0x00 00155C D12C 04655 BRA m302 04656 ; } 04657 ; PUT_WAIT_RX(GCM_SET_TMPR, 1000) 00155E 0E0A 04658 m264 MOVLW 0x0A 001560 EC1E F010 04659 CALL PutCString 001564 0EE8 04660 MOVLW 0xE8 001566 6E49 04661 MOVWF gsm_rx_timeout,0 001568 0E03 04662 MOVLW 0x03 00156A 6E4A 04663 MOVWF gsm_rx_timeout+1,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 90 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00156C 6A13 04664 CLRF _TaskS1,0 00156E AE13 04665 m265 BTFSS _TaskS1,7,0 001570 0C0E 04666 RETLW 0x0E 04667 ; PUT_WAIT_RX(GCM_SET_SMS_FAIL_SIGNAL, 1000) 001572 0E10 04668 MOVLW 0x10 001574 EC1E F010 04669 CALL PutCString 001578 0EE8 04670 MOVLW 0xE8 00157A 6E49 04671 MOVWF gsm_rx_timeout,0 00157C 0E03 04672 MOVLW 0x03 00157E 6E4A 04673 MOVWF gsm_rx_timeout+1,0 001580 6A13 04674 CLRF _TaskS1,0 001582 AE13 04675 m266 BTFSS _TaskS1,7,0 001584 0C0F 04676 RETLW 0x0F 04677 ; PUT_WAIT_RX(GCM_SET_PLAIN_TEXT, 1000) 001586 0E11 04678 MOVLW 0x11 001588 EC1E F010 04679 CALL PutCString 00158C 0EE8 04680 MOVLW 0xE8 00158E 6E49 04681 MOVWF gsm_rx_timeout,0 001590 0E03 04682 MOVLW 0x03 001592 6E4A 04683 MOVWF gsm_rx_timeout+1,0 001594 6A13 04684 CLRF _TaskS1,0 001596 AE13 04685 m267 BTFSS _TaskS1,7,0 001598 0C10 04686 RETLW 0x10 04687 ; PUT_WAIT_RX(GCM_SET_INTERN_MEM, 1000) 00159A 0E12 04688 MOVLW 0x12 00159C EC1E F010 04689 CALL PutCString 0015A0 0EE8 04690 MOVLW 0xE8 0015A2 6E49 04691 MOVWF gsm_rx_timeout,0 0015A4 0E03 04692 MOVLW 0x03 0015A6 6E4A 04693 MOVWF gsm_rx_timeout+1,0 0015A8 6A13 04694 CLRF _TaskS1,0 0015AA AE13 04695 m268 BTFSS _TaskS1,7,0 0015AC 0C11 04696 RETLW 0x11 04697 ;// delete ALL messages from phone memory (1..25) 04698 ; sms_nbr=25; 0015AE 0E19 04699 MOVLW 0x19 0015B0 6E47 04700 MOVWF sms_nbr,0 04701 ; do{ 04702 ; PUT_WAIT_RX(GCM_DEL_SMS,1000) 0015B2 0E06 04703 m269 MOVLW 0x06 0015B4 EC1E F010 04704 CALL PutCString 0015B8 0EE8 04705 MOVLW 0xE8 0015BA 6E49 04706 MOVWF gsm_rx_timeout,0 0015BC 0E03 04707 MOVLW 0x03 0015BE 6E4A 04708 MOVWF gsm_rx_timeout+1,0 0015C0 6A13 04709 CLRF _TaskS1,0 0015C2 AE13 04710 m270 BTFSS _TaskS1,7,0 0015C4 0C12 04711 RETLW 0x12 04712 ; }while(--sms_nbr); 0015C6 2E47 04713 DECFSZ sms_nbr,1,0 0015C8 D7F4 04714 BRA m269 04715 ;// set wait for new sms receive 04716 ; PutCString(GCM_IND_SMS); MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 91 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0015CA 0E05 04717 MOVLW 0x05 0015CC EC1E F010 04718 CALL PutCString 04719 ; delay(T_GSM, 250); 0015D0 0EFA 04720 MOVLW 0xFA 0015D2 6FE0 04721 MOVWF softTimer+22,1 0015D4 6BE1 04722 CLRF softTimer+23,1 0015D6 9657 04723 BCF tTimeout+1,3,0 0015D8 A657 04724 m271 BTFSS tTimeout+1,3,0 0015DA 0C13 04725 RETLW 0x13 04726 ; // main loop 04727 ; do{ 04728 ; waitState(); 0015DC 0C14 04729 m272 RETLW 0x14 04730 ; if(isEvent(evtMDMRECVR)){ // once in hour will test modem to wor k properly 0015DE A440 04731 m273 BTFSS EventStates+2,2,0 0015E0 D00E 04732 BRA m275 04733 ; clearEvent(evtMDMRECVR); 0015E2 9440 04734 BCF EventStates+2,2,0 04735 ; PUT_WAIT_RX(GCM_REGISTRATION_ON,5000) 0015E4 0E03 04736 MOVLW 0x03 0015E6 EC1E F010 04737 CALL PutCString 0015EA 0E88 04738 MOVLW 0x88 0015EC 6E49 04739 MOVWF gsm_rx_timeout,0 0015EE 0E13 04740 MOVLW 0x13 0015F0 6E4A 04741 MOVWF gsm_rx_timeout+1,0 0015F2 6A13 04742 CLRF _TaskS1,0 0015F4 AE13 04743 m274 BTFSS _TaskS1,7,0 0015F6 0C15 04744 RETLW 0x15 04745 ; if(!isRegistred()) goto init; // not respond 0015F8 D907 04746 RCALL isRegistred 0015FA A0D8 04747 BTFSS 0xFD8,Carry,0 0015FC D71F 04748 BRA m247 04749 ; } 04750 ; if(RCIF){ // some info coming 0015FE AA9E 04751 m275 BTFSS 0xF9E,RCIF,0 001600 D0A6 04752 BRA m296 04753 ; WAIT_RX(1000) // wait for 1 sec 001602 0EE8 04754 MOVLW 0xE8 001604 6E49 04755 MOVWF gsm_rx_timeout,0 001606 0E03 04756 MOVLW 0x03 001608 6E4A 04757 MOVWF gsm_rx_timeout+1,0 00160A 6A13 04758 CLRF _TaskS1,0 00160C AE13 04759 m276 BTFSS _TaskS1,7,0 00160E 0C16 04760 RETLW 0x16 04761 ; if(gsm_rx_cnt > 12){ // something comin, may be incoming sms? 001610 0E0C 04762 MOVLW 0x0C 001612 6448 04763 CPFSGT gsm_rx_cnt,0 001614 D7E3 04764 BRA m272 04765 ; sms_nbr=FindIncomingSMS(); // get sms number 001616 D931 04766 RCALL FindIncomingSMS 001618 6E47 04767 MOVWF sms_nbr,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 92 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04768 ; if(sms_nbr != 0xff){ 00161A 4847 04769 INFSNZ sms_nbr,W,0 00161C D7DF 04770 BRA m272 04771 ; // finded, get message 04772 ; PUT_WAIT_RX(GCM_RDSMS,2800) 00161E 0E08 04773 MOVLW 0x08 001620 EC1E F010 04774 CALL PutCString 001624 0EF0 04775 MOVLW 0xF0 001626 6E49 04776 MOVWF gsm_rx_timeout,0 001628 0E0A 04777 MOVLW 0x0A 00162A 6E4A 04778 MOVWF gsm_rx_timeout+1,0 00162C 6A13 04779 CLRF _TaskS1,0 00162E AE13 04780 m277 BTFSS _TaskS1,7,0 001630 0C17 04781 RETLW 0x17 04782 ; // decode 04783 ; if(isEvent(evtGSMOK) && DecodeSMS()){ // all OK decoded to rs_buff 001632 A43E 04784 BTFSS EventStates,2,0 001634 D7D3 04785 BRA m272 001636 D955 04786 RCALL DecodeSMS 001638 E3D1 04787 BNC m272 04788 ;// indicate receive 04789 ;ind_states.3=1; 00163A 861D 04790 BSF ind_states,3,0 04791 ;ind_send(ind_states^0xff); 00163C 1C1D 04792 COMF ind_states,W,0 00163E DC97 04793 RCALL ind_send 04794 ; PUT_WAIT_RX(GCM_DEL_SMS,2000) // delete message in 001640 0E06 04795 MOVLW 0x06 001642 EC1E F010 04796 CALL PutCString 001646 0ED0 04797 MOVLW 0xD0 001648 6E49 04798 MOVWF gsm_rx_timeout,0 00164A 0E07 04799 MOVLW 0x07 00164C 6E4A 04800 MOVWF gsm_rx_timeout+1,0 00164E 6A13 04801 CLRF _TaskS1,0 001650 AE13 04802 m278 BTFSS _TaskS1,7,0 001652 0C18 04803 RETLW 0x18 04804 ; // make and send ACK message 04805 ; EncodeASK(); 001654 DA01 04806 RCALL EncodeASK 04807 ; PUT_WAIT_RX(GCM_SND2BASE,2000) 001656 0E07 04808 MOVLW 0x07 001658 EC1E F010 04809 CALL PutCString 00165C 0ED0 04810 MOVLW 0xD0 00165E 6E49 04811 MOVWF gsm_rx_timeout,0 001660 0E07 04812 MOVLW 0x07 001662 6E4A 04813 MOVWF gsm_rx_timeout+1,0 001664 6A13 04814 CLRF _TaskS1,0 001666 AE13 04815 m279 BTFSS _TaskS1,7,0 001668 0C19 04816 RETLW 0x19 04817 ; if(isEvent(evtGSMREADY)){ MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 93 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00166A A63E 04818 BTFSS EventStates,3,0 00166C D7B7 04819 BRA m272 04820 ; FSR0=&gsm_buffACK[0]; 00166E EE02 F0C0 04821 LFSR 0,704 04822 ; PutBuff(); // send ACK 001672 EC7E F010 04823 CALL PutBuff 04824 ; WAIT_RX(6000) 001676 0E70 04825 MOVLW 0x70 001678 6E49 04826 MOVWF gsm_rx_timeout,0 00167A 0E17 04827 MOVLW 0x17 00167C 6E4A 04828 MOVWF gsm_rx_timeout+1,0 00167E 6A13 04829 CLRF _TaskS1,0 001680 AE13 04830 m280 BTFSS _TaskS1,7,0 001682 0C1A 04831 RETLW 0x1A 04832 ; // if ACK sended OK and decode CNT, make and send INF message if need 04833 ; if(isEvent(evtGSMOK) && TestCNT()){ 001684 A43E 04834 BTFSS EventStates,2,0 001686 D7AA 04835 BRA m272 001688 D9B1 04836 RCALL TestCNT 00168A E3A8 04837 BNC m272 04838 ; switch(sms_msg){ 00168C 504E 04839 MOVF sms_msg,W,0 00168E 0A01 04840 XORLW 0x01 001690 E021 04841 BZ m281 001692 0A03 04842 XORLW 0x03 001694 E01F 04843 BZ m281 001696 0A01 04844 XORLW 0x01 001698 E01D 04845 BZ m281 00169A 0A07 04846 XORLW 0x07 00169C E01B 04847 BZ m281 00169E 0A01 04848 XORLW 0x01 0016A0 E019 04849 BZ m281 0016A2 0A03 04850 XORLW 0x03 0016A4 E017 04851 BZ m281 0016A6 0A01 04852 XORLW 0x01 0016A8 E018 04853 BZ m282 0016AA 0A0F 04854 XORLW 0x0F 0016AC E019 04855 BZ m283 0016AE 0A3E 04856 XORLW 0x3E 0016B0 E01A 04857 BZ m284 0016B2 0A07 04858 XORLW 0x07 0016B4 E01C 04859 BZ m285 0016B6 0A06 04860 XORLW 0x06 0016B8 E01C 04861 BZ m286 0016BA 0A02 04862 XORLW 0x02 0016BC E028 04863 BZ m288 0016BE 0A06 04864 XORLW 0x06 0016C0 E028 04865 BZ m289 0016C2 0A07 04866 XORLW 0x07 0016C4 E028 04867 BZ m290 0016C6 0A06 04868 XORLW 0x06 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 94 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0016C8 E032 04869 BZ m292 0016CA 0A0A 04870 XORLW 0x0A 0016CC E03C 04871 BZ m294 0016CE 0A01 04872 XORLW 0x01 0016D0 E03C 04873 BZ m295 0016D2 D784 04874 BRA m272 04875 ; case(CCM D_TURN_ON): 04876 ; case(CCM D_TURN_OFF): 04877 ; case(CCM D_SET_JM): 04878 ; case(CCM D_SET_PRG): 04879 ; case(CCM D_SET_FAZE): 04880 ; case(CCM D_SET_WORK): 04881 ; faza2change=0xff; // cancel faza delay change 0016D4 6832 04882 m281 SETF faza2change,0 04883 ; setEvent(evtGSMRCV); 0016D6 803E 04884 BSF EventStates,0,0 04885 ; waitState(); 0016D8 0C1B 04886 RETLW 0x1B 04887 ; break; 04888 ; case(CCM D_SET_TIME): 04889 ; SetClock(); 0016DA EC94 F00F 04890 m282 CALL SetClock 04891 ; break; 0016DE D77E 04892 BRA m272 04893 ; case (CC MD_SET_FDEL): 04894 ; SetNewFazaDelay(); 0016E0 EC81 F00F 04895 m283 CALL SetNewFazaDelay 04896 ; goto send_fdel; 0016E4 D032 04897 BRA m295 04898 ; case(CCM D_GET_HEALTH): 04899 ; EncodeHEALTH(); 0016E6 0101 04900 m284 MOVLB 0x01 0016E8 DA0B 04901 RCALL EncodeHEALTH 04902 ; goto send_inf; MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 95 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0016EA 0100 04903 MOVLB 0x00 0016EC D03B 04904 BRA m298 04905 ; case(CCM D_GET_220POWER): 04906 ; EncodePOWER220(); 0016EE DB2B 04907 m285 RCALL EncodePOWER220 04908 ; goto send_inf; 0016F0 D039 04909 BRA m298 04910 ; case(CCM D_GET_TEMPER): 04911 ; PUT_WAIT_RX(GCM_GET_TMPR,2000) // get temper 0016F2 0E0B 04912 m286 MOVLW 0x0B 0016F4 EC1E F010 04913 CALL PutCString 0016F8 0ED0 04914 MOVLW 0xD0 0016FA 6E49 04915 MOVWF gsm_rx_timeout,0 0016FC 0E07 04916 MOVLW 0x07 0016FE 6E4A 04917 MOVWF gsm_rx_timeout+1,0 001700 6A13 04918 CLRF _TaskS1,0 001702 AE13 04919 m287 BTFSS _TaskS1,7,0 001704 0C1C 04920 RETLW 0x1C 04921 ; EncodeTEMPER(); 001706 0101 04922 MOVLB 0x01 001708 DA67 04923 RCALL EncodeTEMPER 04924 ; goto send_inf; 00170A 0100 04925 MOVLB 0x00 00170C D02B 04926 BRA m298 04927 ; case(CCM D_GET_TIME): 04928 ; EncodeDTIME(); 00170E DABF 04929 m288 RCALL EncodeDTIME 04930 ; goto send_inf; 001710 D029 04931 BRA m298 04932 ; case(CCM D_GET_POWER_CNTR): 04933 ; EncodePOWER220COUNTER(); 001712 DB35 04934 m289 RCALL EncodePOWER220COUNTER 04935 ; goto send_inf; 001714 D027 04936 BRA m298 04937 ; case(CCM D_GET_SMS_CENTER): 04938 ; PUT_WAIT_RX(GCM_GET_SMS_CNBR, 2000) // get sms center number 001716 0E01 04939 m290 MOVLW 0x01 001718 EC1E F010 04940 CALL PutCString MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 96 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00171C 0ED0 04941 MOVLW 0xD0 00171E 6E49 04942 MOVWF gsm_rx_timeout,0 001720 0E07 04943 MOVLW 0x07 001722 6E4A 04944 MOVWF gsm_rx_timeout+1,0 001724 6A13 04945 CLRF _TaskS1,0 001726 AE13 04946 m291 BTFSS _TaskS1,7,0 001728 0C1D 04947 RETLW 0x1D 04948 ; EncodeSMSCENTER(); 00172A DAC9 04949 RCALL EncodeSMSCENTER 04950 ; goto send_inf; 00172C D01B 04951 BRA m298 04952 ; case(CCM D_GET_GSM_POWER): 04953 ; PUT_WAIT_RX(GCM_GET_SIGQUALITY,2000) // get signal quality 00172E 0E0D 04954 m292 MOVLW 0x0D 001730 EC1E F010 04955 CALL PutCString 001734 0ED0 04956 MOVLW 0xD0 001736 6E49 04957 MOVWF gsm_rx_timeout,0 001738 0E07 04958 MOVLW 0x07 00173A 6E4A 04959 MOVWF gsm_rx_timeout+1,0 00173C 6A13 04960 CLRF _TaskS1,0 00173E AE13 04961 m293 BTFSS _TaskS1,7,0 001740 0C1E 04962 RETLW 0x1E 04963 ; EncodeSQUAL(); 001742 DB3E 04964 RCALL EncodeSQUAL 04965 ; goto send_inf; 001744 D00F 04966 BRA m298 04967 ; case(CCM D_GET_MODE): 04968 ; EncodeMODE(); 001746 DB7F 04969 m294 RCALL EncodeMODE 04970 ; goto send_inf; 001748 D00D 04971 BRA m298 04972 ; case(CCM D_GET_FDEL): 04973 ; send_fdel: 04974 ; EncodeFDEL(); 00174A DBB3 04975 m295 RCALL EncodeFDEL 04976 ; goto send_inf; 00174C D00B 04977 BRA m298 04978 ; default: break; 04979 ; } MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 97 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04980 ; } 04981 ; } 04982 ; } 04983 ; } 04984 ; } 04985 ; } 04986 ; else if(isEvent(evtGSMSNDERR)){ // some Error/Avaria info need t o be sended 00174E A23E 04987 m296 BTFSS EventStates,1,0 001750 D005 04988 BRA m297 04989 ; clearEvent(evtGSMSNDERR); // send log to base station 001752 923E 04990 BCF EventStates,1,0 04991 ; EncodeERROR(); 001754 0102 04992 MOVLB 0x02 001756 D9BD 04993 RCALL EncodeERROR 04994 ; goto send_inf; 001758 0100 04995 MOVLB 0x00 00175A D004 04996 BRA m298 04997 ; } 04998 ; else if(isEvent(evtTRSPID)){ // send transport ID 00175C AA3E 04999 m297 BTFSS EventStates,5,0 00175E D73E 05000 BRA m272 05001 ; clearEvent(evtTRSPID); 001760 9A3E 05002 BCF EventStates,5,0 05003 ; EncodeTRNSP_ID(); 001762 D99C 05004 RCALL EncodeTRNSP_ID 05005 ;send_inf: 05006 ; // test is modem registred to home net? 05007 ; PUT_WAIT_RX(GCM_REGISTRATION_ON,3000) 001764 0E03 05008 m298 MOVLW 0x03 001766 EC1E F010 05009 CALL PutCString 00176A 0EB8 05010 MOVLW 0xB8 00176C 6E49 05011 MOVWF gsm_rx_timeout,0 00176E 0E0B 05012 MOVLW 0x0B 001770 6E4A 05013 MOVWF gsm_rx_timeout+1,0 001772 6A13 05014 CLRF _TaskS1,0 001774 AE13 05015 m299 BTFSS _TaskS1,7,0 001776 0C1F 05016 RETLW 0x1F 05017 ; if(!isRegistred()) goto init; // not respond 001778 D847 05018 RCALL isRegistred 00177A A0D8 05019 BTFSS 0xFD8,Carry,0 00177C D65F 05020 BRA m247 05021 ; 05022 ; PUT_WAIT_RX(GCM_SND2BASE,2000) 00177E 0E07 05023 MOVLW 0x07 001780 EC1E F010 05024 CALL PutCString 001784 0ED0 05025 MOVLW 0xD0 001786 6E49 05026 MOVWF gsm_rx_timeout,0 001788 0E07 05027 MOVLW 0x07 00178A 6E4A 05028 MOVWF gsm_rx_timeout+1,0 00178C 6A13 05029 CLRF _TaskS1,0 00178E AE13 05030 m300 BTFSS _TaskS1,7,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 98 LOC OBJECT CODE LINE SOURCE TEXT VALUE 001790 0C20 05031 RETLW 0x20 05032 ; if(isEvent(evtGSMREADY)){ 001792 A63E 05033 BTFSS EventStates,3,0 001794 D723 05034 BRA m272 05035 ; FSR0=&rs_buff[0]; 001796 EE00 F060 05036 LFSR 0,96 05037 ; PutBuff(); 00179A EC7E F010 05038 CALL PutBuff 05039 ;// indicate send 05040 ;ind_states.7=1; 00179E 8E1D 05041 BSF ind_states,7,0 05042 ;ind_send(ind_states^0xff); 0017A0 1C1D 05043 COMF ind_states,W,0 0017A2 ECB7 F007 05044 CALL ind_send 05045 ; WAIT_RX(6000) 0017A6 0E70 05046 MOVLW 0x70 0017A8 6E49 05047 MOVWF gsm_rx_timeout,0 0017AA 0E17 05048 MOVLW 0x17 0017AC 6E4A 05049 MOVWF gsm_rx_timeout+1,0 0017AE 6A13 05050 CLRF _TaskS1,0 0017B0 BE13 05051 m301 BTFSC _TaskS1,7,0 0017B2 D714 05052 BRA m272 0017B4 0C21 05053 RETLW 0x21 05054 ; } 05055 ; } 05056 ; }while(TRUE); 05057 ;gsm_exit: 05058 ; startTask(RS232Connect); 0017B6 6A5B 05059 m302 CLRF _TaskS3,0 05060 ; // and stop GSM task !!! 05061 ;} 0017B8 0C80 05062 RETLW 0x80 05063 ; 05064 ;//--------------------------------------------------------------------------- 05065 ;// SMS functions 05066 ;//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 05067 ;bit isPINReady(void){ 0017BA 05068 isPINReady 05069 ; if(!isEvent(evtGSMOK)) return NO; 0017BA B43E 05070 BTFSC EventStates,2,0 0017BC D002 05071 BRA m303 0017BE 90D8 05072 BCF 0xFD8,Carry,0 0017C0 0012 05073 RETURN 05074 ; if(gsm_rx_cnt < 14) return NO; 0017C2 0E0E 05075 m303 MOVLW 0x0E 0017C4 6048 05076 CPFSLT gsm_rx_cnt,0 0017C6 D002 05077 BRA m304 0017C8 90D8 05078 BCF 0xFD8,Carry,0 0017CA 0012 05079 RETURN 05080 ; char i; 05081 ; for(i=0; i'9') return NO; 001858 0E2F 05177 MOVLW 0x2F 00185A 64EF 05178 CPFSGT INDF0,0 00185C D003 05179 BRA m311 00185E 0E39 05180 MOVLW 0x39 001860 64EF 05181 CPFSGT INDF0,0 001862 D002 05182 BRA m312 001864 90D8 05183 m311 BCF 0xFD8,Carry,0 001866 0012 05184 RETURN 05185 ; if(INDF0 == '1') return YES; // registred to hom e network 001868 0E31 05186 m312 MOVLW 0x31 00186A 62EF 05187 CPFSEQ INDF0,0 00186C D002 05188 BRA m313 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 101 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00186E 80D8 05189 BSF 0xFD8,Carry,0 001870 0012 05190 RETURN 05191 ; } 05192 ; } 001872 2A05 05193 m313 INCF i_16,1,0 001874 D7D3 05194 BRA m310 05195 ; return NO; 001876 90D8 05196 m314 BCF 0xFD8,Carry,0 001878 0012 05197 RETURN 05198 ;} 05199 ; 05200 ;// 0xff -no incoming messages, other - message number 05201 ;char FindIncomingSMS(void){ 00187A 05202 FindIncomingSMS 05203 ; char i, rez=0; 00187A 6A06 05204 CLRF rez_3,0 05205 ; for(i=0; i<5; i++){ 00187C 6A05 05206 CLRF i_17,0 00187E 0E05 05207 m315 MOVLW 0x05 001880 6005 05208 CPFSLT i_17,0 001882 D02E 05209 BRA m320 05210 ; FSR0=&gsm_buff[i]; 001884 EE01 F048 05211 LFSR 0,328 001888 5005 05212 MOVF i_17,W,0 00188A 26E9 05213 ADDWF FSR0,1,0 05214 ; if(POSTINC0=='+' && 00188C 0E2B 05215 MOVLW 0x2B 00188E 62EE 05216 CPFSEQ POSTINC0,0 001890 D025 05217 BRA m319 05218 ; POSTINC0=='C' && 001892 0E43 05219 MOVLW 0x43 001894 62EE 05220 CPFSEQ POSTINC0,0 001896 D022 05221 BRA m319 05222 ; POSTINC0=='M' && 001898 0E4D 05223 MOVLW 0x4D 00189A 62EE 05224 CPFSEQ POSTINC0,0 00189C D01F 05225 BRA m319 05226 ; POSTINC0=='T' && 00189E 0E54 05227 MOVLW 0x54 0018A0 62EE 05228 CPFSEQ POSTINC0,0 0018A2 D01C 05229 BRA m319 05230 ; POSTINC0=='I'){ 0018A4 0E49 05231 MOVLW 0x49 0018A6 62EE 05232 CPFSEQ POSTINC0,0 0018A8 D019 05233 BRA m319 05234 ; FSR0 += 7; // point to message number 0018AA 0E07 05235 MOVLW 0x07 0018AC 26E9 05236 ADDWF FSR0,1,0 0018AE 0E00 05237 MOVLW 0x00 0018B0 22EA 05238 ADDWFC FSR0+1,1,0 05239 ; if(INDF0 <'0' || INDF0>'9') return 0xff; 0018B2 0E2F 05240 MOVLW 0x2F 0018B4 64EF 05241 CPFSGT INDF0,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 102 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0018B6 D002 05242 BRA m316 0018B8 0E3A 05243 MOVLW 0x3A 0018BA 60EF 05244 CPFSLT INDF0,0 0018BC 0CFF 05245 m316 RETLW 0xFF 05246 ; do{ 05247 ; rez *=10; 0018BE 0E0A 05248 m317 MOVLW 0x0A 0018C0 0206 05249 MULWF rez_3,0 0018C2 CFF3 F006 05250 MOVFF PRODL,rez_3 05251 ; rez += POSTINC0-'0'; 0018C6 0E30 05252 MOVLW 0x30 0018C8 5CEE 05253 SUBWF POSTINC0,W,0 0018CA 2606 05254 ADDWF rez_3,1,0 05255 ; }while(INDF0 >='0' && INDF0<='9'); 0018CC 0E2F 05256 MOVLW 0x2F 0018CE 64EF 05257 CPFSGT INDF0,0 0018D0 D003 05258 BRA m318 0018D2 0E39 05259 MOVLW 0x39 0018D4 64EF 05260 CPFSGT INDF0,0 0018D6 D7F3 05261 BRA m317 05262 ; return rez; 0018D8 5006 05263 m318 MOVF rez_3,W,0 0018DA 0012 05264 RETURN 05265 ; } 05266 ; } 0018DC 2A05 05267 m319 INCF i_17,1,0 0018DE D7CF 05268 BRA m315 05269 ; return 0xff; 0018E0 0CFF 05270 m320 RETLW 0xFF 05271 ;} 05272 ; 05273 ;// decode received SMS message from gsm_buff[] 05274 ;// if no message or error decode return FALSE 05275 ;// if too small message (under 12 bytes) -> return FALSE 05276 ;// decode to rs_buff[] 05277 ;// if CRC calculate error -> return FALSE 05278 ;// else return TRUE 05279 ;// sms_id set to sms number 05280 ;bit DecodeSMS(void){ 0018E2 05281 DecodeSMS 05282 ; // find begin of SMS message 05283 ; // base on UNREAD string 05284 ; char i,j; 05285 ; for(i=0; i start of message 05386 ;//sms_mess_lenght -> start of message 05387 ; if(sms_mess_lenght<12) return NO; 001982 0E0C 05388 m328 MOVLW 0x0C 001984 6052 05389 CPFSLT sms_mess_lenght,0 001986 D002 05390 BRA m329 001988 90D8 05391 BCF 0xFD8,Carry,0 00198A 0012 05392 RETURN 05393 ;// calc CRC 05394 ; sms_mess_begin=FSR0; // store 00198C CFE9 F050 05395 m329 MOVFF FSR0,sms_mess_begin 001990 CFEA F051 05396 MOVFF FSR0+1,sms_mess_begin+1 05397 ; calcCRC(sms_mess_lenght-4); // after FSR0 points to crc string begin MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 105 LOC OBJECT CODE LINE SOURCE TEXT VALUE 001994 0E04 05398 MOVLW 0x04 001996 5C52 05399 SUBWF sms_mess_lenght,W,0 001998 DBC2 05400 RCALL calcCRC 05401 ; if(str2hex16() != CRC) return NO; //error CRC packet 00199A DAE3 05402 RCALL str2hex16 00199C 6254 05403 CPFSEQ CRC,0 00199E D003 05404 BRA m330 0019A0 5008 05405 MOVF rez_4+1,W,0 0019A2 1855 05406 XORWF CRC+1,W,0 0019A4 E002 05407 BZ m331 0019A6 90D8 05408 m330 BCF 0xFD8,Carry,0 0019A8 0012 05409 RETURN 05410 ;// decode string to bytes buffer rs_buff[] 05411 ; FSR0=sms_mess_begin; // from decode 0019AA C050 FFE9 05412 m331 MOVFF sms_mess_begin,FSR0 0019AE C051 FFEA 05413 MOVFF sms_mess_begin+1,FSR0+1 05414 ; FSR1=&rs_buff[0]; // to decode 0019B2 EE10 F060 05415 LFSR 1,96 05416 ; i=sms_mess_lenght-4; // omits CRC 0019B6 0E04 05417 MOVLW 0x04 0019B8 5C52 05418 SUBWF sms_mess_lenght,W,0 0019BA 6E05 05419 MOVWF i_18,0 05420 ; do{ 05421 ; if(INDF0<'0' || INDF0>'9'){ 0019BC 0E2F 05422 m332 MOVLW 0x2F 0019BE 64EF 05423 CPFSGT INDF0,0 0019C0 D003 05424 BRA m333 0019C2 0E39 05425 MOVLW 0x39 0019C4 64EF 05426 CPFSGT INDF0,0 0019C6 D003 05427 BRA m334 05428 ; POSTINC1=POSTINC0; // string symbol, not de code 0019C8 CFEE FFE6 05429 m333 MOVFF POSTINC0,POSTINC1 05430 ; }else{ 0019CC D003 05431 BRA m335 05432 ; POSTINC1=str2hex8(); // decode to hex 0019CE DAB0 05433 m334 RCALL str2hex8 0019D0 6EE6 05434 MOVWF POSTINC1,0 05435 ; i--; // 2 symbols 0019D2 0605 05436 DECF i_18,1,0 05437 ; } 05438 ; }while(--i); 0019D4 2E05 05439 m335 DECFSZ i_18,1,0 0019D6 D7F2 05440 BRA m332 05441 ; sms_id.low8 =rs_buff[0]; 0019D8 C060 F04C 05442 MOVFF rs_buff,sms_id 05443 ; sms_id.high8=rs_buff[1]; 0019DC C061 F04D 05444 MOVFF rs_buff+1,sms_id+1 05445 ; sms_msg=rs_buff[2]; 0019E0 C062 F04E 05446 MOVFF rs_buff+2,sms_msg 05447 ; sms_ldt=rs_buff[3]; 0019E4 C063 F04F 05448 MOVFF rs_buff+3,sms_ldt 05449 ; return YES; MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 106 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0019E8 80D8 05450 BSF 0xFD8,Carry,0 0019EA 0012 05451 RETURN 05452 ;} 05453 ; 05454 ;// test CNT message from rs_buff[] 05455 ;// length->mess_lenght 05456 ;// if OK decoded return YES 05457 ;// else return NO 05458 ;bit TestCNT(void){ 0019EC 05459 TestCNT 05460 ; FSR0=&SMS_DAT; // ptr to DAT 0019EC EE00 F064 05461 LFSR 0,100 05462 ; if(sms_msgCCMD_SET_SMS_CENTER) return ERR; 0019F0 524E 05463 MOVF sms_msg,1,0 0019F2 E003 05464 BZ m336 0019F4 0E91 05465 MOVLW 0x91 0019F6 644E 05466 CPFSGT sms_msg,0 0019F8 D002 05467 BRA m337 0019FA 90D8 05468 m336 BCF 0xFD8,Carry,0 0019FC 0012 05469 RETURN 05470 ; if(sms_msg>CCMD_SET_FDEL && sms_msgCCMD_GET_FDEL && sms_msgreceived and decoded OK 05545 ; POSTINC1='0'; 001A74 0E30 05546 MOVLW 0x30 001A76 6EE6 05547 MOVWF POSTINC1,0 05548 ; POSTINC1='1'; 001A78 0E31 05549 MOVLW 0x31 001A7A 6EE6 05550 MOVWF POSTINC1,0 05551 ; FSR0=&gsm_buffACK[0]; 001A7C EE02 F0C0 05552 LFSR 0,704 05553 ; calcCRC(6); 001A80 0E06 05554 MOVLW 0x06 001A82 DB4D 05555 RCALL calcCRC MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 108 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05556 ; FSR0=FSR1; // point to ASK CRC string 001A84 CFE1 FFE9 05557 MOVFF FSR1,FSR0 001A88 CFE2 FFEA 05558 MOVFF FSR1+1,FSR0+1 05559 ; // puts CRC 05560 ; hex16str(CRC); 001A8C C054 F006 05561 MOVFF CRC,nbr_3 001A90 C055 F007 05562 MOVFF CRC+1,nbr_3+1 001A94 DA8E 05563 RCALL hex16str 05564 ; POSTINC0=EOFSMS; 001A96 0E1A 05565 MOVLW 0x1A 001A98 6EEE 05566 MOVWF POSTINC0,0 05567 ;} 001A9A 0012 05568 RETURN 05569 ; 05570 ;// encode transport message 05571 ;// to rs_buff[] 05572 ;void EncodeTRNSP_ID(void){ 001A9C 05573 EncodeTRNSP_ID 05574 ; FSR0=&rs_buff[0]; 001A9C EE00 F060 05575 LFSR 0,96 05576 ; hex16str(0); // NUM=0000 001AA0 6A06 05577 CLRF nbr_3,0 001AA2 6A07 05578 CLRF nbr_3+1,0 001AA4 DA86 05579 RCALL hex16str 05580 ; hex8str(SOIDAT_TRNSPRT); // MSG=21 001AA6 0E21 05581 MOVLW 0x21 001AA8 DA6C 05582 RCALL hex8str 05583 ; hex8str(15); // LDT=15 001AAA 0E0F 05584 MOVLW 0x0F 001AAC DA6A 05585 RCALL hex8str 05586 ; DateTime2Str(); // DAT=11 001AAE DA85 05587 RCALL DateTime2Str 05588 ; hex16str(Trspt_ID); // DAT=4 001AB0 C20E F006 05589 MOVFF Trspt_ID,nbr_3 001AB4 C20F F007 05590 MOVFF Trspt_ID+1,nbr_3+1 001AB8 DA7C 05591 RCALL hex16str 05592 ; FSR0=&rs_buff[0]; 001ABA EE00 F060 05593 LFSR 0,96 05594 ; calcCRC(4+2+2+11+4); // NUM+MSG+LDT+DAT 001ABE 0E17 05595 MOVLW 0x17 001AC0 DB2E 05596 RCALL calcCRC 05597 ; // puts CRC 05598 ; hex16str(CRC); 001AC2 C054 F006 05599 MOVFF CRC,nbr_3 001AC6 C055 F007 05600 MOVFF CRC+1,nbr_3+1 001ACA DA73 05601 RCALL hex16str 05602 ; POSTINC0=EOFSMS; 001ACC 0E1A 05603 MOVLW 0x1A 001ACE 6EEE 05604 MOVWF POSTINC0,0 05605 ;} 001AD0 0012 05606 RETURN 05607 ; 05608 ;// encode error message MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 109 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05609 ;// to rs_buff[] 05610 ;void EncodeERROR(void){ 001AD2 05611 EncodeERROR 05612 ; FSR0=&rs_buff[0]; 001AD2 EE00 F060 05613 LFSR 0,96 05614 ; hex16str(0); // NUM=0000 001AD6 6A06 05615 CLRF nbr_3,0 001AD8 6A07 05616 CLRF nbr_3+1,0 001ADA DA6B 05617 RCALL hex16str 05618 ; hex8str(SODAT_AVARIA); // MSG=91 001ADC 0E91 05619 MOVLW 0x91 001ADE DA51 05620 RCALL hex8str 05621 ; hex8str(2); // LDT=01 001AE0 0E02 05622 MOVLW 0x02 001AE2 DA4F 05623 RCALL hex8str 05624 ; hex8str(last_event); // DAT= 001AE4 510C 05625 MOVF last_event,W,1 001AE6 DA4D 05626 RCALL hex8str 05627 ; FSR0=&rs_buff[0]; 001AE8 EE00 F060 05628 LFSR 0,96 05629 ; calcCRC(10); // NUM+MSG+LDT+DAT 001AEC 0E0A 05630 MOVLW 0x0A 001AEE DB17 05631 RCALL calcCRC 05632 ; hex16str(CRC); // puts CRC 001AF0 C054 F006 05633 MOVFF CRC,nbr_3 001AF4 C055 F007 05634 MOVFF CRC+1,nbr_3+1 001AF8 DA5C 05635 RCALL hex16str 05636 ; POSTINC0=EOFSMS; 001AFA 0E1A 05637 MOVLW 0x1A 001AFC 6EEE 05638 MOVWF POSTINC0,0 05639 ;} 001AFE 0012 05640 RETURN 05641 ; 05642 ;void EncodeHEALTH(void){ 001B00 05643 EncodeHEALTH 05644 ; FSR0=&rs_buff[0]; 001B00 EE00 F060 05645 LFSR 0,96 05646 ; hex16str(sms_id); // NUM=sms_id // 4 001B04 C04C F006 05647 MOVFF sms_id,nbr_3 001B08 C04D F007 05648 MOVFF sms_id+1,nbr_3+1 001B0C DA52 05649 RCALL hex16str 05650 ; hex8str(SODAT_HEALTH); // MSG=07 // 2 001B0E 0E07 05651 MOVLW 0x07 001B10 DA38 05652 RCALL hex8str 05653 ; hex8str(64); // LDT=64 // 2 001B12 0E40 05654 MOVLW 0x40 001B14 DA36 05655 RCALL hex8str 05656 ; char cnt=0; // DAT=[32] health {0...4, 0xff} // 64 001B16 6A05 05657 CLRF cnt_4,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 110 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05658 ; 05659 ; if(Boards[0].error_red.7) // Board0.red0 001B18 AF10 05660 BTFSS Boards+16,7,1 001B1A D003 05661 BRA m344 05662 ; hex8str(1); 001B1C 0E01 05663 MOVLW 0x01 001B1E DA31 05664 RCALL hex8str 05665 ; else 001B20 D002 05666 BRA m345 05667 ; hex8str(0); 001B22 0E00 05668 m344 MOVLW 0x00 001B24 DA2E 05669 RCALL hex8str 05670 ; hex8str(0); // Board0.yell0 001B26 0E00 05671 m345 MOVLW 0x00 001B28 DA2C 05672 RCALL hex8str 05673 ; if(Boards[0].error_green>=2) // Board0.green0 001B2A 0E01 05674 MOVLW 0x01 001B2C 6511 05675 CPFSGT Boards+17,1 001B2E D003 05676 BRA m346 05677 ; hex8str(2); 001B30 0E02 05678 MOVLW 0x02 001B32 DA27 05679 RCALL hex8str 05680 ; else 001B34 D002 05681 BRA m347 05682 ; hex8str(0); 001B36 0E00 05683 m346 MOVLW 0x00 001B38 DA24 05684 RCALL hex8str 05685 ; hex8str(0); // Board0.dop0 001B3A 0E00 05686 m347 MOVLW 0x00 001B3C DA22 05687 RCALL hex8str 05688 ; 05689 ; if(Boards[1].error_red.7) // Board1.red0 001B3E AF22 05690 BTFSS Boards+34,7,1 001B40 D003 05691 BRA m348 05692 ; hex8str(1); 001B42 0E01 05693 MOVLW 0x01 001B44 DA1E 05694 RCALL hex8str 05695 ; else 001B46 D002 05696 BRA m349 05697 ; hex8str(0); 001B48 0E00 05698 m348 MOVLW 0x00 001B4A DA1B 05699 RCALL hex8str 05700 ; hex8str(0); // Board1.yell0 001B4C 0E00 05701 m349 MOVLW 0x00 001B4E DA19 05702 RCALL hex8str 05703 ; if(Boards[1].error_green>=2) // Board1.green0 001B50 0E01 05704 MOVLW 0x01 001B52 6523 05705 CPFSGT Boards+35,1 001B54 D003 05706 BRA m350 05707 ; hex8str(2); 001B56 0E02 05708 MOVLW 0x02 001B58 DA14 05709 RCALL hex8str 05710 ; else MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 111 LOC OBJECT CODE LINE SOURCE TEXT VALUE 001B5A D002 05711 BRA m351 05712 ; hex8str(0); 001B5C 0E00 05713 m350 MOVLW 0x00 001B5E DA11 05714 RCALL hex8str 05715 ; hex8str(0); // Board1.dop0 001B60 0E00 05716 m351 MOVLW 0x00 001B62 DA0F 05717 RCALL hex8str 05718 ; 05719 ; if(Boards[2].error_red.7) // Board2.red0 001B64 AF34 05720 BTFSS Boards+52,7,1 001B66 D003 05721 BRA m352 05722 ; hex8str(1); 001B68 0E01 05723 MOVLW 0x01 001B6A DA0B 05724 RCALL hex8str 05725 ; else 001B6C D002 05726 BRA m353 05727 ; hex8str(0); 001B6E 0E00 05728 m352 MOVLW 0x00 001B70 DA08 05729 RCALL hex8str 05730 ; hex8str(0); // Board2.yell0 001B72 0E00 05731 m353 MOVLW 0x00 001B74 DA06 05732 RCALL hex8str 05733 ; if(Boards[2].error_green>=2) // Board2.green0 001B76 0E01 05734 MOVLW 0x01 001B78 6535 05735 CPFSGT Boards+53,1 001B7A D003 05736 BRA m354 05737 ; hex8str(2); 001B7C 0E02 05738 MOVLW 0x02 001B7E DA01 05739 RCALL hex8str 05740 ; else 001B80 D002 05741 BRA m355 05742 ; hex8str(0); 001B82 0E00 05743 m354 MOVLW 0x00 001B84 D9FE 05744 RCALL hex8str 05745 ; hex8str(0); // Board2.dop0 001B86 0E00 05746 m355 MOVLW 0x00 001B88 D9FC 05747 RCALL hex8str 05748 ; 05749 ; if(Boards[3].error_red.7) // Board3.red0 001B8A AF46 05750 BTFSS Boards+70,7,1 001B8C D003 05751 BRA m356 05752 ; hex8str(1); 001B8E 0E01 05753 MOVLW 0x01 001B90 D9F8 05754 RCALL hex8str 05755 ; else 001B92 D002 05756 BRA m357 05757 ; hex8str(0); 001B94 0E00 05758 m356 MOVLW 0x00 001B96 D9F5 05759 RCALL hex8str 05760 ; hex8str(0); // Board3.yell0 001B98 0E00 05761 m357 MOVLW 0x00 001B9A D9F3 05762 RCALL hex8str 05763 ; if(Boards[3].error_green>=2) // Board3.green0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 112 LOC OBJECT CODE LINE SOURCE TEXT VALUE 001B9C 0E01 05764 MOVLW 0x01 001B9E 6547 05765 CPFSGT Boards+71,1 001BA0 D003 05766 BRA m358 05767 ; hex8str(2); 001BA2 0E02 05768 MOVLW 0x02 001BA4 D9EE 05769 RCALL hex8str 05770 ; else 001BA6 D002 05771 BRA m359 05772 ; hex8str(0); 001BA8 0E00 05773 m358 MOVLW 0x00 001BAA D9EB 05774 RCALL hex8str 05775 ; hex8str(0); // Board3.dop0 001BAC 0E00 05776 m359 MOVLW 0x00 001BAE D9E9 05777 RCALL hex8str 05778 ; 05779 ; for(cnt=0; cnt<16;cnt++) hex8str(0xff); 001BB0 6A05 05780 CLRF cnt_4,0 001BB2 0E10 05781 m360 MOVLW 0x10 001BB4 6005 05782 CPFSLT cnt_4,0 001BB6 D004 05783 BRA m361 001BB8 0EFF 05784 MOVLW 0xFF 001BBA D9E3 05785 RCALL hex8str 001BBC 2A05 05786 INCF cnt_4,1,0 001BBE D7F9 05787 BRA m360 05788 ; FSR0=&rs_buff[0]; 001BC0 EE00 F060 05789 m361 LFSR 0,96 05790 ; calcCRC(4+2+2+64); // NUM+MSG+LDT+DAT 001BC4 0E48 05791 MOVLW 0x48 001BC6 DAAB 05792 RCALL calcCRC 05793 ; hex16str(CRC); // puts CRC 001BC8 C054 F006 05794 MOVFF CRC,nbr_3 001BCC C055 F007 05795 MOVFF CRC+1,nbr_3+1 001BD0 D9F0 05796 RCALL hex16str 05797 ; POSTINC0=EOFSMS; 001BD2 0E1A 05798 MOVLW 0x1A 001BD4 6EEE 05799 MOVWF POSTINC0,0 05800 ;} 001BD6 0012 05801 RETURN 05802 ; 05803 ;// assume then temper is in gsm_buff[] 05804 ;void EncodeTEMPER(void){ 001BD8 05805 EncodeTEMPER 05806 ; // find temper from buffer 05807 ; char i; 05808 ; for(i=0; i 001C2C C04C F006 05864 MOVFF sms_id,nbr_3 001C30 C04D F007 05865 MOVFF sms_id+1,nbr_3+1 001C34 D9BE 05866 RCALL hex16str 05867 ; hex8str(SODAT_TEMPER); // MSG=02 001C36 0E02 05868 MOVLW 0x02 001C38 D9A4 05869 RCALL hex8str MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 114 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05870 ; hex8str(4); // LDT=04 001C3A 0E04 05871 MOVLW 0x04 001C3C D9A2 05872 RCALL hex8str 05873 ; if(INDF1=='-'){ 001C3E 0E2D 05874 MOVLW 0x2D 001C40 62E7 05875 CPFSEQ INDF1,0 001C42 D003 05876 BRA m366 05877 ; POSTINC0='-'; // DAT=temper sign 001C44 6EEE 05878 MOVWF POSTINC0,0 05879 ; FSR1++;} 001C46 50E6 05880 MOVF POSTINC1,W,0 05881 ; else 001C48 D002 05882 BRA m367 05883 ; POSTINC0='+'; // DAT=temper sign 001C4A 0E2B 05884 m366 MOVLW 0x2B 001C4C 6EEE 05885 MOVWF POSTINC0,0 05886 ; POSTINC0=POSTINC1; // DAT=temper high 001C4E CFE6 FFEE 05887 m367 MOVFF POSTINC1,POSTINC0 05888 ; if(INDF1<'0' || INDF1>'9'){ 001C52 0E2F 05889 MOVLW 0x2F 001C54 64E7 05890 CPFSGT INDF1,0 001C56 D003 05891 BRA m368 001C58 0E39 05892 MOVLW 0x39 001C5A 64E7 05893 CPFSGT INDF1,0 001C5C D008 05894 BRA m369 05895 ; FSR1--; 001C5E 50E5 05896 m368 MOVF POSTDEC1,W,0 05897 ; INDF0=INDF1; 001C60 CFE7 FFEF 05898 MOVFF INDF1,INDF0 05899 ; FSR0--; 001C64 50ED 05900 MOVF POSTDEC0,W,0 05901 ; POSTINC0='0'; // lead 0 need to be !!! 001C66 0E30 05902 MOVLW 0x30 001C68 6EEE 05903 MOVWF POSTINC0,0 05904 ; FSR0++; 001C6A 50EE 05905 MOVF POSTINC0,W,0 05906 ; }else{ 001C6C D002 05907 BRA m370 05908 ; POSTINC0=POSTINC1; 001C6E CFE6 FFEE 05909 m369 MOVFF POSTINC1,POSTINC0 05910 ; } 05911 ; POSTINC0='0'; // last digit->always=0 001C72 0E30 05912 m370 MOVLW 0x30 001C74 6EEE 05913 MOVWF POSTINC0,0 05914 ; FSR0=&rs_buff[0]; 001C76 EE00 F060 05915 LFSR 0,96 05916 ; calcCRC(12); // NUM+MSG+LDT+DAT 001C7A 0E0C 05917 MOVLW 0x0C 001C7C DA50 05918 RCALL calcCRC 05919 ; hex16str(CRC); // puts CRC 001C7E C054 F006 05920 MOVFF CRC,nbr_3 001C82 C055 F007 05921 MOVFF CRC+1,nbr_3+1 001C86 D995 05922 RCALL hex16str MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 115 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05923 ; POSTINC0=EOFSMS; 001C88 0E1A 05924 MOVLW 0x1A 001C8A 6EEE 05925 MOVWF POSTINC0,0 05926 ;} 001C8C 0012 05927 RETURN 05928 ; 05929 ;void EncodeDTIME(void){ 001C8E 05930 EncodeDTIME 05931 ; FSR0=&rs_buff[0]; 001C8E EE00 F060 05932 LFSR 0,96 05933 ; hex16str(sms_id); // NUM= 001C92 C04C F006 05934 MOVFF sms_id,nbr_3 001C96 C04D F007 05935 MOVFF sms_id+1,nbr_3+1 001C9A D98B 05936 RCALL hex16str 05937 ; hex8str(SODAT_TIME); // MSG=06 001C9C 0E06 05938 MOVLW 0x06 001C9E D971 05939 RCALL hex8str 05940 ; hex8str(11); // LDT=11 001CA0 0E0B 05941 MOVLW 0x0B 001CA2 D96F 05942 RCALL hex8str 05943 ; DateTime2Str(); // DAT= 001CA4 D98A 05944 RCALL DateTime2Str 05945 ; FSR0=&rs_buff[0]; 001CA6 EE00 F060 05946 LFSR 0,96 05947 ; calcCRC(4+2+2+11); // NUM+MSG+LDT+DAT 001CAA 0E13 05948 MOVLW 0x13 001CAC DA38 05949 RCALL calcCRC 05950 ; hex16str(CRC); // puts CRC 001CAE C054 F006 05951 MOVFF CRC,nbr_3 001CB2 C055 F007 05952 MOVFF CRC+1,nbr_3+1 001CB6 D97D 05953 RCALL hex16str 05954 ; POSTINC0=EOFSMS; 001CB8 0E1A 05955 MOVLW 0x1A 001CBA 6EEE 05956 MOVWF POSTINC0,0 05957 ;} 001CBC 0012 05958 RETURN 05959 ; 05960 ;// assume then sms center number is in gsm_buff[] 05961 ;void EncodeSMSCENTER(void){ 001CBE 05962 EncodeSMSCENTER 05963 ; FSR0=&rs_buff[0]; 001CBE EE00 F060 05964 LFSR 0,96 05965 ; hex16str(sms_id); // NUM= 001CC2 C04C F006 05966 MOVFF sms_id,nbr_3 001CC6 C04D F007 05967 MOVFF sms_id+1,nbr_3+1 001CCA D973 05968 RCALL hex16str 05969 ; hex8str(SODAT_SMS_CENTER); // MSG=05 001CCC 0E05 05970 MOVLW 0x05 001CCE D959 05971 RCALL hex8str 05972 ; hex8str(12); // LDT=12 001CD0 0E0C 05973 MOVLW 0x0C 001CD2 D957 05974 RCALL hex8str 05975 ; // find sms center number MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 116 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05976 ; char i; 05977 ; for(i=0; i 001D4A C04C F006 06052 MOVFF sms_id,nbr_3 001D4E C04D F007 06053 MOVFF sms_id+1,nbr_3+1 001D52 D92F 06054 RCALL hex16str 06055 ; hex8str(SODAT_220POWER); // MSG=01 001D54 0E01 06056 MOVLW 0x01 001D56 D915 06057 RCALL hex8str 06058 ; hex8str(3); // LDT=03 001D58 0E03 06059 MOVLW 0x03 001D5A D913 06060 RCALL hex8str 06061 ; POSTINC0='2';POSTINC0='2';POSTINC0='0'; 001D5C 0E32 06062 MOVLW 0x32 001D5E 6EEE 06063 MOVWF POSTINC0,0 001D60 6EEE 06064 MOVWF POSTINC0,0 001D62 0E30 06065 MOVLW 0x30 001D64 6EEE 06066 MOVWF POSTINC0,0 06067 ; FSR0=&rs_buff[0]; 001D66 EE00 F060 06068 LFSR 0,96 06069 ; calcCRC(11); // NUM+MSG+LDT+DAT 001D6A 0E0B 06070 MOVLW 0x0B 001D6C D9D8 06071 RCALL calcCRC 06072 ; hex16str(CRC); // puts CRC 001D6E C054 F006 06073 MOVFF CRC,nbr_3 001D72 C055 F007 06074 MOVFF CRC+1,nbr_3+1 001D76 D91D 06075 RCALL hex16str 06076 ; POSTINC0=EOFSMS; 001D78 0E1A 06077 MOVLW 0x1A 001D7A 6EEE 06078 MOVWF POSTINC0,0 06079 ; 06080 ;} 001D7C 0012 06081 RETURN MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 118 LOC OBJECT CODE LINE SOURCE TEXT VALUE 06082 ; 06083 ;// stub for power220 counter 06084 ;void EncodePOWER220COUNTER(void){ 001D7E 06085 EncodePOWER220COUNTER 06086 ; FSR0=&rs_buff[0]; 001D7E EE00 F060 06087 LFSR 0,96 06088 ; hex16str(sms_id); // NUM= 001D82 C04C F006 06089 MOVFF sms_id,nbr_3 001D86 C04D F007 06090 MOVFF sms_id+1,nbr_3+1 001D8A D913 06091 RCALL hex16str 06092 ; hex8str(SODAT_POWER_CNTR); // MSG=04 001D8C 0E04 06093 MOVLW 0x04 001D8E D8F9 06094 RCALL hex8str 06095 ; hex8str(5); // LDT=05 001D90 0E05 06096 MOVLW 0x05 001D92 D8F7 06097 RCALL hex8str 06098 ; POSTINC0='0';POSTINC0='1';POSTINC0='2';POSTINC0='3';POSTINC0='4'; 001D94 0E30 06099 MOVLW 0x30 001D96 6EEE 06100 MOVWF POSTINC0,0 001D98 0E31 06101 MOVLW 0x31 001D9A 6EEE 06102 MOVWF POSTINC0,0 001D9C 0E32 06103 MOVLW 0x32 001D9E 6EEE 06104 MOVWF POSTINC0,0 001DA0 0E33 06105 MOVLW 0x33 001DA2 6EEE 06106 MOVWF POSTINC0,0 001DA4 0E34 06107 MOVLW 0x34 001DA6 6EEE 06108 MOVWF POSTINC0,0 06109 ; FSR0=&rs_buff[0]; 001DA8 EE00 F060 06110 LFSR 0,96 06111 ; calcCRC(13); // NUM+MSG+LDT+DAT 001DAC 0E0D 06112 MOVLW 0x0D 001DAE D9B7 06113 RCALL calcCRC 06114 ; hex16str(CRC); // puts CRC 001DB0 C054 F006 06115 MOVFF CRC,nbr_3 001DB4 C055 F007 06116 MOVFF CRC+1,nbr_3+1 001DB8 D8FC 06117 RCALL hex16str 06118 ; POSTINC0=EOFSMS; 001DBA 0E1A 06119 MOVLW 0x1A 001DBC 6EEE 06120 MOVWF POSTINC0,0 06121 ; 06122 ;} 001DBE 0012 06123 RETURN 06124 ; 06125 ;// assume then signal quality is in gsm_buff[] 06126 ;void EncodeSQUAL(void){ 001DC0 06127 EncodeSQUAL 06128 ; FSR0=&rs_buff[0]; 001DC0 EE00 F060 06129 LFSR 0,96 06130 ; hex16str(sms_id); // NUM= 001DC4 C04C F006 06131 MOVFF sms_id,nbr_3 001DC8 C04D F007 06132 MOVFF sms_id+1,nbr_3+1 001DCC D8F2 06133 RCALL hex16str 06134 ; hex8str(SODAT_GSM_POWER); // MSG=03 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 119 LOC OBJECT CODE LINE SOURCE TEXT VALUE 001DCE 0E03 06135 MOVLW 0x03 001DD0 D8D8 06136 RCALL hex8str 06137 ; hex8str(2); // LDT=02 001DD2 0E02 06138 MOVLW 0x02 001DD4 D8D6 06139 RCALL hex8str 06140 ; // find sms center number 06141 ; char i; 06142 ; FSR1=&gsm_buff[0]; 001DD6 EE11 F048 06143 LFSR 1,328 06144 ; for(i=0; i'9') W=POSTINC1; 001DFE 0E2F 06168 m382 MOVLW 0x2F 001E00 64E7 06169 CPFSGT INDF1,0 001E02 D003 06170 BRA m383 001E04 0E39 06171 MOVLW 0x39 001E06 64E7 06172 CPFSGT INDF1,0 001E08 D002 06173 BRA m384 001E0A 50E6 06174 m383 MOVF POSTINC1,W,0 001E0C D7F8 06175 BRA m382 06176 ; i=0; 001E0E 6A05 06177 m384 CLRF i_21,0 06178 ; do{ 06179 ; i*=10; 001E10 0E0A 06180 m385 MOVLW 0x0A 001E12 0205 06181 MULWF i_21,0 001E14 CFF3 F005 06182 MOVFF PRODL,i_21 06183 ; i+=POSTINC1-'0'; 001E18 0E30 06184 MOVLW 0x30 001E1A 5CE6 06185 SUBWF POSTINC1,W,0 001E1C 2605 06186 ADDWF i_21,1,0 06187 ; }while(INDF1 >='0' && INDF1<='9'); MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 120 LOC OBJECT CODE LINE SOURCE TEXT VALUE 001E1E 0E2F 06188 MOVLW 0x2F 001E20 64E7 06189 CPFSGT INDF1,0 001E22 D003 06190 BRA m386 001E24 0E39 06191 MOVLW 0x39 001E26 64E7 06192 CPFSGT INDF1,0 001E28 D7F3 06193 BRA m385 06194 ; hex8str(i); 001E2A 5005 06195 m386 MOVF i_21,W,0 001E2C D8AA 06196 RCALL hex8str 06197 ; FSR0=&rs_buff[0]; 001E2E EE00 F060 06198 LFSR 0,96 06199 ; calcCRC(10); // NUM+MSG+LDT+DAT 001E32 0E0A 06200 MOVLW 0x0A 001E34 D974 06201 RCALL calcCRC 06202 ; hex16str(CRC); // puts CRC 001E36 C054 F006 06203 MOVFF CRC,nbr_3 001E3A C055 F007 06204 MOVFF CRC+1,nbr_3+1 001E3E D8B9 06205 RCALL hex16str 06206 ; POSTINC0=EOFSMS; 001E40 0E1A 06207 MOVLW 0x1A 001E42 6EEE 06208 MOVWF POSTINC0,0 06209 ;} 001E44 0012 06210 RETURN 06211 ; 06212 ;// encode current controller mode (1|3) bytes lenght 06213 ;// [+0]-mode SO 06214 ;// 0xXY 06215 ;// Y=0 - mode OS 06216 ;// Y=1 - mode JM 06217 ;// Y=2 - mode LOC 06218 ;// X=0 - mode has been set from remote 06219 ;// X=1 - mode has been set LOCAL 06220 ;//if Y==2 06221 ;// [+1]-programm number 0..15 06222 ;// [+2]-faze number 0..15 06223 ;void EncodeMODE(void){ 001E46 06224 EncodeMODE 06225 ; FSR0=&rs_buff[0]; 001E46 EE00 F060 06226 LFSR 0,96 06227 ; hex16str(sms_id); // NUM= 001E4A C04C F006 06228 MOVFF sms_id,nbr_3 001E4E C04D F007 06229 MOVFF sms_id+1,nbr_3+1 001E52 D8AF 06230 RCALL hex16str 06231 ; hex8str(SODAT_MODE); // MSG=08 001E54 0E08 06232 MOVLW 0x08 001E56 D895 06233 RCALL hex8str 06234 ; char mode; 06235 ; if(stateOS || stateJM || KstateJM){ 001E58 BA14 06236 BTFSC 0x14,stateOS,0 001E5A D004 06237 BRA m387 001E5C B814 06238 BTFSC 0x14,stateJM,0 001E5E D002 06239 BRA m387 001E60 A014 06240 BTFSS 0x14,KstateJM,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 121 LOC OBJECT CODE LINE SOURCE TEXT VALUE 001E62 D013 06241 BRA m390 06242 ; hex8str(2); // LDT=02 001E64 0E02 06243 m387 MOVLW 0x02 001E66 D88D 06244 RCALL hex8str 06245 ; if(stateOS) mode=0x00; 001E68 BA14 06246 BTFSC 0x14,stateOS,0 001E6A 6A05 06247 CLRF mode,0 06248 ; if(stateJM) mode=0x01; 001E6C A814 06249 BTFSS 0x14,stateJM,0 001E6E D002 06250 BRA m388 001E70 0E01 06251 MOVLW 0x01 001E72 6E05 06252 MOVWF mode,0 06253 ; if(KstateJM) mode=0x11; 001E74 A014 06254 m388 BTFSS 0x14,KstateJM,0 001E76 D002 06255 BRA m389 001E78 0E11 06256 MOVLW 0x11 001E7A 6E05 06257 MOVWF mode,0 06258 ; hex8str(mode); 001E7C 5005 06259 m389 MOVF mode,W,0 001E7E D881 06260 RCALL hex8str 06261 ; FSR0=&rs_buff[0]; 001E80 EE00 F060 06262 LFSR 0,96 06263 ; calcCRC(4+2+2+2); // NUM+MSG+LDT+DAT 001E84 0E0A 06264 MOVLW 0x0A 001E86 D94B 06265 RCALL calcCRC 06266 ; }else{ 001E88 D00C 06267 BRA m391 06268 ; hex8str(6); // LDT=06 001E8A 0E06 06269 m390 MOVLW 0x06 001E8C D87A 06270 RCALL hex8str 06271 ; hex8str(0x02); // mode - local 001E8E 0E02 06272 MOVLW 0x02 001E90 D878 06273 RCALL hex8str 06274 ; hex8str(current_prg); 001E92 502A 06275 MOVF current_prg,W,0 001E94 D876 06276 RCALL hex8str 06277 ; hex8str(current_faza); 001E96 502C 06278 MOVF current_faza,W,0 001E98 D874 06279 RCALL hex8str 06280 ; FSR0=&rs_buff[0]; 001E9A EE00 F060 06281 LFSR 0,96 06282 ; calcCRC(4+2+2+6); // NUM+MSG+LDT+DAT 001E9E 0E0E 06283 MOVLW 0x0E 001EA0 D93E 06284 RCALL calcCRC 06285 ; } 06286 ; hex16str(CRC); // puts CRC 001EA2 C054 F006 06287 m391 MOVFF CRC,nbr_3 001EA6 C055 F007 06288 MOVFF CRC+1,nbr_3+1 001EAA D883 06289 RCALL hex16str 06290 ; POSTINC0=EOFSMS; MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 122 LOC OBJECT CODE LINE SOURCE TEXT VALUE 001EAC 0E1A 06291 MOVLW 0x1A 001EAE 6EEE 06292 MOVWF POSTINC0,0 06293 ;} 001EB0 0012 06294 RETURN 06295 ; 06296 ;// encode current faza delay 06297 ;void EncodeFDEL(void){ 001EB2 06298 EncodeFDEL 06299 ; FSR0=&rs_buff[0]; 001EB2 EE00 F060 06300 LFSR 0,96 06301 ; hex16str(sms_id); // NUM= 001EB6 C04C F006 06302 MOVFF sms_id,nbr_3 001EBA C04D F007 06303 MOVFF sms_id+1,nbr_3+1 001EBE D879 06304 RCALL hex16str 06305 ; hex8str(SODAT_FDEL); // MSG=09 001EC0 0E09 06306 MOVLW 0x09 001EC2 D85F 06307 RCALL hex8str 06308 ; hex8str(8); // LDT=08 001EC4 0E08 06309 MOVLW 0x08 001EC6 D85D 06310 RCALL hex8str 06311 ; hex8str(faza2change&0x7f); 001EC8 0E7F 06312 MOVLW 0x7F 001ECA 1432 06313 ANDWF faza2change,W,0 001ECC D85A 06314 RCALL hex8str 06315 ; hex8str(fazaRemoteDelay); 001ECE 5033 06316 MOVF fazaRemoteDelay,W,0 001ED0 D858 06317 RCALL hex8str 06318 ; POSTINC0=fazaRDTillTimeDH+'0'; 001ED2 0E30 06319 MOVLW 0x30 001ED4 2434 06320 ADDWF fazaRDTillTimeDH,W,0 001ED6 6EEE 06321 MOVWF POSTINC0,0 06322 ; POSTINC0=fazaRDTillTimeEH+'0'; 001ED8 0E30 06323 MOVLW 0x30 001EDA 2435 06324 ADDWF fazaRDTillTimeEH,W,0 001EDC 6EEE 06325 MOVWF POSTINC0,0 06326 ; POSTINC0=fazaRDTillTimeDM+'0'; 001EDE 0E30 06327 MOVLW 0x30 001EE0 2436 06328 ADDWF fazaRDTillTimeDM,W,0 001EE2 6EEE 06329 MOVWF POSTINC0,0 06330 ; POSTINC0=fazaRDTillTimeEM+'0'; 001EE4 0E30 06331 MOVLW 0x30 001EE6 2437 06332 ADDWF fazaRDTillTimeEM,W,0 001EE8 6EEE 06333 MOVWF POSTINC0,0 06334 ; FSR0=&rs_buff[0]; 001EEA EE00 F060 06335 LFSR 0,96 06336 ; calcCRC(4+2+2+8); // NUM+MSG+LDT+DAT 001EEE 0E10 06337 MOVLW 0x10 001EF0 D916 06338 RCALL calcCRC 06339 ; hex16str(CRC); // puts CRC 001EF2 C054 F006 06340 MOVFF CRC,nbr_3 001EF6 C055 F007 06341 MOVFF CRC+1,nbr_3+1 001EFA D85B 06342 RCALL hex16str 06343 ; POSTINC0=EOFSMS; MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 123 LOC OBJECT CODE LINE SOURCE TEXT VALUE 001EFC 0E1A 06344 MOVLW 0x1A 001EFE 6EEE 06345 MOVWF POSTINC0,0 06346 ;} 001F00 0012 06347 RETURN 06348 ;//--------------------------------------------------------------------------- 06349 ;// HELPER FUNCTIONS 06350 ;//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 06351 ;// set new faza delay till fazaRDTillTime[4] time 06352 ;void SetNewFazaDelay(void){ 001F02 06353 SetNewFazaDelay 06354 ; FSR0=&SMS_DAT; 001F02 EE00 F064 06355 LFSR 0,100 06356 ; faza2change = POSTINC0; 001F06 CFEE F032 06357 MOVFF POSTINC0,faza2change 06358 ; fazaRemoteDelay = POSTINC0; 001F0A CFEE F033 06359 MOVFF POSTINC0,fazaRemoteDelay 06360 ; fazaRDTillTimeDH=INDF0 >> 4; // dec HOURS 001F0E 38EF 06361 SWAPF INDF0,W,0 001F10 0B0F 06362 ANDLW 0x0F 001F12 6E34 06363 MOVWF fazaRDTillTimeDH,0 06364 ; fazaRDTillTimeEH=POSTINC0 & 0x0f; // ed HOURS 001F14 0E0F 06365 MOVLW 0x0F 001F16 14EE 06366 ANDWF POSTINC0,W,0 001F18 6E35 06367 MOVWF fazaRDTillTimeEH,0 06368 ; fazaRDTillTimeDM=INDF0 >> 4; // dec MIN 001F1A 38EF 06369 SWAPF INDF0,W,0 001F1C 0B0F 06370 ANDLW 0x0F 001F1E 6E36 06371 MOVWF fazaRDTillTimeDM,0 06372 ; fazaRDTillTimeEM=POSTINC0 & 0x0f; // ed MIN 001F20 0E0F 06373 MOVLW 0x0F 001F22 14EE 06374 ANDWF POSTINC0,W,0 001F24 6E37 06375 MOVWF fazaRDTillTimeEM,0 06376 ;} 001F26 0012 06377 RETURN 06378 ; 06379 ; 06380 ;// decode datetime from buffer and set clock <==== TODO !!! 06381 ;void SetClock(void){ 001F28 06382 SetClock 06383 ; // decode buffer 06384 ; 06385 ; rtc_set_clock(); 001F28 EC66 F006 06386 CALL rtc_set_clock 06387 ; test_need_correct(); 001F2C EF10 F007 06388 GOTO test_need_correct 06389 ;} 06390 ; 06391 ;// convert string from FSR0 points 2 bytes "7F" to hex 06392 ;// only symbols '0123456789ABCDEF' 06393 ;// uses and changes FSR0 (adds 2) 06394 ;char str2hex8(void){ 001F30 06395 str2hex8 06396 ; char hi =POSTINC0; MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 124 LOC OBJECT CODE LINE SOURCE TEXT VALUE 001F30 CFEE F009 06397 MOVFF POSTINC0,hi 06398 ; char lo =POSTINC0; 001F34 CFEE F00A 06399 MOVFF POSTINC0,lo 06400 ; if(hi.6){ 001F38 AC09 06401 BTFSS hi,6,0 001F3A D003 06402 BRA m392 06403 ; hi-=0x37; // -55 001F3C 0E37 06404 MOVLW 0x37 001F3E 5E09 06405 SUBWF hi,1,0 06406 ; }else{ 001F40 D002 06407 BRA m393 06408 ; hi-=0x30; 001F42 0E30 06409 m392 MOVLW 0x30 001F44 5E09 06410 SUBWF hi,1,0 06411 ; } 06412 ; hi <<= 4; 001F46 3809 06413 m393 SWAPF hi,W,0 001F48 0BF0 06414 ANDLW 0xF0 001F4A 6E09 06415 MOVWF hi,0 06416 ; if(lo.6){ 001F4C AC0A 06417 BTFSS lo,6,0 001F4E D003 06418 BRA m394 06419 ; lo-=0x37; // -55 001F50 0E37 06420 MOVLW 0x37 001F52 5E0A 06421 SUBWF lo,1,0 06422 ; }else{ 001F54 D002 06423 BRA m395 06424 ; lo-=0x30; 001F56 0E30 06425 m394 MOVLW 0x30 001F58 5E0A 06426 SUBWF lo,1,0 06427 ; } 06428 ; hi |= lo; 001F5A 500A 06429 m395 MOVF lo,W,0 001F5C 1209 06430 IORWF hi,1,0 06431 ; return hi; 001F5E 5009 06432 MOVF hi,W,0 001F60 0012 06433 RETURN 06434 ;} 06435 ; 06436 ;// convert string from FSR0 points 4 bytes "7F5A" to hex 06437 ;// only symbols '0123456789ABCDEF' 06438 ;// low byte->first 06439 ;// uses and changes FSR0 (adds 4) 06440 ;uns16 str2hex16(void){ 001F62 06441 str2hex16 06442 ; uns16 rez; 06443 ; rez.low8=str2hex8(); 001F62 DFE6 06444 RCALL str2hex8 001F64 6E07 06445 MOVWF rez_4,0 06446 ; rez.high8=str2hex8(); 001F66 DFE4 06447 RCALL str2hex8 001F68 6E08 06448 MOVWF rez_4+1,0 06449 ; return rez; MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 125 LOC OBJECT CODE LINE SOURCE TEXT VALUE 001F6A 5007 06450 MOVF rez_4,W,0 001F6C 0012 06451 RETURN 06452 ;} 06453 ; 06454 ;// convert bcd nbr (char) to string 06455 ;// FSR0 points to string (2 bytes) 06456 ;// changes FSR0 (adds 2) 06457 ;void bcd2str(char nbr){ 001F6E 06458 bcd2str 001F6E 6E05 06459 MOVWF nbr,0 06460 ; POSTINC0=(nbr>>4)+'0'; 001F70 3805 06461 SWAPF nbr,W,0 001F72 0B0F 06462 ANDLW 0x0F 001F74 0F30 06463 ADDLW 0x30 001F76 6EEE 06464 MOVWF POSTINC0,0 06465 ; POSTINC0=(nbr&0x0f)+'0'; 001F78 0E0F 06466 MOVLW 0x0F 001F7A 1405 06467 ANDWF nbr,W,0 001F7C 0F30 06468 ADDLW 0x30 001F7E 6EEE 06469 MOVWF POSTINC0,0 06470 ;} 001F80 0012 06471 RETURN 06472 ; 06473 ;// convert hex nbr (char) to string 06474 ;// FSR0 points to string (2 bytes) 06475 ;// changes FSR0 (adds 2) 06476 ;void hex8str(char nbr){ 001F82 06477 hex8str 001F82 6E08 06478 MOVWF nbr_2,0 06479 ; INDF0 = nbr>>4; 001F84 3808 06480 SWAPF nbr_2,W,0 001F86 0B0F 06481 ANDLW 0x0F 001F88 6EEF 06482 MOVWF INDF0,0 06483 ; if(INDF0>0x09) POSTINC0 += 0x37; 001F8A 0E09 06484 MOVLW 0x09 001F8C 64EF 06485 CPFSGT INDF0,0 001F8E D003 06486 BRA m396 001F90 0E37 06487 MOVLW 0x37 001F92 26EE 06488 ADDWF POSTINC0,1,0 06489 ; else POSTINC0 += 0x30; 001F94 D002 06490 BRA m397 001F96 0E30 06491 m396 MOVLW 0x30 001F98 26EE 06492 ADDWF POSTINC0,1,0 06493 ; INDF0 = nbr&0x0f; 001F9A 0E0F 06494 m397 MOVLW 0x0F 001F9C 1408 06495 ANDWF nbr_2,W,0 001F9E 6EEF 06496 MOVWF INDF0,0 06497 ; if(INDF0>0x09) POSTINC0 += 0x37; 001FA0 0E09 06498 MOVLW 0x09 001FA2 64EF 06499 CPFSGT INDF0,0 001FA4 D003 06500 BRA m398 001FA6 0E37 06501 MOVLW 0x37 001FA8 26EE 06502 ADDWF POSTINC0,1,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 126 LOC OBJECT CODE LINE SOURCE TEXT VALUE 06503 ; else POSTINC0 += 0x30; 001FAA D002 06504 BRA m399 001FAC 0E30 06505 m398 MOVLW 0x30 001FAE 26EE 06506 ADDWF POSTINC0,1,0 06507 ;} 001FB0 0012 06508 m399 RETURN 06509 ; 06510 ;// convert hex nbr (uns16) to string 06511 ;// FSR0 points to string (4 bytes) 06512 ;// low byte->first 06513 ;// changes FSR0 (adds 4) 06514 ;void hex16str(uns16 nbr){ 001FB2 06515 hex16str 06516 ; hex8str(nbr.low8); 001FB2 5006 06517 MOVF nbr_3,W,0 001FB4 DFE6 06518 RCALL hex8str 06519 ; hex8str(nbr.high8); 001FB6 5007 06520 MOVF nbr_3+1,W,0 001FB8 D7E4 06521 BRA hex8str 06522 ;} 06523 ; 06524 ;// converts current DateTime to string 06525 ;// FSR0 points to string DDMMYYdHHmm 06526 ;// day[2],month[2],year[2],dayof week[1],hour[2],minutes[2] = 11 bytes 06527 ;// changes FSR0 (adds 11) 06528 ;void DateTime2Str(){ 001FBA 06529 DateTime2Str 06530 ; bcd2str(bcd_date); 001FBA 5019 06531 MOVF bcd_date,W,0 001FBC DFD8 06532 RCALL bcd2str 06533 ; bcd2str(bcd_mns); 001FBE 501A 06534 MOVF bcd_mns,W,0 001FC0 DFD6 06535 RCALL bcd2str 06536 ; bcd2str(bcd_yr); 001FC2 501B 06537 MOVF bcd_yr,W,0 001FC4 DFD4 06538 RCALL bcd2str 06539 ; POSTINC0 = bcd_day+'0'; 001FC6 0E30 06540 MOVLW 0x30 001FC8 2418 06541 ADDWF bcd_day,W,0 001FCA 6EEE 06542 MOVWF POSTINC0,0 06543 ; bcd2str(bcd_hr); 001FCC 5017 06544 MOVF bcd_hr,W,0 001FCE DFCF 06545 RCALL bcd2str 06546 ; bcd2str(bcd_min); 001FD0 5016 06547 MOVF bcd_min,W,0 001FD2 D7CD 06548 BRA bcd2str 06549 ;} 06550 ; 06551 ;// putc nbr(char) in dec to rs232 06552 ;// if lead_zero global flag set, prints lead zeros 06553 ;void print_num(uns8 nbr){ 001FD4 06554 print_num 001FD4 6E09 06555 MOVWF nbr_4,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 127 LOC OBJECT CODE LINE SOURCE TEXT VALUE 06556 ; char tmp=0; 001FD6 6A0A 06557 CLRF tmp_3,0 06558 ; bit flag=FALSE; 001FD8 900B 06559 BCF 0x0B,flag,0 06560 ;/* while(nbr>9999){ 06561 ; nbr-=10000; 06562 ; tmp++; 06563 ; } 06564 ; if(tmp) {putc(tmp+'0'); flag=TRUE;} 06565 ; else if(lead_zero) putc('0'); 06566 ; tmp=0; 06567 ; while(nbr>999){ 06568 ; nbr-=1000; 06569 ; tmp++; 06570 ; } 06571 ; if(tmp) {putc(tmp+'0'); flag=TRUE;} 06572 ; else if(flag || lead_zero) putc('0');*/ 06573 ; tmp=0; 001FDA 6A0A 06574 CLRF tmp_3,0 06575 ; while(nbr>99){ 001FDC 0E63 06576 m400 MOVLW 0x63 001FDE 6409 06577 CPFSGT nbr_4,0 001FE0 D004 06578 BRA m401 06579 ; nbr-=100; 001FE2 0E64 06580 MOVLW 0x64 001FE4 5E09 06581 SUBWF nbr_4,1,0 06582 ; tmp++; 001FE6 2A0A 06583 INCF tmp_3,1,0 06584 ; } 001FE8 D7F9 06585 BRA m400 06586 ; if(tmp) {putc(tmp+'0'); flag=TRUE;} 001FEA 520A 06587 m401 MOVF tmp_3,1,0 001FEC E006 06588 BZ m402 001FEE 0E30 06589 MOVLW 0x30 001FF0 240A 06590 ADDWF tmp_3,W,0 001FF2 EC5D F009 06591 CALL putc 001FF6 800B 06592 BSF 0x0B,flag,0 06593 ; else if(flag || lead_zero) putc('0'); 001FF8 D007 06594 BRA m404 001FFA B00B 06595 m402 BTFSC 0x0B,flag,0 001FFC D002 06596 BRA m403 001FFE A621 06597 BTFSS 0x21,lead_zero,0 002000 D003 06598 BRA m404 002002 0E30 06599 m403 MOVLW 0x30 002004 EC5D F009 06600 CALL putc 06601 ; tmp=0; 002008 6A0A 06602 m404 CLRF tmp_3,0 06603 ; while(nbr>9){ 00200A 0E09 06604 m405 MOVLW 0x09 00200C 6409 06605 CPFSGT nbr_4,0 00200E D004 06606 BRA m406 06607 ; nbr-=10; 002010 0E0A 06608 MOVLW 0x0A MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 128 LOC OBJECT CODE LINE SOURCE TEXT VALUE 002012 5E09 06609 SUBWF nbr_4,1,0 06610 ; tmp++; 002014 2A0A 06611 INCF tmp_3,1,0 06612 ; } 002016 D7F9 06613 BRA m405 06614 ; if(tmp) putc(tmp+'0'); 002018 520A 06615 m406 MOVF tmp_3,1,0 00201A E005 06616 BZ m407 00201C 0E30 06617 MOVLW 0x30 00201E 240A 06618 ADDWF tmp_3,W,0 002020 EC5D F009 06619 CALL putc 06620 ; else if(flag || lead_zero) putc('0'); 002024 D007 06621 BRA m409 002026 B00B 06622 m407 BTFSC 0x0B,flag,0 002028 D002 06623 BRA m408 00202A A621 06624 BTFSS 0x21,lead_zero,0 00202C D003 06625 BRA m409 00202E 0E30 06626 m408 MOVLW 0x30 002030 EC5D F009 06627 CALL putc 06628 ; putc(nbr+'0'); 002034 0E30 06629 m409 MOVLW 0x30 002036 2409 06630 ADDWF nbr_4,W,0 002038 EF5D F009 06631 GOTO putc 06632 ;} 06633 ; 06634 ;// output string to modem from string table 06635 ;// with decode control symbols 06636 ;// control symbols -> 0x80..0xFF 06637 ;void PutCString(char numb){ 00203C 06638 PutCString 00203C 6E05 06639 MOVWF numb,0 06640 ; const char * ptr=gsm_str[numb].str; 00203E EC2C F000 06641 CALL _const1 002042 6E06 06642 MOVWF ptr_2,0 06643 ; char addr; 06644 ; do{ 06645 ; char snd=*ptr; 002044 5006 06646 m410 MOVF ptr_2,W,0 002046 EC2C F000 06647 CALL _const1 00204A 6E08 06648 MOVWF snd,0 06649 ; if(snd==0) break; 00204C 5208 06650 MOVF snd,1,0 00204E E053 06651 BZ m422 06652 ; if(snd>=0x80){ //control symbol 002050 0E7F 06653 MOVLW 0x7F 002052 6408 06654 CPFSGT snd,0 002054 D04B 06655 BRA m420 06656 ; switch(snd){ 002056 5008 06657 MOVF snd,W,0 002058 0A80 06658 XORLW 0x80 00205A E007 06659 BZ m411 00205C 0A01 06660 XORLW 0x01 00205E E019 06661 BZ m413 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 129 LOC OBJECT CODE LINE SOURCE TEXT VALUE 002060 0A02 06662 XORLW 0x02 002062 E033 06663 BZ m417 002064 0A01 06664 XORLW 0x01 002066 E035 06665 BZ m418 002068 D044 06666 BRA m421 06667 ; case(C_PIN):{ //read PIN from memory and put 06668 ; addr=GSM_DATA; 00206A 0E12 06669 m411 MOVLW 0x12 00206C 6E07 06670 MOVWF addr_7,0 06671 ; do{ 06672 ; snd=__restore(addr); 00206E 5007 06673 m412 MOVF addr_7,W,0 002070 EC7B F007 06674 CALL __restore 002074 6E08 06675 MOVWF snd,0 06676 ; if(snd<'0' || snd >'9') break; 002076 0E2F 06677 MOVLW 0x2F 002078 6408 06678 CPFSGT snd,0 00207A D03B 06679 BRA m421 00207C 0E3A 06680 MOVLW 0x3A 00207E 6008 06681 CPFSLT snd,0 002080 D038 06682 BRA m421 06683 ; putc(snd); 002082 5008 06684 MOVF snd,W,0 002084 EC5D F009 06685 CALL putc 06686 ; addr++; 002088 2A07 06687 INCF addr_7,1,0 06688 ; if(addr>GSM_DATA+14) break; 00208A 0E20 06689 MOVLW 0x20 00208C 6407 06690 CPFSGT addr_7,0 00208E D7EF 06691 BRA m412 002090 D030 06692 BRA m421 06693 ; }while(TRUE); 06694 ; break;} 06695 ; case(C_SOC_NBR):{ // read Center number and put 06696 ; addr=GSM_DATA; //find 0xff 002092 0E12 06697 m413 MOVLW 0x12 002094 6E07 06698 MOVWF addr_7,0 06699 ; do{ 06700 ; snd=__restore(addr); 002096 5007 06701 m414 MOVF addr_7,W,0 002098 EC7B F007 06702 CALL __restore 00209C 6E08 06703 MOVWF snd,0 06704 ; addr++; 00209E 2A07 06705 INCF addr_7,1,0 06706 ; if(snd==0xff){ 0020A0 3C08 06707 INCFSZ snd,W,0 0020A2 D00F 06708 BRA m416 06709 ; do{ 06710 ; snd=__restore(ad dr); 0020A4 5007 06711 m415 MOVF addr_7,W,0 0020A6 EC7B F007 06712 CALL __restore 0020AA 6E08 06713 MOVWF snd,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 130 LOC OBJECT CODE LINE SOURCE TEXT VALUE 06714 ; addr++; 0020AC 2A07 06715 INCF addr_7,1,0 06716 ; if(snd<'+' || sn d>'9') break; 0020AE 0E2A 06717 MOVLW 0x2A 0020B0 6408 06718 CPFSGT snd,0 0020B2 D007 06719 BRA m416 0020B4 0E3A 06720 MOVLW 0x3A 0020B6 6008 06721 CPFSLT snd,0 0020B8 D004 06722 BRA m416 06723 ; putc(snd); 0020BA 5008 06724 MOVF snd,W,0 0020BC EC5D F009 06725 CALL putc 06726 ; }while(TRUE); 0020C0 D7F1 06727 BRA m415 06728 ; } 06729 ; if(addr>GSM_DATA+14) break; 0020C2 0E20 06730 m416 MOVLW 0x20 0020C4 6407 06731 CPFSGT addr_7,0 0020C6 D7E7 06732 BRA m414 0020C8 D014 06733 BRA m421 06734 ; }while(TRUE); 06735 ; break;} 06736 ; case(C_SMS_MESS_NBR):{ // put sms number 06737 ; lead_zero=FALSE; 0020CA 9621 06738 m417 BCF 0x21,lead_zero,0 06739 ; print_num(sms_nbr); 0020CC 5047 06740 MOVF sms_nbr,W,0 0020CE DF82 06741 RCALL print_num 06742 ; break;} 0020D0 D010 06743 BRA m421 06744 ; case(C_SMS_CNBR):{ // put sms center phone numbe r from buffer 06745 ; FSR0=&SMS_DAT; 0020D2 EE00 F064 06746 m418 LFSR 0,100 06747 ; putc(POSTINC0); // '+' 0020D6 50EE 06748 MOVF POSTINC0,W,0 0020D8 EC5D F009 06749 CALL putc 06750 ; snd=11; 0020DC 0E0B 06751 MOVLW 0x0B 0020DE 6E08 06752 MOVWF snd,0 06753 ; lead_zero=OFF; 0020E0 9621 06754 BCF 0x21,lead_zero,0 06755 ; do{ 06756 ; print_num(POSTINC0); // decode n umber to dec 0020E2 50EE 06757 m419 MOVF POSTINC0,W,0 0020E4 DF77 06758 RCALL print_num 06759 ; }while(--snd); 0020E6 2E08 06760 DECFSZ snd,1,0 0020E8 D7FC 06761 BRA m419 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 131 LOC OBJECT CODE LINE SOURCE TEXT VALUE 06762 ; break;} 0020EA D003 06763 BRA m421 06764 ; default: break; 06765 ; } 06766 ; } 06767 ; else { 06768 ; putc(snd); 0020EC 5008 06769 m420 MOVF snd,W,0 0020EE EC5D F009 06770 CALL putc 06771 ; } 06772 ; ptr++; 0020F2 2A06 06773 m421 INCF ptr_2,1,0 06774 ; }while(TRUE); 0020F4 D7A7 06775 BRA m410 06776 ; putc(CR); 0020F6 0E0D 06777 m422 MOVLW 0x0D 0020F8 EF5D F009 06778 GOTO putc 06779 ;} 06780 ; 06781 ;// Put buffer to modem 06782 ;// FSR0->points to buffer 06783 ;// EOFSMS (0x1A) end of buffer 06784 ;void PutBuff(){ 0020FC 06785 PutBuff 06786 ; putc(CR); 0020FC 0E0D 06787 MOVLW 0x0D 0020FE EC5D F009 06788 CALL putc 06789 ; do{ 06790 ; putc(POSTINC0); 002102 50EE 06791 m423 MOVF POSTINC0,W,0 002104 EC5D F009 06792 CALL putc 06793 ; }while(INDF0 != EOFSMS); 002108 0E1A 06794 MOVLW 0x1A 00210A 62EF 06795 CPFSEQ INDF0,0 00210C D7FA 06796 BRA m423 06797 ; putc(EOFSMS); 00210E EC5D F009 06798 CALL putc 06799 ; putc(CR); 002112 0E0D 06800 MOVLW 0x0D 002114 EC5D F009 06801 CALL putc 06802 ; putc(LF); 002118 0E0A 06803 MOVLW 0x0A 00211A EF5D F009 06804 GOTO putc 06805 ;} 06806 ; 06807 ;// calc crc on string, points by FSR0 06808 ;// length of string -> nbr 06809 ;// changed FSR0 06810 ;// result crc in 06811 ;void calcCRC(char nbr){ 00211E 06812 calcCRC 00211E 6E07 06813 MOVWF nbr_5,0 06814 ; CRC=0xffff; MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 132 LOC OBJECT CODE LINE SOURCE TEXT VALUE 002120 6854 06815 SETF CRC,0 002122 6855 06816 SETF CRC+1,0 06817 ; do{ 06818 ; char i=8; 002124 0E08 06819 m424 MOVLW 0x08 002126 6E08 06820 MOVWF i_22,0 06821 ; CRC^=POSTINC0; 002128 50EE 06822 MOVF POSTINC0,W,0 00212A 1A54 06823 XORWF CRC,1,0 06824 ; do{ 06825 ; if(CRC&0x0001){ 00212C A054 06826 m425 BTFSS CRC,0,0 00212E D008 06827 BRA m426 06828 ; CRC>>=1; 002130 90D8 06829 BCF 0xFD8,Carry,0 002132 3255 06830 RRCF CRC+1,1,0 002134 3254 06831 RRCF CRC,1,0 06832 ; CRC^=CRC_POLYNOME; 002136 0EA0 06833 MOVLW 0xA0 002138 1A55 06834 XORWF CRC+1,1,0 00213A 0E01 06835 MOVLW 0x01 00213C 1A54 06836 XORWF CRC,1,0 06837 ; } else CRC>>=1; 00213E D003 06838 BRA m427 002140 90D8 06839 m426 BCF 0xFD8,Carry,0 002142 3255 06840 RRCF CRC+1,1,0 002144 3254 06841 RRCF CRC,1,0 06842 ; }while(--i); 002146 2E08 06843 m427 DECFSZ i_22,1,0 002148 D7F1 06844 BRA m425 06845 ; }while(--nbr); 00214A 2E07 06846 DECFSZ nbr_5,1,0 00214C D7EB 06847 BRA m424 06848 ;} 00214E 0012 06849 RETURN 06850 06851 ; FILE vpu.c 06852 ;bit PushTransID(uns16 trspID); 06853 ;//---------------------------------------------------------------------- 06854 ;// measurement of PWM for VPU 06855 ;void _lowPriorityInt(void){ 002150 06856 _lowPriorityInt 06857 ; bit vpu_start, gw_st; 06858 ; char vpu_cnt; 06859 ; if(TMR1IE && TMR1IF){ 002150 A09D 06860 BTFSS 0xF9D,TMR1IE,0 002152 D00F 06861 BRA m428 002154 A09E 06862 BTFSS 0xF9E,TMR1IF,0 002156 D00D 06863 BRA m428 06864 ; TMR1IF=0; 002158 909E 06865 BCF 0xF9E,TMR1IF,0 06866 ; TMR1H=248; // 500uS 00215A 0EF8 06867 MOVLW 0xF8 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 133 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00215C 6ECF 06868 MOVWF TMR1H,0 06869 ; TMR1L=50; // 248*256+50=63538 = -1998 00215E 0E32 06870 MOVLW 0x32 002160 6ECE 06871 MOVWF TMR1L,0 06872 ; tmrvpu++; 002162 2A41 06873 INCF tmrvpu,1,0 002164 0E00 06874 MOVLW 0x00 002166 2242 06875 ADDWFC tmrvpu+1,1,0 06876 ; if(Carry) {tmrvpu=0xffff;INTEDG0=FALL; gw_st=0;} 002168 E304 06877 BNC m428 00216A 6841 06878 SETF tmrvpu,0 00216C 6842 06879 SETF tmrvpu+1,0 00216E 9CF1 06880 BCF 0xFF1,INTEDG0,0 002170 9204 06881 BCF 0x04,gw_st,0 06882 ; } 06883 ; if(TMR2IE && TMR2IF){ 002172 A29D 06884 m428 BTFSS 0xF9D,TMR2IE,0 002174 D00A 06885 BRA m430 002176 A29E 06886 BTFSS 0xF9E,TMR2IF,0 002178 D008 06887 BRA m430 06888 ; if(GW_IN==0 && gw_st==0){ gw_st=1; goto gw_start;} 00217A B881 06889 BTFSC 0xF81,GW_IN,0 00217C D004 06890 BRA m429 00217E B204 06891 BTFSC 0x04,gw_st,0 002180 D002 06892 BRA m429 002182 8204 06893 BSF 0x04,gw_st,0 002184 D02A 06894 BRA m433 06895 ; else gw_st=0; 002186 9204 06896 m429 BCF 0x04,gw_st,0 06897 ; TMR2IF=0; 002188 929E 06898 BCF 0xF9E,TMR2IF,0 06899 ; } 06900 ; if(INT1IF && INT1IE){ 00218A A0F0 06901 m430 BTFSS 0xFF0,INT1IF,0 00218C D05D 06902 BRA m443 00218E A6F0 06903 BTFSS 0xFF0,INT1IE,0 002190 D05B 06904 BRA m443 06905 ; if(INTEDG1==FALL){// fall 002192 BAF1 06906 BTFSC 0xFF1,INTEDG1,0 002194 D00A 06907 BRA m431 06908 ; // start measure 06909 ; tmrvpu=0; 002196 6A41 06910 CLRF tmrvpu,0 002198 6A42 06911 CLRF tmrvpu+1,0 06912 ; TMR1IF=0; 00219A 909E 06913 BCF 0xF9E,TMR1IF,0 06914 ; TMR1IE=ON; 00219C 809D 06915 BSF 0xF9D,TMR1IE,0 06916 ; TMR1H=248; // 500uS 00219E 0EF8 06917 MOVLW 0xF8 0021A0 6ECF 06918 MOVWF TMR1H,0 06919 ; TMR1L=50; // 248*256+50=63538 = -1998 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 134 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0021A2 0E32 06920 MOVLW 0x32 0021A4 6ECE 06921 MOVWF TMR1L,0 06922 ; // wait for rise 06923 ; INTEDG1=RISE; 0021A6 8AF1 06924 BSF 0xFF1,INTEDG1,0 06925 ; }else{ // rise 0021A8 D04E 06926 BRA m442 06927 ; vpu_time=tmrvpu/2; // for 1ms 0021AA 90D8 06928 m431 BCF 0xFD8,Carry,0 0021AC 3042 06929 RRCF tmrvpu+1,W,0 0021AE 6E44 06930 MOVWF vpu_time+1,0 0021B0 3041 06931 RRCF tmrvpu,W,0 0021B2 6E43 06932 MOVWF vpu_time,0 06933 ; if(Carry) vpu_time++; 0021B4 E303 06934 BNC m432 0021B6 2A43 06935 INCF vpu_time,1,0 0021B8 0E00 06936 MOVLW 0x00 0021BA 2244 06937 ADDWFC vpu_time+1,1,0 06938 ; TMR1IF=0; 0021BC 909E 06939 m432 BCF 0xF9E,TMR1IF,0 06940 ; TMR1IE=OFF; 0021BE 909D 06941 BCF 0xF9D,TMR1IE,0 06942 ; if(vpu_time >= 300 && vpu_time <= 1400){ // 400. .1200ms impuls 0021C0 0E2C 06943 MOVLW 0x2C 0021C2 5C43 06944 SUBWF vpu_time,W,0 0021C4 0E01 06945 MOVLW 0x01 0021C6 5844 06946 SUBWFB vpu_time+1,W,0 0021C8 E31B 06947 BNC m436 0021CA 0E79 06948 MOVLW 0x79 0021CC 5C43 06949 SUBWF vpu_time,W,0 0021CE 0E05 06950 MOVLW 0x05 0021D0 5844 06951 SUBWFB vpu_time+1,W,0 0021D2 E216 06952 BC m436 06953 ; vpu_cmd_loc=0; 0021D4 6A46 06954 CLRF vpu_cmd_loc,0 06955 ; vpu_start=0; 0021D6 9004 06956 BCF 0x04,vpu_start,0 06957 ; vpu_cnt=0; 0021D8 6A03 06958 CLRF vpu_cnt,0 06959 ;gw_start: 06960 ; setEvent(evtGW); // indicate in main tis kslicer cicl 0021DA 803F 06961 m433 BSF EventStates+1,0,0 06962 ; if(GreenWave){ 0021DC A038 06963 BTFSS 0x38,GreenWave,0 0021DE D00B 06964 BRA m434 06965 ; if(TMR3IE==OFF){ // first time-> initialize all GW 0021E0 B2A0 06966 BTFSC 0xFA0,TMR3IE,0 0021E2 D009 06967 BRA m434 06968 ; timeGW=0; MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 135 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0021E4 6B00 06969 CLRF timeGW,1 0021E6 6B01 06970 CLRF timeGW+1,1 06971 ; TMR3ON=ON; 0021E8 80B1 06972 BSF 0xFB1,TMR3ON,0 06973 ; TMR3IF=0; 0021EA 92A1 06974 BCF 0xFA1,TMR3IF,0 06975 ; TMR3IE=ON; 0021EC 82A0 06976 BSF 0xFA0,TMR3IE,0 06977 ; TMR3=T3ADDER;} 0021EE 0E64 06978 MOVLW 0x64 0021F0 6EB2 06979 MOVWF TMR3,0 0021F2 0EF0 06980 MOVLW 0xF0 0021F4 6EB3 06981 MOVWF TMR3+1,0 06982 ; } 06983 ; #ifdef EMUL 06984 ; _FLASH 0021F6 9282 06985 m434 BCF 0xF82,_TESTPIN,0 0021F8 8282 06986 BSF 0xF82,_TESTPIN,0 0021FA D000 06987 BRA m435 0021FC 9282 06988 m435 BCF 0xF82,_TESTPIN,0 06989 ; #endif 06990 ; } // from modem or pult 06991 ; else if(vpu_time >= 23 && vpu_time <= 25){ // st art 0021FE D01D 06992 BRA m440 002200 5044 06993 m436 MOVF vpu_time+1,W,0 002202 E103 06994 BNZ m437 002204 0E16 06995 MOVLW 0x16 002206 6443 06996 CPFSGT vpu_time,0 002208 D009 06997 BRA m438 00220A 5044 06998 m437 MOVF vpu_time+1,W,0 00220C E107 06999 BNZ m438 00220E 0E1A 07000 MOVLW 0x1A 002210 6043 07001 CPFSLT vpu_time,0 002212 D004 07002 BRA m438 07003 ; vpu_start=1; 002214 8004 07004 BSF 0x04,vpu_start,0 07005 ; vpu_cnt=0; 002216 6A03 07006 CLRF vpu_cnt,0 07007 ; vpu_cmd_loc=0;} 002218 6A46 07008 CLRF vpu_cmd_loc,0 07009 ; else if(vpu_time == 1){ vpu_cnt++; Carry=ON; vp u_cmd_loc=rr(vpu_cmd_loc);} 00221A D00F 07010 BRA m440 00221C 0443 07011 m438 DECF vpu_time,W,0 00221E 1044 07012 IORWF vpu_time+1,W,0 002220 E104 07013 BNZ m439 002222 2A03 07014 INCF vpu_cnt,1,0 002224 80D8 07015 BSF 0xFD8,Carry,0 002226 3246 07016 RRCF vpu_cmd_loc,1,0 07017 ; else if(vpu_time == 2){ vpu_cnt++; Carry=OFF; vp u_cmd_loc=rr(vpu_cmd_loc);} MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 136 LOC OBJECT CODE LINE SOURCE TEXT VALUE 002228 D008 07018 BRA m440 00222A 0E02 07019 m439 MOVLW 0x02 00222C 6243 07020 CPFSEQ vpu_time,0 00222E D005 07021 BRA m440 002230 6644 07022 TSTFSZ vpu_time+1,0 002232 D003 07023 BRA m440 002234 2A03 07024 INCF vpu_cnt,1,0 002236 90D8 07025 BCF 0xFD8,Carry,0 002238 3246 07026 RRCF vpu_cmd_loc,1,0 07027 ; if(vpu_cnt==8){ 00223A 0E08 07028 m440 MOVLW 0x08 00223C 6203 07029 CPFSEQ vpu_cnt,0 00223E D002 07030 BRA m441 07031 ; vpu_cnt=0; 002240 6A03 07032 CLRF vpu_cnt,0 07033 ; setEvent(evtVPUCMD); //received all data bits 002242 8C3E 07034 BSF EventStates,6,0 07035 ; } 07036 ; // wait for fall 07037 ; INTEDG1=FALL; 002244 9AF1 07038 m441 BCF 0xFF1,INTEDG1,0 07039 ; } 07040 ; INT1IF=OFF; 002246 90F0 07041 m442 BCF 0xFF0,INT1IF,0 07042 ; } 07043 ;} 002248 0012 07044 m443 RETURN 07045 ; 07046 ;Task Vpu(void){ 00224A 07047 Vpu 00224A 0E05 07048 MOVLW 0x05 00224C 5C5F 07049 SUBWF _TaskS7,W,0 00224E B0D8 07050 BTFSC 0xFD8,Carry,0 002250 0C00 07051 RETLW 0x00 002252 50F9 07052 MOVF PCL,W,0 002254 445F 07053 RLNCF _TaskS7,W,0 002256 26F9 07054 ADDWF PCL,1,0 002258 D004 07055 BRA m444 00225A D00A 07056 BRA m445 00225C D013 07057 BRA m446 00225E D01F 07058 BRA m448 002260 D038 07059 BRA m452 07060 ; //use TIMER1 for measure 07061 ; vpu_time=0; 002262 6A43 07062 m444 CLRF vpu_time,0 002264 6A44 07063 CLRF vpu_time+1,0 07064 ; TMR1IE=OFF; TMR1IF=OFF; 002266 909D 07065 BCF 0xF9D,TMR1IE,0 002268 909E 07066 BCF 0xF9E,TMR1IF,0 07067 ; INT1IF=OFF; INTEDG1=FALL; INT1IE=ON; 00226A 90F0 07068 BCF 0xFF0,INT1IF,0 00226C 9AF1 07069 BCF 0xFF1,INTEDG1,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 137 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00226E 86F0 07070 BSF 0xFF0,INT1IE,0 07071 ; // wait START condition 07072 ; waitUntilEvent(evtVPUCMD); 002270 AC3E 07073 m445 BTFSS EventStates,6,0 002272 0C01 07074 RETLW 0x01 07075 ; clearEvent(evtVPUCMD); 002274 9C3E 07076 BCF EventStates,6,0 07077 ; if(vpu_cmd_loc == VPU_TRSPT){ // wait 2 bytes for 300ms 002276 0EC3 07078 MOVLW 0xC3 002278 6246 07079 CPFSEQ vpu_cmd_loc,0 00227A D023 07080 BRA m450 07081 ; startTimer(T_VPU,150); 00227C 0E96 07082 MOVLW 0x96 00227E 6FDE 07083 MOVWF softTimer+20,1 002280 6BDF 07084 CLRF softTimer+21,1 002282 9457 07085 BCF tTimeout+1,2,0 07086 ; while(!isEvent(evtVPUCMD) && !timeout(T_VPU))waitState(); 002284 BC3E 07087 m446 BTFSC EventStates,6,0 002286 D002 07088 BRA m447 002288 A457 07089 BTFSS tTimeout+1,2,0 00228A 0C02 07090 RETLW 0x02 07091 ; if(timeout(T_VPU)) restartTask(); 00228C B457 07092 m447 BTFSC tTimeout+1,2,0 00228E 0C00 07093 RETLW 0x00 07094 ; clearEvent(evtVPUCMD); 002290 9C3E 07095 BCF EventStates,6,0 07096 ; Trspt_ID.high8=vpu_cmd_loc; 002292 C046 F20F 07097 MOVFF vpu_cmd_loc,Trspt_ID+1 07098 ; startTimer(T_VPU,150); 002296 0E96 07099 MOVLW 0x96 002298 6FDE 07100 MOVWF softTimer+20,1 00229A 6BDF 07101 CLRF softTimer+21,1 00229C 9457 07102 BCF tTimeout+1,2,0 07103 ; while(!isEvent(evtVPUCMD) && !timeout(T_VPU))waitState(); 00229E BC3E 07104 m448 BTFSC EventStates,6,0 0022A0 D002 07105 BRA m449 0022A2 A457 07106 BTFSS tTimeout+1,2,0 0022A4 0C03 07107 RETLW 0x03 07108 ; if(timeout(T_VPU)) restartTask(); 0022A6 B457 07109 m449 BTFSC tTimeout+1,2,0 0022A8 0C00 07110 RETLW 0x00 07111 ; clearEvent(evtVPUCMD); 0022AA 9C3E 07112 BCF EventStates,6,0 07113 ; Trspt_ID.low8=vpu_cmd_loc; 0022AC C046 F20E 07114 MOVFF vpu_cmd_loc,Trspt_ID 07115 ; VPU_OUT=0; 0022B0 9082 07116 BCF 0xF82,VPU_OUT,0 07117 ; // test for a new transport arrive 07118 ; if(PushTransID(Trspt_ID)){ 0022B2 C20E F005 07119 MOVFF Trspt_ID,trspID 0022B6 C20F F006 07120 MOVFF Trspt_ID+1,trspID+1 0022BA D80F 07121 RCALL PushTransID 0022BC E305 07122 BNC m451 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 138 LOC OBJECT CODE LINE SOURCE TEXT VALUE 07123 ; // send transport ID by SMS 07124 ; setEvent(evtTRSPID); 0022BE 8A3E 07125 BSF EventStates,5,0 07126 ; } 07127 ; }else{ // process received commmand 0022C0 D003 07128 BRA m451 07129 ; vpu_cmd=vpu_cmd_loc; 0022C2 C046 F045 07130 m450 MOVFF vpu_cmd_loc,vpu_cmd 07131 ; setEvent(evtVPU); 0022C6 883E 07132 BSF EventStates,4,0 07133 ; } 07134 ; VPU_OUT=0; delay(T_VPU, 20); VPU_OUT=1; 0022C8 9082 07135 m451 BCF 0xF82,VPU_OUT,0 0022CA 0E14 07136 MOVLW 0x14 0022CC 6FDE 07137 MOVWF softTimer+20,1 0022CE 6BDF 07138 CLRF softTimer+21,1 0022D0 9457 07139 BCF tTimeout+1,2,0 0022D2 A457 07140 m452 BTFSS tTimeout+1,2,0 0022D4 0C04 07141 RETLW 0x04 0022D6 8082 07142 BSF 0xF82,VPU_OUT,0 07143 ; restartTask(); 0022D8 0C00 07144 RETLW 0x00 07145 ;} 07146 ; 07147 ;// push current transport ID to array and set timeouts 07148 ;// if is a new transport -> return TRUE 07149 ;// if this ID presents in array -> return FALSE 07150 ;bit PushTransID(uns16 trspID){ 0022DA 07151 PushTransID 07152 ; char i; 07153 ; for(i=0; i0){ 0022E2 EE02 F010 07159 LFSR 0,528 0022E6 0E04 07160 MOVLW 0x04 0022E8 0207 07161 MULWF i_23,0 0022EA 50F3 07162 MOVF PRODL,W,0 0022EC 26E9 07163 ADDWF FSR0,1,0 0022EE 50EE 07164 MOVF POSTINC0,W,0 0022F0 6205 07165 CPFSEQ trspID,0 0022F2 D017 07166 BRA m454 0022F4 50EF 07167 MOVF INDF0,W,0 0022F6 6206 07168 CPFSEQ trspID+1,0 0022F8 D014 07169 BRA m454 0022FA EE02 F012 07170 LFSR 0,530 0022FE 0E04 07171 MOVLW 0x04 002300 0207 07172 MULWF i_23,0 002302 50F3 07173 MOVF PRODL,W,0 002304 26E9 07174 ADDWF FSR0,1,0 002306 50EE 07175 MOVF POSTINC0,W,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 139 LOC OBJECT CODE LINE SOURCE TEXT VALUE 002308 10EF 07176 IORWF INDF0,W,0 00230A E00B 07177 BZ m454 07178 ; // still in array, update them 07179 ; Transports[i].counter=TRNSP_TIMEOUT; 00230C EE02 F012 07180 LFSR 0,530 002310 0E04 07181 MOVLW 0x04 002312 0207 07182 MULWF i_23,0 002314 50F3 07183 MOVF PRODL,W,0 002316 26E9 07184 ADDWF FSR0,1,0 002318 0E3C 07185 MOVLW 0x3C 00231A 6EEE 07186 MOVWF POSTINC0,0 00231C 6AEF 07187 CLRF INDF0,0 07188 ; return NO; 00231E 90D8 07189 BCF 0xFD8,Carry,0 002320 0012 07190 RETURN 07191 ; } 07192 ; } 002322 2A07 07193 m454 INCF i_23,1,0 002324 D7DB 07194 BRA m453 07195 ; // find most old ID, with smallest counter 07196 ; char j=0; 002326 6A08 07197 m455 CLRF j_4,0 07198 ; uns16 tmout=TRNSP_TIMEOUT; // max value 002328 0E3C 07199 MOVLW 0x3C 00232A 6E09 07200 MOVWF tmout,0 00232C 6A0A 07201 CLRF tmout+1,0 07202 ; for(i=0; i holds point to smallest array transport 07233 ; Transports[j].id=trspID; 002368 EE02 F010 07234 m458 LFSR 0,528 00236C 0E04 07235 MOVLW 0x04 00236E 0208 07236 MULWF j_4,0 002370 50F3 07237 MOVF PRODL,W,0 002372 26E9 07238 ADDWF FSR0,1,0 002374 C005 FFEE 07239 MOVFF trspID,POSTINC0 002378 C006 FFEE 07240 MOVFF trspID+1,POSTINC0 07241 ; Transports[j].counter=TRNSP_TIMEOUT; 00237C EE02 F012 07242 LFSR 0,530 002380 0E04 07243 MOVLW 0x04 002382 0208 07244 MULWF j_4,0 002384 50F3 07245 MOVF PRODL,W,0 002386 26E9 07246 ADDWF FSR0,1,0 002388 0E3C 07247 MOVLW 0x3C 00238A 6EEE 07248 MOVWF POSTINC0,0 00238C 6AEF 07249 CLRF INDF0,0 07250 ; return YES; 00238E 80D8 07251 BSF 0xFD8,Carry,0 002390 0012 07252 RETURN 07253 ;} 07254 ; 07255 ;// must be called every second to update 07256 ;void UpdateTransportCounters(void){ 002392 07257 UpdateTransportCounters 07258 ; char i; 07259 ; for(i=0; i0) Transports[i].counter--; 00239A EE02 F012 07265 LFSR 0,530 00239E 0E04 07266 MOVLW 0x04 0023A0 0205 07267 MULWF i_24,0 0023A2 50F3 07268 MOVF PRODL,W,0 0023A4 26E9 07269 ADDWF FSR0,1,0 0023A6 50EE 07270 MOVF POSTINC0,W,0 0023A8 10EF 07271 IORWF INDF0,W,0 0023AA E009 07272 BZ m460 0023AC EE02 F012 07273 LFSR 0,530 0023B0 0E04 07274 MOVLW 0x04 0023B2 0205 07275 MULWF i_24,0 0023B4 50F3 07276 MOVF PRODL,W,0 0023B6 26E9 07277 ADDWF FSR0,1,0 0023B8 06EE 07278 DECF POSTINC0,1,0 0023BA 0E00 07279 MOVLW 0x00 0023BC 5AEF 07280 SUBWFB INDF0,1,0 07281 ; } MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 141 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0023BE 2A05 07282 m460 INCF i_24,1,0 0023C0 D7E9 07283 BRA m459 07284 ;} 0023C2 0012 07285 m461 RETURN 07286 07287 ; FILE svetologick.c 07288 ;/////////////////////////////////////////////////////////////// 07289 ;// Svetofor logick there 07290 ;// 07291 ;bit isGWOnDirection(char mask); 07292 ;char GetGWMask(void); 07293 ;void AllRedOn(void); 07294 ;void YellowBlink(void); 07295 ;void TestAllChs(void); 07296 ;void AllOff(void); 07297 ;void plan2lamps(void); 07298 ;char find_curr_progr(void); 07299 ;void CalcCorrectGW(void); 07300 ;bit CHFTime(void); 07301 ; 07302 ;Task ProgrammStep(void); 07303 ;Task MakePromTact(void); 07304 ;Task GreenWaveChain(void); 07305 ;Task ControlLamps(void); 07306 ;Task RedRecovery(void); 07307 ;/////////////////////////////////////////////////////////////// 07308 ; 07309 ;Task LocalKeys(){ 0023C4 07310 LocalKeys 0023C4 0E03 07311 MOVLW 0x03 0023C6 5DE5 07312 SUBWF _TaskS11,W,1 0023C8 B0D8 07313 BTFSC 0xFD8,Carry,0 0023CA 0C00 07314 RETLW 0x00 0023CC 50F9 07315 MOVF PCL,W,0 0023CE 45E5 07316 RLNCF _TaskS11,W,1 0023D0 26F9 07317 ADDWF PCL,1,0 0023D2 D002 07318 BRA m462 0023D4 D013 07319 BRA m464 0023D6 D024 07320 BRA m466 07321 ; static char i, t_jm, t_tvp; 07322 ; t_jm=0; t_tvp=0; 0023D8 6BFB 07323 m462 CLRF t_jm,1 0023DA 6BFC 07324 CLRF t_tvp,1 07325 ; for(i=0; i<8; ++i){ // debounce 0023DC 6BFA 07326 CLRF i_25,1 0023DE 0E08 07327 m463 MOVLW 0x08 0023E0 61FA 07328 CPFSLT i_25,1 0023E2 D010 07329 BRA m465 07330 ; Carry=!K_JM; 0023E4 80D8 07331 BSF 0xFD8,Carry,0 0023E6 B482 07332 BTFSC 0xF82,K_JM,0 0023E8 90D8 07333 BCF 0xFD8,Carry,0 07334 ; t_jm=rr(t_jm); MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 142 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0023EA 33FB 07335 RRCF t_jm,1,1 07336 ; Carry=!K_TVP; 0023EC 80D8 07337 BSF 0xFD8,Carry,0 0023EE BA81 07338 BTFSC 0xF81,K_TVP,0 0023F0 90D8 07339 BCF 0xFD8,Carry,0 07340 ; t_tvp=rr(t_tvp); 0023F2 33FC 07341 RRCF t_tvp,1,1 07342 ; delay(T_KEYS, 2); 0023F4 0E02 07343 MOVLW 0x02 0023F6 6FD8 07344 MOVWF softTimer+14,1 0023F8 6BD9 07345 CLRF softTimer+15,1 0023FA 9E56 07346 BCF tTimeout,7,0 0023FC AE56 07347 m464 BTFSS tTimeout,7,0 0023FE 0C01 07348 RETLW 0x01 07349 ; } 002400 2BFA 07350 INCF i_25,1,1 002402 D7ED 07351 BRA m463 07352 ; if(t_jm==0xff) KstateJM = 1; 002404 49FB 07353 m465 INFSNZ t_jm,W,1 002406 8014 07354 BSF 0x14,KstateJM,0 07355 ; if(t_jm==0) KstateJM = 0; 002408 53FB 07356 MOVF t_jm,1,1 00240A B4D8 07357 BTFSC 0xFD8,Zero_,0 00240C 9014 07358 BCF 0x14,KstateJM,0 07359 ; if(t_tvp==0xff) KstateTVP =1; 00240E 49FC 07360 INFSNZ t_tvp,W,1 002410 8214 07361 BSF 0x14,KstateTVP,0 07362 ; if(t_tvp==0) KstateTVP =0; 002412 53FC 07363 MOVF t_tvp,1,1 002414 B4D8 07364 BTFSC 0xFD8,Zero_,0 002416 9214 07365 BCF 0x14,KstateTVP,0 07366 ; delay(T_KEYS, 200); 002418 0EC8 07367 MOVLW 0xC8 00241A 6FD8 07368 MOVWF softTimer+14,1 00241C 6BD9 07369 CLRF softTimer+15,1 00241E 9E56 07370 BCF tTimeout,7,0 002420 AE56 07371 m466 BTFSS tTimeout,7,0 002422 0C02 07372 RETLW 0x02 07373 ; restartTask(); 002424 0C00 07374 RETLW 0x00 07375 ;} 07376 ; 07377 ;Task SvLogick(void){ 002426 07378 SvLogick 002426 0E0E 07379 MOVLW 0x0E 002428 5C5C 07380 SUBWF _TaskS4,W,0 00242A B0D8 07381 BTFSC 0xFD8,Carry,0 00242C 0C00 07382 RETLW 0x00 00242E 50F9 07383 MOVF PCL,W,0 002430 445C 07384 RLNCF _TaskS4,W,0 002432 26F9 07385 ADDWF PCL,1,0 002434 D00D 07386 BRA m467 002436 D044 07387 BRA m475 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 143 LOC OBJECT CODE LINE SOURCE TEXT VALUE 002438 D048 07388 BRA m476 00243A D052 07389 BRA m479 00243C D05B 07390 BRA m481 00243E D05E 07391 BRA m483 002440 D091 07392 BRA m489 002442 D0BB 07393 BRA m495 002444 D0C2 07394 BRA m497 002446 D0F0 07395 BRA m501 002448 D126 07396 BRA m511 00244A D139 07397 BRA m514 00244C D156 07398 BRA m517 00244E D164 07399 BRA m519 07400 ; clearTask(MakePromTact); 002450 0E80 07401 m467 MOVLW 0x80 002452 6E5E 07402 MOVWF _TaskS6,0 07403 ; clearTask(RedRecovery); 002454 6FF9 07404 MOVWF _TaskS17,1 07405 ; clearTask(ProgrammStep); 002456 6E5D 07406 MOVWF _TaskS5,0 07407 ; initEvents(); // all events off 002458 6A3E 07408 CLRF EventStates,0 00245A 6A3F 07409 CLRF EventStates+1,0 00245C 6A40 07410 CLRF EventStates+2,0 07411 ; KstateJM=0; KstateTVP=0; 00245E 9014 07412 BCF 0x14,KstateJM,0 002460 9214 07413 BCF 0x14,KstateTVP,0 07414 ; startTask(ControlLamps); 002462 6BE3 07415 CLRF _TaskS9,1 07416 ; startTask(LocalKeys); 002464 6BE5 07417 CLRF _TaskS11,1 07418 ; 07419 ; faza2change.7=1; // cancel faza delay change 002466 8E32 07420 BSF faza2change,7,0 07421 ; 07422 ;#ifndef EMUL 07423 ; YellowBlink(); // yellow blink on reset 5 sec 07424 ; delay(T_SVETOF, 5000); 07425 ; while(KstateJM) waitState(); 07426 ;#endif 07427 ; 07428 ; startTask(Vpu); 002468 6A5F 07429 CLRF _TaskS7,0 07430 ; if(GreenWave) { 00246A A038 07431 BTFSS 0x38,GreenWave,0 00246C D010 07432 BRA m468 07433 ; GWmask=GetGWMask();GWCorrCntMs=DEFDELAY; 00246E ECAA F016 07434 CALL GetGWMask 002472 6E3D 07435 MOVWF GWmask,0 002474 0EE8 07436 MOVLW 0xE8 002476 0103 07437 MOVLB 0x03 002478 6F02 07438 MOVWF GWCorrCntMs,1 00247A 0E03 07439 MOVLW 0x03 00247C 6F03 07440 MOVWF GWCorrCntMs+1,1 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 144 LOC OBJECT CODE LINE SOURCE TEXT VALUE 07441 ; TMR2ON=1;TMR2IF=OFF; TMR2IE=ON; PrevTimeGW=0; 00247E 84CA 07442 BSF 0xFCA,TMR2ON,0 002480 929E 07443 BCF 0xF9E,TMR2IF,0 002482 829D 07444 BSF 0xF9D,TMR2IE,0 002484 6B04 07445 CLRF PrevTimeGW,1 002486 6B05 07446 CLRF PrevTimeGW+1,1 07447 ; startTask(GreenWaveChain);} 002488 0100 07448 MOVLB 0x00 00248A 6BE4 07449 CLRF _TaskS10,1 07450 ; else {clearTask(GreenWaveChain);} 00248C D002 07451 BRA m469 00248E 0E80 07452 m468 MOVLW 0x80 002490 6FE4 07453 MOVWF _TaskS10,1 07454 ; if(ASUDD) startTask(Asudd); 002492 A438 07455 m469 BTFSS 0x38,ASUDD,0 002494 D002 07456 BRA m470 002496 6BE2 07457 CLRF _TaskS8,1 07458 ; else clearTask(Asudd); 002498 D002 07459 BRA m471 00249A 0E80 07460 m470 MOVLW 0x80 00249C 6FE2 07461 MOVWF _TaskS8,1 07462 ; if(GSMGPRS) startTask(GSM); 00249E A638 07463 m471 BTFSS 0x38,GSMGPRS,0 0024A0 D002 07464 BRA m472 0024A2 6BE6 07465 CLRF _TaskS12,1 07466 ; else clearTask(GSM); 0024A4 D002 07467 BRA m473 0024A6 0E80 07468 m472 MOVLW 0x80 0024A8 6FE6 07469 MOVWF _TaskS12,1 07470 ; 07471 ;yell_exit: 07472 ; 07473 ;#ifndef EMUL 07474 ; if(RedDelay>0){ 07475 ; as_allred=1; 07476 ; current_delay=RedDelay; 07477 ; AllRedOn(); // all reds on 07478 ; current_delay++; 07479 ; while(--current_delay) delay(T_SVETOF, 1000); 07480 ; as_allred=0; 07481 ; } 07482 ;#endif 07483 ; 07484 ; current_prg=0xff; // no previous programm 0024AA 682A 07485 m473 SETF current_prg,0 07486 ; prev_faza=0xff; // no previous faza 0024AC 682F 07487 SETF prev_faza,0 07488 ; // clear flags 07489 ; stateJM=0; stateOS=0; 0024AE 9814 07490 BCF 0x14,stateJM,0 0024B0 9A14 07491 BCF 0x14,stateOS,0 07492 ; as_state0 = 0; as_ctrl=0; 0024B2 6A20 07493 CLRF as_state0,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 145 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0024B4 6A23 07494 CLRF as_ctrl,0 07495 ; 07496 ;// work on programm 07497 ; alarms_cnt = get_alarms(bcd_day); // create ALARMS array for today 0024B6 5018 07498 MOVF bcd_day,W,0 0024B8 EC10 F002 07499 CALL get_alarms 0024BC 6E24 07500 MOVWF alarms_cnt,0 07501 ; 07502 ; do{ // priority 07503 ; waitState(); 0024BE 0C01 07504 m474 RETLW 0x01 07505 ;// priority: 0. keys 07506 ; if(stateOS) { // main priority 0024C0 AA14 07507 m475 BTFSS 0x14,stateOS,0 0024C2 D008 07508 BRA m477 07509 ; clearTask(ProgrammStep); 0024C4 0E80 07510 MOVLW 0x80 0024C6 6E5D 07511 MOVWF _TaskS5,0 07512 ; as_ru=0; 0024C8 9C20 07513 BCF 0x20,as_ru,0 07514 ; while(taskBusy(MakePromTact)) waitState(); 0024CA AE5E 07515 m476 BTFSS _TaskS6,7,0 0024CC 0C02 07516 RETLW 0x02 07517 ; AllOff();} 0024CE EC64 F017 07518 CALL AllOff 07519 ; else if(KstateJM || stateJM) { // second priority 0024D2 D013 07520 BRA m482 0024D4 B014 07521 m477 BTFSC 0x14,KstateJM,0 0024D6 D002 07522 BRA m478 0024D8 A814 07523 BTFSS 0x14,stateJM,0 0024DA D00F 07524 BRA m482 07525 ; if(stateJM){ // finish promtacts correctly if signal fro m outside, not from switcher 0024DC A814 07526 m478 BTFSS 0x14,stateJM,0 0024DE D002 07527 BRA m480 07528 ; while(taskBusy(MakePromTact)) waitState(); 0024E0 AE5E 07529 m479 BTFSS _TaskS6,7,0 0024E2 0C03 07530 RETLW 0x03 07531 ; } 07532 ; clearTask(ProgrammStep); 0024E4 0E80 07533 m480 MOVLW 0x80 0024E6 6E5D 07534 MOVWF _TaskS5,0 07535 ; clearTask(MakePromTact); 0024E8 6E5E 07536 MOVWF _TaskS6,0 07537 ; YellowBlink(); 0024EA EC42 F017 07538 CALL YellowBlink 07539 ; if(KstateJM){ 0024EE A014 07540 BTFSS 0x14,KstateJM,0 0024F0 D004 07541 BRA m482 07542 ; as_ru=1; 0024F2 8C20 07543 BSF 0x20,as_ru,0 07544 ; while(KstateJM) waitState(); MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 146 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0024F4 A014 07545 m481 BTFSS 0x14,KstateJM,0 0024F6 D7D9 07546 BRA m473 0024F8 0C04 07547 RETLW 0x04 07548 ; goto yell_exit; 07549 ; } 07550 ; } 07551 ; waitState(); 0024FA 0C05 07552 m482 RETLW 0x05 07553 ; if(KstateJM) continue; // skip other programm execution 0024FC B014 07554 m483 BTFSC 0x14,KstateJM,0 0024FE D12C 07555 BRA m523 07556 ; as_ru=0; 002500 9C20 07557 BCF 0x20,as_ru,0 07558 ;// priority: 1. vpu - remote control pult 07559 ; if(isEvent(evtVPU)){ // work event VPU from Vpu task 002502 A83E 07560 BTFSS EventStates,4,0 002504 D05D 07561 BRA m496 07562 ; clearEvent(evtVPU); 002506 983E 07563 BCF EventStates,4,0 07564 ; as_ru=0; // for asudd 002508 9C20 07565 BCF 0x20,as_ru,0 07566 ; stateOS=0; 00250A 9A14 07567 BCF 0x14,stateOS,0 07568 ; switch(vpu_cmd){ 00250C 5045 07569 MOVF vpu_cmd,W,0 00250E 0A33 07570 XORLW 0x33 002510 E00D 07571 BZ m484 002512 0A66 07572 XORLW 0x66 002514 E013 07573 BZ m485 002516 0AFA 07574 XORLW 0xFA 002518 E016 07575 BZ m486 00251A 0A63 07576 XORLW 0x63 00251C E027 07577 BZ m490 00251E 0A3C 07578 XORLW 0x3C 002520 E02C 07579 BZ m491 002522 0A1C 07580 XORLW 0x1C 002524 E034 07581 BZ m492 002526 0AE3 07582 XORLW 0xE3 002528 E03C 07583 BZ m493 00252A D045 07584 BRA m494 07585 ; case(VPU_OS): {as_du=1; stateJM=0; stateOS=1; 00252C 8A20 07586 m484 BSF 0x20,as_du,0 00252E 9814 07587 BCF 0x14,stateJM,0 002530 8A14 07588 BSF 0x14,stateOS,0 07589 ; clearTask(Progr ammStep); 002532 0E80 07590 MOVLW 0x80 002534 6E5D 07591 MOVWF _TaskS5,0 07592 ; current_prg=0xf f; // no previous programm 002536 682A 07593 SETF current_prg,0 07594 ; prev_faza=0xff; // no previous faza MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 147 LOC OBJECT CODE LINE SOURCE TEXT VALUE 002538 682F 07595 SETF prev_faza,0 07596 ; break;} 00253A D03F 07597 BRA m495 07598 ; case(VPU_JM): {as_du=1; stateJM=1;clearTask(Pr ogrammStep); break;} 00253C 8A20 07599 m485 BSF 0x20,as_du,0 00253E 8814 07600 BSF 0x14,stateJM,0 002540 0E80 07601 MOVLW 0x80 002542 6E5D 07602 MOVWF _TaskS5,0 002544 D03A 07603 BRA m495 07604 ; case(VPU_PRG): {as_du=0; 002546 9A20 07605 m486 BCF 0x20,as_du,0 07606 ; if(stateJM || st ateOS){ 002548 B814 07607 BTFSC 0x14,stateJM,0 00254A D002 07608 BRA m487 00254C AA14 07609 BTFSS 0x14,stateOS,0 00254E D002 07610 BRA m488 07611 ; stateJM= 0; 002550 9814 07612 m487 BCF 0x14,stateJM,0 07613 ; goto yel l_exit; 002552 D7AB 07614 BRA m473 07615 ; } 07616 ; stateJM=0; 002554 9814 07617 m488 BCF 0x14,stateJM,0 07618 ; read_prg_step(fi nd_curr_progr(), 0); 002556 EC41 F018 07619 CALL find_curr_progr 00255A 6E05 07620 MOVWF prg,0 00255C 0E00 07621 MOVLW 0x00 00255E EC6A F002 07622 CALL read_prg_step 07623 ; startTask(MakePr omTact); 002562 6A5E 07624 CLRF _TaskS6,0 07625 ; while(taskBusy(M akePromTact)) waitState(); 002564 AE5E 07626 m489 BTFSS _TaskS6,7,0 002566 0C06 07627 RETLW 0x06 07628 ; current_prg=0xff ; 002568 682A 07629 SETF current_prg,0 07630 ; goto no_vpu;} 00256A D02A 07631 BRA m496 07632 ; case(VPU_FAZA1):{as_du=1; stateJM=0;current_faza =0; clearTask(ProgrammStep); startTask(MakePromTact); break;} 00256C 8A20 07633 m490 BSF 0x20,as_du,0 00256E 9814 07634 BCF 0x14,stateJM,0 002570 6A2C 07635 CLRF current_faza,0 002572 0E80 07636 MOVLW 0x80 002574 6E5D 07637 MOVWF _TaskS5,0 002576 6A5E 07638 CLRF _TaskS6,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 148 LOC OBJECT CODE LINE SOURCE TEXT VALUE 002578 D020 07639 BRA m495 07640 ; case(VPU_FAZA2):{as_du=1; stateJM=0; 00257A 8A20 07641 m491 BSF 0x20,as_du,0 00257C 9814 07642 BCF 0x14,stateJM,0 07643 ; if(FazesCnt<2) b reak; 00257E 0E01 07644 MOVLW 0x01 002580 643A 07645 CPFSGT FazesCnt,0 002582 D01B 07646 BRA m495 07647 ; current_faza=1; 002584 6E2C 07648 MOVWF current_faza,0 07649 ; clearTask(Progra mmStep); 002586 0E80 07650 MOVLW 0x80 002588 6E5D 07651 MOVWF _TaskS5,0 07652 ; startTask(MakePr omTact); break;} 00258A 6A5E 07653 CLRF _TaskS6,0 00258C D016 07654 BRA m495 07655 ; case(VPU_FAZA3):{as_du=1; stateJM=0; 00258E 8A20 07656 m492 BSF 0x20,as_du,0 002590 9814 07657 BCF 0x14,stateJM,0 07658 ; if(FazesCnt<3) b reak; 002592 0E02 07659 MOVLW 0x02 002594 643A 07660 CPFSGT FazesCnt,0 002596 D011 07661 BRA m495 07662 ; current_faza=2; 002598 6E2C 07663 MOVWF current_faza,0 07664 ; clearTask(Progra mmStep); 00259A 0E80 07665 MOVLW 0x80 00259C 6E5D 07666 MOVWF _TaskS5,0 07667 ; startTask(MakePr omTact); break;} 00259E 6A5E 07668 CLRF _TaskS6,0 0025A0 D00C 07669 BRA m495 07670 ; case(VPU_FAZA4):{as_du=1; stateJM=0; 0025A2 8A20 07671 m493 BSF 0x20,as_du,0 0025A4 9814 07672 BCF 0x14,stateJM,0 07673 ; if(FazesCnt<4) b reak; 0025A6 0E03 07674 MOVLW 0x03 0025A8 643A 07675 CPFSGT FazesCnt,0 0025AA D007 07676 BRA m495 07677 ; current_faza=3; 0025AC 6E2C 07678 MOVWF current_faza,0 07679 ; clearTask(Progra mmStep); 0025AE 0E80 07680 MOVLW 0x80 0025B0 6E5D 07681 MOVWF _TaskS5,0 07682 ; startTask(MakePr omTact); break;} MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 149 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0025B2 6A5E 07683 CLRF _TaskS6,0 0025B4 D002 07684 BRA m495 07685 ; default: { if(as_du==1) break; // stay in VPU mo de, get error 0025B6 AA20 07686 m494 BTFSS 0x20,as_du,0 0025B8 D003 07687 BRA m496 07688 ; else goto no_vpu;} // maybe error? 07689 ; } 07690 ; while(taskBusy(MakePromTact)) waitState(); // wait for f inish promtact 0025BA BE5E 07691 m495 BTFSC _TaskS6,7,0 0025BC D0CD 07692 BRA m523 0025BE 0C07 07693 RETLW 0x07 07694 ; continue; // skip others events and tasks 07695 ; } 07696 ;no_vpu: 07697 ;// priority: 2. asudd 07698 ; if(ASUDD && isEvent(evtASUDD)){ //workaround event ASUDD from AS UDD task 0025C0 A438 07699 m496 BTFSS 0x38,ASUDD,0 0025C2 D043 07700 BRA m505 0025C4 AC3F 07701 BTFSS EventStates+1,6,0 0025C6 D041 07702 BRA m505 07703 ; clearEvent(evtASUDD); 0025C8 9C3F 07704 BCF EventStates+1,6,0 07705 ; // wait TVP finish 07706 ; while(isEvent(evtTVP)) waitState(); 0025CA BE3E 07707 m497 BTFSC EventStates,7,0 0025CC 0C08 07708 RETLW 0x08 07709 ; // set new faza 07710 ; if(asudd_du_mode != 0x00 || asudd_zu_mode != 0x00){ 0025CE 0101 07711 MOVLB 0x01 0025D0 6760 07712 TSTFSZ asudd_du_mode,1 0025D2 D002 07713 BRA m498 0025D4 5361 07714 MOVF asudd_zu_mode,1,1 0025D6 E035 07715 BZ m504 07716 ; if(asudd_du_mode != 0x00) as_du=YES; 0025D8 6760 07717 m498 TSTFSZ asudd_du_mode,1 0025DA 8A20 07718 BSF 0x20,as_du,0 07719 ; if(asudd_zu_mode != 0x00) as_zu=YES; 0025DC 6761 07720 TSTFSZ asudd_zu_mode,1 0025DE 8221 07721 BSF 0x21,as_zu,0 07722 ; if(asudd_faze == ASDCMD_OS){ 0025E0 0E0F 07723 MOVLW 0x0F 0025E2 6362 07724 CPFSEQ asudd_faze,1 0025E4 D007 07725 BRA m499 07726 ; stateJM=0; stateOS=1; 0025E6 9814 07727 BCF 0x14,stateJM,0 0025E8 8A14 07728 BSF 0x14,stateOS,0 07729 ; current_prg=0xff; // no pr evious programm 0025EA 682A 07730 SETF current_prg,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 150 LOC OBJECT CODE LINE SOURCE TEXT VALUE 07731 ; prev_faza=0xff; // no pr evious faza 0025EC 682F 07732 SETF prev_faza,0 07733 ; clearTask(ProgrammStep); 0025EE 0E80 07734 MOVLW 0x80 0025F0 6E5D 07735 MOVWF _TaskS5,0 07736 ; } 07737 ; else if(asudd_faze == ASDCMD_JM){ 0025F2 D025 07738 BRA m503 0025F4 0E0E 07739 m499 MOVLW 0x0E 0025F6 6362 07740 CPFSEQ asudd_faze,1 0025F8 D004 07741 BRA m500 07742 ; stateJM=1; 0025FA 8814 07743 BSF 0x14,stateJM,0 07744 ; clearTask(ProgrammStep); 0025FC 0E80 07745 MOVLW 0x80 0025FE 6E5D 07746 MOVWF _TaskS5,0 07747 ; } 07748 ; else if(asudd_faze <= FazesCnt){ 002600 D01E 07749 BRA m503 002602 5162 07750 m500 MOVF asudd_faze,W,1 002604 5C3A 07751 SUBWF FazesCnt,W,0 002606 E31B 07752 BNC m503 07753 ; if(asudd_faze == 0) continue; 002608 5362 07754 MOVF asudd_faze,1,1 00260A B4D8 07755 BTFSC 0xFD8,Zero_,0 00260C D0A5 07756 BRA m523 07757 ; // must work at least Tmin (3 sec) 07758 ; if(isEvent(evTempSec) && tmp_sec<3) delay(T_SVETOF, 2000); 00260E 0100 07759 MOVLB 0x00 002610 AA3F 07760 BTFSS EventStates+1,5,0 002612 D00C 07761 BRA m502 002614 0E03 07762 MOVLW 0x03 002616 0102 07763 MOVLB 0x02 002618 610B 07764 CPFSLT tmp_sec,1 00261A D008 07765 BRA m502 00261C 0ED0 07766 MOVLW 0xD0 00261E 0100 07767 MOVLB 0x00 002620 6FD6 07768 MOVWF softTimer+12,1 002622 0E07 07769 MOVLW 0x07 002624 6FD7 07770 MOVWF softTimer+13,1 002626 9C56 07771 BCF tTimeout,6,0 002628 AC56 07772 m501 BTFSS tTimeout,6,0 00262A 0C09 07773 RETLW 0x09 07774 ; current_faza = asudd_faze-1; 00262C 0101 07775 m502 MOVLB 0x01 00262E 0562 07776 DECF asudd_faze,W,1 002630 6E2C 07777 MOVWF current_faza,0 07778 ; clearTask(ProgrammStep); 002632 0E80 07779 MOVLW 0x80 002634 6E5D 07780 MOVWF _TaskS5,0 07781 ; startTask(MakePromTact); MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 151 LOC OBJECT CODE LINE SOURCE TEXT VALUE 002636 6A5E 07782 CLRF _TaskS6,0 07783 ; tmp_sec=0; 002638 0102 07784 MOVLB 0x02 00263A 6B0B 07785 CLRF tmp_sec,1 07786 ; setEvent(evTempSec); 00263C 8A3F 07787 BSF EventStates+1,5,0 07788 ; } 07789 ; }else{ 00263E 0100 07790 m503 MOVLB 0x00 002640 D08B 07791 BRA m523 07792 ; as_du=NO; as_zu=NO; 002642 9A20 07793 m504 BCF 0x20,as_du,0 002644 9221 07794 BCF 0x21,as_zu,0 07795 ; clearEvent(evTempSec); 002646 9A3F 07796 BCF EventStates+1,5,0 07797 ; goto no_asudd; 002648 0100 07798 MOVLB 0x00 07799 ; } 07800 ; continue; // skip others events and tasks 07801 ; } 07802 ;no_asudd: 07803 ;// priority: 3. GSM 07804 ; if(GSMGPRS && isEvent(evtGSMRCV)){ //workaround event GSM from G SM task 00264A A638 07805 m505 BTFSS 0x38,GSMGPRS,0 00264C D03E 07806 BRA m515 00264E A03E 07807 BTFSS EventStates,0,0 002650 D03C 07808 BRA m515 07809 ; clearEvent(evtGSMRCV); 002652 903E 07810 BCF EventStates,0,0 07811 ; // decode svetofor command from SMS 07812 ; as_ru=0; ; // for asudd 002654 9C20 07813 BCF 0x20,as_ru,0 07814 ; stateOS=0; 002656 9A14 07815 BCF 0x14,stateOS,0 07816 ; switch(sms_msg){ 002658 504E 07817 MOVF sms_msg,W,0 00265A 0A02 07818 XORLW 0x02 00265C E00B 07819 BZ m506 00265E 0A03 07820 XORLW 0x03 002660 E011 07821 BZ m507 002662 0A07 07822 XORLW 0x07 002664 E010 07823 BZ m508 002666 0A05 07824 XORLW 0x05 002668 E00F 07825 BZ m509 00266A 0A06 07826 XORLW 0x06 00266C E012 07827 BZ m510 00266E 0A01 07828 XORLW 0x01 002670 E01D 07829 BZ m512 002672 D023 07830 BRA m513 07831 ; case(CCMD_TURN_OFF):{as_du=1; stateJM=0; stateOS =1; 002674 8A20 07832 m506 BSF 0x20,as_du,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 152 LOC OBJECT CODE LINE SOURCE TEXT VALUE 002676 9814 07833 BCF 0x14,stateJM,0 002678 8A14 07834 BSF 0x14,stateOS,0 07835 ; current_prg=0xff; // no previous programm 00267A 682A 07836 SETF current_prg,0 07837 ; prev_faza=0xff; // no previous faza 00267C 682F 07838 SETF prev_faza,0 07839 ; clearTask(ProgrammStep); break;} 00267E 0E80 07840 MOVLW 0x80 002680 6E5D 07841 MOVWF _TaskS5,0 002682 D01D 07842 BRA m514 07843 ; case(CCMD_TURN_ON): restartTask(); 002684 0C00 07844 m507 RETLW 0x00 07845 ; case(CCMD_SET_WORK): restartTask(); 002686 0C00 07846 m508 RETLW 0x00 07847 ; case(CCMD_SET_JM): {as_du=1; stateJM=1; cle arTask(ProgrammStep); break;} 002688 8A20 07848 m509 BSF 0x20,as_du,0 00268A 8814 07849 BSF 0x14,stateJM,0 00268C 0E80 07850 MOVLW 0x80 00268E 6E5D 07851 MOVWF _TaskS5,0 002690 D016 07852 BRA m514 07853 ; case(CCMD_SET_FAZE):{ 07854 ; stateJM=0; as_du=1; 002692 9814 07855 m510 BCF 0x14,stateJM,0 002694 8A20 07856 BSF 0x20,as_du,0 07857 ; while(taskBusy(MakePromTact)) waitState( ); // wait for finish promtact 002696 AE5E 07858 m511 BTFSS _TaskS6,7,0 002698 0C0A 07859 RETLW 0x0A 07860 ; if(SMS_DAT < FazesCnt){ 00269A 503A 07861 MOVF FazesCnt,W,0 00269C 6164 07862 CPFSLT rs_buff+4,1 00269E D00F 07863 BRA m514 07864 ; current_faza=SMS_DAT; 0026A0 C064 F02C 07865 MOVFF rs_buff+4,current_faza 07866 ; clearTask(ProgrammStep); 0026A4 0E80 07867 MOVLW 0x80 0026A6 6E5D 07868 MOVWF _TaskS5,0 07869 ; startTask(MakePromTact); 0026A8 6A5E 07870 CLRF _TaskS6,0 07871 ; } 07872 ; break;} 0026AA D009 07873 BRA m514 07874 ; case(CCMD_SET_PRG): { 07875 ; setEvent(evtSMSPRG); 0026AC 8240 07876 m512 BSF EventStates+2,1,0 07877 ; as_du=0; stateJM=0; 0026AE 9A20 07878 BCF 0x20,as_du,0 0026B0 9814 07879 BCF 0x14,stateJM,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 153 LOC OBJECT CODE LINE SOURCE TEXT VALUE 07880 ; current_step=0; 0026B2 6A2B 07881 CLRF current_step,0 07882 ; current_prg=SMS_DAT; 0026B4 C064 F02A 07883 MOVFF rs_buff+4,current_prg 07884 ; goto no_sms;} 0026B8 D008 07885 BRA m515 07886 ; default: { 07887 ; if(as_du==1) break; // 0026BA AA20 07888 m513 BTFSS 0x20,as_du,0 0026BC D006 07889 BRA m515 07890 ; else goto no_sms;} // maybe err or? 07891 ; } 07892 ; while(taskBusy(MakePromTact)) waitState(); // wait for f inish promtact 0026BE AE5E 07893 m514 BTFSS _TaskS6,7,0 0026C0 0C0B 07894 RETLW 0x0B 07895 ; as_faza = current_faza&0x07; // for asudd 0026C2 0E07 07896 MOVLW 0x07 0026C4 142C 07897 ANDWF current_faza,W,0 0026C6 6E22 07898 MOVWF as_faza,0 07899 ; continue; // skip others events and tasks 0026C8 D047 07900 BRA m523 07901 ; } 07902 ;no_sms: 07903 ; if(stateJM) continue; // skip programm execution 0026CA B814 07904 m515 BTFSC 0x14,stateJM,0 0026CC D045 07905 BRA m523 07906 ; if(as_du) continue; // if remote control, skip programm 0026CE BA20 07907 BTFSC 0x20,as_du,0 0026D0 D043 07908 BRA m523 07909 ; 07910 ;// priority: 4. TVP 07911 ; if(Peshehodik && KstateTVP && timeout(T_TVP)){ // prev TVP finis hed 0026D2 A238 07912 BTFSS 0x38,Peshehodik,0 0026D4 D029 07913 BRA m520 0026D6 A214 07914 BTFSS 0x14,KstateTVP,0 0026D8 D027 07915 BRA m520 0026DA A057 07916 BTFSS tTimeout+1,0,0 0026DC D025 07917 BRA m520 07918 ; // delay for TVP timeout 07919 ; PeshehodnikDelay = mem_read_byte(_PESHEHOD_DELAY); 0026DE 0E04 07920 MOVLW 0x04 0026E0 6E0C 07921 MOVWF addr_2,0 0026E2 6A0D 07922 CLRF addr_2+1,0 0026E4 EC48 F001 07923 CALL mem_read_byte 0026E8 6E3C 07924 MOVWF PeshehodnikDelay,0 07925 ; PeshehodnikDelay++; 0026EA 2A3C 07926 INCF PeshehodnikDelay,1,0 07927 ; while(--PeshehodnikDelay) delay(T_TVP, 1000); 0026EC 4E3C 07928 m516 DCFSNZ PeshehodnikDelay,1,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 154 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0026EE D008 07929 BRA m518 0026F0 0EE8 07930 MOVLW 0xE8 0026F2 6FDA 07931 MOVWF softTimer+16,1 0026F4 0E03 07932 MOVLW 0x03 0026F6 6FDB 07933 MOVWF softTimer+17,1 0026F8 9057 07934 BCF tTimeout+1,0,0 0026FA B057 07935 m517 BTFSC tTimeout+1,0,0 0026FC D7F7 07936 BRA m516 0026FE 0C0C 07937 RETLW 0x0C 07938 ; read_prg_tvp_step(current_prg); 002700 502A 07939 m518 MOVF current_prg,W,0 002702 EC9A F002 07940 CALL read_prg_tvp_step 07941 ; current_step = tvp_step; // get special T VP step for this programm 002706 C030 F02B 07942 MOVFF tvp_step,current_step 07943 ; setEvent(evtTVP); 00270A 8E3E 07944 BSF EventStates,7,0 07945 ; read_prg_step(current_prg, current_step); 00270C C02A F005 07946 MOVFF current_prg,prg 002710 502B 07947 MOVF current_step,W,0 002712 EC6A F002 07948 CALL read_prg_step 07949 ; // make tranzition from prev faza to current 07950 ; startTask(MakePromTact); 002716 6A5E 07951 CLRF _TaskS6,0 07952 ; while(taskBusy(MakePromTact)) waitState(); 002718 AE5E 07953 m519 BTFSS _TaskS6,7,0 00271A 0C0D 07954 RETLW 0x0D 07955 ; startTask(ProgrammStep); 00271C 6A5D 07956 CLRF _TaskS5,0 07957 ; startTimer(T_TVP, 10000); // tvp delay for 10 sec (???) 00271E 0E10 07958 MOVLW 0x10 002720 6FDA 07959 MOVWF softTimer+16,1 002722 0E27 07960 MOVLW 0x27 002724 6FDB 07961 MOVWF softTimer+17,1 002726 9057 07962 BCF tTimeout+1,0,0 07963 ; } 07964 ; if(timeout(T_TVP)) clearEvent(evtTVP); // when TVP timeout finis hed 002728 B057 07965 m520 BTFSC tTimeout+1,0,0 00272A 9E3E 07966 BCF EventStates,7,0 07967 ; 07968 ;// priority: 5. programm next step 07969 ; if(taskSuspended(ProgrammStep)) { // if task programm step finished 00272C AE5D 07970 BTFSS _TaskS5,7,0 00272E D014 07971 BRA m523 07972 ; if(!isEvent(evtTVP)){ // if TVP fired - don't get new programm, force work TVP steps 002730 BE3E 07973 BTFSC EventStates,7,0 002732 D00D 07974 BRA m521 07975 ; char new_prg=find_curr_progr(); // try to get ne MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 155 LOC OBJECT CODE LINE SOURCE TEXT VALUE w alarm event 002734 EC41 F018 07976 CALL find_curr_progr 002738 6E05 07977 MOVWF new_prg,0 07978 ; if(isEvent(evtSMSPRG)){ 00273A B240 07979 BTFSC EventStates+2,1,0 07980 ; new_prg=current_prg; // prg number from sms 00273C C02A F005 07981 MOVFF current_prg,new_prg 07982 ; } 07983 ; if(new_prg!=current_prg){ 002740 5005 07984 MOVF new_prg,W,0 002742 182A 07985 XORWF current_prg,W,0 002744 E004 07986 BZ m521 07987 ; current_prg=new_prg; // get n ew programm 002746 C005 F02A 07988 MOVFF new_prg,current_prg 07989 ; current_step=0; 00274A 6A2B 07990 CLRF current_step,0 07991 ; startTask(ProgrammStep); 00274C 6A5D 07992 CLRF _TaskS5,0 07993 ; } 07994 ; } 07995 ; if(current_prg != 0xff){ // if programm p resent->normal work 00274E 482A 07996 m521 INFSNZ current_prg,W,0 002750 D002 07997 BRA m522 07998 ; resumeTask(ProgrammStep); 002752 9E5D 07999 BCF _TaskS5,7,0 08000 ; }else{ 002754 D001 08001 BRA m523 08002 ; YellowBlink(); // if no programm defined, may be AllOff? 002756 DB96 08003 m522 RCALL YellowBlink 08004 ; } 08005 ; } 08006 ; }while(TRUE); 002758 0100 08007 m523 MOVLB 0x00 00275A D6B1 08008 BRA m474 08009 ; 08010 ; restartTask(); 08011 ;} 08012 ; 08013 ;Task ProgrammStep(void){ 00275C 08014 ProgrammStep 00275C 0E05 08015 MOVLW 0x05 00275E 5C5D 08016 SUBWF _TaskS5,W,0 002760 B0D8 08017 BTFSC 0xFD8,Carry,0 002762 0C00 08018 RETLW 0x00 002764 50F9 08019 MOVF PCL,W,0 002766 445D 08020 RLNCF _TaskS5,W,0 002768 26F9 08021 ADDWF PCL,1,0 00276A D003 08022 BRA m524 00276C D033 08023 BRA m526 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 156 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00276E D03D 08024 BRA m529 002770 D048 08025 BRA m531 08026 ; // get current faza from [prg, step] to Faza structure first time only 08027 ; do{ 08028 ; read_prg_step(current_prg, current_step); 002772 C02A F005 08029 m524 MOVFF current_prg,prg 002776 502B 08030 MOVF current_step,W,0 002778 EC6A F002 08031 CALL read_prg_step 08032 ; as_ru=0; as_du=0; //for asudd 00277C 9C20 08033 BCF 0x20,as_ru,0 00277E 9A20 08034 BCF 0x20,as_du,0 08035 ; current_step = next_step; 002780 C02E F02B 08036 MOVFF next_step,current_step 08037 ; prev_faza=current_faza; 002784 C02C F02F 08038 MOVFF current_faza,prev_faza 08039 ; read_faza(current_faza); 002788 502C 08040 MOVF current_faza,W,0 00278A ECB6 F002 08041 CALL read_faza 08042 ;#ifdef EMUL 08043 ; if(current_faza==0) _TESTPIN=1; 00278E 522C 08044 MOVF current_faza,1,0 002790 B4D8 08045 BTFSC 0xFD8,Zero_,0 002792 8282 08046 BSF 0xF82,_TESTPIN,0 08047 ;#endif 08048 ; // show it 08049 ; plan2lamps(); 002794 EC78 F018 08050 CALL plan2lamps 08051 ; // delay for faza delay value 08052 ; if(current_delay > 0){ 002798 522D 08053 MOVF current_delay,1,0 00279A 0100 08054 MOVLB 0x00 00279C E029 08055 BZ m530 08056 ; if(GSMGPRS && (faza2change==current_faza) && CHFTime()){ 00279E A638 08057 BTFSS 0x38,GSMGPRS,0 0027A0 D008 08058 BRA m525 0027A2 5032 08059 MOVF faza2change,W,0 0027A4 622C 08060 CPFSEQ current_faza,0 0027A6 D005 08061 BRA m525 0027A8 DB11 08062 RCALL CHFTime 0027AA E303 08063 BNC m525 08064 ; current_delay=fazaRemoteDelay+1; 0027AC 2833 08065 INCF fazaRemoteDelay,W,0 0027AE 6E2D 08066 MOVWF current_delay,0 08067 ; } 08068 ; else if(GreenWave && isGWOnDirection(GWmask)){ 0027B0 D015 08069 BRA m528 0027B2 A038 08070 m525 BTFSS 0x38,GreenWave,0 0027B4 D012 08071 BRA m527 0027B6 503D 08072 MOVF GWmask,W,0 0027B8 0101 08073 MOVLB 0x01 0027BA DAED 08074 RCALL isGWOnDirection 0027BC 0100 08075 MOVLB 0x00 0027BE E30D 08076 BNC m527 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 157 LOC OBJECT CODE LINE SOURCE TEXT VALUE 08077 ; setEvent(evtGWSND); 0027C0 8640 08078 BSF EventStates+2,3,0 08079 ; TMR3IE=OFF; // stop diff GW counter 0027C2 92A0 08080 BCF 0xFA0,TMR3IE,0 08081 ; CalcCorrectGW(); 0027C4 0103 08082 MOVLB 0x03 0027C6 DA33 08083 RCALL CalcCorrectGW 08084 ; delay(T_SVETOF, GWCorrCntMs); 0027C8 C302 F0D6 08085 MOVFF GWCorrCntMs,softTimer+12 0027CC C303 F0D7 08086 MOVFF GWCorrCntMs+1,softTimer+13 0027D0 9C56 08087 BCF tTimeout,6,0 0027D2 0100 08088 MOVLB 0x00 0027D4 BC56 08089 m526 BTFSC tTimeout,6,0 0027D6 D002 08090 BRA m528 0027D8 0C01 08091 RETLW 0x01 08092 ; } 08093 ; else{current_delay++;} 0027DA 2A2D 08094 m527 INCF current_delay,1,0 08095 ; while(--current_delay) delay(T_SVETOF, 1000); 0027DC 4E2D 08096 m528 DCFSNZ current_delay,1,0 0027DE D008 08097 BRA m530 0027E0 0EE8 08098 MOVLW 0xE8 0027E2 6FD6 08099 MOVWF softTimer+12,1 0027E4 0E03 08100 MOVLW 0x03 0027E6 6FD7 08101 MOVWF softTimer+13,1 0027E8 9C56 08102 BCF tTimeout,6,0 0027EA BC56 08103 m529 BTFSC tTimeout,6,0 0027EC D7F7 08104 BRA m528 0027EE 0C02 08105 RETLW 0x02 08106 ; } 08107 ;#ifdef EMUL 08108 ; if(current_faza==0) _TESTPIN=0; 0027F0 522C 08109 m530 MOVF current_faza,1,0 0027F2 B4D8 08110 BTFSC 0xFD8,Zero_,0 0027F4 9282 08111 BCF 0xF82,_TESTPIN,0 08112 ;#endif 08113 ; // get next faza number from step 08114 ; read_prg_step(current_prg, current_step); 0027F6 C02A F005 08115 MOVFF current_prg,prg 0027FA 502B 08116 MOVF current_step,W,0 0027FC EC6A F002 08117 CALL read_prg_step 08118 ; // make tranzition from prev faza to current 08119 ; startTask(MakePromTact); 002800 6A5E 08120 CLRF _TaskS6,0 08121 ; while(taskBusy(MakePromTact)) waitState(); 002802 AE5E 08122 m531 BTFSS _TaskS6,7,0 002804 0C03 08123 RETLW 0x03 08124 ; waitUntilResume(); 002806 0C84 08125 RETLW 0x84 08126 ; }while(TRUE); 08127 ;} 08128 ; MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 158 LOC OBJECT CODE LINE SOURCE TEXT VALUE 08129 ;// make promtact from prev_faza to current_faza 08130 ;// variables must to be initialized 08131 ;// this must be finished -> not interruptable! 08132 ;Task MakePromTact(void){ 002808 08133 MakePromTact 002808 0E03 08134 MOVLW 0x03 00280A 5C5E 08135 SUBWF _TaskS6,W,0 00280C B0D8 08136 BTFSC 0xFD8,Carry,0 00280E 0C00 08137 RETLW 0x00 002810 50F9 08138 MOVF PCL,W,0 002812 445E 08139 RLNCF _TaskS6,W,0 002814 26F9 08140 ADDWF PCL,1,0 002816 D002 08141 BRA m532 002818 D003 08142 BRA m534 00281A D023 08143 BRA m537 08144 ; prom_step=0; 00281C 6A31 08145 m532 CLRF prom_step,0 08146 ; do{ 08147 ; waitState(); 00281E 0C01 08148 m533 RETLW 0x01 08149 ; if(prev_faza>FazesCnt || current_faza>FazesCnt || prev_faza==cur rent_faza) break; 002820 502F 08150 m534 MOVF prev_faza,W,0 002822 5C3A 08151 SUBWF FazesCnt,W,0 002824 E324 08152 BNC m539 002826 502C 08153 MOVF current_faza,W,0 002828 5C3A 08154 SUBWF FazesCnt,W,0 00282A E321 08155 BNC m539 00282C 502F 08156 MOVF prev_faza,W,0 00282E 622C 08157 CPFSEQ current_faza,0 002830 D001 08158 BRA m535 002832 D01D 08159 BRA m539 08160 ; as_state1 = as_ctrl_prm; // for asudd 002834 0E0D 08161 m535 MOVLW 0x0D 002836 6E22 08162 MOVWF as_state1,0 08163 ; read_promtact(prev_faza, current_faza, prom_step); 002838 C02F F005 08164 MOVFF prev_faza,from_faza 00283C C02C F006 08165 MOVFF current_faza,to_faza 002840 5031 08166 MOVF prom_step,W,0 002842 ECCD F002 08167 CALL read_promtact 08168 ; prom_step++; 002846 2A31 08169 INCF prom_step,1,0 08170 ; // show promtact 08171 ; if(current_delay == 0) continue; 002848 522D 08172 MOVF current_delay,1,0 00284A E00E 08173 BZ m538 08174 ; plan2lamps(); 00284C EC78 F018 08175 CALL plan2lamps 08176 ; // delay for promtact delay value 08177 ; current_delay++; 002850 2A2D 08178 INCF current_delay,1,0 08179 ; while(--current_delay) delay(T_SVETOF, 1000); 002852 0100 08180 MOVLB 0x00 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 159 LOC OBJECT CODE LINE SOURCE TEXT VALUE 002854 4E2D 08181 m536 DCFSNZ current_delay,1,0 002856 D008 08182 BRA m538 002858 0EE8 08183 MOVLW 0xE8 00285A 6FD6 08184 MOVWF softTimer+12,1 00285C 0E03 08185 MOVLW 0x03 00285E 6FD7 08186 MOVWF softTimer+13,1 002860 9C56 08187 BCF tTimeout,6,0 002862 BC56 08188 m537 BTFSC tTimeout,6,0 002864 D7F7 08189 BRA m536 002866 0C02 08190 RETLW 0x02 08191 ; }while(prom_step < 4); 002868 0E03 08192 m538 MOVLW 0x03 00286A 6431 08193 CPFSGT prom_step,0 00286C D7D8 08194 BRA m533 08195 ; read_faza(current_faza); 00286E 502C 08196 m539 MOVF current_faza,W,0 002870 ECB6 F002 08197 CALL read_faza 08198 ; prev_faza=current_faza; 002874 C02C F02F 08199 MOVFF current_faza,prev_faza 08200 ; // show new faza 08201 ; plan2lamps(); 002878 EC78 F018 08202 CALL plan2lamps 08203 ;} 00287C 0100 08204 MOVLB 0x00 00287E 0C80 08205 RETLW 0x80 08206 ; 08207 ;Task ControlLamps(void){ 002880 08208 ControlLamps 002880 0E06 08209 MOVLW 0x06 002882 5DE3 08210 SUBWF _TaskS9,W,1 002884 B0D8 08211 BTFSC 0xFD8,Carry,0 002886 0C00 08212 RETLW 0x00 002888 50F9 08213 MOVF PCL,W,0 00288A 45E3 08214 RLNCF _TaskS9,W,1 00288C 26F9 08215 ADDWF PCL,1,0 00288E D005 08216 BRA m540 002890 D060 08217 BRA m550 002892 D071 08218 BRA m551 002894 D116 08219 BRA m582 002896 D12A 08220 BRA m584 002898 D15D 08221 BRA m591 08222 ; static char ln; ln=0; 00289A 6BFD 08223 m540 CLRF ln,1 08224 ;// test green lamps for conflict 08225 ; static bit flag; 08226 ; if(Boards[0].health[2]==_SYM_CLOS && Boards[0].conflict.5) {ln=2; Boards[0].error_green++;} 00289C 0EB0 08227 MOVLW 0xB0 00289E 0101 08228 MOVLB 0x01 0028A0 630A 08229 CPFSEQ Boards+10,1 0028A2 D008 08230 BRA m541 0028A4 AB03 08231 BTFSS Boards+3,5,1 0028A6 D006 08232 BRA m541 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 160 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0028A8 0E02 08233 MOVLW 0x02 0028AA 0100 08234 MOVLB 0x00 0028AC 6FFD 08235 MOVWF ln,1 0028AE 0101 08236 MOVLB 0x01 0028B0 2B11 08237 INCF Boards+17,1,1 08238 ; else if(Boards[0].error_green>0) Boards[0].error_green--; 0028B2 D002 08239 BRA m542 0028B4 6711 08240 m541 TSTFSZ Boards+17,1 0028B6 0711 08241 DECF Boards+17,1,1 08242 ; if(Boards[1].health[2]==_SYM_CLOS && Boards[1].conflict.5) {ln=6; Boards[1].error_green++;} 0028B8 0EB0 08243 m542 MOVLW 0xB0 0028BA 631C 08244 CPFSEQ Boards+28,1 0028BC D008 08245 BRA m543 0028BE AB15 08246 BTFSS Boards+21,5,1 0028C0 D006 08247 BRA m543 0028C2 0E06 08248 MOVLW 0x06 0028C4 0100 08249 MOVLB 0x00 0028C6 6FFD 08250 MOVWF ln,1 0028C8 0101 08251 MOVLB 0x01 0028CA 2B23 08252 INCF Boards+35,1,1 08253 ; else if(Boards[1].error_green>0) Boards[1].error_green--; 0028CC D002 08254 BRA m544 0028CE 6723 08255 m543 TSTFSZ Boards+35,1 0028D0 0723 08256 DECF Boards+35,1,1 08257 ; if(Boards[2].health[2]==_SYM_CLOS && Boards[2].conflict.5) {ln=10; Boards[2].error_green++;} 0028D2 0EB0 08258 m544 MOVLW 0xB0 0028D4 632E 08259 CPFSEQ Boards+46,1 0028D6 D008 08260 BRA m545 0028D8 AB27 08261 BTFSS Boards+39,5,1 0028DA D006 08262 BRA m545 0028DC 0E0A 08263 MOVLW 0x0A 0028DE 0100 08264 MOVLB 0x00 0028E0 6FFD 08265 MOVWF ln,1 0028E2 0101 08266 MOVLB 0x01 0028E4 2B35 08267 INCF Boards+53,1,1 08268 ; else if(Boards[2].error_green>0) Boards[2].error_green--; 0028E6 D002 08269 BRA m546 0028E8 6735 08270 m545 TSTFSZ Boards+53,1 0028EA 0735 08271 DECF Boards+53,1,1 08272 ; if(Boards[3].health[2]==_SYM_CLOS && Boards[3].conflict.5) {ln=14; Boards[3].error_green++;} 0028EC 0EB0 08273 m546 MOVLW 0xB0 0028EE 6340 08274 CPFSEQ Boards+64,1 0028F0 D008 08275 BRA m547 0028F2 AB39 08276 BTFSS Boards+57,5,1 0028F4 D006 08277 BRA m547 0028F6 0E0E 08278 MOVLW 0x0E 0028F8 0100 08279 MOVLB 0x00 0028FA 6FFD 08280 MOVWF ln,1 0028FC 0101 08281 MOVLB 0x01 0028FE 2B47 08282 INCF Boards+71,1,1 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 161 LOC OBJECT CODE LINE SOURCE TEXT VALUE 08283 ; else if(Boards[3].error_green>0) Boards[3].error_green--; 002900 D002 08284 BRA m548 002902 6747 08285 m547 TSTFSZ Boards+71,1 002904 0747 08286 DECF Boards+71,1,1 08287 ; if(ln!=0){ 002906 0100 08288 m548 MOVLB 0x00 002908 53FD 08289 MOVF ln,1,1 00290A E036 08290 BZ m552 08291 ; if( Boards[0].error_green>=0x03 || 00290C 0E03 08292 MOVLW 0x03 00290E 0101 08293 MOVLB 0x01 002910 6111 08294 CPFSLT Boards+17,1 002912 D007 08295 BRA m549 08296 ; Boards[1].error_green>=0x03 || 002914 6123 08297 CPFSLT Boards+35,1 002916 D005 08298 BRA m549 08299 ; Boards[2].error_green>=0x03 || 002918 6135 08300 CPFSLT Boards+53,1 00291A D003 08301 BRA m549 08302 ; Boards[3].error_green>=0x03){ 00291C 0E02 08303 MOVLW 0x02 00291E 6547 08304 CPFSGT Boards+71,1 002920 D02B 08305 BRA m552 08306 ; AvarExpl=LE_SCL0+ln; 002922 0E2A 08307 m549 MOVLW 0x2A 002924 0100 08308 MOVLB 0x00 002926 25FD 08309 ADDWF ln,W,1 002928 0102 08310 MOVLB 0x02 00292A 6F05 08311 MOVWF AvarExpl,1 08312 ; AvarGroup=(ln+1)/4; 00292C 0100 08313 MOVLB 0x00 00292E 29FD 08314 INCF ln,W,1 002930 42E8 08315 RRNCF WREG,1,0 002932 42E8 08316 RRNCF WREG,1,0 002934 0B3F 08317 ANDLW 0x3F 002936 0102 08318 MOVLB 0x02 002938 6F06 08319 MOVWF AvarGroup,1 08320 ; //++++++++++++++++ 08321 ; // all off 08322 ; AllOff(); 00293A DAC6 08323 RCALL AllOff 08324 ; clearTask(SvLogick); 00293C 0E80 08325 MOVLW 0x80 00293E 6E5C 08326 MOVWF _TaskS4,0 08327 ; clearTask(ProgrammStep); 002940 6E5D 08328 MOVWF _TaskS5,0 08329 ; clearTask(MakePromTact); 002942 6E5E 08330 MOVWF _TaskS6,0 08331 ; clearTask(GreenWaveChain); 002944 0100 08332 MOVLB 0x00 002946 6FE4 08333 MOVWF _TaskS10,1 08334 ; delay(T_LCNTRL, 1000); MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 162 LOC OBJECT CODE LINE SOURCE TEXT VALUE 002948 0EE8 08335 MOVLW 0xE8 00294A 6FD4 08336 MOVWF softTimer+10,1 00294C 0E03 08337 MOVLW 0x03 00294E 6FD5 08338 MOVWF softTimer+11,1 002950 9A56 08339 BCF tTimeout,5,0 002952 0101 08340 m550 MOVLB 0x01 002954 AA56 08341 BTFSS tTimeout,5,0 002956 0C01 08342 RETLW 0x01 08343 ; clearTask(Ch_server); 002958 0E80 08344 MOVLW 0x80 00295A 0100 08345 MOVLB 0x00 00295C 6FEF 08346 MOVWF _TaskS14,1 08347 ; TURN_OFF_GR 00295E 8E81 08348 BSF 0xF81,GR_ON,0 08349 ; setEvent(evtAVARIA); 002960 843F 08350 BSF EventStates+1,2,0 08351 ; log_event(LE_SCL0+ln); 002962 0E2A 08352 MOVLW 0x2A 002964 25FD 08353 ADDWF ln,W,1 002966 EC6B F001 08354 CALL log_event 08355 ;err: 08356 ; clearTask(SvLogick); 00296A 0E80 08357 MOVLW 0x80 00296C 6E5C 08358 MOVWF _TaskS4,0 08359 ; clearTask(ProgrammStep); 00296E 6E5D 08360 MOVWF _TaskS5,0 08361 ; clearTask(MakePromTact); 002970 6E5E 08362 MOVWF _TaskS6,0 08363 ; clearTask(GreenWaveChain); 002972 0100 08364 MOVLB 0x00 002974 6FE4 08365 MOVWF _TaskS10,1 08366 ; // endless loop here 08367 ; // all communicate tasks works normally 08368 ; while(TRUE) waitState(); 002976 0C02 08369 m551 RETLW 0x02 08370 ; } 08371 ; } 08372 ;// test reds 08373 ; // 0x07 -> 0.25sec*8=2 sec timeout 08374 ; if(Boards[0].health[0]==_LAMP_BR && Boards[0].live.7){ 002978 0EA0 08375 m552 MOVLW 0xA0 00297A 0101 08376 MOVLB 0x01 00297C 6308 08377 CPFSEQ Boards+8,1 00297E D006 08378 BRA m553 002980 AF02 08379 BTFSS Boards+2,7,1 002982 D004 08380 BRA m553 08381 ; Boards[0].error_red++; 002984 2B10 08382 INCF Boards+16,1,1 08383 ; if(Carry) Boards[0].error_red=0xff; 002986 E304 08384 BNC m554 002988 6910 08385 SETF Boards+16,1 08386 ; } 08387 ; else Boards[0].error_red /= 2; MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 163 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00298A D002 08388 BRA m554 00298C 90D8 08389 m553 BCF 0xFD8,Carry,0 00298E 3310 08390 RRCF Boards+16,1,1 08391 ;//if(Boards[0].error_red>0) Boards[0].error_red-- 08392 ; if(Boards[1].health[0]==_LAMP_BR && Boards[1].live.7) { 002990 0EA0 08393 m554 MOVLW 0xA0 002992 631A 08394 CPFSEQ Boards+26,1 002994 D006 08395 BRA m555 002996 AF14 08396 BTFSS Boards+20,7,1 002998 D004 08397 BRA m555 08398 ; Boards[1].error_red++; 00299A 2B22 08399 INCF Boards+34,1,1 08400 ; if(Carry) Boards[1].error_red=0xff; 00299C E304 08401 BNC m556 00299E 6922 08402 SETF Boards+34,1 08403 ; } 08404 ; else Boards[1].error_red /= 2; 0029A0 D002 08405 BRA m556 0029A2 90D8 08406 m555 BCF 0xFD8,Carry,0 0029A4 3322 08407 RRCF Boards+34,1,1 08408 ; 08409 ; if(Boards[2].health[0]==_LAMP_BR && Boards[2].live.7) { 0029A6 0EA0 08410 m556 MOVLW 0xA0 0029A8 632C 08411 CPFSEQ Boards+44,1 0029AA D006 08412 BRA m557 0029AC AF26 08413 BTFSS Boards+38,7,1 0029AE D004 08414 BRA m557 08415 ; Boards[2].error_red++; 0029B0 2B34 08416 INCF Boards+52,1,1 08417 ; if(Carry) Boards[2].error_red=0xff; 0029B2 E304 08418 BNC m558 0029B4 6934 08419 SETF Boards+52,1 08420 ; } 08421 ; else Boards[2].error_red /= 2; 0029B6 D002 08422 BRA m558 0029B8 90D8 08423 m557 BCF 0xFD8,Carry,0 0029BA 3334 08424 RRCF Boards+52,1,1 08425 ; 08426 ; if(Boards[3].health[0]==_LAMP_BR && Boards[3].live.7) { 0029BC 0EA0 08427 m558 MOVLW 0xA0 0029BE 633E 08428 CPFSEQ Boards+62,1 0029C0 D006 08429 BRA m559 0029C2 AF38 08430 BTFSS Boards+56,7,1 0029C4 D004 08431 BRA m559 08432 ; Boards[3].error_red++; 0029C6 2B46 08433 INCF Boards+70,1,1 08434 ; if(Carry) Boards[3].error_red=0xff; 0029C8 E304 08435 BNC m560 0029CA 6946 08436 SETF Boards+70,1 08437 ; } 08438 ; else Boards[3].error_red /= 2; 0029CC D002 08439 BRA m560 0029CE 90D8 08440 m559 BCF 0xFD8,Carry,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 164 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0029D0 3346 08441 RRCF Boards+70,1,1 08442 ; 08443 ; // 0x0f -> 0.25sec*16=4 sec timeout for recovery lamp 08444 ; // log broke red lamp 08445 ; if(Boards[0].error_red>0x07) { 0029D2 0E07 08446 m560 MOVLW 0x07 0029D4 6510 08447 CPFSGT Boards+16,1 0029D6 D009 08448 BRA m562 08449 ; if(!Red0Logged){ log_event(LE_LBR0+0); Red0Logged=1;} 0029D8 0103 08450 MOVLB 0x03 0029DA B116 08451 BTFSC 0x316,Red0Logged,1 0029DC D004 08452 BRA m561 0029DE 0E0A 08453 MOVLW 0x0A 0029E0 EC6B F001 08454 CALL log_event 0029E4 8116 08455 BSF 0x316,Red0Logged,1 08456 ; }else Red0Logged=0; 0029E6 0101 08457 m561 MOVLB 0x01 0029E8 D003 08458 BRA m563 0029EA 0103 08459 m562 MOVLB 0x03 0029EC 9116 08460 BCF 0x316,Red0Logged,1 08461 ; if(Boards[1].error_red>0x07) { 0029EE 0101 08462 MOVLB 0x01 0029F0 0E07 08463 m563 MOVLW 0x07 0029F2 6522 08464 CPFSGT Boards+34,1 0029F4 D009 08465 BRA m565 08466 ; if(!Red1Logged){ log_event(LE_LBR3+0); Red1Logged=1;} 0029F6 0103 08467 MOVLB 0x03 0029F8 B316 08468 BTFSC 0x316,Red1Logged,1 0029FA D004 08469 BRA m564 0029FC 0E0D 08470 MOVLW 0x0D 0029FE EC6B F001 08471 CALL log_event 002A02 8316 08472 BSF 0x316,Red1Logged,1 08473 ; }else Red1Logged=0; 002A04 0101 08474 m564 MOVLB 0x01 002A06 D003 08475 BRA m566 002A08 0103 08476 m565 MOVLB 0x03 002A0A 9316 08477 BCF 0x316,Red1Logged,1 08478 ; if(Boards[2].error_red>0x07) { 002A0C 0101 08479 MOVLB 0x01 002A0E 0E07 08480 m566 MOVLW 0x07 002A10 6534 08481 CPFSGT Boards+52,1 002A12 D009 08482 BRA m568 08483 ; if(!Red2Logged){ log_event(LE_LBR7+0); Red2Logged=1;} 002A14 0103 08484 MOVLB 0x03 002A16 B516 08485 BTFSC 0x316,Red2Logged,1 002A18 D004 08486 BRA m567 002A1A 0E11 08487 MOVLW 0x11 002A1C EC6B F001 08488 CALL log_event 002A20 8516 08489 BSF 0x316,Red2Logged,1 08490 ; }else Red2Logged=0; 002A22 0101 08491 m567 MOVLB 0x01 002A24 D003 08492 BRA m569 002A26 0103 08493 m568 MOVLB 0x03 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 165 LOC OBJECT CODE LINE SOURCE TEXT VALUE 002A28 9516 08494 BCF 0x316,Red2Logged,1 08495 ; if(Boards[3].error_red>0x07) { 002A2A 0101 08496 MOVLB 0x01 002A2C 0E07 08497 m569 MOVLW 0x07 002A2E 6546 08498 CPFSGT Boards+70,1 002A30 D008 08499 BRA m570 08500 ; if(!Red3Logged){ log_event(LE_LBR11+0); Red3Logged=1;} 002A32 0103 08501 MOVLB 0x03 002A34 B716 08502 BTFSC 0x316,Red3Logged,1 002A36 D007 08503 BRA m571 002A38 0E15 08504 MOVLW 0x15 002A3A EC6B F001 08505 CALL log_event 002A3E 8716 08506 BSF 0x316,Red3Logged,1 08507 ; }else Red3Logged=0; 002A40 D002 08508 BRA m571 002A42 0103 08509 m570 MOVLB 0x03 002A44 9716 08510 BCF 0x316,Red3Logged,1 08511 ; // test all red broken by direction 08512 ; static char dir; 08513 ; for(ln=0; ln<16; ln++){ 002A46 0100 08514 m571 MOVLB 0x00 002A48 6BFD 08515 CLRF ln,1 002A4A 0E10 08516 m572 MOVLW 0x10 002A4C 61FD 08517 CPFSLT ln,1 002A4E D065 08518 BRA m588 08519 ; dir=red_dirs[ln]; 002A50 EE03 F006 08520 LFSR 0,774 002A54 51FD 08521 MOVF ln,W,1 002A56 26E9 08522 ADDWF FSR0,1,0 002A58 CFEF F0FE 08523 MOVFF INDF0,dir 08524 ; flag=FALSE; 002A5C 9C21 08525 BCF 0x21,flag_2,0 08526 ; if(dir.7){ 002A5E AFFE 08527 BTFSS dir,7,1 002A60 D007 08528 BRA m574 08529 ; if( Red0Logged ) flag=TRUE; 002A62 0103 08530 MOVLB 0x03 002A64 A116 08531 BTFSS 0x316,Red0Logged,1 002A66 D002 08532 BRA m573 002A68 8C21 08533 BSF 0x21,flag_2,0 08534 ; else continue; 002A6A D002 08535 BRA m574 002A6C 0101 08536 m573 MOVLB 0x01 002A6E D052 08537 BRA m587 08538 ; } 08539 ; if(dir.6){ 002A70 0100 08540 m574 MOVLB 0x00 002A72 ADFE 08541 BTFSS dir,6,1 002A74 D007 08542 BRA m576 08543 ; if( Red1Logged ) flag=TRUE; 002A76 0103 08544 MOVLB 0x03 002A78 A316 08545 BTFSS 0x316,Red1Logged,1 002A7A D002 08546 BRA m575 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 166 LOC OBJECT CODE LINE SOURCE TEXT VALUE 002A7C 8C21 08547 BSF 0x21,flag_2,0 08548 ; else continue; 002A7E D002 08549 BRA m576 002A80 0101 08550 m575 MOVLB 0x01 002A82 D048 08551 BRA m587 08552 ; } 08553 ; if(dir.5){ 002A84 0100 08554 m576 MOVLB 0x00 002A86 ABFE 08555 BTFSS dir,5,1 002A88 D007 08556 BRA m578 08557 ; if( Red2Logged ) flag=TRUE; 002A8A 0103 08558 MOVLB 0x03 002A8C A516 08559 BTFSS 0x316,Red2Logged,1 002A8E D002 08560 BRA m577 002A90 8C21 08561 BSF 0x21,flag_2,0 08562 ; else continue; 002A92 D002 08563 BRA m578 002A94 0101 08564 m577 MOVLB 0x01 002A96 D03E 08565 BRA m587 08566 ; } 08567 ; if(dir.4){ 002A98 0100 08568 m578 MOVLB 0x00 002A9A A9FE 08569 BTFSS dir,4,1 002A9C D007 08570 BRA m580 08571 ; if( Red3Logged ) flag=TRUE; 002A9E 0103 08572 MOVLB 0x03 002AA0 A716 08573 BTFSS 0x316,Red3Logged,1 002AA2 D002 08574 BRA m579 002AA4 8C21 08575 BSF 0x21,flag_2,0 08576 ; else continue; 002AA6 D002 08577 BRA m580 002AA8 0101 08578 m579 MOVLB 0x01 002AAA D034 08579 BRA m587 08580 ; } 08581 ; if(flag){ 002AAC 0101 08582 m580 MOVLB 0x01 002AAE AC21 08583 BTFSS 0x21,flag_2,0 002AB0 D021 08584 BRA m585 08585 ;red_err: 08586 ; if(taskBusy(RedRecovery)){ 002AB2 0100 08587 MOVLB 0x00 002AB4 BFF9 08588 m581 BTFSC _TaskS17,7,1 002AB6 D009 08589 BRA m583 08590 ; delay(T_LCNTRL, 500); 002AB8 0EF4 08591 MOVLW 0xF4 002ABA 6FD4 08592 MOVWF softTimer+10,1 002ABC 0E01 08593 MOVLW 0x01 002ABE 6FD5 08594 MOVWF softTimer+11,1 002AC0 9A56 08595 BCF tTimeout,5,0 002AC2 0101 08596 m582 MOVLB 0x01 002AC4 AA56 08597 BTFSS tTimeout,5,0 002AC6 0C03 08598 RETLW 0x03 08599 ; restartTask(); MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 167 LOC OBJECT CODE LINE SOURCE TEXT VALUE 002AC8 0C00 08600 RETLW 0x00 08601 ; } 08602 ; setEvent(evtCHERROR); 002ACA 883F 08603 m583 BSF EventStates+1,4,0 08604 ; log_event(LE_DIR0+ln); 002ACC 0E6A 08605 MOVLW 0x6A 002ACE 25FD 08606 ADDWF ln,W,1 002AD0 EC6B F001 08607 CALL log_event 08608 ; YellowBlink(); 002AD4 D9D7 08609 RCALL YellowBlink 08610 ; clearTask(SvLogick); 002AD6 0E80 08611 MOVLW 0x80 002AD8 6E5C 08612 MOVWF _TaskS4,0 08613 ; clearTask(ProgrammStep); 002ADA 6E5D 08614 MOVWF _TaskS5,0 08615 ; clearTask(MakePromTact); 002ADC 6E5E 08616 MOVWF _TaskS6,0 08617 ; clearTask(GreenWaveChain); 002ADE 0100 08618 MOVLB 0x00 002AE0 6FE4 08619 MOVWF _TaskS10,1 08620 ; // try to recovery reds 08621 ; startTask(RedRecovery); 002AE2 6BF9 08622 CLRF _TaskS17,1 08623 ; delay(T_LCNTRL, 250); 002AE4 0EFA 08624 MOVLW 0xFA 002AE6 6FD4 08625 MOVWF softTimer+10,1 002AE8 6BD5 08626 CLRF softTimer+11,1 002AEA 9A56 08627 BCF tTimeout,5,0 002AEC 0101 08628 m584 MOVLB 0x01 002AEE AA56 08629 BTFSS tTimeout,5,0 002AF0 0C04 08630 RETLW 0x04 08631 ; restartTask(); 002AF2 0C00 08632 RETLW 0x00 08633 ; }else{ 08634 ; Red0Logged=0; Red1Logged=0; Red2Logged=0; Red3Logged=0; 002AF4 0103 08635 m585 MOVLB 0x03 002AF6 9116 08636 BCF 0x316,Red0Logged,1 002AF8 9316 08637 BCF 0x316,Red1Logged,1 002AFA 9516 08638 BCF 0x316,Red2Logged,1 002AFC 9716 08639 BCF 0x316,Red3Logged,1 08640 ; if(taskBusy(RedRecovery)){ 002AFE 0100 08641 MOVLB 0x00 002B00 BFF9 08642 BTFSC _TaskS17,7,1 002B02 D006 08643 BRA m586 08644 ; startTask(SvLogick); 002B04 6A5C 08645 CLRF _TaskS4,0 08646 ; log_event(LE_ERECOVERY); 002B06 0E04 08647 MOVLW 0x04 002B08 EC6B F001 08648 CALL log_event 08649 ; clearEvent(evtCHERROR); 002B0C 983F 08650 BCF EventStates+1,4,0 08651 ; } 08652 ; clearTask(RedRecovery); MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 168 LOC OBJECT CODE LINE SOURCE TEXT VALUE 002B0E 0100 08653 MOVLB 0x00 002B10 0E80 08654 m586 MOVLW 0x80 002B12 6FF9 08655 MOVWF _TaskS17,1 08656 ; } 08657 ; } 002B14 0100 08658 m587 MOVLB 0x00 002B16 2BFD 08659 INCF ln,1,1 002B18 D798 08660 BRA m572 08661 ; // test all reds broken 08662 ; if (Red0Logged && Red1Logged && Red2Logged && Red3Logged) {ln=0; goto re d_err;} 002B1A 0103 08663 m588 MOVLB 0x03 002B1C A116 08664 BTFSS 0x316,Red0Logged,1 002B1E D009 08665 BRA m589 002B20 A316 08666 BTFSS 0x316,Red1Logged,1 002B22 D007 08667 BRA m589 002B24 A516 08668 BTFSS 0x316,Red2Logged,1 002B26 D005 08669 BRA m589 002B28 A716 08670 BTFSS 0x316,Red3Logged,1 002B2A D003 08671 BRA m589 002B2C 0100 08672 MOVLB 0x00 002B2E 6BFD 08673 CLRF ln,1 002B30 D7C1 08674 BRA m581 08675 ; // 08676 ; if(isEvent(evtClearRecovery)){ // one time in hour clear red and green e rrors 002B32 0101 08677 m589 MOVLB 0x01 002B34 A63F 08678 BTFSS EventStates+1,3,0 002B36 D009 08679 BRA m590 08680 ; clearEvent(evtClearRecovery); 002B38 963F 08681 BCF EventStates+1,3,0 08682 ; Boards[0].error_red=0; 002B3A 6B10 08683 CLRF Boards+16,1 08684 ; Boards[1].error_red=0; 002B3C 6B22 08685 CLRF Boards+34,1 08686 ; Boards[2].error_red=0; 002B3E 6B34 08687 CLRF Boards+52,1 08688 ; Boards[3].error_red=0; 002B40 6B46 08689 CLRF Boards+70,1 08690 ; Boards[0].error_green=0; 002B42 6B11 08691 CLRF Boards+17,1 08692 ; Boards[1].error_green=0; 002B44 6B23 08693 CLRF Boards+35,1 08694 ; Boards[2].error_green=0; 002B46 6B35 08695 CLRF Boards+53,1 08696 ; Boards[3].error_green=0; 002B48 6B47 08697 CLRF Boards+71,1 08698 ; } 08699 ; delay(T_LCNTRL, 250); 002B4A 0EFA 08700 m590 MOVLW 0xFA 002B4C 0100 08701 MOVLB 0x00 002B4E 6FD4 08702 MOVWF softTimer+10,1 002B50 6BD5 08703 CLRF softTimer+11,1 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 169 LOC OBJECT CODE LINE SOURCE TEXT VALUE 002B52 9A56 08704 BCF tTimeout,5,0 002B54 0101 08705 m591 MOVLB 0x01 002B56 AA56 08706 BTFSS tTimeout,5,0 002B58 0C05 08707 RETLW 0x05 08708 ; restartTask(); 002B5A 0C00 08709 RETLW 0x00 08710 ;} 08711 ; 08712 ;Task RedRecovery(void){ 002B5C 08713 RedRecovery 002B5C 0E03 08714 MOVLW 0x03 002B5E 5DF9 08715 SUBWF _TaskS17,W,1 002B60 B0D8 08716 BTFSC 0xFD8,Carry,0 002B62 0C00 08717 RETLW 0x00 002B64 50F9 08718 MOVF PCL,W,0 002B66 45F9 08719 RLNCF _TaskS17,W,1 002B68 26F9 08720 ADDWF PCL,1,0 002B6A D002 08721 BRA m592 002B6C D01F 08722 BRA m597 002B6E D02B 08723 BRA m598 08724 ; if(Red0Logged){Boards[0].states[0]=_ON;} 002B70 0103 08725 m592 MOVLB 0x03 002B72 A116 08726 BTFSS 0x316,Red0Logged,1 002B74 D004 08727 BRA m593 002B76 0E01 08728 MOVLW 0x01 002B78 0101 08729 MOVLB 0x01 002B7A 6F04 08730 MOVWF Boards+4,1 08731 ; if(Red1Logged){Boards[1].states[0]=_ON;} 002B7C 0103 08732 MOVLB 0x03 002B7E A316 08733 m593 BTFSS 0x316,Red1Logged,1 002B80 D004 08734 BRA m594 002B82 0E01 08735 MOVLW 0x01 002B84 0101 08736 MOVLB 0x01 002B86 6F16 08737 MOVWF Boards+22,1 08738 ; if(Red2Logged){Boards[2].states[0]=_ON;} 002B88 0103 08739 MOVLB 0x03 002B8A A516 08740 m594 BTFSS 0x316,Red2Logged,1 002B8C D004 08741 BRA m595 002B8E 0E01 08742 MOVLW 0x01 002B90 0101 08743 MOVLB 0x01 002B92 6F28 08744 MOVWF Boards+40,1 08745 ; if(Red3Logged){Boards[3].states[0]=_ON;} 002B94 0103 08746 MOVLB 0x03 002B96 A716 08747 m595 BTFSS 0x316,Red3Logged,1 002B98 D003 08748 BRA m596 002B9A 0E01 08749 MOVLW 0x01 002B9C 0101 08750 MOVLB 0x01 002B9E 6F3A 08751 MOVWF Boards+58,1 08752 ; delay(T_TVP, 2000); 002BA0 0ED0 08753 m596 MOVLW 0xD0 002BA2 0100 08754 MOVLB 0x00 002BA4 6FDA 08755 MOVWF softTimer+16,1 002BA6 0E07 08756 MOVLW 0x07 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 170 LOC OBJECT CODE LINE SOURCE TEXT VALUE 002BA8 6FDB 08757 MOVWF softTimer+17,1 002BAA 9057 08758 BCF tTimeout+1,0,0 002BAC 0101 08759 m597 MOVLB 0x01 002BAE A057 08760 BTFSS tTimeout+1,0,0 002BB0 0C01 08761 RETLW 0x01 08762 ; Boards[0].states[0]=_OFF; 002BB2 6B04 08763 CLRF Boards+4,1 08764 ; Boards[1].states[0]=_OFF; 002BB4 6B16 08765 CLRF Boards+22,1 08766 ; Boards[2].states[0]=_OFF; 002BB6 6B28 08767 CLRF Boards+40,1 08768 ; Boards[3].states[0]=_OFF; 002BB8 6B3A 08769 CLRF Boards+58,1 08770 ; delay(T_TVP, 2000); 002BBA 0ED0 08771 MOVLW 0xD0 002BBC 0100 08772 MOVLB 0x00 002BBE 6FDA 08773 MOVWF softTimer+16,1 002BC0 0E07 08774 MOVLW 0x07 002BC2 6FDB 08775 MOVWF softTimer+17,1 002BC4 9057 08776 BCF tTimeout+1,0,0 002BC6 0101 08777 m598 MOVLB 0x01 002BC8 A057 08778 BTFSS tTimeout+1,0,0 002BCA 0C02 08779 RETLW 0x02 08780 ; restartTask(); 002BCC 0C00 08781 RETLW 0x00 08782 ;} 08783 ; 08784 ;// wait for a green light on direction, 08785 ;// then delay() and send to next in chain 08786 ;Task GreenWaveChain(void){ 002BCE 08787 GreenWaveChain 002BCE 0E04 08788 MOVLW 0x04 002BD0 5DE4 08789 SUBWF _TaskS10,W,1 002BD2 B0D8 08790 BTFSC 0xFD8,Carry,0 002BD4 0C00 08791 RETLW 0x00 002BD6 50F9 08792 MOVF PCL,W,0 002BD8 45E4 08793 RLNCF _TaskS10,W,1 002BDA 26F9 08794 ADDWF PCL,1,0 002BDC D003 08795 BRA m599 002BDE D003 08796 BRA m600 002BE0 D014 08797 BRA m602 002BE2 D020 08798 BRA m604 08799 ; VPU_OUT=1; // off 002BE4 8082 08800 m599 BSF 0xF82,VPU_OUT,0 08801 ; // find and wait GREEN lamp ON in the Direction 08802 ; waitUntilEvent(evtGWSND); // wait green on GW direction 002BE6 A640 08803 m600 BTFSS EventStates+2,3,0 002BE8 0C01 08804 RETLW 0x01 08805 ; GreenWaveDelay = mem_read_byte(_GR_WAVE_DELAY); 002BEA 0E04 08806 MOVLW 0x04 002BEC 6E0C 08807 MOVWF addr_2,0 002BEE 6A0D 08808 CLRF addr_2+1,0 002BF0 EC48 F001 08809 CALL mem_read_byte MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 171 LOC OBJECT CODE LINE SOURCE TEXT VALUE 002BF4 6E3C 08810 MOVWF GreenWaveDelay,0 08811 ; if(GreenWaveDelay>0){ 002BF6 523C 08812 MOVF GreenWaveDelay,1,0 002BF8 E00B 08813 BZ m603 08814 ; GreenWaveDelay++; 002BFA 2A3C 08815 INCF GreenWaveDelay,1,0 08816 ; while(--GreenWaveDelay) delay(T_GWC, 1000); 002BFC 4E3C 08817 m601 DCFSNZ GreenWaveDelay,1,0 002BFE D008 08818 BRA m603 002C00 0EE8 08819 MOVLW 0xE8 002C02 6FDC 08820 MOVWF softTimer+18,1 002C04 0E03 08821 MOVLW 0x03 002C06 6FDD 08822 MOVWF softTimer+19,1 002C08 9257 08823 BCF tTimeout+1,1,0 002C0A B257 08824 m602 BTFSC tTimeout+1,1,0 002C0C D7F7 08825 BRA m601 002C0E 0C02 08826 RETLW 0x02 08827 ; } 08828 ; 08829 ;// indicate send GW 08830 ;ind_states.6=1; // down [3] led 002C10 8C1D 08831 m603 BSF ind_states,6,0 08832 ;ind_send(ind_states^0xff); 002C12 1C1D 08833 COMF ind_states,W,0 002C14 ECB7 F007 08834 CALL ind_send 08835 ; // shoot on GW for modem 08836 ; VPU_OUT=0; // on 002C18 9082 08837 BCF 0xF82,VPU_OUT,0 08838 ; delay(T_GWC, 500); // set impuls 002C1A 0EF4 08839 MOVLW 0xF4 002C1C 6FDC 08840 MOVWF softTimer+18,1 002C1E 0E01 08841 MOVLW 0x01 002C20 6FDD 08842 MOVWF softTimer+19,1 002C22 9257 08843 BCF tTimeout+1,1,0 002C24 A257 08844 m604 BTFSS tTimeout+1,1,0 002C26 0C03 08845 RETLW 0x03 08846 ; VPU_OUT=1; // off 002C28 8082 08847 BSF 0xF82,VPU_OUT,0 08848 ; 08849 ; clearEvent(evtGWSND); 002C2A 9640 08850 BCF EventStates+2,3,0 08851 ; restartTask(); 002C2C 0C00 08852 RETLW 0x00 08853 ;} 08854 ; 08855 ;//------------------------------------------------------------- 08856 ;// HELPER Functions 08857 ;// correct current delays to fit in time GW period 08858 ;void CalcCorrectGW(void){ 002C2E 08859 CalcCorrectGW 08860 ;/* 08861 ;// test print 08862 ;FSR0=&gsm_buff[0]; MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 172 LOC OBJECT CODE LINE SOURCE TEXT VALUE 08863 ;hex16str(timeGW); 08864 ;putc('t'); 08865 ;putc(':'); 08866 ;putc(gsm_buff[2]); 08867 ;putc(gsm_buff[3]); 08868 ;putc(gsm_buff[0]); 08869 ;putc(gsm_buff[1]); 08870 ;putc('='); 08871 ;*/ 08872 ; if(PrevTimeGW != 0){ 002C2E 5104 08873 MOVF PrevTimeGW,W,1 002C30 1105 08874 IORWF PrevTimeGW+1,W,1 002C32 E021 08875 BZ m607 08876 ; uns16 diff, tmhalf; 08877 ; if(PrevTimeGW < timeGW) diff=timeGW-PrevTimeGW; 002C34 5100 08878 MOVF timeGW,W,1 002C36 5D04 08879 SUBWF PrevTimeGW,W,1 002C38 5101 08880 MOVF timeGW+1,W,1 002C3A 5905 08881 SUBWFB PrevTimeGW+1,W,1 002C3C E207 08882 BC m605 002C3E 5104 08883 MOVF PrevTimeGW,W,1 002C40 5D00 08884 SUBWF timeGW,W,1 002C42 6E05 08885 MOVWF diff,0 002C44 5105 08886 MOVF PrevTimeGW+1,W,1 002C46 5901 08887 SUBWFB timeGW+1,W,1 002C48 6E06 08888 MOVWF diff+1,0 08889 ; else diff=PrevTimeGW-timeGW; 002C4A D006 08890 BRA m606 002C4C 5100 08891 m605 MOVF timeGW,W,1 002C4E 5D04 08892 SUBWF PrevTimeGW,W,1 002C50 6E05 08893 MOVWF diff,0 002C52 5101 08894 MOVF timeGW+1,W,1 002C54 5905 08895 SUBWFB PrevTimeGW+1,W,1 002C56 6E06 08896 MOVWF diff+1,0 08897 ; tmhalf=timeGW/2; 002C58 90D8 08898 m606 BCF 0xFD8,Carry,0 002C5A 3101 08899 RRCF timeGW+1,W,1 002C5C 6E08 08900 MOVWF tmhalf+1,0 002C5E 3100 08901 RRCF timeGW,W,1 002C60 6E07 08902 MOVWF tmhalf,0 08903 ; PrevTimeGW=timeGW; 002C62 C300 F304 08904 MOVFF timeGW,PrevTimeGW 002C66 C301 F305 08905 MOVFF timeGW+1,PrevTimeGW+1 08906 ; if(diff > tmhalf) return; 002C6A 5005 08907 MOVF diff,W,0 002C6C 5C07 08908 SUBWF tmhalf,W,0 002C6E 5006 08909 MOVF diff+1,W,0 002C70 5808 08910 SUBWFB tmhalf+1,W,0 002C72 E205 08911 BC m608 002C74 0012 08912 RETURN 08913 ; }else{ 08914 ; PrevTimeGW=timeGW;} 002C76 C300 F304 08915 m607 MOVFF timeGW,PrevTimeGW MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 173 LOC OBJECT CODE LINE SOURCE TEXT VALUE 002C7A C301 F305 08916 MOVFF timeGW+1,PrevTimeGW+1 08917 ; 08918 ; if(timeGW >= 50000) { timeGW=0; current_delay++; current_delay++;} 002C7E 0E50 08919 m608 MOVLW 0x50 002C80 5D00 08920 SUBWF timeGW,W,1 002C82 0EC3 08921 MOVLW 0xC3 002C84 5901 08922 SUBWFB timeGW+1,W,1 002C86 E305 08923 BNC m609 002C88 6B00 08924 CLRF timeGW,1 002C8A 6B01 08925 CLRF timeGW+1,1 002C8C 2A2D 08926 INCF current_delay,1,0 002C8E 2A2D 08927 INCF current_delay,1,0 08928 ; else if(timeGW >= 36000) { timeGW=0; current_delay++;} 002C90 D04E 08929 BRA m618 002C92 0EA0 08930 m609 MOVLW 0xA0 002C94 5D00 08931 SUBWF timeGW,W,1 002C96 0E8C 08932 MOVLW 0x8C 002C98 5901 08933 SUBWFB timeGW+1,W,1 002C9A E304 08934 BNC m610 002C9C 6B00 08935 CLRF timeGW,1 002C9E 6B01 08936 CLRF timeGW+1,1 002CA0 2A2D 08937 INCF current_delay,1,0 08938 ; else if(timeGW >= 20000) { timeGW=500; current_delay--; current_delay--; } 002CA2 D045 08939 BRA m618 002CA4 0E20 08940 m610 MOVLW 0x20 002CA6 5D00 08941 SUBWF timeGW,W,1 002CA8 0E4E 08942 MOVLW 0x4E 002CAA 5901 08943 SUBWFB timeGW+1,W,1 002CAC E307 08944 BNC m611 002CAE 0EF4 08945 MOVLW 0xF4 002CB0 6F00 08946 MOVWF timeGW,1 002CB2 0E01 08947 MOVLW 0x01 002CB4 6F01 08948 MOVWF timeGW+1,1 002CB6 062D 08949 DECF current_delay,1,0 002CB8 062D 08950 DECF current_delay,1,0 08951 ; else if(timeGW >= 12000) { timeGW /= 16; current_delay--;} 002CBA D039 08952 BRA m618 002CBC 0EE0 08953 m611 MOVLW 0xE0 002CBE 5D00 08954 SUBWF timeGW,W,1 002CC0 0E2E 08955 MOVLW 0x2E 002CC2 5901 08956 SUBWFB timeGW+1,W,1 002CC4 E309 08957 BNC m613 002CC6 0E04 08958 MOVLW 0x04 002CC8 6E05 08959 MOVWF C17cnt,0 002CCA 90D8 08960 m612 BCF 0xFD8,Carry,0 002CCC 3301 08961 RRCF timeGW+1,1,1 002CCE 3300 08962 RRCF timeGW,1,1 002CD0 2E05 08963 DECFSZ C17cnt,1,0 002CD2 D7FB 08964 BRA m612 002CD4 062D 08965 DECF current_delay,1,0 08966 ; else if(timeGW >= 3000) { timeGW /= 16;} 002CD6 D02B 08967 BRA m618 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 174 LOC OBJECT CODE LINE SOURCE TEXT VALUE 002CD8 0EB8 08968 m613 MOVLW 0xB8 002CDA 5D00 08969 SUBWF timeGW,W,1 002CDC 0E0B 08970 MOVLW 0x0B 002CDE 5901 08971 SUBWFB timeGW+1,W,1 002CE0 E308 08972 BNC m615 002CE2 0E04 08973 MOVLW 0x04 002CE4 6E05 08974 MOVWF C19cnt,0 002CE6 90D8 08975 m614 BCF 0xFD8,Carry,0 002CE8 3301 08976 RRCF timeGW+1,1,1 002CEA 3300 08977 RRCF timeGW,1,1 002CEC 2E05 08978 DECFSZ C19cnt,1,0 002CEE D7FB 08979 BRA m614 08980 ; else if(timeGW >= 900) timeGW /= 4; 002CF0 D01E 08981 BRA m618 002CF2 0E84 08982 m615 MOVLW 0x84 002CF4 5D00 08983 SUBWF timeGW,W,1 002CF6 0E03 08984 MOVLW 0x03 002CF8 5901 08985 SUBWFB timeGW+1,W,1 002CFA E307 08986 BNC m616 002CFC 90D8 08987 BCF 0xFD8,Carry,0 002CFE 3301 08988 RRCF timeGW+1,1,1 002D00 3300 08989 RRCF timeGW,1,1 002D02 90D8 08990 BCF 0xFD8,Carry,0 002D04 3301 08991 RRCF timeGW+1,1,1 002D06 3300 08992 RRCF timeGW,1,1 08993 ; else if(timeGW <= 600){timeGW /= 4; timeGW=0-timeGW;} 002D08 D012 08994 BRA m618 002D0A 0E59 08995 m616 MOVLW 0x59 002D0C 5D00 08996 SUBWF timeGW,W,1 002D0E 0E02 08997 MOVLW 0x02 002D10 5901 08998 SUBWFB timeGW+1,W,1 002D12 E20B 08999 BC m617 002D14 90D8 09000 BCF 0xFD8,Carry,0 002D16 3301 09001 RRCF timeGW+1,1,1 002D18 3300 09002 RRCF timeGW,1,1 002D1A 90D8 09003 BCF 0xFD8,Carry,0 002D1C 3301 09004 RRCF timeGW+1,1,1 002D1E 3300 09005 RRCF timeGW,1,1 002D20 80D8 09006 BSF 0xFD8,Carry,0 002D22 0E00 09007 MOVLW 0x00 002D24 5700 09008 SUBFWB timeGW,1,1 002D26 5701 09009 SUBFWB timeGW+1,1,1 09010 ; else timeGW=0; 002D28 D002 09011 BRA m618 002D2A 6B00 09012 m617 CLRF timeGW,1 002D2C 6B01 09013 CLRF timeGW+1,1 09014 ; GWCorrCntMs=DEFDELAY-timeGW; 002D2E 5100 09015 m618 MOVF timeGW,W,1 002D30 08E8 09016 SUBLW 0xE8 002D32 6F02 09017 MOVWF GWCorrCntMs,1 002D34 0E03 09018 MOVLW 0x03 002D36 5501 09019 SUBFWB timeGW+1,W,1 002D38 6F03 09020 MOVWF GWCorrCntMs+1,1 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 175 LOC OBJECT CODE LINE SOURCE TEXT VALUE 09021 ; if(GWCorrCntMs.15) GWCorrCntMs=100; 002D3A AF03 09022 BTFSS GWCorrCntMs+1,7,1 002D3C D003 09023 BRA m619 002D3E 0E64 09024 MOVLW 0x64 002D40 6F02 09025 MOVWF GWCorrCntMs,1 002D42 6B03 09026 CLRF GWCorrCntMs+1,1 09027 ; if(GWCorrCntMs<100)GWCorrCntMs=100; 002D44 5103 09028 m619 MOVF GWCorrCntMs+1,W,1 002D46 E105 09029 BNZ m620 002D48 0E64 09030 MOVLW 0x64 002D4A 6102 09031 CPFSLT GWCorrCntMs,1 002D4C D002 09032 BRA m620 002D4E 6F02 09033 MOVWF GWCorrCntMs,1 002D50 6B03 09034 CLRF GWCorrCntMs+1,1 09035 ;/* 09036 ;FSR0=&gsm_buff[0]; 09037 ;hex16str(GWCorrCntMs); 09038 ;putc('d'); 09039 ;putc(':'); 09040 ;putc(gsm_buff[2]); 09041 ;putc(gsm_buff[3]); 09042 ;putc(gsm_buff[0]); 09043 ;putc(gsm_buff[1]); 09044 ;putc(' '); 09045 ;*/ 09046 ;} 002D52 0012 09047 m620 RETURN 09048 ; 09049 ;char GetGWMask(void){ 002D54 09050 GetGWMask 09051 ; GreenWaveDir = mem_read_byte(_GR_WAVE_DIR); // direction 002D54 0E03 09052 MOVLW 0x03 002D56 6E0C 09053 MOVWF addr_2,0 002D58 6A0D 09054 CLRF addr_2+1,0 002D5A EC48 F001 09055 CALL mem_read_byte 002D5E 6E3B 09056 MOVWF GreenWaveDir,0 09057 ; GreenWaveDelay = mem_read_byte(_GR_WAVE_DELAY); 002D60 0E04 09058 MOVLW 0x04 002D62 6E0C 09059 MOVWF addr_2,0 002D64 6A0D 09060 CLRF addr_2+1,0 002D66 EC48 F001 09061 CALL mem_read_byte 002D6A 6E3C 09062 MOVWF GreenWaveDelay,0 09063 ; uns16 base=_DIRECTIONS; 002D6C 0EBF 09064 MOVLW 0xBF 002D6E 6E05 09065 MOVWF base_6,0 002D70 6A06 09066 CLRF base_6+1,0 09067 ; GreenWaveDir *= 4; 002D72 0E04 09068 MOVLW 0x04 002D74 023B 09069 MULWF GreenWaveDir,0 002D76 CFF3 F03B 09070 MOVFF PRODL,GreenWaveDir 09071 ; base += GreenWaveDir; 002D7A 503B 09072 MOVF GreenWaveDir,W,0 002D7C 2605 09073 ADDWF base_6,1,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 176 LOC OBJECT CODE LINE SOURCE TEXT VALUE 002D7E 0E00 09074 MOVLW 0x00 002D80 2206 09075 ADDWFC base_6+1,1,0 09076 ; base += 2; // green lamp flags byte 002D82 0E02 09077 MOVLW 0x02 002D84 2605 09078 ADDWF base_6,1,0 002D86 0E00 09079 MOVLW 0x00 002D88 2206 09080 ADDWFC base_6+1,1,0 09081 ; return mem_read_byte(base); 002D8A C005 F00C 09082 MOVFF base_6,addr_2 002D8E C006 F00D 09083 MOVFF base_6+1,addr_2+1 002D92 EF48 F001 09084 GOTO mem_read_byte 09085 ;} 09086 ; 09087 ;bit isGWOnDirection(char mask){ 002D96 09088 isGWOnDirection 002D96 6E05 09089 MOVWF mask_2,0 09090 ; if(mask.7 && (Boards[0].states[2]==_ON)) return YES; 002D98 AE05 09091 BTFSS mask_2,7,0 002D9A D004 09092 BRA m621 002D9C 2D06 09093 DECFSZ Boards+6,W,1 002D9E D002 09094 BRA m621 002DA0 80D8 09095 BSF 0xFD8,Carry,0 002DA2 0012 09096 RETURN 09097 ; if(mask.6 && (Boards[1].states[2]==_ON)) return YES; 002DA4 AC05 09098 m621 BTFSS mask_2,6,0 002DA6 D004 09099 BRA m622 002DA8 2D18 09100 DECFSZ Boards+24,W,1 002DAA D002 09101 BRA m622 002DAC 80D8 09102 BSF 0xFD8,Carry,0 002DAE 0012 09103 RETURN 09104 ; if(mask.5 && (Boards[2].states[2]==_ON)) return YES; 002DB0 AA05 09105 m622 BTFSS mask_2,5,0 002DB2 D004 09106 BRA m623 002DB4 2D2A 09107 DECFSZ Boards+42,W,1 002DB6 D002 09108 BRA m623 002DB8 80D8 09109 BSF 0xFD8,Carry,0 002DBA 0012 09110 RETURN 09111 ; if(mask.4 && (Boards[3].states[2]==_ON)) return YES; 002DBC A805 09112 m623 BTFSS mask_2,4,0 002DBE D004 09113 BRA m624 002DC0 2D3C 09114 DECFSZ Boards+60,W,1 002DC2 D002 09115 BRA m624 002DC4 80D8 09116 BSF 0xFD8,Carry,0 002DC6 0012 09117 RETURN 09118 ; return NO; 002DC8 90D8 09119 m624 BCF 0xFD8,Carry,0 002DCA 0012 09120 RETURN 09121 ;} 09122 ; 09123 ; 09124 ;bit CHFTime(void){ 002DCC 09125 CHFTime 09126 ; if(fazaRDTillTimeDH>2) return TRUE; MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 177 LOC OBJECT CODE LINE SOURCE TEXT VALUE 002DCC 0E02 09127 MOVLW 0x02 002DCE 6434 09128 CPFSGT fazaRDTillTimeDH,0 002DD0 D002 09129 BRA m625 002DD2 80D8 09130 BSF 0xFD8,Carry,0 002DD4 0012 09131 RETURN 09132 ; char tmp=(bcd_hr>>4)&0x03; 002DD6 3817 09133 m625 SWAPF bcd_hr,W,0 002DD8 0B0F 09134 ANDLW 0x0F 002DDA 0B03 09135 ANDLW 0x03 002DDC 6E05 09136 MOVWF tmp_4,0 09137 ; if(tmp > fazaRDTillTimeDH) {faza2change.7=1; return FALSE;} 002DDE 6034 09138 CPFSLT fazaRDTillTimeDH,0 002DE0 D003 09139 BRA m626 002DE2 8E32 09140 BSF faza2change,7,0 002DE4 90D8 09141 BCF 0xFD8,Carry,0 002DE6 0012 09142 RETURN 09143 ; if(tmp < fazaRDTillTimeDH) return TRUE; 002DE8 5034 09144 m626 MOVF fazaRDTillTimeDH,W,0 002DEA 6005 09145 CPFSLT tmp_4,0 002DEC D002 09146 BRA m627 002DEE 80D8 09147 BSF 0xFD8,Carry,0 002DF0 0012 09148 RETURN 09149 ; tmp=bcd_hr&0x0f; 002DF2 0E0F 09150 m627 MOVLW 0x0F 002DF4 1417 09151 ANDWF bcd_hr,W,0 002DF6 6E05 09152 MOVWF tmp_4,0 09153 ; if(tmp > fazaRDTillTimeEH) {faza2change.7=1; return FALSE;} 002DF8 6035 09154 CPFSLT fazaRDTillTimeEH,0 002DFA D003 09155 BRA m628 002DFC 8E32 09156 BSF faza2change,7,0 002DFE 90D8 09157 BCF 0xFD8,Carry,0 002E00 0012 09158 RETURN 09159 ; if(tmp < fazaRDTillTimeEH) return TRUE; 002E02 5035 09160 m628 MOVF fazaRDTillTimeEH,W,0 002E04 6005 09161 CPFSLT tmp_4,0 002E06 D002 09162 BRA m629 002E08 80D8 09163 BSF 0xFD8,Carry,0 002E0A 0012 09164 RETURN 09165 ; tmp=(bcd_min>>4)&0x0f; 002E0C 3816 09166 m629 SWAPF bcd_min,W,0 002E0E 0B0F 09167 ANDLW 0x0F 002E10 0B0F 09168 ANDLW 0x0F 002E12 6E05 09169 MOVWF tmp_4,0 09170 ; if(tmp > fazaRDTillTimeDM) {faza2change.7=1; return FALSE;} 002E14 6036 09171 CPFSLT fazaRDTillTimeDM,0 002E16 D003 09172 BRA m630 002E18 8E32 09173 BSF faza2change,7,0 002E1A 90D8 09174 BCF 0xFD8,Carry,0 002E1C 0012 09175 RETURN 09176 ; if(tmp < fazaRDTillTimeDM) return TRUE; 002E1E 5036 09177 m630 MOVF fazaRDTillTimeDM,W,0 002E20 6005 09178 CPFSLT tmp_4,0 002E22 D002 09179 BRA m631 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 178 LOC OBJECT CODE LINE SOURCE TEXT VALUE 002E24 80D8 09180 BSF 0xFD8,Carry,0 002E26 0012 09181 RETURN 09182 ; tmp=bcd_min&0x0f; 002E28 0E0F 09183 m631 MOVLW 0x0F 002E2A 1416 09184 ANDWF bcd_min,W,0 002E2C 6E05 09185 MOVWF tmp_4,0 09186 ; if(tmp > fazaRDTillTimeEM) {faza2change.7=1; return FALSE;} 002E2E 6037 09187 CPFSLT fazaRDTillTimeEM,0 002E30 D003 09188 BRA m632 002E32 8E32 09189 BSF faza2change,7,0 002E34 90D8 09190 BCF 0xFD8,Carry,0 002E36 0012 09191 RETURN 09192 ; if(tmp < fazaRDTillTimeEM) return TRUE; 002E38 5037 09193 m632 MOVF fazaRDTillTimeEM,W,0 002E3A 6005 09194 CPFSLT tmp_4,0 002E3C D002 09195 BRA m633 002E3E 80D8 09196 BSF 0xFD8,Carry,0 002E40 0012 09197 RETURN 09198 ; return TRUE; 002E42 80D8 09199 m633 BSF 0xFD8,Carry,0 002E44 0012 09200 RETURN 09201 ;} 09202 ; 09203 ;void AllRedOn(void){ 002E46 09204 AllRedOn 09205 ; char i,j; 09206 ; for(i=0; i decode_control() 09413 ;void set_lamp_data(char numb, char color, char syst){ 002F52 09414 set_lamp_data 002F52 6E0C 09415 MOVWF syst,0 09416 ; BOARD * tmp; 09417 ; char pos=numb&0x03; 002F54 0E03 09418 MOVLW 0x03 002F56 140A 09419 ANDWF numb_2,W,0 002F58 6E0E 09420 MOVWF pos,0 09421 ; tmp=&Boards[numb/4]; 002F5A 400A 09422 RRNCF numb_2,W,0 002F5C 42E8 09423 RRNCF WREG,1,0 002F5E 0B3F 09424 ANDLW 0x3F 002F60 0D12 09425 MULLW 0x12 002F62 50F3 09426 MOVF PRODL,W,0 002F64 6E0D 09427 MOVWF tmp_5,0 09428 ; char * ptr; 09429 ; ptr=&(tmp->colors[0]); 002F66 0E01 09430 MOVLW 0x01 002F68 6E10 09431 MOVWF ptr_3+1,0 002F6A 0E0C 09432 MOVLW 0x0C 002F6C 240D 09433 ADDWF tmp_5,W,0 002F6E 6E0F 09434 MOVWF ptr_3,0 09435 ; ptr[pos] = color; 002F70 500E 09436 MOVF pos,W,0 002F72 240F 09437 ADDWF ptr_3,W,0 002F74 6EE9 09438 MOVWF FSR0,0 002F76 0E00 09439 MOVLW 0x00 002F78 2010 09440 ADDWFC ptr_3+1,W,0 002F7A 6EEA 09441 MOVWF FSR0+1,0 002F7C C00B FFEF 09442 MOVFF color,INDF0 09443 ;// set live bit 09444 ; ptr=&(tmp->live); MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 183 LOC OBJECT CODE LINE SOURCE TEXT VALUE 002F80 0E01 09445 MOVLW 0x01 002F82 6E10 09446 MOVWF ptr_3+1,0 002F84 0E02 09447 MOVLW 0x02 002F86 240D 09448 ADDWF tmp_5,W,0 002F88 6E0F 09449 MOVWF ptr_3,0 09450 ; char bt=0; 002F8A 6A11 09451 CLRF bt,0 09452 ; bt.7=syst.7; 002F8C 9E11 09453 BCF bt,7,0 002F8E BE0C 09454 BTFSC syst,7,0 002F90 8E11 09455 BSF bt,7,0 09456 ; bt >>= pos; 002F92 500E 09457 MOVF pos,W,0 002F94 E005 09458 BZ m649 002F96 6E12 09459 MOVWF C23cnt,0 002F98 90D8 09460 m648 BCF 0xFD8,Carry,0 002F9A 3211 09461 RRCF bt,1,0 002F9C 2E12 09462 DECFSZ C23cnt,1,0 002F9E D7FC 09463 BRA m648 09464 ; *ptr |= bt; 002FA0 C00F FFE9 09465 m649 MOVFF ptr_3,FSR0 002FA4 C010 FFEA 09466 MOVFF ptr_3+1,FSR0+1 002FA8 5011 09467 MOVF bt,W,0 002FAA 12EF 09468 IORWF INDF0,1,0 09469 ;//set conflict bit 09470 ; ptr=&(tmp->conflict); 002FAC 0E01 09471 MOVLW 0x01 002FAE 6E10 09472 MOVWF ptr_3+1,0 002FB0 0E03 09473 MOVLW 0x03 002FB2 240D 09474 ADDWF tmp_5,W,0 002FB4 6E0F 09475 MOVWF ptr_3,0 09476 ; bt=0; 002FB6 6A11 09477 CLRF bt,0 09478 ; bt.7=syst.3; 002FB8 9E11 09479 BCF bt,7,0 002FBA B60C 09480 BTFSC syst,3,0 002FBC 8E11 09481 BSF bt,7,0 09482 ; bt >>= pos; 002FBE 500E 09483 MOVF pos,W,0 002FC0 E005 09484 BZ m651 002FC2 6E12 09485 MOVWF C24cnt,0 002FC4 90D8 09486 m650 BCF 0xFD8,Carry,0 002FC6 3211 09487 RRCF bt,1,0 002FC8 2E12 09488 DECFSZ C24cnt,1,0 002FCA D7FC 09489 BRA m650 09490 ; *ptr |= bt; 002FCC C00F FFE9 09491 m651 MOVFF ptr_3,FSR0 002FD0 C010 FFEA 09492 MOVFF ptr_3+1,FSR0+1 002FD4 5011 09493 MOVF bt,W,0 002FD6 12EF 09494 IORWF INDF0,1,0 09495 ;} 002FD8 0012 09496 RETURN 09497 ; MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 184 LOC OBJECT CODE LINE SOURCE TEXT VALUE 09498 ;// Decode/Convert datas and bits control from EEPROM 09499 ;// -> setup 09500 ;void decode_control(void){ 002FDA 09501 decode_control 09502 ; mem_read(_CONTROLS, 16, &tmp32[0]); 002FDA 0EAF 09503 MOVLW 0xAF 002FDC 6E0D 09504 MOVWF addr,0 002FDE 6A0E 09505 CLRF addr+1,0 002FE0 0E10 09506 MOVLW 0x10 002FE2 6E0F 09507 MOVWF lenght,0 002FE4 0E60 09508 MOVLW 0x60 002FE6 6E10 09509 MOVWF ptr,0 002FE8 EC33 F001 09510 CALL mem_read 09511 ; char ctrl, lmp, i=0, x=0, colr; 002FEC 6A07 09512 CLRF i_29,0 002FEE 6A08 09513 CLRF x,0 09514 ; do{ 09515 ; lmp=tmp32[i++]; 002FF0 6AEA 09516 m652 CLRF FSR0+1,0 002FF2 0E60 09517 MOVLW 0x60 002FF4 2407 09518 ADDWF i_29,W,0 002FF6 6EE9 09519 MOVWF FSR0,0 002FF8 CFEF F006 09520 MOVFF INDF0,lmp 002FFC 2A07 09521 INCF i_29,1,0 09522 ; ctrl=0; 002FFE 6A05 09523 CLRF ctrl,0 09524 ; ctrl.7=lmp.7; ctrl.3=lmp.6; 003000 9E05 09525 BCF ctrl,7,0 003002 BE06 09526 BTFSC lmp,7,0 003004 8E05 09527 BSF ctrl,7,0 003006 9605 09528 BCF ctrl,3,0 003008 BC06 09529 BTFSC lmp,6,0 00300A 8605 09530 BSF ctrl,3,0 09531 ; colr=lmp&0x30; 00300C 0E30 09532 MOVLW 0x30 00300E 1406 09533 ANDWF lmp,W,0 003010 6E09 09534 MOVWF colr,0 09535 ; colr>>=4; 003012 3809 09536 SWAPF colr,W,0 003014 0B0F 09537 ANDLW 0x0F 003016 6E09 09538 MOVWF colr,0 09539 ; set_lamp_data(x, colr, ctrl); 003018 C008 F00A 09540 MOVFF x,numb_2 00301C C009 F00B 09541 MOVFF colr,color 003020 5005 09542 MOVF ctrl,W,0 003022 DF97 09543 RCALL set_lamp_data 09544 ; x++; 003024 2A08 09545 INCF x,1,0 09546 ; ctrl=0; 003026 6A05 09547 CLRF ctrl,0 09548 ; ctrl.7=lmp.3; ctrl.3=lmp.2; 003028 9E05 09549 BCF ctrl,7,0 00302A B606 09550 BTFSC lmp,3,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 185 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00302C 8E05 09551 BSF ctrl,7,0 00302E 9605 09552 BCF ctrl,3,0 003030 B406 09553 BTFSC lmp,2,0 003032 8605 09554 BSF ctrl,3,0 09555 ; colr=lmp&0x03; 003034 0E03 09556 MOVLW 0x03 003036 1406 09557 ANDWF lmp,W,0 003038 6E09 09558 MOVWF colr,0 09559 ; set_lamp_data(x, colr, ctrl); 00303A C008 F00A 09560 MOVFF x,numb_2 00303E C009 F00B 09561 MOVFF colr,color 003042 5005 09562 MOVF ctrl,W,0 003044 DF86 09563 RCALL set_lamp_data 09564 ; x++; 003046 2A08 09565 INCF x,1,0 09566 ; }while(i<16); 003048 0E0F 09567 MOVLW 0x0F 00304A 6407 09568 CPFSGT i_29,0 00304C D7D1 09569 BRA m652 09570 ;} 00304E 0012 09571 RETURN 09572 ; 09573 ; 09574 ;void load_directions(void){ 003050 09575 load_directions 09576 ; mem_read(_DIRECTIONS, 64, &tmp32[0]); 003050 0EBF 09577 MOVLW 0xBF 003052 6E0D 09578 MOVWF addr,0 003054 6A0E 09579 CLRF addr+1,0 003056 0E40 09580 MOVLW 0x40 003058 6E0F 09581 MOVWF lenght,0 00305A 0E60 09582 MOVLW 0x60 00305C 6E10 09583 MOVWF ptr,0 00305E EC33 F001 09584 CALL mem_read 09585 ; char i; 09586 ; FSR0=&red_dirs[0]; 003062 EE03 F006 09587 LFSR 0,774 09588 ; //FSR1=&green_dirs[0]; 09589 ; FSR2=&tmp32[0]; 003066 EE20 F060 09590 LFSR 2,96 09591 ; for(i=0; i<16; i++){ 00306A 6A05 09592 CLRF i_30,0 00306C 0E10 09593 m653 MOVLW 0x10 00306E 6005 09594 CPFSLT i_30,0 003070 D007 09595 BRA m654 09596 ; POSTINC0=POSTINC2; // red 003072 CFDE FFEE 09597 MOVFF POSTINC2,POSTINC0 09598 ; W=POSTINC2; // yell 003076 50DE 09599 MOVF POSTINC2,W,0 09600 ; W=POSTINC2; // green 003078 50DE 09601 MOVF POSTINC2,W,0 09602 ; W=POSTINC2; // dop 00307A 50DE 09603 MOVF POSTINC2,W,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 186 LOC OBJECT CODE LINE SOURCE TEXT VALUE 09604 ; } 00307C 2A05 09605 INCF i_30,1,0 00307E D7F6 09606 BRA m653 09607 ;} 003080 0012 09608 m654 RETURN 09609 ; 09610 ;// take current time and find apropriate programm number 09611 ;// decide then alarms array is ready 09612 ;// return programm number 0..15 or 0xff if no programm defined (no alarms) 09613 ;char find_curr_progr(void){ 003082 09614 find_curr_progr 09615 ; char cicl, prg; 09616 ; char h0, m0, h1, m1, rez=0; 003082 6A0C 09617 CLRF rez_7,0 09618 ; cicl=alarms_cnt-1; 003084 0424 09619 DECF alarms_cnt,W,0 003086 6E06 09620 MOVWF cicl,0 09621 ; if(cicl == 0xff){ 003088 4806 09622 INFSNZ cicl,W,0 09623 ; // no predefined alarms!!! <- this errors, but we must do someth ing?! 09624 ; return 0xff;} 00308A 0CFF 09625 RETLW 0xFF 09626 ; do{// from last alarm to first 09627 ; h0=bcd_hr; m0=bcd_min; 00308C C017 F008 09628 m655 MOVFF bcd_hr,h0_2 003090 C016 F009 09629 MOVFF bcd_min,m0_2 09630 ; h1=alarms[cicl].hour; m1=alarms[cicl].min; 003094 6AEA 09631 CLRF FSR0+1,0 003096 0E03 09632 MOVLW 0x03 003098 0206 09633 MULWF cicl,0 00309A 50F3 09634 MOVF PRODL,W,0 00309C 0FB1 09635 ADDLW 0xB1 00309E 6EE9 09636 MOVWF FSR0,0 0030A0 CFEF F00A 09637 MOVFF INDF0,h1_2 0030A4 6AEA 09638 CLRF FSR0+1,0 0030A6 0E03 09639 MOVLW 0x03 0030A8 0206 09640 MULWF cicl,0 0030AA 50F3 09641 MOVF PRODL,W,0 0030AC 0FB2 09642 ADDLW 0xB2 0030AE 6EE9 09643 MOVWF FSR0,0 0030B0 CFEF F00B 09644 MOVFF INDF0,m1_2 09645 ; rez=compare_time(h0, m0, h1, m1); 0030B4 C008 F00D 09646 MOVFF h0_2,h0 0030B8 C009 F00E 09647 MOVFF m0_2,m0 0030BC C00A F00F 09648 MOVFF h1_2,h1 0030C0 500B 09649 MOVF m1_2,W,0 0030C2 ECE1 F001 09650 CALL compare_time 0030C6 6E0C 09651 MOVWF rez_7,0 09652 ; if(rez==1) break; 0030C8 4C0C 09653 DCFSNZ rez_7,W,0 0030CA D003 09654 BRA m656 09655 ; }while(--cicl != 0xff); MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 187 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0030CC 0606 09656 DECF cicl,1,0 0030CE 3C06 09657 INCFSZ cicl,W,0 0030D0 D7DD 09658 BRA m655 09659 ; if(rez != 1){ // no one alarms finded -> then take last alarm 0030D2 4C0C 09660 m656 DCFSNZ rez_7,W,0 0030D4 D002 09661 BRA m657 09662 ; cicl=alarms_cnt-1;} 0030D6 0424 09663 DECF alarms_cnt,W,0 0030D8 6E06 09664 MOVWF cicl,0 09665 ; // cicl->alarm number in array 09666 ; prg=alarms[cicl].programm; 0030DA 6AEA 09667 m657 CLRF FSR0+1,0 0030DC 0E03 09668 MOVLW 0x03 0030DE 0206 09669 MULWF cicl,0 0030E0 50F3 09670 MOVF PRODL,W,0 0030E2 0FB0 09671 ADDLW 0xB0 0030E4 6EE9 09672 MOVWF FSR0,0 0030E6 CFEF F007 09673 MOVFF INDF0,prg_3 09674 ; prg.7=0; // off high bit 0030EA 9E07 09675 BCF prg_3,7,0 09676 ; return prg; 0030EC 5007 09677 MOVF prg_3,W,0 0030EE 0012 09678 RETURN 09679 ;} 09680 ; 09681 ;// lamps states from Faza plan flags 09682 ;// 100uS 09683 ;void plan2lamps(void){ 0030F0 09684 plan2lamps 09685 ;// defines just for memo 09686 ;#define lamp0(brd) Boards[brd].states[0] 09687 ;#define lamp1(brd) Boards[brd].states[1] 09688 ;#define lamp2(brd) Boards[brd].states[2] 09689 ;#define lamp3(brd) Boards[brd].states[3] 09690 ;//////// board 0 //////////////////////// 09691 ; W=_OFF; 0030F0 0E00 09692 MOVLW 0x00 09693 ; if(Faza.by_group.group1.6) W=_ON; 0030F2 0101 09694 MOVLB 0x01 0030F4 BC26 09695 BTFSC Faza,6,0 0030F6 0E01 09696 MOVLW 0x01 09697 ; if(Faza.by_group.group1.7) W=_BLINK; 0030F8 BE26 09698 BTFSC Faza,7,0 0030FA 0E02 09699 MOVLW 0x02 09700 ; lamp0(0)=W; 0030FC 6F04 09701 MOVWF Boards+4,1 09702 ; 09703 ; W=_OFF; 0030FE 0E00 09704 MOVLW 0x00 09705 ; if(Faza.by_group.group1.4) W=_ON; 003100 B826 09706 BTFSC Faza,4,0 003102 0E01 09707 MOVLW 0x01 09708 ; if(Faza.by_group.group1.5) W=_BLINK; MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 188 LOC OBJECT CODE LINE SOURCE TEXT VALUE 003104 BA26 09709 BTFSC Faza,5,0 003106 0E02 09710 MOVLW 0x02 09711 ; lamp1(0)=W; 003108 6F05 09712 MOVWF Boards+5,1 09713 ; 09714 ; W=_OFF; 00310A 0E00 09715 MOVLW 0x00 09716 ; if(Faza.by_group.group1.2) W=_ON; 00310C B426 09717 BTFSC Faza,2,0 00310E 0E01 09718 MOVLW 0x01 09719 ; if(Faza.by_group.group1.3) W=_BLINK; 003110 B626 09720 BTFSC Faza,3,0 003112 0E02 09721 MOVLW 0x02 09722 ; lamp2(0)=W; 003114 6F06 09723 MOVWF Boards+6,1 09724 ; 09725 ; W=_OFF; 003116 0E00 09726 MOVLW 0x00 09727 ; if(Faza.by_group.group1.0) W=_ON; 003118 B026 09728 BTFSC Faza,0,0 00311A 0E01 09729 MOVLW 0x01 09730 ; if(Faza.by_group.group1.1) W=_BLINK; 00311C B226 09731 BTFSC Faza,1,0 00311E 0E02 09732 MOVLW 0x02 09733 ; lamp3(0)=W; 003120 6F07 09734 MOVWF Boards+7,1 09735 ; 09736 ;//////// board 1 //////////////////////// 09737 ; W=_OFF; 003122 0E00 09738 MOVLW 0x00 09739 ; if(Faza.by_group.group2.6) W=_ON; 003124 BC27 09740 BTFSC Faza+1,6,0 003126 0E01 09741 MOVLW 0x01 09742 ; if(Faza.by_group.group2.7) W=_BLINK; 003128 BE27 09743 BTFSC Faza+1,7,0 00312A 0E02 09744 MOVLW 0x02 09745 ; lamp0(1)=W; 00312C 6F16 09746 MOVWF Boards+22,1 09747 ; 09748 ; W=_OFF; 00312E 0E00 09749 MOVLW 0x00 09750 ; if(Faza.by_group.group2.4) W=_ON; 003130 B827 09751 BTFSC Faza+1,4,0 003132 0E01 09752 MOVLW 0x01 09753 ; if(Faza.by_group.group2.5) W=_BLINK; 003134 BA27 09754 BTFSC Faza+1,5,0 003136 0E02 09755 MOVLW 0x02 09756 ; lamp1(1)=W; 003138 6F17 09757 MOVWF Boards+23,1 09758 ; 09759 ; W=_OFF; 00313A 0E00 09760 MOVLW 0x00 09761 ; if(Faza.by_group.group2.2) W=_ON; MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 189 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00313C B427 09762 BTFSC Faza+1,2,0 00313E 0E01 09763 MOVLW 0x01 09764 ; if(Faza.by_group.group2.3) W=_BLINK; 003140 B627 09765 BTFSC Faza+1,3,0 003142 0E02 09766 MOVLW 0x02 09767 ; lamp2(1)=W; 003144 6F18 09768 MOVWF Boards+24,1 09769 ; 09770 ; W=_OFF; 003146 0E00 09771 MOVLW 0x00 09772 ; if(Faza.by_group.group2.0) W=_ON; 003148 B027 09773 BTFSC Faza+1,0,0 00314A 0E01 09774 MOVLW 0x01 09775 ; if(Faza.by_group.group2.1) W=_BLINK; 00314C B227 09776 BTFSC Faza+1,1,0 00314E 0E02 09777 MOVLW 0x02 09778 ; lamp3(1)=W; 003150 6F19 09779 MOVWF Boards+25,1 09780 ; 09781 ;//////// board 2 //////////////////////// 09782 ; W=_OFF; 003152 0E00 09783 MOVLW 0x00 09784 ; if(Faza.by_group.group3.6) W=_ON; 003154 BC28 09785 BTFSC Faza+2,6,0 003156 0E01 09786 MOVLW 0x01 09787 ; if(Faza.by_group.group3.7) W=_BLINK; 003158 BE28 09788 BTFSC Faza+2,7,0 00315A 0E02 09789 MOVLW 0x02 09790 ; lamp0(2)=W; 00315C 6F28 09791 MOVWF Boards+40,1 09792 ; 09793 ; W=_OFF; 00315E 0E00 09794 MOVLW 0x00 09795 ; if(Faza.by_group.group3.4) W=_ON; 003160 B828 09796 BTFSC Faza+2,4,0 003162 0E01 09797 MOVLW 0x01 09798 ; if(Faza.by_group.group3.5) W=_BLINK; 003164 BA28 09799 BTFSC Faza+2,5,0 003166 0E02 09800 MOVLW 0x02 09801 ; lamp1(2)=W; 003168 6F29 09802 MOVWF Boards+41,1 09803 ; 09804 ; W=_OFF; 00316A 0E00 09805 MOVLW 0x00 09806 ; if(Faza.by_group.group3.2) W=_ON; 00316C B428 09807 BTFSC Faza+2,2,0 00316E 0E01 09808 MOVLW 0x01 09809 ; if(Faza.by_group.group3.3) W=_BLINK; 003170 B628 09810 BTFSC Faza+2,3,0 003172 0E02 09811 MOVLW 0x02 09812 ; lamp2(2)=W; 003174 6F2A 09813 MOVWF Boards+42,1 09814 ; MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 190 LOC OBJECT CODE LINE SOURCE TEXT VALUE 09815 ; W=_OFF; 003176 0E00 09816 MOVLW 0x00 09817 ; if(Faza.by_group.group3.0) W=_ON; 003178 B028 09818 BTFSC Faza+2,0,0 00317A 0E01 09819 MOVLW 0x01 09820 ; if(Faza.by_group.group3.1) W=_BLINK; 00317C B228 09821 BTFSC Faza+2,1,0 00317E 0E02 09822 MOVLW 0x02 09823 ; lamp3(2)=W; 003180 6F2B 09824 MOVWF Boards+43,1 09825 ; 09826 ;//////// board 3 //////////////////////// 09827 ; W=_OFF; 003182 0E00 09828 MOVLW 0x00 09829 ; if(Faza.by_group.group4.6) W=_ON; 003184 BC29 09830 BTFSC Faza+3,6,0 003186 0E01 09831 MOVLW 0x01 09832 ; if(Faza.by_group.group4.7) W=_BLINK; 003188 BE29 09833 BTFSC Faza+3,7,0 00318A 0E02 09834 MOVLW 0x02 09835 ; lamp0(3)=W; 00318C 6F3A 09836 MOVWF Boards+58,1 09837 ; 09838 ; W=_OFF; 00318E 0E00 09839 MOVLW 0x00 09840 ; if(Faza.by_group.group4.4) W=_ON; 003190 B829 09841 BTFSC Faza+3,4,0 003192 0E01 09842 MOVLW 0x01 09843 ; if(Faza.by_group.group4.5) W=_BLINK; 003194 BA29 09844 BTFSC Faza+3,5,0 003196 0E02 09845 MOVLW 0x02 09846 ; lamp1(3)=W; 003198 6F3B 09847 MOVWF Boards+59,1 09848 ; 09849 ; W=_OFF; 00319A 0E00 09850 MOVLW 0x00 09851 ; if(Faza.by_group.group4.2) W=_ON; 00319C B429 09852 BTFSC Faza+3,2,0 00319E 0E01 09853 MOVLW 0x01 09854 ; if(Faza.by_group.group4.3) W=_BLINK; 0031A0 B629 09855 BTFSC Faza+3,3,0 0031A2 0E02 09856 MOVLW 0x02 09857 ; lamp2(3)=W; 0031A4 6F3C 09858 MOVWF Boards+60,1 09859 ; 09860 ; W=_OFF; 0031A6 0E00 09861 MOVLW 0x00 09862 ; if(Faza.by_group.group4.0) W=_ON; 0031A8 B029 09863 BTFSC Faza+3,0,0 0031AA 0E01 09864 MOVLW 0x01 09865 ; if(Faza.by_group.group4.1) W=_BLINK; 0031AC B229 09866 BTFSC Faza+3,1,0 0031AE 0E02 09867 MOVLW 0x02 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 191 LOC OBJECT CODE LINE SOURCE TEXT VALUE 09868 ; lamp3(3)=W; 0031B0 6F3D 09869 MOVWF Boards+61,1 09870 ;} 0031B2 0012 09871 RETURN 09872 09873 ; FILE main.c 09874 ; 09875 ;#include 09876 ;#include "i2c_hard.c" 09877 ;#include "system.c" 09878 ; 09879 ;// high level 09880 ;#include "communicate.c" 09881 ;#include "svetologick.c" 09882 ; 09883 ; 09884 ;void main(void) 09885 ;{ 0031B4 09886 main 09887 ;// 09888 ; // proc work on 4*4=16 MHz whith PLL 09889 ; // 1 step = 250 uS 09890 ; DI 0031B4 9EF2 09891 BCF 0xFF2,GIE,0 0031B6 9EF2 09892 BCF 0xFF2,GIE,0 09893 ; clearRAM(); 0031B8 EE00 F000 09894 LFSR 0,0 0031BC 0E06 09895 MOVLW 0x06 0031BE 0100 09896 MOVLB 0x00 0031C0 6AEE 09897 m658 CLRF POSTINC0,0 0031C2 62EA 09898 CPFSEQ FSR0H,0 0031C4 D7FD 09899 BRA m658 09900 ; 09901 ; PORTA = setPORTA; 0031C6 6A80 09902 CLRF PORTA,0 09903 ; PORTB = setPORTB; 0031C8 0E80 09904 MOVLW 0x80 0031CA 6E81 09905 MOVWF PORTB,0 09906 ; PORTC = setPORTC; 0031CC 0E59 09907 MOVLW 0x59 0031CE 6E82 09908 MOVWF PORTC,0 09909 ; 09910 ; TRISA = setTRISA; 0031D0 6892 09911 SETF TRISA,0 09912 ; TRISB = setTRISB; 0031D2 0E7F 09913 MOVLW 0x7F 0031D4 6E93 09914 MOVWF TRISB,0 09915 ; TRISC = setTRISC; 0031D6 0EBC 09916 MOVLW 0xBC 0031D8 6E94 09917 MOVWF TRISC,0 09918 ; 09919 ; CCP1CON=0; // CCP1 OFF 0031DA 6ABD 09920 CLRF CCP1CON,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 192 LOC OBJECT CODE LINE SOURCE TEXT VALUE 09921 ; 09922 ; ADON =OFF; // ADC OFF 0031DC 90C2 09923 BCF 0xFC2,ADON,0 09924 ; ADCON1=0b0000.1111;// ALL Digital IO 0031DE 0E0F 09925 MOVLW 0x0F 0031E0 6EC1 09926 MOVWF ADCON1,0 09927 ; OSCTUNE=0; 0031E2 6A9B 09928 CLRF OSCTUNE,0 09929 ; 09930 ; RBPU = 0; // PULLUP=On on PORTB 0031E4 9EF1 09931 BCF 0xFF1,RBPU,0 09932 ;// CAN off 09933 ; CANSTAT=0b001.0.000.0; 0031E6 0E20 09934 MOVLW 0x20 0031E8 6E6E 09935 MOVWF CANSTAT,0 09936 ; CANCON.7=1; //REQOP2=1; 0031EA 8E6F 09937 BSF CANCON,7,0 09938 ; CANCON=0b001.0.000.0; // off module 0031EC 6E6F 09939 MOVWF CANCON,0 09940 ; CANCON.7=0; //REQOP2=0; 0031EE 9E6F 09941 BCF CANCON,7,0 09942 ; CIOCON=0; 0031F0 6A73 09943 CLRF CIOCON,0 09944 ; 09945 ; TURN_ON_GR 0031F2 9E81 09946 BCF 0xF81,GR_ON,0 09947 ; 09948 ; // uart 1 RS232 09949 ; SPEN=ON; 0031F4 8EAB 09950 BSF 0xFAB,SPEN,0 09951 ; TXEN=ON; 0031F6 8AAC 09952 BSF 0xFAC,TXEN,0 09953 ; TX9=OFF; 0031F8 9CAC 09954 BCF 0xFAC,TX9,0 09955 ; RX9=OFF; 0031FA 9CAB 09956 BCF 0xFAB,RX9,0 09957 ; 09958 ; 09959 ; CREN=ON; 0031FC 88AB 09960 BSF 0xFAB,CREN,0 09961 ; BRGH=OFF; 0031FE 94AC 09962 BCF 0xFAC,BRGH,0 09963 ; SYNC=OFF; 003200 98AC 09964 BCF 0xFAC,SYNC,0 09965 ; SPBRG=25; // 9600 003202 0E19 09966 MOVLW 0x19 003204 6EAF 09967 MOVWF SPBRG,0 09968 ; ADDEN=0; 003206 96AB 09969 BCF 0xFAB,ADDEN,0 09970 ; initTimers(); 003208 6856 09971 SETF tTimeout,0 00320A 6857 09972 SETF tTimeout+1,0 00320C 6A58 09973 CLRF previousTMR0,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 193 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00320E 6A59 09974 CLRF subClock,0 003210 6AD7 09975 CLRF TMR0H,0 003212 0E04 09976 MOVLW 0x04 003214 6ED5 09977 MOVWF T0CON,0 003216 8ED5 09978 BSF 0xFD5,TMR0ON,0 003218 8CD5 09979 BSF 0xFD5,T08BIT,0 00321A 96D5 09980 BCF 0xFD5,PSA,0 09981 ; initEvents(); // all events off 00321C 6A3E 09982 CLRF EventStates,0 00321E 6A3F 09983 CLRF EventStates+1,0 003220 6A40 09984 CLRF EventStates+2,0 09985 ; 09986 ;// I2C 09987 ; setup_harw_iic(); 003222 ECDC F000 09988 CALL setup_harw_iic 09989 ;// Init Boards 09990 ; BoardNumb = DetectChBoards(); 003226 0102 09991 MOVLB 0x02 003228 EC59 F005 09992 CALL DetectChBoards 00322C 6F04 09993 MOVWF BoardNumb,1 09994 ; setAllGood(); 00322E EC8E F005 09995 CALL setAllGood 09996 ;// initialize clocks 09997 ; rtc_on(); 003232 EC30 F006 09998 CALL rtc_on 09999 ; rtc_get_clock(); // first read current data/time 003236 EC58 F006 10000 CALL rtc_get_clock 10001 ; get_correct_flags(); // get flags - is we have corrected clocks? 00323A EC45 F007 10002 CALL get_correct_flags 10003 ; sys_flags=mem_read_byte(_SYS_FLAGS); 00323E 0E02 10004 MOVLW 0x02 003240 6E0C 10005 MOVWF addr_2,0 003242 6A0D 10006 CLRF addr_2+1,0 003244 EC48 F001 10007 CALL mem_read_byte 003248 6E38 10008 MOVWF sys_flags,0 10009 ;//++++++++++++++++ 10010 ;// log start event 10011 ; if(!TO) log_event(LE_RESTART_WDT); 00324A B6D0 10012 BTFSC 0xFD0,TO,0 00324C D005 10013 BRA m659 00324E 0E01 10014 MOVLW 0x01 003250 EC6B F001 10015 CALL log_event 10016 ; else if(STKPTR.7 || STKPTR.6) log_event(LE_RESTART_STK); 003254 0100 10017 MOVLB 0x00 003256 D00D 10018 BRA m662 003258 BEFC 10019 m659 BTFSC STKPTR,7,0 00325A D002 10020 BRA m660 00325C ACFC 10021 BTFSS STKPTR,6,0 00325E D005 10022 BRA m661 003260 0E02 10023 m660 MOVLW 0x02 003262 EC6B F001 10024 CALL log_event 10025 ; else log_event(LE_START); 003266 0100 10026 MOVLB 0x00 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 194 LOC OBJECT CODE LINE SOURCE TEXT VALUE 003268 D004 10027 BRA m662 00326A 0E00 10028 m661 MOVLW 0x00 00326C EC6B F001 10029 CALL log_event 10030 ;//++++++++++++++++ 10031 ; STKPTR.6=0; STKPTR.7=0; 003270 0100 10032 MOVLB 0x00 003272 9CFC 10033 m662 BCF STKPTR,6,0 003274 9EFC 10034 BCF STKPTR,7,0 10035 ; clrwdt(); 003276 0004 10036 CLRWDT 10037 ;// indicators 10038 ; ind_states=0x00; // all off 003278 6A1D 10039 CLRF ind_states,0 10040 ; ind_blink=0x00; // not blink 00327A 6A1E 10041 CLRF ind_blink,0 10042 ; 10043 ; detect_flash_size(); 00327C EC41 F002 10044 CALL detect_flash_size 10045 ; 10046 ; decode_control(); // read and parse lamps colors and control bits 003280 DEAC 10047 RCALL decode_control 10048 ; load_directions(); // load directions array for red and green lamps 003282 DEE6 10049 RCALL load_directions 10050 ; FazesCnt=mem_read_byte(_FAZES_CNT); 003284 0E05 10051 MOVLW 0x05 003286 6E0C 10052 MOVWF addr_2,0 003288 6A0D 10053 CLRF addr_2+1,0 00328A EC48 F001 10054 CALL mem_read_byte 00328E 6E3A 10055 MOVWF FazesCnt,0 10056 ; if(FazesCnt > 12) fazes12=FALSE; 003290 0E0C 10057 MOVLW 0x0C 003292 643A 10058 CPFSGT FazesCnt,0 003294 D002 10059 BRA m663 003296 9421 10060 BCF 0x21,fazes12,0 10061 ; else fazes12=TRUE; 003298 D001 10062 BRA m664 00329A 8421 10063 m663 BSF 0x21,fazes12,0 10064 ; 10065 ; RedDelay=mem_read_byte(_RED_DELAY); 00329C 0E06 10066 m664 MOVLW 0x06 00329E 6E0C 10067 MOVWF addr_2,0 0032A0 6A0D 10068 CLRF addr_2+1,0 0032A2 EC48 F001 10069 CALL mem_read_byte 0032A6 6E39 10070 MOVWF RedDelay,0 10071 ; 10072 ; // Timers 10073 ; 10074 ; // TIMER1 -> count 500us ticks for VPU 10075 ; T1CON=0b1.0.00.0.00.1; 0032A8 0E81 10076 MOVLW 0x81 0032AA 6ECD 10077 MOVWF T1CON,0 10078 ; TMR1H=248; // 500uS 0032AC 0EF8 10079 MOVLW 0xF8 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 195 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0032AE 6ECF 10080 MOVWF TMR1H,0 10081 ; TMR1L=50; 0032B0 0E32 10082 MOVLW 0x32 0032B2 6ECE 10083 MOVWF TMR1L,0 10084 ;/* 10085 ;TMR1IF=0; 10086 ;_FLASH 10087 ;while(!TMR1IF); 10088 ;_FLASH 10089 ;TMR1IF=0; 10090 ;*/ 10091 ; 10092 ; T2CON=0b0.1111.0.11; //off 0032B4 0E7B 10093 MOVLW 0x7B 0032B6 6ECA 10094 MOVWF T2CON,0 10095 ; PR2=0xff; 0032B8 68CB 10096 SETF PR2,0 10097 ;// TMR3 for GW measure, 1mS counter 10098 ; T3CON=0b1.0.00.0.0.0.0; // off 0032BA 0E80 10099 MOVLW 0x80 0032BC 6EB1 10100 MOVWF T3CON,0 10101 ;/* 10102 ;#define T3ADDER 61540 10103 ;TMR3ON=ON; 10104 ;TMR3IF=0; 10105 ;while(!TMR3IF); 10106 ;_FLASH 10107 ;TMR3=T3ADDER; 10108 ;TMR3IF=0; 10109 ;while(!TMR3IF); 10110 ;_FLASH 10111 ;TMR3=T3ADDER; 10112 ;TMR3IF=0; 10113 ;while(!TMR3IF); 10114 ;_FLASH 10115 ;TMR3=T3ADDER; 10116 ;TMR3IF=0; 10117 ;while(!TMR3IF); 10118 ;_FLASH 10119 ;while(TRUE) clrwdt(); 10120 ; 10121 ; 10122 ; TMR2IF=0; 10123 ; TMR2ON=1; 10124 ; while(!TMR2IF); 10125 ; _FLASH 10126 ; TMR2IF=0; 10127 ; while(!TMR2IF); 10128 ; _FLASH 10129 ; while(TRUE) clrwdt(); 10130 ;*/ 10131 ; 10132 ; // interrupts MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 196 LOC OBJECT CODE LINE SOURCE TEXT VALUE 10133 ; TMR1IE=OFF; TMR1IF=OFF; 0032BE 909D 10134 BCF 0xF9D,TMR1IE,0 0032C0 909E 10135 BCF 0xF9E,TMR1IF,0 10136 ; TMR2IE=OFF; 0032C2 929D 10137 BCF 0xF9D,TMR2IE,0 10138 ; TMR3IE=OFF; 0032C4 92A0 10139 BCF 0xFA0,TMR3IE,0 10140 ; // interrupt priority 10141 ; IPEN=ON; 0032C6 8ED0 10142 BSF 0xFD0,IPEN,0 10143 ; INT1IP=LOW; 0032C8 9CF0 10144 BCF 0xFF0,INT1IP,0 10145 ; INT1IE=ON; 0032CA 86F0 10146 BSF 0xFF0,INT1IE,0 10147 ; INT1IF=0; 0032CC 90F0 10148 BCF 0xFF0,INT1IF,0 10149 ; INTEDG1=FALL; 0032CE 9AF1 10150 BCF 0xFF1,INTEDG1,0 10151 ; RBIP=LOW; 0032D0 90F1 10152 BCF 0xFF1,RBIP,0 10153 ; TMR1IP=LOW; 0032D2 909F 10154 BCF 0xF9F,TMR1IP,0 10155 ; TMR2IP=LOW; 0032D4 929F 10156 BCF 0xF9F,TMR2IP,0 10157 ; TMR3IP=LOW; 0032D6 92A2 10158 BCF 0xFA2,TMR3IP,0 10159 ; PEIE=ON; 0032D8 8CF2 10160 BSF 0xFF2,PEIE,0 10161 ; EI 0032DA 8EF2 10162 BSF 0xFF2,GIE,0 10163 ; 10164 ;// 10165 ; 10166 ; 10167 ; startTask(ClockTick); 0032DC 6A5A 10168 CLRF _TaskS2,0 10169 ; //clearTask(ClockTick); 10170 ; 10171 ; startTask(Ch_server); 0032DE 6BEF 10172 CLRF _TaskS14,1 10173 ; //clearTask(Ch_server); 10174 ; 10175 ;// SVETOFOR logic tasks 10176 ; startTask(SvLogick); 0032E0 6A5C 10177 CLRF _TaskS4,0 10178 ; //clearTask(SvLogick); 10179 ; 10180 ; startTask(Indicate); 0032E2 6BF6 10181 CLRF _TaskS15,1 10182 ; //clearTask(Indicate); 10183 ; 10184 ; clearTask(ProgrammStep); 0032E4 6E5D 10185 MOVWF _TaskS5,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 197 LOC OBJECT CODE LINE SOURCE TEXT VALUE 10186 ; clearTask(MakePromTact); 0032E6 6E5E 10187 MOVWF _TaskS6,0 10188 ; clearTask(GreenWaveChain); 0032E8 6FE4 10189 MOVWF _TaskS10,1 10190 ; clearTask(LocalKeys); 0032EA 6FE5 10191 MOVWF _TaskS11,1 10192 ; 10193 ; clearTask(ControlLamps); 0032EC 6FE3 10194 MOVWF _TaskS9,1 10195 ; clearTask(RedRecovery); 0032EE 6FF9 10196 MOVWF _TaskS17,1 10197 ; clearTask(Vpu); 0032F0 6E5F 10198 MOVWF _TaskS7,0 10199 ; //startTask(Vpu); 10200 ; 10201 ; clearTask(Asudd); 0032F2 6FE2 10202 MOVWF _TaskS8,1 10203 ; clearTask(AsuddRX); 0032F4 6FF7 10204 MOVWF _TaskS16,1 10205 ; clearTask(GSM); 0032F6 6FE6 10206 MOVWF _TaskS12,1 10207 ; clearTask(GSMRcv); 0032F8 6E13 10208 MOVWF _TaskS1,0 10209 ;//end SVETOFOR logic tasks 10210 ; 10211 ; startTask(RS232Connect); 0032FA 6A5B 10212 CLRF _TaskS3,0 10213 ; //clearTask(RS232Connect); 10214 ; clearTask(RSTimeout); 0032FC 6FE7 10215 MOVWF _TaskS13,1 10216 ; 10217 ;// for test 10218 ; 10219 ;/* 10220 ; char ch,idx,adr=GSM_DATA; 10221 ; idx=0; 10222 ; do{ 10223 ; ch=nvram[idx]; 10224 ; __store(adr,ch); // store to clock NVRAM 10225 ; adr++; 10226 ; idx++; 10227 ; }while(ch); 10228 ;*/ 10229 ;/* 10230 ; FSR0=&gsm_buff[0]; 10231 ; gsm_rx_cnt=0; 10232 ; do{ 10233 ; W=cmd[gsm_rx_cnt++]; 10234 ; POSTINC0=W; 10235 ; }while(W); 10236 ; DecodeSMS(); 10237 ;*/ 10238 ; MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 198 LOC OBJECT CODE LINE SOURCE TEXT VALUE 10239 ;//GSMGPRS=OFF; 10240 ; 10241 ; do{ 10242 ; clrwdt(); 0032FE 0004 10243 m665 CLRWDT 10244 ; taskSlicer(ClockTick); 003300 BE5A 10245 BTFSC _TaskS2,7,0 003302 D005 10246 BRA m666 003304 0102 10247 MOVLB 0x02 003306 EC91 F006 10248 CALL ClockTick 00330A 6E5A 10249 MOVWF _TaskS2,0 10250 ; taskSlicer(Ch_server); 00330C 0100 10251 MOVLB 0x00 00330E BFEF 10252 m666 BTFSC _TaskS14,7,1 003310 D003 10253 BRA m667 003312 EC3F F005 10254 CALL Ch_server 003316 6FEF 10255 MOVWF _TaskS14,1 10256 ; if(GSMGPRS){ 003318 A638 10257 m667 BTFSS 0x38,GSMGPRS,0 00331A D00B 10258 BRA m669 10259 ; taskSlicer(GSMRcv); 00331C BE13 10260 BTFSC _TaskS1,7,0 00331E D004 10261 BRA m668 003320 EC66 F009 10262 CALL GSMRcv 003324 6E13 10263 MOVWF _TaskS1,0 10264 ; taskSlicer(GSM); 003326 0100 10265 MOVLB 0x00 003328 BFE6 10266 m668 BTFSC _TaskS12,7,1 00332A D003 10267 BRA m669 00332C ECCA F009 10268 CALL GSM 003330 6FE6 10269 MOVWF _TaskS12,1 10270 ; } 10271 ; taskSlicer(Vpu); 003332 BE5F 10272 m669 BTFSC _TaskS7,7,0 003334 D003 10273 BRA m670 003336 EC25 F011 10274 CALL Vpu 00333A 6E5F 10275 MOVWF _TaskS7,0 10276 ; taskSlicer(SvLogick); 00333C BE5C 10277 m670 BTFSC _TaskS4,7,0 00333E D003 10278 BRA m671 003340 EC13 F012 10279 CALL SvLogick 003344 6E5C 10280 MOVWF _TaskS4,0 10281 ; taskSlicer(Indicate); 003346 BFF6 10282 m671 BTFSC _TaskS15,7,1 003348 D004 10283 BRA m672 00334A EC91 F007 10284 CALL Indicate 00334E 0100 10285 MOVLB 0x00 003350 6FF6 10286 MOVWF _TaskS15,1 10287 ; taskSlicer(ProgrammStep); 003352 BE5D 10288 m672 BTFSC _TaskS5,7,0 003354 D003 10289 BRA m673 003356 ECAE F013 10290 CALL ProgrammStep 00335A 6E5D 10291 MOVWF _TaskS5,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 199 LOC OBJECT CODE LINE SOURCE TEXT VALUE 10292 ; taskSlicer(MakePromTact); 00335C BE5E 10293 m673 BTFSC _TaskS6,7,0 00335E D003 10294 BRA m674 003360 EC04 F014 10295 CALL MakePromTact 003364 6E5E 10296 MOVWF _TaskS6,0 10297 ; if(GSMGPRS) taskSlicer(GSMRcv); 003366 A638 10298 m674 BTFSS 0x38,GSMGPRS,0 003368 D006 10299 BRA m675 00336A BE13 10300 BTFSC _TaskS1,7,0 00336C D004 10301 BRA m675 00336E EC66 F009 10302 CALL GSMRcv 003372 6E13 10303 MOVWF _TaskS1,0 10304 ; if(GreenWave){ 003374 0100 10305 MOVLB 0x00 003376 A038 10306 m675 BTFSS 0x38,GreenWave,0 003378 D006 10307 BRA m677 10308 ; taskSlicer(GreenWaveChain); 00337A BFE4 10309 BTFSC _TaskS10,7,1 00337C D002 10310 BRA m676 00337E DC27 10311 RCALL GreenWaveChain 003380 6FE4 10312 MOVWF _TaskS10,1 10313 ; timerTick(); 003382 ECAB F000 10314 m676 CALL timerTick 10315 ; } 10316 ; taskSlicer(LocalKeys); 003386 BFE5 10317 m677 BTFSC _TaskS11,7,1 003388 D003 10318 BRA m678 00338A ECE2 F011 10319 CALL LocalKeys 00338E 6FE5 10320 MOVWF _TaskS11,1 10321 ; taskSlicer(ControlLamps); 003390 BFE3 10322 m678 BTFSC _TaskS9,7,1 003392 D004 10323 BRA m679 003394 EC40 F014 10324 CALL ControlLamps 003398 0100 10325 MOVLB 0x00 00339A 6FE3 10326 MOVWF _TaskS9,1 10327 ; taskSlicer(RedRecovery); 00339C BFF9 10328 m679 BTFSC _TaskS17,7,1 00339E D004 10329 BRA m680 0033A0 ECAE F015 10330 CALL RedRecovery 0033A4 0100 10331 MOVLB 0x00 0033A6 6FF9 10332 MOVWF _TaskS17,1 10333 ; taskSlicer(Vpu); 0033A8 BE5F 10334 m680 BTFSC _TaskS7,7,0 0033AA D003 10335 BRA m681 0033AC EC25 F011 10336 CALL Vpu 0033B0 6E5F 10337 MOVWF _TaskS7,0 10338 ; if(ASUDD) { 0033B2 A438 10339 m681 BTFSS 0x38,ASUDD,0 0033B4 D00B 10340 BRA m683 10341 ; taskSlicer(AsuddRX); 0033B6 BFF7 10342 BTFSC _TaskS16,7,1 0033B8 D004 10343 BRA m682 0033BA ECDA F008 10344 CALL AsuddRX MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 200 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0033BE 0100 10345 MOVLB 0x00 0033C0 6FF7 10346 MOVWF _TaskS16,1 10347 ; taskSlicer(Asudd); 0033C2 BFE2 10348 m682 BTFSC _TaskS8,7,1 0033C4 D003 10349 BRA m683 0033C6 EC15 F009 10350 CALL Asudd 0033CA 6FE2 10351 MOVWF _TaskS8,1 10352 ; } 10353 ; if(GSMGPRS){ 0033CC A638 10354 m683 BTFSS 0x38,GSMGPRS,0 0033CE D00B 10355 BRA m685 10356 ; taskSlicer(GSM); 0033D0 BFE6 10357 BTFSC _TaskS12,7,1 0033D2 D003 10358 BRA m684 0033D4 ECCA F009 10359 CALL GSM 0033D8 6FE6 10360 MOVWF _TaskS12,1 10361 ; taskSlicer(GSMRcv); 0033DA BE13 10362 m684 BTFSC _TaskS1,7,0 0033DC D004 10363 BRA m685 0033DE EC66 F009 10364 CALL GSMRcv 0033E2 6E13 10365 MOVWF _TaskS1,0 10366 ; } 10367 ; taskSlicer(RS232Connect); 0033E4 0100 10368 MOVLB 0x00 0033E6 BE5B 10369 m685 BTFSC _TaskS3,7,0 0033E8 D003 10370 BRA m686 0033EA EC43 F003 10371 CALL RS232Connect 0033EE 6E5B 10372 MOVWF _TaskS3,0 10373 ; taskSlicer(RSTimeout); 0033F0 BFE7 10374 m686 BTFSC _TaskS13,7,1 0033F2 D003 10375 BRA m687 0033F4 EC34 F003 10376 CALL RSTimeout 0033F8 6FE7 10377 MOVWF _TaskS13,1 10378 ; timerTick(); 0033FA ECAB F000 10379 m687 CALL timerTick 10380 ; taskSlicer(Vpu); 0033FE BE5F 10381 BTFSC _TaskS7,7,0 003400 D003 10382 BRA m688 003402 EC25 F011 10383 CALL Vpu 003406 6E5F 10384 MOVWF _TaskS7,0 10385 ; if(GSMGPRS){ 003408 A638 10386 m688 BTFSS 0x38,GSMGPRS,0 00340A D00B 10387 BRA m690 10388 ; taskSlicer(GSMRcv); 00340C BE13 10389 BTFSC _TaskS1,7,0 00340E D004 10390 BRA m689 003410 EC66 F009 10391 CALL GSMRcv 003414 6E13 10392 MOVWF _TaskS1,0 10393 ; taskSlicer(GSM); 003416 0100 10394 MOVLB 0x00 003418 BFE6 10395 m689 BTFSC _TaskS12,7,1 00341A D003 10396 BRA m690 00341C ECCA F009 10397 CALL GSM MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 201 LOC OBJECT CODE LINE SOURCE TEXT VALUE 003420 6FE6 10398 MOVWF _TaskS12,1 10399 ; } 10400 ; // indicate GW comein 10401 ; if(isEvent(evtGW)){ 003422 A03F 10402 m690 BTFSS EventStates+1,0,0 003424 D005 10403 BRA m691 10404 ; ind_states.2=1; //uo [3] led 003426 841D 10405 BSF ind_states,2,0 10406 ; ind_send(ind_states^0xff); 003428 1C1D 10407 COMF ind_states,W,0 00342A ECB7 F007 10408 CALL ind_send 10409 ; clearEvent(evtGW); 00342E 903F 10410 BCF EventStates+1,0,0 10411 ; } 10412 ; // if no RS232 events (not connected with terminal for 5 min, st op!) 10413 ; if(uptime_sec > 300 && !isEvent(evtRS232)){ 003430 0102 10414 m691 MOVLB 0x02 003432 5109 10415 MOVF uptime_sec+2,W,1 003434 110A 10416 IORWF uptime_sec+3,W,1 003436 E105 10417 BNZ m692 003438 0E2D 10418 MOVLW 0x2D 00343A 5D07 10419 SUBWF uptime_sec,W,1 00343C 0E01 10420 MOVLW 0x01 00343E 5908 10421 SUBWFB uptime_sec+1,W,1 003440 E306 10422 BNC m693 003442 B23F 10423 m692 BTFSC EventStates+1,1,0 003444 D004 10424 BRA m693 10425 ; clearTask(RS232Connect); 003446 0E80 10426 MOVLW 0x80 003448 6E5B 10427 MOVWF _TaskS3,0 10428 ; clearTask(RSTimeout); 00344A 0100 10429 MOVLB 0x00 00344C 6FE7 10430 MOVWF _TaskS13,1 10431 ; } 10432 ; if(OERR) { // clear RS errors 00344E 0100 10433 m693 MOVLB 0x00 003450 A2AB 10434 BTFSS 0xFAB,OERR,0 003452 D755 10435 BRA m665 10436 ; W=RCREG; 003454 50AE 10437 MOVF RCREG,W,0 10438 ; CREN=0; nop2(); CREN=1; 003456 98AB 10439 BCF 0xFAB,CREN,0 003458 D000 10440 BRA m694 00345A 88AB 10441 m694 BSF 0xFAB,CREN,0 10442 ; RCIF=OFF; 00345C 9A9E 10443 BCF 0xF9E,RCIF,0 10444 ; } 10445 ; }while(TRUE); 00345E D74F 10446 BRA m665 10447 ;} 10448 ; 10449 ; MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 202 LOC OBJECT CODE LINE SOURCE TEXT VALUE 10450 ;#ifdef BOOT 10451 ; #pragma origin BOOT 007B00 10452 ORG 0x7B00 10453 10454 ; FILE boot.c 10455 ;#include "boot.h" 10456 ;void bootloader(void){ 007B00 10457 bootloader 10458 ; // first setup ports 10459 ; DI 007B00 9EF2 10460 BCF 0xFF2,GIE,0 007B02 9EF2 10461 BCF 0xFF2,GIE,0 10462 ; clearRAM(); 007B04 EE00 F000 10463 LFSR 0,0 007B08 0E06 10464 MOVLW 0x06 007B0A 0102 10465 MOVLB 0x02 007B0C 6AEE 10466 m695 CLRF POSTINC0,0 007B0E 62EA 10467 CPFSEQ FSR0H,0 007B10 D7FD 10468 BRA m695 10469 ; 10470 ; PORTB = setPORTB; 007B12 0E80 10471 MOVLW 0x80 007B14 6E81 10472 MOVWF PORTB,0 10473 ; PORTC = setPORTC; 007B16 0E59 10474 MOVLW 0x59 007B18 6E82 10475 MOVWF PORTC,0 10476 ; 10477 ; TRISB = setTRISB; 007B1A 0E7F 10478 MOVLW 0x7F 007B1C 6E93 10479 MOVWF TRISB,0 10480 ; TRISC = setTRISC; 007B1E 0EBC 10481 MOVLW 0xBC 007B20 6E94 10482 MOVWF TRISC,0 10483 ; 10484 ; CCP1CON=0; // CCP1 OFF 007B22 6ABD 10485 CLRF CCP1CON,0 10486 ; 10487 ; ADON =OFF; // ADC OFF 007B24 90C2 10488 BCF 0xFC2,ADON,0 10489 ; ADCON1=0b0000.1111;// ALL Digital IO 007B26 0E0F 10490 MOVLW 0x0F 007B28 6EC1 10491 MOVWF ADCON1,0 10492 ; OSCTUNE=0; 007B2A 6A9B 10493 CLRF OSCTUNE,0 10494 ; 10495 ; RBPU = 0; // PULLUP=On on PORTB 007B2C 9EF1 10496 BCF 0xFF1,RBPU,0 10497 ; // CAN off 10498 ; CANSTAT=0b001.0.000.0; 007B2E 0E20 10499 MOVLW 0x20 007B30 6E6E 10500 MOVWF CANSTAT,0 10501 ; CANCON.7=1; //REQOP2=1; 007B32 8E6F 10502 BSF CANCON,7,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 203 LOC OBJECT CODE LINE SOURCE TEXT VALUE 10503 ; CANCON=0b001.0.000.0; // off module 007B34 6E6F 10504 MOVWF CANCON,0 10505 ; CANCON.7=0; //REQOP2=0; 007B36 9E6F 10506 BCF CANCON,7,0 10507 ; CIOCON=0; 007B38 6A73 10508 CLRF CIOCON,0 10509 ; 10510 ; // uart 1 RS232 10511 ; SPEN=ON; 007B3A 8EAB 10512 BSF 0xFAB,SPEN,0 10513 ; TXEN=ON; 007B3C 8AAC 10514 BSF 0xFAC,TXEN,0 10515 ; TX9=OFF; 007B3E 9CAC 10516 BCF 0xFAC,TX9,0 10517 ; RX9=OFF; 007B40 9CAB 10518 BCF 0xFAB,RX9,0 10519 ; CREN=ON; 007B42 88AB 10520 BSF 0xFAB,CREN,0 10521 ; BRGH=OFF; 007B44 94AC 10522 BCF 0xFAC,BRGH,0 10523 ; SYNC=OFF; 007B46 98AC 10524 BCF 0xFAC,SYNC,0 10525 ; SPBRG=25; // 9600 007B48 0E19 10526 MOVLW 0x19 007B4A 6EAF 10527 MOVWF SPBRG,0 10528 ;// end of init 10529 ;//test turning on YELLOW BLINK switch !!! 10530 ; 10531 ;// goto strt; 10532 ; if(K_JM) goto exit_main; 007B4C B482 10533 BTFSC 0xF82,K_JM,0 007B4E D09D 10534 BRA m727 10535 ; j=250; // 500 msec waiting for answer from comp 007B50 0EFA 10536 MOVLW 0xFA 007B52 6F51 10537 MOVWF j,1 10538 ; do{ 10539 ; clrwdt(); 007B54 0004 10540 m696 CLRWDT 10541 ; put(_IS_COMP_PRESENT); // present marker 007B56 989E 10542 BCF 0xF9E,TXIF,0 007B58 0E3F 10543 MOVLW 0x3F 007B5A 6EAD 10544 MOVWF TXREG,0 007B5C A2AC 10545 m697 BTFSS 0xFAC,TRMT,0 007B5E D7FE 10546 BRA m697 007B60 A89E 10547 BTFSS 0xF9E,TXIF,0 007B62 D7FC 10548 BRA m697 007B64 0004 10549 CLRWDT 10550 ; for(i=255; i>0; --i) {nop2();nop2();nop2();nop2();nop2();} 007B66 6950 10551 SETF i,1 007B68 5350 10552 m698 MOVF i,1,1 007B6A E007 10553 BZ m704 007B6C D000 10554 BRA m699 007B6E D000 10555 m699 BRA m700 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 204 LOC OBJECT CODE LINE SOURCE TEXT VALUE 007B70 D000 10556 m700 BRA m701 007B72 D000 10557 m701 BRA m702 007B74 D000 10558 m702 BRA m703 007B76 0750 10559 m703 DECF i,1,1 007B78 D7F7 10560 BRA m698 10561 ; if(RCIF) break; 007B7A BA9E 10562 m704 BTFSC 0xF9E,RCIF,0 007B7C D002 10563 BRA m705 10564 ; }while(--j); 007B7E 2F51 10565 DECFSZ j,1,1 007B80 D7E9 10566 BRA m696 10567 ;// no response from comp 10568 ; if(!RCIF) goto exit_main; 007B82 AA9E 10569 m705 BTFSS 0xF9E,RCIF,0 007B84 D082 10570 BRA m727 10571 ; comp_cmd=RCREG; 007B86 CFAE F253 10572 MOVFF RCREG,comp_cmd 10573 ;// not valid response from comp 10574 ; if(comp_cmd != _COMP_PRESENT) goto exit_main; 007B8A 0E21 10575 MOVLW 0x21 007B8C 6353 10576 CPFSEQ comp_cmd,1 007B8E D07D 10577 BRA m727 10578 ;// valid comp response! -> wait loop here 10579 ; 10580 ;strt: 10581 ; last_state=__OK; 007B90 6B54 10582 CLRF last_state,1 10583 ; do{ 10584 ; if(OERR) { // clear RS errors 007B92 A2AB 10585 m706 BTFSS 0xFAB,OERR,0 007B94 D006 10586 BRA m708 10587 ; W=RCREG; 007B96 50AE 10588 MOVF RCREG,W,0 10589 ; CREN=0; nop2(); CREN=1; 007B98 98AB 10590 BCF 0xFAB,CREN,0 007B9A D000 10591 BRA m707 007B9C 88AB 10592 m707 BSF 0xFAB,CREN,0 10593 ; RCIF=OFF; 007B9E 9A9E 10594 BCF 0xF9E,RCIF,0 10595 ; continue; 007BA0 D7F8 10596 BRA m706 10597 ; } 10598 ; while(!RCIF) clrwdt(); 007BA2 BA9E 10599 m708 BTFSC 0xF9E,RCIF,0 007BA4 D002 10600 BRA m709 007BA6 0004 10601 CLRWDT 007BA8 D7FC 10602 BRA m708 10603 ; comp_cmd=RCREG; 007BAA CFAE F253 10604 m709 MOVFF RCREG,comp_cmd 10605 ; switch(comp_cmd){ 007BAE 5153 10606 MOVF comp_cmd,W,1 007BB0 0A40 10607 XORLW 0x40 007BB2 E00D 10608 BZ m710 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 205 LOC OBJECT CODE LINE SOURCE TEXT VALUE 007BB4 0A7F 10609 XORLW 0x7F 007BB6 E024 10610 BZ m713 007BB8 0A1B 10611 XORLW 0x1B 007BBA E02B 10612 BZ m715 007BBC 0A19 10613 XORLW 0x19 007BBE E037 10614 BZ m718 007BC0 0A1B 10615 XORLW 0x1B 007BC2 E049 10616 BZ m721 007BC4 0A78 10617 XORLW 0x78 007BC6 E054 10618 BZ m723 007BC8 0A74 10619 XORLW 0x74 007BCA E054 10620 BZ m724 007BCC D056 10621 BRA m725 10622 ; case(_GET_PROC_ID):{ 10623 ; TBLPTRU=0x3f; 007BCE 0E3F 10624 m710 MOVLW 0x3F 007BD0 6EF8 10625 MOVWF TBLPTRU,0 10626 ; TBLPTRH=0xff; 007BD2 68F7 10627 SETF TBLPTRH,0 10628 ; TBLPTRL=0xfe; 007BD4 0EFE 10629 MOVLW 0xFE 007BD6 6EF6 10630 MOVWF TBLPTRL,0 10631 ; put(*TBLPTR++); 007BD8 989E 10632 BCF 0xF9E,TXIF,0 007BDA 0009 10633 TBLRD *+ 007BDC CFF5 FFAD 10634 MOVFF TABLAT,TXREG 007BE0 A2AC 10635 m711 BTFSS 0xFAC,TRMT,0 007BE2 D7FE 10636 BRA m711 007BE4 A89E 10637 BTFSS 0xF9E,TXIF,0 007BE6 D7FC 10638 BRA m711 007BE8 0004 10639 CLRWDT 10640 ; put(*TBLPTR++); 007BEA 989E 10641 BCF 0xF9E,TXIF,0 007BEC 0009 10642 TBLRD *+ 007BEE CFF5 FFAD 10643 MOVFF TABLAT,TXREG 007BF2 A2AC 10644 m712 BTFSS 0xFAC,TRMT,0 007BF4 D7FE 10645 BRA m712 007BF6 A89E 10646 BTFSS 0xF9E,TXIF,0 007BF8 D7FC 10647 BRA m712 007BFA 0004 10648 CLRWDT 10649 ; last_state=__OK; 007BFC 6B54 10650 CLRF last_state,1 10651 ; break;} 007BFE D7C9 10652 BRA m706 10653 ; case(_GET_LAST):{ 10654 ; put(last_state); 007C00 989E 10655 m713 BCF 0xF9E,TXIF,0 007C02 C254 FFAD 10656 MOVFF last_state,TXREG 007C06 A2AC 10657 m714 BTFSS 0xFAC,TRMT,0 007C08 D7FE 10658 BRA m714 007C0A A89E 10659 BTFSS 0xF9E,TXIF,0 007C0C D7FC 10660 BRA m714 007C0E 0004 10661 CLRWDT MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 206 LOC OBJECT CODE LINE SOURCE TEXT VALUE 10662 ; break;} 007C10 D7C0 10663 BRA m706 10664 ; case(_WRITE_BLOCK):{ 10665 ; readBlock(); 007C12 D83E 10666 m715 RCALL readBlock 10667 ; if(decodeBlock()) writeBlock(); 007C14 D871 10668 RCALL decodeBlock 007C16 E302 10669 BNC m716 007C18 0101 10670 MOVLB 0x01 007C1A D8F2 10671 RCALL writeBlock 10672 ; put(last_state); 007C1C 989E 10673 m716 BCF 0xF9E,TXIF,0 007C1E C254 FFAD 10674 MOVFF last_state,TXREG 007C22 A2AC 10675 m717 BTFSS 0xFAC,TRMT,0 007C24 D7FE 10676 BRA m717 007C26 A89E 10677 BTFSS 0xF9E,TXIF,0 007C28 D7FC 10678 BRA m717 007C2A 0004 10679 CLRWDT 10680 ; break;} 007C2C D7B2 10681 BRA m706 10682 ; case(_SET_PRG_STATE):{ 10683 ; while(!RCIF) clrwdt(); 007C2E BA9E 10684 m718 BTFSC 0xF9E,RCIF,0 007C30 D002 10685 BRA m719 007C32 0004 10686 CLRWDT 007C34 D7FC 10687 BRA m718 10688 ; comp_cmd=RCREG; 007C36 CFAE F253 10689 m719 MOVFF RCREG,comp_cmd 10690 ; EEADR=_FLG_EE_ADR; 007C3A 68A9 10691 SETF EEADR,0 10692 ; EEDATA=comp_cmd; 007C3C C253 FFA8 10693 MOVFF comp_cmd,EEDATA 10694 ; EEPGD=OFF; 007C40 9EA6 10695 BCF 0xFA6,EEPGD,0 10696 ; CFGS=OFF; 007C42 9CA6 10697 BCF 0xFA6,CFGS,0 10698 ; WREN=1; 007C44 84A6 10699 BSF 0xFA6,WREN,0 10700 ; EECON2=0x55; 007C46 0E55 10701 MOVLW 0x55 007C48 6EA7 10702 MOVWF EECON2,0 10703 ; EECON2=0xaa; 007C4A 0EAA 10704 MOVLW 0xAA 007C4C 6EA7 10705 MOVWF EECON2,0 10706 ; WR=1; 007C4E 82A6 10707 BSF 0xFA6,WR,0 10708 ; nop2(); 007C50 D000 10709 BRA m720 10710 ; WREN=0; 007C52 94A6 10711 m720 BCF 0xFA6,WREN,0 10712 ; break;} 007C54 D79E 10713 BRA m706 10714 ; case(_GET_PRG_STATE):{ MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 207 LOC OBJECT CODE LINE SOURCE TEXT VALUE 10715 ; EEADR=_FLG_EE_ADR; 007C56 68A9 10716 m721 SETF EEADR,0 10717 ; EEPGD=OFF; 007C58 9EA6 10718 BCF 0xFA6,EEPGD,0 10719 ; CFGS=OFF; 007C5A 9CA6 10720 BCF 0xFA6,CFGS,0 10721 ; RD=1; 007C5C 80A6 10722 BSF 0xFA6,RD,0 10723 ; W=EEDATA; 007C5E 50A8 10724 MOVF EEDATA,W,0 10725 ; put(W); 007C60 989E 10726 BCF 0xF9E,TXIF,0 007C62 6EAD 10727 MOVWF TXREG,0 007C64 A2AC 10728 m722 BTFSS 0xFAC,TRMT,0 007C66 D7FE 10729 BRA m722 007C68 A89E 10730 BTFSS 0xF9E,TXIF,0 007C6A D7FC 10731 BRA m722 007C6C 0004 10732 CLRWDT 10733 ; break;} 007C6E D791 10734 BRA m706 10735 ; case(_ERASE_MEM):{ 10736 ; eraseMEMORY(); 007C70 D875 10737 m723 RCALL eraseMEMORY 10738 ; break;} 007C72 D78F 10739 BRA m706 10740 ; case(_WRITE_EEPR):{ 10741 ; loadEEData(); 007C74 D81A 10742 m724 RCALL loadEEData 10743 ; storeEEData(); 007C76 D82C 10744 RCALL storeEEData 10745 ; break;} 007C78 D78C 10746 BRA m706 10747 ; default: 10748 ; put(_NO_COMMAND); 007C7A 989E 10749 m725 BCF 0xF9E,TXIF,0 007C7C 68AD 10750 SETF TXREG,0 007C7E A2AC 10751 m726 BTFSS 0xFAC,TRMT,0 007C80 D7FE 10752 BRA m726 007C82 A89E 10753 BTFSS 0xF9E,TXIF,0 007C84 D7FC 10754 BRA m726 007C86 0004 10755 CLRWDT 10756 ; } 10757 ; }while(TRUE); 007C88 D784 10758 BRA m706 10759 ; 10760 ; 10761 ; 10762 ;exit_main: 10763 ; #asm 10764 ; DW __GOTO(STARTUP) 007C8A EF02 10765 m727 DW 0xEF02 007C8C F000 10766 DW 0xF000 10767 ; #endasm MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 208 LOC OBJECT CODE LINE SOURCE TEXT VALUE 10768 ;} 007C8E 0012 10769 RETURN 10770 ; 10771 ;void readBlock(void){ 007C90 10772 readBlock 10773 ; // get address block 10774 ; FSR0=&gsm_buff[0]; 007C90 EE01 F048 10775 LFSR 0,328 10776 ; i=2+64+2; // ADR[2]+DAT[64]+CRC[2] 007C94 0E44 10777 MOVLW 0x44 007C96 6F50 10778 MOVWF i,1 10779 ; do{ 10780 ; while(!RCIF) clrwdt(); 007C98 BA9E 10781 m728 BTFSC 0xF9E,RCIF,0 007C9A D002 10782 BRA m729 007C9C 0004 10783 CLRWDT 007C9E D7FC 10784 BRA m728 10785 ; W=RCREG; 007CA0 50AE 10786 m729 MOVF RCREG,W,0 10787 ; POSTINC0=W; 007CA2 6EEE 10788 MOVWF POSTINC0,0 10789 ; }while(--i); 007CA4 2F50 10790 DECFSZ i,1,1 007CA6 D7F8 10791 BRA m728 10792 ;} 007CA8 0012 10793 RETURN 10794 ; 10795 ;// load 256 bytes to 0x100 10796 ;void loadEEData(void){ 007CAA 10797 loadEEData 10798 ; FSR0=0x0100; 007CAA EE01 F000 10799 LFSR 0,256 10800 ; i=255; // 255 bytes, last not need 007CAE 6950 10801 SETF i,1 10802 ; do{ 10803 ; while(!RCIF) clrwdt(); 007CB0 BA9E 10804 m730 BTFSC 0xF9E,RCIF,0 007CB2 D002 10805 BRA m731 007CB4 0004 10806 CLRWDT 007CB6 D7FC 10807 BRA m730 10808 ; j=RCREG; 007CB8 CFAE F251 10809 m731 MOVFF RCREG,j 10810 ; POSTINC0=j; 007CBC C251 FFEE 10811 MOVFF j,POSTINC0 10812 ; }while(--i); 007CC0 2F50 10813 DECFSZ i,1,1 007CC2 D7F6 10814 BRA m730 10815 ; while(!RCIF) clrwdt(); 007CC4 BA9E 10816 m732 BTFSC 0xF9E,RCIF,0 007CC6 D002 10817 BRA m733 007CC8 0004 10818 CLRWDT 007CCA D7FC 10819 BRA m732 10820 ; W=RCREG; // dummy MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 209 LOC OBJECT CODE LINE SOURCE TEXT VALUE 007CCC 50AE 10821 m733 MOVF RCREG,W,0 10822 ;} 007CCE 0012 10823 RETURN 10824 ;// store 255 bytes from 0x100 to EEPROM 10825 ;void storeEEData(void){ 007CD0 10826 storeEEData 10827 ; FSR0=0x0100; 007CD0 EE01 F000 10828 LFSR 0,256 10829 ; do{ 10830 ; EEADR=FSR0L; 007CD4 CFE9 FFA9 10831 m734 MOVFF FSR0L,EEADR 10832 ; EEDATA = POSTINC0; 007CD8 CFEE FFA8 10833 MOVFF POSTINC0,EEDATA 10834 ; EEPGD=OFF; 007CDC 9EA6 10835 BCF 0xFA6,EEPGD,0 10836 ; CFGS=OFF; 007CDE 9CA6 10837 BCF 0xFA6,CFGS,0 10838 ; WREN=1; 007CE0 84A6 10839 BSF 0xFA6,WREN,0 10840 ; EECON2=0x55; 007CE2 0E55 10841 MOVLW 0x55 007CE4 6EA7 10842 MOVWF EECON2,0 10843 ; EECON2=0xaa; 007CE6 0EAA 10844 MOVLW 0xAA 007CE8 6EA7 10845 MOVWF EECON2,0 10846 ; WR=1; 007CEA 82A6 10847 BSF 0xFA6,WR,0 10848 ; nop2(); 007CEC D000 10849 BRA m735 10850 ; WREN=0; 007CEE 94A6 10851 m735 BCF 0xFA6,WREN,0 10852 ; }while(FSR0L != 0xff); 007CF0 3CE9 10853 INCFSZ FSR0L,W,0 007CF2 D7F0 10854 BRA m734 10855 ; last_state=__OK; 007CF4 6B54 10856 CLRF last_state,1 10857 ;} 007CF6 0012 10858 RETURN 10859 ; 10860 ;bit decodeBlock(void){ 007CF8 10861 decodeBlock 10862 ;// decode bytes by XOR 10863 ; FSR0=&gsm_buff[0]; // source 007CF8 EE01 F048 10864 LFSR 0,328 10865 ; for(i=0; i<(2+64+2); i++){ 007CFC 6B50 10866 CLRF i,1 007CFE 0E44 10867 m736 MOVLW 0x44 007D00 6150 10868 CPFSLT i,1 007D02 D007 10869 BRA m737 10870 ; j=INDF0; 007D04 CFEF F251 10871 MOVFF INDF0,j 10872 ; POSTINC0=j^i; 007D08 5150 10873 MOVF i,W,1 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 210 LOC OBJECT CODE LINE SOURCE TEXT VALUE 007D0A 1951 10874 XORWF j,W,1 007D0C 6EEE 10875 MOVWF POSTINC0,0 10876 ; } 007D0E 2B50 10877 INCF i,1,1 007D10 D7F6 10878 BRA m736 10879 ;// calc CRC 10880 ;// ADDR[2[low,high]]+DAT[32]+CRC[2[low,high]] 10881 ; FSR0=&gsm_buff[0]; // source 007D12 EE01 F048 10882 m737 LFSR 0,328 10883 ; cCRC(2+64); // DDR[2]+DAT[64] 007D16 0E42 10884 MOVLW 0x42 007D18 D8F9 10885 RCALL cCRC 10886 ; if(CRC.low8!=gsm_buff[2+64+0] || CRC.high8 != gsm_buff[2+64+1]){ 007D1A 5054 10887 MOVF CRC,W,0 007D1C 0101 10888 MOVLB 0x01 007D1E 638A 10889 CPFSEQ gsm_buff+66,1 007D20 D003 10890 BRA m738 007D22 5055 10891 MOVF CRC+1,W,0 007D24 198B 10892 XORWF gsm_buff+67,W,1 007D26 E004 10893 BZ m739 10894 ; last_state=_ERR_CRC; 007D28 0E81 10895 m738 MOVLW 0x81 007D2A 0102 10896 MOVLB 0x02 007D2C 6F54 10897 MOVWF last_state,1 10898 ;// return ERR; 10899 ; } 10900 ;// test address to write boundary 10901 ; if(adr > BOOT-64){ 007D2E 0101 10902 MOVLB 0x01 007D30 0EC1 10903 m739 MOVLW 0xC1 007D32 5D48 10904 SUBWF adr,W,1 007D34 0E7A 10905 MOVLW 0x7A 007D36 5949 10906 SUBWFB adr+1,W,1 007D38 E305 10907 BNC m740 10908 ; last_state=_ERR_ADRESS; 007D3A 0E80 10909 MOVLW 0x80 007D3C 0102 10910 MOVLB 0x02 007D3E 6F54 10911 MOVWF last_state,1 10912 ; return ERR; 007D40 90D8 10913 BCF 0xFD8,Carry,0 007D42 0012 10914 RETURN 10915 ; } 10916 ;// test address to write aligned to 64 bytes !! 10917 ; if((adr&0x3f) != 0){ 007D44 0E3F 10918 m740 MOVLW 0x3F 007D46 1548 10919 ANDWF adr,W,1 007D48 E005 10920 BZ m741 10921 ; last_state=_ERR_ADRESS; 007D4A 0E80 10922 MOVLW 0x80 007D4C 0102 10923 MOVLB 0x02 007D4E 6F54 10924 MOVWF last_state,1 10925 ; return ERR; 007D50 90D8 10926 BCF 0xFD8,Carry,0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 211 LOC OBJECT CODE LINE SOURCE TEXT VALUE 007D52 0012 10927 RETURN 10928 ; } 10929 ; last_state=__OK; 007D54 0102 10930 m741 MOVLB 0x02 007D56 6B54 10931 CLRF last_state,1 10932 ; return OK; 007D58 80D8 10933 BSF 0xFD8,Carry,0 007D5A 0012 10934 RETURN 10935 ;} 10936 ; 10937 ;void eraseMEMORY(void){ 007D5C 10938 eraseMEMORY 10939 ;// need to store startup code!!! 4 bytes from addr 0x0000 10940 ; TBLPTR=0x00; 007D5C 6AF6 10941 CLRF TBLPTR,0 007D5E 6AF7 10942 CLRF TBLPTR+1,0 007D60 6AF8 10943 CLRF TBLPTR+2,0 10944 ; gsm_buffACK[0]=*TBLPTR++; 007D62 0009 10945 TBLRD *+ 007D64 CFF5 F2C0 10946 MOVFF TABLAT,gsm_buffACK 10947 ; gsm_buffACK[1]=*TBLPTR++; 007D68 0009 10948 TBLRD *+ 007D6A CFF5 F2C1 10949 MOVFF TABLAT,gsm_buffACK+1 10950 ; gsm_buffACK[2]=*TBLPTR++; 007D6E 0009 10951 TBLRD *+ 007D70 CFF5 F2C2 10952 MOVFF TABLAT,gsm_buffACK+2 10953 ; gsm_buffACK[3]=*TBLPTR; 007D74 0008 10954 TBLRD * 007D76 CFF5 F2C3 10955 MOVFF TABLAT,gsm_buffACK+3 10956 ;// erase blocks 0x0000...0x7b00 10957 ;// ~896ms=448blocks*2ms 10958 ; TBLPTR=0x00; 007D7A 6AF6 10959 CLRF TBLPTR,0 007D7C 6AF7 10960 CLRF TBLPTR+1,0 007D7E 6AF8 10961 CLRF TBLPTR+2,0 10962 ; do{ 10963 ; clrwdt(); 007D80 0004 10964 m742 CLRWDT 10965 ; EEPGD=1; 007D82 8EA6 10966 BSF 0xFA6,EEPGD,0 10967 ; CFGS=0; 007D84 9CA6 10968 BCF 0xFA6,CFGS,0 10969 ; WREN=1; 007D86 84A6 10970 BSF 0xFA6,WREN,0 10971 ; FREE=1; 007D88 88A6 10972 BSF 0xFA6,FREE,0 10973 ; EECON2=0x55; 007D8A 0E55 10974 MOVLW 0x55 007D8C 6EA7 10975 MOVWF EECON2,0 10976 ; EECON2=0xAA; 007D8E 0EAA 10977 MOVLW 0xAA 007D90 6EA7 10978 MOVWF EECON2,0 10979 ; WR=1; MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 212 LOC OBJECT CODE LINE SOURCE TEXT VALUE 007D92 82A6 10980 BSF 0xFA6,WR,0 10981 ; nop();nop(); 007D94 0000 10982 NOP 007D96 0000 10983 NOP 10984 ; TBLPTR+=64; 007D98 0E40 10985 MOVLW 0x40 007D9A 26F6 10986 ADDWF TBLPTR,1,0 007D9C 0E00 10987 MOVLW 0x00 007D9E 22F7 10988 ADDWFC TBLPTR+1,1,0 007DA0 22F8 10989 ADDWFC TBLPTR+2,1,0 10990 ; }while(TBLPTR nbr 11282 ;// changed FSR0 11283 ;// result crc in 11284 ;void cCRC(char nbr){ 007F0C 11285 cCRC 007F0C 6E7F 11286 MOVWF nbr_6,0 11287 ; CRC=0xffff; 007F0E 6854 11288 SETF CRC,0 007F10 6855 11289 SETF CRC+1,0 11290 ; do{ 11291 ; char i=8; 007F12 0E08 11292 m752 MOVLW 0x08 007F14 6E7F 11293 MOVWF i_31,0 11294 ; CRC^=POSTINC0; 007F16 50EE 11295 MOVF POSTINC0,W,0 007F18 1A54 11296 XORWF CRC,1,0 11297 ; do{ MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 218 LOC OBJECT CODE LINE SOURCE TEXT VALUE 11298 ; if(CRC&0x0001){ 007F1A A054 11299 m753 BTFSS CRC,0,0 007F1C D008 11300 BRA m754 11301 ; CRC>>=1; 007F1E 90D8 11302 BCF 0xFD8,Carry,0 007F20 3255 11303 RRCF CRC+1,1,0 007F22 3254 11304 RRCF CRC,1,0 11305 ; CRC^=CRC_POLYNOME; 007F24 0EA0 11306 MOVLW 0xA0 007F26 1A55 11307 XORWF CRC+1,1,0 007F28 0E01 11308 MOVLW 0x01 007F2A 1A54 11309 XORWF CRC,1,0 11310 ; } else CRC>>=1; 007F2C D003 11311 BRA m755 007F2E 90D8 11312 m754 BCF 0xFD8,Carry,0 007F30 3255 11313 RRCF CRC+1,1,0 007F32 3254 11314 RRCF CRC,1,0 11315 ; }while(--i); 007F34 067F 11316 m755 DECF i_31,1,0 007F36 507F 11317 MOVF i_31,W,0 007F38 E1F0 11318 BNZ m753 11319 ; }while(--nbr); 007F3A 067F 11320 DECF nbr_6,1,0 007F3C 507F 11321 MOVF nbr_6,W,0 007F3E E1E9 11322 BNZ m752 11323 ;} 007F40 0012 11324 RETURN 11325 000000 11326 ORG 0x0000 000000 EF80 11327 DATA 0xEF80 000002 F03D 11328 DATA 0xF03D F00000 11329 ORG 0xF00000 F00000 3032 11330 DATA 0x3032 F00002 3730 11331 DATA 0x3730 F00004 6328 11332 DATA 0x6328 F00006 2029 11333 DATA 0x2029 F00008 7962 11334 DATA 0x7962 F0000A 4A20 11335 DATA 0x4A20 F0000C 7275 11336 DATA 0x7275 F0000E 2069 11337 DATA 0x2069 F00010 6142 11338 DATA 0x6142 F00012 6574 11339 DATA 0x6574 F00014 6B6E 11340 DATA 0x6B6E F00016 2C6F 11341 DATA 0x2C6F F00018 4B20 11342 DATA 0x4B20 F0001A 6172 11343 DATA 0x6172 F0001C 6E73 11344 DATA 0x6E73 F0001E 796F 11345 DATA 0x796F F00020 7261 11346 DATA 0x7261 F00022 6B73 11347 DATA 0x6B73 F00024 203B 11348 DATA 0x203B F00026 6D65 11349 DATA 0x6D65 F00028 6961 11350 DATA 0x6961 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 219 LOC OBJECT CODE LINE SOURCE TEXT VALUE F0002A 3A6C 11351 DATA 0x3A6C F0002C 6A20 11352 DATA 0x6A20 F0002E 7275 11353 DATA 0x7275 F00030 6162 11354 DATA 0x6162 F00032 4074 11355 DATA 0x4074 F00034 6172 11356 DATA 0x6172 F00036 626D 11357 DATA 0x626D F00038 656C 11358 DATA 0x656C F0003A 2E72 11359 DATA 0x2E72 F0003C 7572 11360 DATA 0x7572 F0003E 430A 11361 DATA 0x430A F00040 6D6F 11362 DATA 0x6D6F F00042 6970 11363 DATA 0x6970 F00044 656C 11364 DATA 0x656C F00046 2D72 11365 DATA 0x2D72 F00048 4343 11366 DATA 0x4343 F0004A 5838 11367 DATA 0x5838 F0004C 202E 11368 DATA 0x202E F0004E 6F48 11369 DATA 0x6F48 F00050 7473 11370 DATA 0x7473 F00052 6620 11371 DATA 0x6620 F00054 7269 11372 DATA 0x7269 F00056 776D 11373 DATA 0x776D F00058 7261 11374 DATA 0x7261 F0005A 2065 11375 DATA 0x2065 F0005C 6576 11376 DATA 0x6576 F0005E 7372 11377 DATA 0x7372 F00060 6F69 11378 DATA 0x6F69 F00062 3A6E 11379 DATA 0x3A6E F00064 0020 11380 DATA 0x0020 F00066 4C4F 11381 DATA 0x4C4F F00068 2E44 11382 DATA 0x2E44 F0006A 3130 11383 DATA 0x3130 F0006C 302E 11384 DATA 0x302E F0006E 2E31 11385 DATA 0x2E31 F00070 3233 11386 DATA 0x3233 F00072 0037 11387 DATA 0x0037 F00074 0A2E 11388 DATA 0x0A2E F00076 6946 11389 DATA 0x6946 F00078 6D72 11390 DATA 0x6D72 F0007A 6177 11391 DATA 0x6177 F0007C 6572 11392 DATA 0x6572 F0007E 6320 11393 DATA 0x6320 F00080 6D6F 11394 DATA 0x6D6F F00082 6970 11395 DATA 0x6970 F00084 656C 11396 DATA 0x656C F00086 2064 11397 DATA 0x2064 F00088 6E61 11398 DATA 0x6E61 F0008A 2064 11399 DATA 0x2064 F0008C 6C66 11400 DATA 0x6C66 F0008E 7361 11401 DATA 0x7361 F00090 6568 11402 DATA 0x6568 F00092 3A64 11403 DATA 0x3A64 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 220 LOC OBJECT CODE LINE SOURCE TEXT VALUE F00094 0020 11404 DATA 0x0020 F00096 3731 11405 DATA 0x3731 F00098 313A 11406 DATA 0x313A F0009A 3A38 11407 DATA 0x3A38 F0009C 3630 11408 DATA 0x3630 F0009E 2D20 11409 DATA 0x2D20 F000A0 0020 11410 DATA 0x0020 F000A2 3920 11411 DATA 0x3920 F000A4 4F20 11412 DATA 0x4F20 F000A6 7463 11413 DATA 0x7463 F000A8 3220 11414 DATA 0x3220 F000AA 3030 11415 DATA 0x3030 F000AC 0038 11416 DATA 0x0038 F000AE 00FF 11417 DATA 0x00FF 11418 END MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 221 SYMBOL TABLE LABEL VALUE ACKDT 00000005 ACKEN 00000004 ACKSTAT 00000006 ACrc 00000201 ACrc_2 00000200 ADCON1 00000FC1 ADDEN 00000003 ADON 00000000 ASUDD 00000002 AllOff 00002EC8 AllRedOn 00002E46 Asudd 0000122A AsuddRX 000011B4 AvarExpl 00000205 AvarGroup 00000206 BCLIF 00000003 BRGH 00000002 BSR 00000FE0 BoardNumb 00000204 Boards 00000100 C17cnt 00000005 C19cnt 00000005 C23cnt 00000012 C24cnt 00000012 CANCON 00000F6F CANSTAT 00000F6E CCP1CON 00000FBD CFGS 00000006 CHFTime 00002DCC CIOCON 00000F73 CKP 00000004 CRC 00000054 CREN 00000004 CalcAsuddCRC 00000FC6 CalcCorrectGW 00002C2E Carry 00000000 Ch_server 00000A7E ClockTick 00000D22 ControlLamps 00002880 DateTime2Str 00001FBA DecodeSMS 000018E2 DetectChBoards 00000AB2 EEADR 00000FA9 EECON2 00000FA7 EEDATA 00000FA8 EEPGD 00000007 EncodeASK 00001A58 EncodeDTIME 00001C8E EncodeERROR 00001AD2 EncodeFDEL 00001EB2 EncodeHEALTH 00001B00 EncodeMODE 00001E46 EncodePOWER220 00001D46 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 222 SYMBOL TABLE LABEL VALUE EncodePOWER220COUNTER 00001D7E EncodeSMSCENTER 00001CBE EncodeSQUAL 00001DC0 EncodeTEMPER 00001BD8 EncodeTRNSP_ID 00001A9C EventStates 0000003E FREE 00000004 FSR0 00000FE9 FSR0H 00000FEA FSR0L 00000FE9 FSR1 00000FE1 FSR2 00000FD9 Faza 00000026 FazesCnt 0000003A FindIncomingSMS 0000187A FlashSize 000000C8 GIE 00000007 GR_ON 00000007 GSM 00001394 GSMGPRS 00000003 GSMRcv 000012CC GWCorrCntMs 00000302 GW_IN 00000004 GWmask 0000003D GetGWMask 00002D54 GreenWave 00000000 GreenWaveChain 00002BCE GreenWaveDelay 0000003C GreenWaveDir 0000003B INDF0 00000FEF INDF1 00000FE7 INT1IE 00000003 INT1IF 00000000 INT1IP 00000006 INTEDG0 00000006 INTEDG1 00000005 IPEN 00000007 Indicate 00000F22 K_JM 00000002 K_TVP 00000005 KstateJM 00000000 KstateTVP 00000001 LocalKeys 000023C4 MakePromTact 00002808 OERR 00000001 OSCTUNE 00000F9B PCL 00000FF9 PEIE 00000006 PEN 00000002 PORTA 00000F80 PORTB 00000F81 PORTC 00000F82 POSTDEC0 00000FED MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 223 SYMBOL TABLE LABEL VALUE POSTDEC1 00000FE5 POSTINC0 00000FEE POSTINC1 00000FE6 POSTINC2 00000FDE PR2 00000FCB PRODH 00000FF4 PRODL 00000FF3 PSA 00000003 Peshehodik 00000001 PeshehodnikDelay 0000003C PrevTimeGW 00000304 ProgrammStep 0000275C PushTransID 000022DA PutBuff 000020FC PutCString 0000203C RBIP 00000000 RBPU 00000007 RCEN 00000003 RCIF 00000005 RCREG 00000FAE RD 00000000 RS232Connect 00000686 RSEN 00000001 RSTimeout 00000668 RW_ 00000002 RX9 00000006 Red0Logged 00000000 Red1Logged 00000001 Red2Logged 00000002 Red3Logged 00000003 RedDelay 00000039 RedRecovery 00002B5C SEN 00000000 SMP 00000007 SPBRG 00000FAF SPEN 00000007 SSPADD 00000FC8 SSPBUF 00000FC9 SSPCON1 00000FC6 SSPCON2 00000FC5 SSPIF 00000003 SSPSTAT 00000FC7 STATUS 00000FD8 STKPTR 00000FFC SYNC 00000004 SendStateAsd 00001064 SendTestCPlateExist 00000FF0 SetAsuddHdr 00000FAE SetClock 00001F28 SetNewFazaDelay 00001F02 SvLogick 00002426 T08BIT 00000006 T0CON 00000FD5 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 224 SYMBOL TABLE LABEL VALUE T1CON 00000FCD T2CON 00000FCA T3CON 00000FB1 TABLAT 00000FF5 TBLPTR 00000FF6 TBLPTRH 00000FF7 TBLPTRL 00000FF6 TBLPTRU 00000FF8 TMR0H 00000FD7 TMR0L 00000FD6 TMR0ON 00000007 TMR1H 00000FCF TMR1IE 00000000 TMR1IF 00000000 TMR1IP 00000000 TMR1L 00000FCE TMR2IE 00000001 TMR2IF 00000001 TMR2IP 00000001 TMR2ON 00000002 TMR3 00000FB2 TMR3IE 00000001 TMR3IF 00000001 TMR3IP 00000001 TMR3ON 00000000 TO 00000003 TRISA 00000F92 TRISB 00000F93 TRISC 00000F94 TRMT 00000001 TX9 00000006 TX9D 00000000 TXEN 00000005 TXIF 00000004 TXREG 00000FAD TestCNT 000019EC Trspt_ID 0000020E UpdateTransportCounters 00002392 VPU_OUT 00000000 Vpu 0000224A WCOL 00000007 WR 00000001 WREG 00000FE8 WREN 00000002 YellowBlink 00002E84 Zero_ 00000002 _TESTPIN 00000001 _TaskS1 00000013 _TaskS10 000000E4 _TaskS11 000000E5 _TaskS12 000000E6 _TaskS13 000000E7 _TaskS14 000000EF MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 225 SYMBOL TABLE LABEL VALUE _TaskS15 000000F6 _TaskS16 000000F7 _TaskS17 000000F9 _TaskS2 0000005A _TaskS3 0000005B _TaskS4 0000005C _TaskS5 0000005D _TaskS6 0000005E _TaskS7 0000005F _TaskS8 000000E2 _TaskS9 000000E3 __18F2580 00000001 __restore 00000EF6 _const1 00000058 _day 00000007 _hour 00000005 _lowPriorityInt 00002150 _min 00000006 ack 00000000 ack_2 00000000 ack_3 00000000 addr 0000000D addr_2 0000000C addr_3 00000008 addr_4 00000009 addr_5 00000005 addr_6 00000007 addr_7 00000007 adr 00000148 adr_2 00000006 adr_3 00000006 adr_4 00000009 adress 00000006 alarm_swap 000003EC alarms_cnt 00000024 as_allred 00000000 as_ctrl 00000023 as_du 00000005 as_faza 00000022 as_ru 00000006 as_state0 00000020 as_state1 00000022 as_zu 00000001 asudd_buff_rx 0000015A asudd_buff_tx 00000148 asudd_du_mode 00000160 asudd_err_code 0000015F asudd_faze 00000162 asudd_zu_mode 00000161 base 0000000B base_2 00000007 base_3 00000006 base_4 00000006 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 226 SYMBOL TABLE LABEL VALUE base_5 00000008 base_6 00000005 base_to 0000000A bcd2str 00001F6E bcd_date 00000019 bcd_day 00000018 bcd_hr 00000017 bcd_min 00000016 bcd_mns 0000001A bcd_yr 0000001B bootloader 00007B00 bt 00000011 buff_from_states 00000B68 cCRC 00007F0C cHigh 00000202 cHigh_2 00000201 cLow 00000201 cLow_2 00000200 calcCRC 0000211E cfg_size 000000ED chnl_from_lamp_numb 00002EF0 ci 00000009 cicl 00000006 clear_correct 00000EE0 clk_buff 00000015 clock_correct_march 00000DDA clock_correct_oct 00000D8A cmd 00000006 cnt 00000006 cnt_2 00000006 cnt_3 00000005 cnt_4 00000005 color 0000000B color_from_lamp_numb 00002F32 colr 00000009 comp_cmd 00000253 compare_time 000003C2 corrected_march 00000007 corrected_octbr 00000006 ctrl 00000005 curr_alarm_day 00000025 current_delay 0000002D current_faza 0000002C current_prg 0000002A current_step 0000002B dat 00000011 dat_2 00000008 day 00000008 decodeBlock 00007CF8 decode_control 00002FDA detect_flash_size 00000482 diff 00000005 dir 000000FE MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 227 SYMBOL TABLE LABEL VALUE eraseMEMORY 00007D5C event_cod 00000005 faza 00000005 faza2change 00000032 fazaRDTillTimeDH 00000034 fazaRDTillTimeDM 00000036 fazaRDTillTimeEH 00000035 fazaRDTillTimeEM 00000037 fazaRemoteDelay 00000033 fazes12 00000002 find_curr_progr 00003082 flag 00000000 flag_2 00000006 flash 00000004 from_faza 00000005 get_alarms 00000420 get_correct_flags 00000E8A gsm_buff 00000148 gsm_buffACK 000002C0 gsm_rx_cnt 00000048 gsm_rx_timeout 00000049 gw_st 00000001 h0 0000000D h0_2 00000008 h1 0000000F h1_2 0000000A health_from_lamp_numb 00002F28 hex16str 00001FB2 hex8str 00001F82 hi 00000009 i 00000250 i2c_read_hrdw 00000218 i2c_restart_hrdw 000001F8 i2c_start_hrdw 000001E4 i2c_stop_hrdw 000001EC i2c_wait_idle_hrdw 000001D4 i2c_write_hrdw 00000200 i_10 00000203 i_11 00000200 i_12 00000200 i_13 00000202 i_14 00000005 i_15 00000005 i_16 00000005 i_17 00000005 i_18 00000005 i_19 00000005 i_2 00000006 i_20 00000005 i_21 00000005 i_22 00000008 i_23 00000007 i_24 00000005 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 228 SYMBOL TABLE LABEL VALUE i_25 000000FA i_26 00000F7F i_27 00000005 i_28 00000005 i_29 00000007 i_3 00000F7F i_30 00000005 i_31 00000F7F i_4 00000009 i_5 00000005 i_7 00000005 i_8 00000005 i_9 00000005 idat 00000005 idx0 00000F7F idx1 00000F7F ind_blink 0000001E ind_live 0000001F ind_send 00000F6E ind_states 0000001D isGWOnDirection 00002D96 isPINReady 000017BA isRegistred 00001808 isValidAsuddAnswer 0000110C j 00000251 j_2 0000000A j_3 00000006 j_4 00000008 j_5 00000F7F j_6 00000006 lamp_present 00002F0A last_event 0000020C last_state 00000254 lead_zero 00000003 lenght 0000000F lmp 00000006 ln 000000FD ln_2 00000F7F ln_3 00000F7F ln_4 00000F7F ln_5 00000F7F ln_6 00000F7F lo 0000000A loadEEData 00007CAA load_directions 00003050 log_event 000002D6 lowPriorityIntServer 00000018 m0 0000000E m001 00000044 m002 00000048 m003 0000004C m004 00000174 m005 000001A8 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 229 SYMBOL TABLE LABEL VALUE m006 000001D8 m007 000001F2 m008 0000020C m009 0000021E m010 00000236 m011 0000023A m012 00000240 m013 00000242 m014 00000244 m015 00000246 m016 00000248 m017 0000024A m018 0000024E m019 00000280 m020 000002E2 m021 0000031A m022 0000032E m023 00000358 m024 0000036A m025 000003AC m026 000003B4 m027 000003CC m028 000003D4 m029 000003E2 m030 000003EA m031 0000042C m032 00000438 m033 00000462 m034 0000047A m035 0000047E m036 000004CC m037 000004D2 m038 000004F8 m039 00000500 m040 0000054E m041 00000556 m042 000005A6 m043 000005C8 m044 000005CE m045 000005EA m046 00000672 m047 0000067C m048 0000069A m049 0000069E m050 000006AE m051 0000073E m052 00000744 m053 00000764 m054 0000076C m055 00000770 m056 0000077A m057 00000782 m058 0000078E MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 230 SYMBOL TABLE LABEL VALUE m059 0000079E m060 000007A8 m061 000007CE m062 000007D6 m063 000007DA m064 000007EC m065 000007FE m066 00000808 m067 0000080A m068 00000812 m069 0000081A m070 00000822 m071 0000082A m072 00000832 m073 0000083A m074 0000084E m075 0000087A m076 00000884 m077 00000890 m078 00000896 m079 0000089E m080 000008AA m081 000008B2 m082 000008B8 m083 000008C0 m084 000008D4 m085 000008DE m086 000008E8 m087 00000902 m088 0000090A m089 0000091E m090 00000928 m091 0000093C m092 00000944 m093 00000948 m094 00000960 m095 00000968 m096 0000096A m097 0000097E m098 00000986 m099 0000098E m0_2 00000009 m1 00000010 m100 000009AC m101 000009BA m102 000009C8 m103 000009CA m104 000009D0 m105 000009D6 m106 000009E4 m107 000009FE m108 00000A04 m109 00000A0C MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 231 SYMBOL TABLE LABEL VALUE m110 00000A18 m111 00000A26 m112 00000A3A m113 00000A3E m114 00000A4E m115 00000A72 m116 00000A92 m117 00000A9C m118 00000AAA m119 00000AB6 m120 00000AE4 m121 00000B06 m122 00000B14 m123 00000B18 m124 00000B3C m125 00000B4A m126 00000B5E m127 00000B70 m128 00000B8A m129 00000B9C m130 00000B9E m131 00000BAA m132 00000BB4 m133 00000BC0 m134 00000C1C m135 00000C78 m136 00000C92 m137 00000C9C m138 00000CCA m139 00000D00 m140 00000D2C m141 00000D4E m142 00000D58 m143 00000D6C m144 00000D9C m145 00000DAE m146 00000DB4 m147 00000DD8 m148 00000DEC m149 00000DFE m150 00000E04 m151 00000E1E m152 00000E32 m153 00000E44 m154 00000E4A m155 00000E54 m156 00000E66 m157 00000E78 m158 00000E7E m159 00000E88 m160 00000EA6 m161 00000EB2 m162 00000EB4 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 232 SYMBOL TABLE LABEL VALUE m163 00000ED0 m164 00000EDC m165 00000EDE m166 00000F2C m167 00000F3C m168 00000F5A m169 00000F66 m170 00000FA0 m171 00000FD4 m172 00000FE2 m173 00000FE6 m174 0000101E m175 00001026 m176 00001036 m177 00001038 m178 00001042 m179 0000104C m180 0000105C m181 00001062 m182 00001074 m183 00001076 m184 0000107E m185 00001080 m186 00001088 m187 0000108A m188 00001094 m189 00001096 m190 0000109E m191 000010A0 m192 000010AA m193 000010AC m194 000010B4 m195 000010B6 m196 000010C0 m197 000010CA m198 000010CE m199 000010DE m1_2 0000000B m200 000010E8 m201 000010F2 m202 000010FC m203 0000110A m204 00001116 m205 00001122 m206 00001134 m207 00001146 m208 00001158 m209 0000116A m210 0000117A m211 00001188 m212 0000118C m213 0000119E m214 000011B0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 233 SYMBOL TABLE LABEL VALUE m215 000011BE m216 000011DE m217 000011E6 m218 000011EC m219 000011FC m220 00001218 m221 00001228 m222 00001242 m223 0000124E m224 00001262 m225 0000126A m226 00001282 m227 0000128E m228 00001294 m229 000012A4 m230 000012BE m231 000012E2 m232 000012FA m233 00001302 m234 0000133C m235 00001350 m236 00001360 m237 00001362 m238 00001370 m239 0000137E m240 00001382 m241 0000138C m242 000013E6 m243 00001400 m244 00001418 m245 00001422 m246 00001434 m247 0000143C m248 00001446 m249 0000145A m250 0000146E m251 00001486 m252 00001498 m253 000014A2 m254 000014BA m255 000014CE m256 000014E2 m257 000014EA m258 000014FA m259 0000151C m260 0000152C m261 00001534 m262 00001544 m263 00001550 m264 0000155E m265 0000156E m266 00001582 m267 00001596 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 234 SYMBOL TABLE LABEL VALUE m268 000015AA m269 000015B2 m270 000015C2 m271 000015D8 m272 000015DC m273 000015DE m274 000015F4 m275 000015FE m276 0000160C m277 0000162E m278 00001650 m279 00001666 m280 00001680 m281 000016D4 m282 000016DA m283 000016E0 m284 000016E6 m285 000016EE m286 000016F2 m287 00001702 m288 0000170E m289 00001712 m290 00001716 m291 00001726 m292 0000172E m293 0000173E m294 00001746 m295 0000174A m296 0000174E m297 0000175C m298 00001764 m299 00001774 m300 0000178E m301 000017B0 m302 000017B6 m303 000017C2 m304 000017CC m305 000017CE m306 00001800 m307 00001804 m308 00001810 m309 0000181A m310 0000181C m311 00001864 m312 00001868 m313 00001872 m314 00001876 m315 0000187E m316 000018BC m317 000018BE m318 000018D8 m319 000018DC m320 000018E0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 235 SYMBOL TABLE LABEL VALUE m321 000018E4 m322 00001920 m323 00001948 m324 00001972 m325 00001976 m326 0000197A m327 0000197E m328 00001982 m329 0000198C m330 000019A6 m331 000019AA m332 000019BC m333 000019C8 m334 000019CE m335 000019D4 m336 000019FA m337 000019FE m338 00001A0E m339 00001A1E m340 00001A2A m341 00001A34 m342 00001A44 m343 00001A54 m344 00001B22 m345 00001B26 m346 00001B36 m347 00001B3A m348 00001B48 m349 00001B4C m350 00001B5C m351 00001B60 m352 00001B6E m353 00001B72 m354 00001B82 m355 00001B86 m356 00001B94 m357 00001B98 m358 00001BA8 m359 00001BAC m360 00001BB2 m361 00001BC0 m362 00001BDA m363 00001C12 m364 00001C16 m365 00001C28 m366 00001C4A m367 00001C4E m368 00001C5E m369 00001C6E m370 00001C72 m371 00001CD6 m372 00001D02 m373 00001D06 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 236 SYMBOL TABLE LABEL VALUE m374 00001D0C m375 00001D1A m376 00001D1E m377 00001D20 m378 00001D2E m379 00001DDC m380 00001DEC m381 00001DF0 m382 00001DFE m383 00001E0A m384 00001E0E m385 00001E10 m386 00001E2A m387 00001E64 m388 00001E74 m389 00001E7C m390 00001E8A m391 00001EA2 m392 00001F42 m393 00001F46 m394 00001F56 m395 00001F5A m396 00001F96 m397 00001F9A m398 00001FAC m399 00001FB0 m400 00001FDC m401 00001FEA m402 00001FFA m403 00002002 m404 00002008 m405 0000200A m406 00002018 m407 00002026 m408 0000202E m409 00002034 m410 00002044 m411 0000206A m412 0000206E m413 00002092 m414 00002096 m415 000020A4 m416 000020C2 m417 000020CA m418 000020D2 m419 000020E2 m420 000020EC m421 000020F2 m422 000020F6 m423 00002102 m424 00002124 m425 0000212C m426 00002140 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 237 SYMBOL TABLE LABEL VALUE m427 00002146 m428 00002172 m429 00002186 m430 0000218A m431 000021AA m432 000021BC m433 000021DA m434 000021F6 m435 000021FC m436 00002200 m437 0000220A m438 0000221C m439 0000222A m440 0000223A m441 00002244 m442 00002246 m443 00002248 m444 00002262 m445 00002270 m446 00002284 m447 0000228C m448 0000229E m449 000022A6 m450 000022C2 m451 000022C8 m452 000022D2 m453 000022DC m454 00002322 m455 00002326 m456 00002330 m457 00002364 m458 00002368 m459 00002394 m460 000023BE m461 000023C2 m462 000023D8 m463 000023DE m464 000023FC m465 00002404 m466 00002420 m467 00002450 m468 0000248E m469 00002492 m470 0000249A m471 0000249E m472 000024A6 m473 000024AA m474 000024BE m475 000024C0 m476 000024CA m477 000024D4 m478 000024DC m479 000024E0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 238 SYMBOL TABLE LABEL VALUE m480 000024E4 m481 000024F4 m482 000024FA m483 000024FC m484 0000252C m485 0000253C m486 00002546 m487 00002550 m488 00002554 m489 00002564 m490 0000256C m491 0000257A m492 0000258E m493 000025A2 m494 000025B6 m495 000025BA m496 000025C0 m497 000025CA m498 000025D8 m499 000025F4 m500 00002602 m501 00002628 m502 0000262C m503 0000263E m504 00002642 m505 0000264A m506 00002674 m507 00002684 m508 00002686 m509 00002688 m510 00002692 m511 00002696 m512 000026AC m513 000026BA m514 000026BE m515 000026CA m516 000026EC m517 000026FA m518 00002700 m519 00002718 m520 00002728 m521 0000274E m522 00002756 m523 00002758 m524 00002772 m525 000027B2 m526 000027D4 m527 000027DA m528 000027DC m529 000027EA m530 000027F0 m531 00002802 m532 0000281C MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 239 SYMBOL TABLE LABEL VALUE m533 0000281E m534 00002820 m535 00002834 m536 00002854 m537 00002862 m538 00002868 m539 0000286E m540 0000289A m541 000028B4 m542 000028B8 m543 000028CE m544 000028D2 m545 000028E8 m546 000028EC m547 00002902 m548 00002906 m549 00002922 m550 00002952 m551 00002976 m552 00002978 m553 0000298C m554 00002990 m555 000029A2 m556 000029A6 m557 000029B8 m558 000029BC m559 000029CE m560 000029D2 m561 000029E6 m562 000029EA m563 000029F0 m564 00002A04 m565 00002A08 m566 00002A0E m567 00002A22 m568 00002A26 m569 00002A2C m570 00002A42 m571 00002A46 m572 00002A4A m573 00002A6C m574 00002A70 m575 00002A80 m576 00002A84 m577 00002A94 m578 00002A98 m579 00002AA8 m580 00002AAC m581 00002AB4 m582 00002AC2 m583 00002ACA m584 00002AEC m585 00002AF4 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 240 SYMBOL TABLE LABEL VALUE m586 00002B10 m587 00002B14 m588 00002B1A m589 00002B32 m590 00002B4A m591 00002B54 m592 00002B70 m593 00002B7E m594 00002B8A m595 00002B96 m596 00002BA0 m597 00002BAC m598 00002BC6 m599 00002BE4 m600 00002BE6 m601 00002BFC m602 00002C0A m603 00002C10 m604 00002C24 m605 00002C4C m606 00002C58 m607 00002C76 m608 00002C7E m609 00002C92 m610 00002CA4 m611 00002CBC m612 00002CCA m613 00002CD8 m614 00002CE6 m615 00002CF2 m616 00002D0A m617 00002D2A m618 00002D2E m619 00002D44 m620 00002D52 m621 00002DA4 m622 00002DB0 m623 00002DBC m624 00002DC8 m625 00002DD6 m626 00002DE8 m627 00002DF2 m628 00002E02 m629 00002E0C m630 00002E1E m631 00002E28 m632 00002E38 m633 00002E42 m634 00002E48 m635 00002E68 m636 00002E78 m637 00002E7A m638 00002E7E MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 241 SYMBOL TABLE LABEL VALUE m639 00002E82 m640 00002E8C m641 00002EAC m642 00002EBC m643 00002EBE m644 00002EC2 m645 00002EC6 m646 00002ED0 m647 00002EEE m648 00002F98 m649 00002FA0 m650 00002FC4 m651 00002FCC m652 00002FF0 m653 0000306C m654 00003080 m655 0000308C m656 000030D2 m657 000030DA m658 000031C0 m659 00003258 m660 00003260 m661 0000326A m662 00003272 m663 0000329A m664 0000329C m665 000032FE m666 0000330E m667 00003318 m668 00003328 m669 00003332 m670 0000333C m671 00003346 m672 00003352 m673 0000335C m674 00003366 m675 00003376 m676 00003382 m677 00003386 m678 00003390 m679 0000339C m680 000033A8 m681 000033B2 m682 000033C2 m683 000033CC m684 000033DA m685 000033E6 m686 000033F0 m687 000033FA m688 00003408 m689 00003418 m690 00003422 m691 00003430 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 242 SYMBOL TABLE LABEL VALUE m692 00003442 m693 0000344E m694 0000345A m695 00007B0C m696 00007B54 m697 00007B5C m698 00007B68 m699 00007B6E m700 00007B70 m701 00007B72 m702 00007B74 m703 00007B76 m704 00007B7A m705 00007B82 m706 00007B92 m707 00007B9C m708 00007BA2 m709 00007BAA m710 00007BCE m711 00007BE0 m712 00007BF2 m713 00007C00 m714 00007C06 m715 00007C12 m716 00007C1C m717 00007C22 m718 00007C2E m719 00007C36 m720 00007C52 m721 00007C56 m722 00007C64 m723 00007C70 m724 00007C74 m725 00007C7A m726 00007C7E m727 00007C8A m728 00007C98 m729 00007CA0 m730 00007CB0 m731 00007CB8 m732 00007CC4 m733 00007CCC m734 00007CD4 m735 00007CEE m736 00007CFE m737 00007D12 m738 00007D28 m739 00007D30 m740 00007D44 m741 00007D54 m742 00007D80 m743 00007DAC m744 00007DB0 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 243 SYMBOL TABLE LABEL VALUE m745 00007DD4 m746 00007E24 m747 00007E4E m748 00007E62 m749 00007EAA m750 00007EF6 m751 00007F04 m752 00007F12 m753 00007F1A m754 00007F2E m755 00007F34 main 000031B4 mask 00000007 mask_2 00000005 mem_read 00000266 mem_read_byte 00000290 mem_set_base 000002C6 mem_write_byte 000002B0 mode 00000005 ms_pause 00000234 msec 00000F7F nbr 00000005 nbr_2 00000008 nbr_3 00000006 nbr_4 00000009 nbr_5 00000007 nbr_6 00000F7F new_prg 00000005 next_step 0000002E numb 00000005 numb_2 0000000A plan2lamps 000030F0 pos 0000000E prev_faza 0000002F previousTMR0 00000058 prg 00000005 prg_2 00000005 prg_3 00000007 print_num 00001FD4 prom_step 00000031 ptr 00000010 ptr_2 00000006 ptr_3 0000000F ptr_gsm_buff 000001FC putc 000012BA rcv 000000EA readBlock 00007C90 read_eeprom 00000256 read_faza 0000056C read_prg_step 000004D4 read_prg_tvp_step 00000534 read_promtact 0000059A reg_code 0000004B MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 244 SYMBOL TABLE LABEL VALUE response_OK 00000644 rez 0000000E rez_2 0000000A rez_3 00000006 rez_4 00000007 rez_5 00000F7F rez_6 00000F7F rez_7 0000000C rs_buff 00000060 rtc_get_clock 00000CB0 rtc_on 00000C60 rtc_read 00000BC2 rtc_set 00000C44 rtc_set_clock 00000CCC rtcreg 00000008 rtcvalue 00000009 sample 00000005 setAllGood 00000B1C set_channal 00000A52 set_lamp_data 00002F52 set_state_from_lamp_numb 00002F3C setup_harw_iic 000001B8 sms_id 0000004C sms_ldt 0000004F sms_mess_begin 00000050 sms_mess_lenght 00000052 sms_msg 0000004E sms_nbr 00000047 snd 00000008 softTimer 000000CA stateJM 00000004 stateOS 00000005 state_2 00000007 state_3 00000007 state_4 00000F7F states_from_buff 00000B34 step 00000006 storeEEData 00007CD0 str2hex16 00001F62 str2hex8 00001F30 subClock 00000059 svrBSR 00000001 svrSTATUS 00000000 svrWREG 00000002 sys_flags 00000038 syst 0000000C tTimeout 00000056 t_jm 000000FB t_tvp 000000FC tact_step 00000007 tcicl 000000EB test_need_correct 00000E20 timeGW 00000300 MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 245 SYMBOL TABLE LABEL VALUE timerTick 00000156 tmhalf 00000007 tmout 00000009 tmp1 00000005 tmp2 00000006 tmp3 00000007 tmp_2 00000008 tmp_3 0000000A tmp_4 00000005 tmp_5 0000000D tmp_sec 0000020B tmrvpu 00000041 to_faza 00000006 trspID 00000005 trys 000000F8 tvp_step 00000030 uptime_sec 00000207 val 0000000A vpu_cmd 00000045 vpu_cmd_loc 00000046 vpu_cnt 00000003 vpu_start 00000000 vpu_time 00000043 writeBlock 00007E00 x 00000008 year 00000005 MEMORY USAGE MAP ('X' = Used, '-' = Unused) 0000 : XXXXXXXX-------- --------XXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 00C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0140 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0180 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 01C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0200 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0240 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0280 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 02C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0300 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0340 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0380 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 03C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 246 MEMORY USAGE MAP ('X' = Used, '-' = Unused) 0400 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0440 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0480 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 04C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0500 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0540 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0580 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 05C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0600 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0640 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0680 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 06C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0700 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0740 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0780 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 07C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0800 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0840 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0880 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 08C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0900 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0940 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0980 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 09C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0A00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0A40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0A80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0AC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0B00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0B40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0B80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0BC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0C00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0C40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0C80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0CC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0D00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0D40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0D80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0DC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0E00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0E40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0E80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0EC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0F00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0F40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 247 MEMORY USAGE MAP ('X' = Used, '-' = Unused) 0F80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0FC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1000 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 10C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1140 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1180 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 11C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1200 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1240 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1280 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 12C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1300 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1340 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1380 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 13C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1400 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1440 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1480 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 14C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1500 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1540 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1580 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 15C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1600 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1640 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1680 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 16C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1700 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1740 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1780 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 17C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1800 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1840 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1880 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 18C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1900 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1940 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1980 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 19C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1A00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1A40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1A80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1AC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 248 MEMORY USAGE MAP ('X' = Used, '-' = Unused) 1B00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1B40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1B80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1BC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1C00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1C40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1C80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1CC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1D00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1D40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1D80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1DC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1E00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1E40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1E80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1EC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1F00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1F40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1F80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1FC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2000 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 20C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2140 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2180 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 21C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2200 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2240 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2280 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 22C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2300 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2340 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2380 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 23C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2400 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2440 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2480 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 24C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2500 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2540 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2580 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 25C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2600 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2640 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 249 MEMORY USAGE MAP ('X' = Used, '-' = Unused) 2680 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 26C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2700 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2740 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2780 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 27C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2800 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2840 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2880 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 28C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2900 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2940 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2980 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 29C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2A00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2A40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2A80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2AC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2B00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2B40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2B80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2BC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2C00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2C40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2C80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2CC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2D00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2D40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2D80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2DC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2E00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2E40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2E80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2EC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2F00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2F40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2F80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 2FC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 3000 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 3040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 3080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 30C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 3100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 3140 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 3180 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 31C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX MPASM 5.03 MAIN.ASM 10-9-2008 17:18:12 PAGE 250 MEMORY USAGE MAP ('X' = Used, '-' = Unused) 3200 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 3240 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 3280 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 32C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 3300 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 3340 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 3380 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 33C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 3400 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 3440 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX ---------------- ---------------- 7B00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 7B40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 7B80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 7BC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 7C00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 7C40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 7C80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 7CC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 7D00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 7D40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 7D80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 7DC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 7E00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 7E40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 7E80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 7EC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 7F00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 7F40 : XX-------------- ---------------- ---------------- ---------------- 0000 : XXXXXXXXXXXXXX-- ---------------- ---------------- ---------------- 0000 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX ---------------- All other memory blocks unused. Program Memory Bytes Used: 14672 Program Memory Bytes Free: 18096 Errors : 0 Warnings : 11 reported, 0 suppressed Messages : 0 reported, 0 suppressed