MPASM 03.80.03 Internal RECONECTADOR00.ASM 10-17-2004 11:06:25 PAGE 1 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00001 TITLE "RECONECTADORA ELECTRÓNICA" 00002 LIST P=16F870 00003 #INCLUDE 00001 LIST 00002 ; P16F870.INC Standard Header File, Version 1.00 Microchip Technology, Inc. 00290 LIST 00004 ; __config 0x3D18 ;Nigel 2007 373A 00005 __CONFIG 0x373A ;0011 0111 x011 1010 00006 ;------------------------------------------ VARIABLE DEFINITION 00007 00008 CBLOCK 0x20 00000020 00009 B_EDO1 ;CI/OI/ENC/ETMX/EDFX/ISR TMDF//EDFxU 00000021 00010 B_EDO2 00000022 00011 B_EDO3 00000023 00012 B_EDO4 00000024 00013 ADCH 00000025 00014 ADCL 00000026 00015 ADCLHN 00000027 00016 C_TM 00000028 00017 C_DF 00000029 00018 d1 0000002A 00019 d2 0000002B 00020 set_old 0000002C 00021 set_dec 0000002D 00022 set_cmp 0000002E 00023 m_30 0000002F 00024 m_31 00000030 00025 m_32 00000031 00026 t_1 00000032 00027 t_2 00000033 00028 t_3 00000034 00029 W_temp 00000035 00030 S_temp 00031 ENDC 00032 00033 ;------------------------------------------ ORIGINS 00034 0000 00035 ORG 0x00 0000 2805 00036 goto MAIN 00037 0004 00038 ORG 0x04 0004 2917 00039 goto ISR 00040 0005 00041 ORG 0x05 00042 ;------------------------------------------ MAIN 0005 00043 MAIN 0005 2192 00044 call CFG_OPTION 0006 2198 00045 call CFG_INTCON 0007 219F 00046 call CFG_PORTS 00047 0008 1283 00048 bcf STATUS, RP0 0009 1485 00049 bsf PORTA, 1 ;LED ON, system ON MPASM 03.80.03 Internal RECONECTADOR00.ASM 10-17-2004 11:06:25 PAGE 2 RECONECTADORA ELECTRÓNICA LOC OBJECT CODE LINE SOURCE TEXT VALUE 00050 000A 21A8 00051 call INI_VARIABLES 000B 298E 00052 goto CHK_SYSTEM 00053 000C 00054 LOOP 000C 282A 00055 goto TEMPORIZADOR 00056 000D 00057 ADC_R 000D 1AA3 00058 btfsc B_EDO4, 5 ;ADC_ready flag (5) 000E 281D 00059 goto ADC 000F 00060 A_M 000F 1E06 00061 btfss PORTB, 4 ;Autommatic (1) /Manual (0) 0010 297F 00062 goto MANUAL 00063 0011 00064 LOOP1 0011 1823 00065 btfsc B_EDO4, 0 ;RESTORE C_TM & C_DF 0012 297F 00066 goto MANUAL 00067 0013 00068 CHK_CI 0013 1BA0 00069 btfsc B_EDO1, 7 ;CLOSE interruptor? 0014 28E8 00070 goto O_C_I 00071 0015 00072 CHK_OI 0015 1B20 00073 btfsc B_EDO1, 6 ;OPEN interruptor? 0016 28E8 00074 goto O_C_I 00075 0017 00076 DFExU 0017 1820 00077 btfsc B_EDO1, 0 ;TMExUser ? 0018 2897 00078 goto EDFU 00079 0019 1C86 00080 btfss PORTB, 1 ;TM event? 001A 28A0 00081 goto TM_event 00082 001B 19A0 00083 btfsc B_EDO1, 3 ;DFx event? 001C 28B2 00084 goto DF_event 00085 00086 ;------------------------------------------ Signal Acquisition by ADC on PORTA, 0 001D 00087 ADC 001D 3000 00088 movlw 0x00 001E 009E 00089 movwf ADRESH 001F 151F 00090 bsf ADCON0, GO_DONE 0020 191F 00091 btfsc ADCON0, GO_DONE 0021 2820 00092 goto $-1 ;Wait ADC to finish 00093 0022 081E 00094 movf ADRESH, W 0023 3903 00095 andlw 0x03 0024 00A4 00096 movwf ADCH 00097 0025 1683 00098 bsf STATUS, RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0026 081E 00099 movf ADRESL, 0 0027 1283 00100 bcf STATUS, RP0 0028 00A5 00101 movwf ADCL MPASM 03.80.03 Internal RECONECTADOR00.ASM 10-17-2004 11:06:25 PAGE 3 RECONECTADORA ELECTRÓNICA LOC OBJECT CODE LINE SOURCE TEXT VALUE 00102 00103 ; btfsc B_EDO4, 5 ;ADC_ready flag, then check valu es 0029 2862 00104 goto CHK_ADC_VALUES 00105 00106 ;------------------------------------------ Timer Defined by User (event persistance) 002A 00107 TEMPORIZADOR 002A 082B 00108 movf set_old, w ;Restorte value in CMP deleted b y xorwf setcmp, f 002B 00AD 00109 movwf set_cmp 00110 002C 0821 00111 movf B_EDO2, W 002D 39E0 00112 andlw 0xE0 002E 00A1 00113 movwf B_EDO2 00114 002F 1F86 00115 btfss PORTB, 7 0030 2838 00116 goto CHK1 0031 1F06 00117 btfss PORTB, 6 0032 283F 00118 goto CHK2 0033 1E86 00119 btfss PORTB, 5 0034 2844 00120 goto CHK3 00121 0035 3001 00122 movlw 0x01 0036 1421 00123 bsf B_EDO2, 0 ;position 0 for 20 ms 0037 2849 00124 goto TEMPO_READY 00125 0038 00126 CHK1 0038 1F06 00127 btfss PORTB, 6 0039 2986 00128 goto NV_E 003A 1E86 00129 btfss PORTB, 5 003B 2986 00130 goto NV_E 00131 003C 3032 00132 movlw 0x32 003D 1621 00133 bsf B_EDO2, 4 ;position 4 for 1000 ms 003E 2849 00134 goto TEMPO_READY 00135 003F 00136 CHK2 003F 1E86 00137 btfss PORTB, 5 0040 2847 00138 goto CHK4 00139 0041 300F 00140 movlw 0x0F 0042 1521 00141 bsf B_EDO2, 2 ;position 2 for 300 ms 0043 2849 00142 goto TEMPO_READY 00143 0044 00144 CHK3 0044 3005 00145 movlw 0x05 0045 14A1 00146 bsf B_EDO2, 1 ;position 1 for 100 ms 0046 2849 00147 goto TEMPO_READY 00148 0047 00149 CHK4 0047 3019 00150 movlw 0x19 0048 15A1 00151 bsf B_EDO2, 3 ;position 3 for 500 ms 00152 MPASM 03.80.03 Internal RECONECTADOR00.ASM 10-17-2004 11:06:25 PAGE 4 RECONECTADORA ELECTRÓNICA LOC OBJECT CODE LINE SOURCE TEXT VALUE 0049 00153 TEMPO_READY 0049 18A3 00154 btfsc B_EDO4, 1 ;1st cycle 004A 2850 00155 goto CYCLE_DONE 004B 14A3 00156 bsf B_EDO4, 1 ;set 1st cycle flag 00157 004C 00158 SET_VARIABLES 004C 00AB 00159 movwf set_old 004D 00AC 00160 movwf set_dec 004E 00AD 00161 movwf set_cmp 004F 2854 00162 goto CHK_sensibility 00163 0050 00164 CYCLE_DONE 0050 1103 00165 bcf STATUS, Z 0051 06AD 00166 xorwf set_cmp, F 0052 1D03 00167 btfss STATUS, Z 0053 284C 00168 goto SET_VARIABLES 00169 00170 ; goto CHK_sensibility ;SE PUEDE OMITIR 00171 00172 ;------------------------------------------ SENSIBILITY 0054 00173 CHK_sensibility 0054 30F8 00174 movlw 0xF8 0055 05A2 00175 andwf B_EDO3, f 00176 0056 1D86 00177 btfss PORTB, 3 ;Sensibility defined by USER 0057 285C 00178 goto mA600 0058 1D06 00179 btfss PORTB, 2 0059 2860 00180 goto mA300 00181 005A 1422 00182 bsf B_EDO3, 0 ;30mA 005B 280D 00183 goto ADC_R ;CHK_ADC_VALUES 00184 005C 00185 mA600 005C 1D06 00186 btfss PORTB, 2 005D 2986 00187 goto NV_E 005E 1522 00188 bsf B_EDO3, 2 ;300mA 005F 280D 00189 goto ADC_R ;CHK_ADC_VALUES 00190 0060 00191 mA300 0060 14A2 00192 bsf B_EDO3, 1 ;600mA 00193 0061 280D 00194 goto ADC_R 00195 ;------------------------------------------ Compare ADC values Vs Defined by user 0062 00196 CHK_ADC_VALUES 0062 1822 00197 btfsc B_EDO3, 0 ;30mA ? 0063 2867 00198 goto mA30_ADC 0064 18A2 00199 btfsc B_EDO3, 1 ;300mA 0065 2876 00200 goto mA300_ADC 0066 2881 00201 goto mA600_ADC 00202 0067 00203 mA30_ADC 0067 0824 00204 movf ADCH, w 0068 1103 00205 bcf STATUS, Z MPASM 03.80.03 Internal RECONECTADOR00.ASM 10-17-2004 11:06:25 PAGE 5 RECONECTADORA ELECTRÓNICA LOC OBJECT CODE LINE SOURCE TEXT VALUE 0069 3A00 00206 xorlw 0x00 006A 1D03 00207 btfss STATUS, Z 006B 28B2 00208 goto DF_event 00209 006C 00210 CHK_ADCL 006C 0825 00211 movf ADCL, W 006D 39F0 00212 andlw 0xF0 006E 00A6 00213 movwf ADCLHN 006F 0826 00214 movf ADCLHN, W 0070 1103 00215 bcf STATUS, Z 0071 3AF0 00216 xorlw 0xF0 0072 1D03 00217 btfss STATUS, Z 0073 2891 00218 goto NO_EDF2 0074 15A2 00219 bsf B_EDO3, 3 ;EDF1 flag 0075 28B2 00220 goto DF_event 00221 0076 00222 mA300_ADC 0076 0824 00223 movf ADCH, W 0077 1103 00224 bcf STATUS, Z 0078 3A00 00225 xorlw 0x00 0079 1903 00226 btfsc STATUS, Z 007A 2891 00227 goto NO_EDF2 007B 0824 00228 movf ADCH, W 007C 1103 00229 bcf STATUS, Z 007D 3A01 00230 xorlw 0x01 007E 1903 00231 btfsc STATUS, Z 007F 286C 00232 goto CHK_ADCL 0080 28B2 00233 goto DF_event 00234 0081 00235 mA600_ADC 0081 0824 00236 movf ADCH, W 0082 1103 00237 bcf STATUS, Z 0083 3A00 00238 xorlw 0x00 0084 1903 00239 btfsc STATUS, Z 0085 2891 00240 goto NO_EDF2 00241 0086 0824 00242 movf ADCH, W 0087 1103 00243 bcf STATUS, Z 0088 3C01 00244 sublw 0x01 0089 1903 00245 btfsc STATUS, Z 008A 2891 00246 goto NO_EDF2 00247 008B 1103 00248 bcf STATUS, Z 008C 3C02 00249 sublw 0x02 008D 1903 00250 btfsc STATUS, Z 008E 286C 00251 goto CHK_ADCL 008F 15A2 00252 bsf B_EDO3, 3 ;EDF1 flag 0090 28B2 00253 goto DF_event 00254 0091 00255 NO_EDF2 0091 1E22 00256 btfss B_EDO3, 4 ;EDF2 ? & no EDF1 0092 280C 00257 goto LOOP ;NO 0093 1222 00258 bcf B_EDO3, 4 MPASM 03.80.03 Internal RECONECTADOR00.ASM 10-17-2004 11:06:25 PAGE 6 RECONECTADORA ELECTRÓNICA LOC OBJECT CODE LINE SOURCE TEXT VALUE 0094 12A2 00259 bcf B_EDO3, 5 ;EDF_waiting, 0 0095 12A3 00260 bcf B_EDO4, 5 ;ADC_ready, 0 0096 280D 00261 goto ADC_R 00262 00263 ;------------------------------------------ DF event by USER 0097 00264 EDFU 0097 0AA8 00265 incf C_DF, F 0098 28B7 00266 goto CHK_EDFU ;Go to check if enclave or set 0099 00267 EDFU_back 0099 1585 00268 bsf PORTA, 3 ;DF LED on 00269 009A 120B 00270 bcf INTCON, INTE ;Stop RB0/INT 00271 009B 3048 00272 movlw 0x48 009C 00A0 00273 movwf B_EDO1 ;CI=0;OI=1;EDFX=1;ISRTMDF;ETMX 00274 ;EDFxU=0 00275 009D 3007 00276 movlw 0x07 Message[305]: Using default destination of 1 (file). 009E 05A2 00277 andwf B_EDO3 ;EDF1=0;EDF2=0;EDF_waiting=0 00278 ;restore 30 minu tes;stop 30 minute 00279 00280 ; bsf B_EDO1, 3 ;EDFX 00281 009F 28E8 00282 goto O_C_I ;go to open 00283 00284 ;------------------------------------------ TM event has occured 00A0 00285 TM_event 00A0 12A2 00286 bcf B_EDO3, 5 ;DFE_waiting flag cleare d, 00A1 19A0 00287 btfsc B_EDO1, 3 ;EDFX is 0 00A2 280D 00288 goto ADC_R 00A3 1A20 00289 btfsc B_EDO1, 4 ;ETMX? 00A4 2813 00290 goto CHK_CI 00291 00A5 1505 00292 bsf PORTA, 2 ;TM LED on 00A6 120B 00293 bcf INTCON, INTE ;STOP RB0 00294 00A7 0AA7 00295 incf C_TM, F 00A8 1C27 00296 btfss C_TM, 0 ;first event ? 00A9 28AD 00297 goto $+4 00AA 1CA7 00298 btfss C_TM, 1 ;second event ? 00AB 28AD 00299 goto $+2 00AC 2986 00300 goto NV_E ;third event 00301 00AD 3007 00302 movlw 0x07 ;0000 0,600,300,30 Message[305]: Using default destination of 1 (file). 00AE 05A2 00303 andwf B_EDO3 ;B_EDO3 00304 00AF 3050 00305 movlw 0x50 ;OI,ETMX 00B0 00A0 00306 movwf B_EDO1 ;B_EDO1 00307 MPASM 03.80.03 Internal RECONECTADOR00.ASM 10-17-2004 11:06:25 PAGE 7 RECONECTADORA ELECTRÓNICA LOC OBJECT CODE LINE SOURCE TEXT VALUE 00B1 2815 00308 goto CHK_OI 00309 00310 ;------------------------------------------ DF event has occured 00B2 00311 DF_event 00B2 1822 00312 btfsc B_EDO3, 0 ;30mA 00B3 2897 00313 goto EDFU 00B4 18A2 00314 btfsc B_EDO3, 1 00B5 28D7 00315 goto E_300_600mA 00316 00B6 00317 INC_300_600 00B6 0AA8 00318 incf C_DF, F 00B7 00319 CHK_EDFU 00B7 0828 00320 movf C_DF, W 00B8 1103 00321 bcf STATUS, Z 00B9 3A1F 00322 xorlw 0x1F 00BA 1903 00323 btfsc STATUS, Z 00BB 2986 00324 goto NV_E 00325 00BC 1FA1 00326 btfss B_EDO2, 7 ;DF3 00BD 28C1 00327 goto $+4 00BE 1820 00328 btfsc B_EDO1, 0 ;EDFxU 00BF 2897 00329 goto EDFU 00C0 28DD 00330 goto EDF2_set ;2nd DF event occurred 00331 00C1 3001 00332 movlw 0x01 00C2 1103 00333 bcf STATUS, Z 00C3 0628 00334 xorwf C_DF, W 00C4 1D03 00335 btfss STATUS, Z 00C5 28CC 00336 goto DF2_set 00C6 16A1 00337 bsf B_EDO2, 5 ;DF1 00338 00C7 00339 see_back 00C7 1822 00340 btfsc B_EDO3, 0 ;30mA? 00C8 2899 00341 goto EDFU_back ;yes, return to EDFU 00C9 1820 00342 btfsc B_EDO1, 0 ;EDFxU? 00CA 2899 00343 goto EDFU_back ;yes, return to EDFU 00CB 28DD 00344 goto EDF2_set ;2nd DF event occurred 00345 00CC 00346 DF2_set 00CC 3002 00347 movlw 0x02 00CD 1103 00348 bcf STATUS, Z 00CE 0628 00349 xorwf C_DF, W 00CF 1D03 00350 btfss STATUS, Z 00D0 28D4 00351 goto DF3_set 00D1 12A1 00352 bcf B_EDO2, 5 00D2 1721 00353 bsf B_EDO2, 6 ;DF2 00D3 28C7 00354 goto see_back 00355 00D4 00356 DF3_set 00D4 1321 00357 bcf B_EDO2, 6 00D5 17A1 00358 bsf B_EDO2, 7 ;DF3 00D6 28C7 00359 goto see_back 00360 MPASM 03.80.03 Internal RECONECTADOR00.ASM 10-17-2004 11:06:25 PAGE 8 RECONECTADORA ELECTRÓNICA LOC OBJECT CODE LINE SOURCE TEXT VALUE 00361 ;------------------------------------------ Posssible Events: 300 or 600 mA 00D7 00362 E_300_600mA 00D7 1AA2 00363 btfsc B_EDO3, 5 ;EDF_waiting 00D8 28DA 00364 goto $+2 00D9 16A2 00365 bsf B_EDO3, 5 ;EDF_waiting SET 00366 00DA 1E22 00367 btfss B_EDO3, 4 00DB 28E5 00368 goto NO_FUE 00DC 28B6 00369 goto INC_300_600 00370 00DD 00371 EDF2_set 00DD 1585 00372 bsf PORTA, 3 ;DF LED ON 00373 00DE 3007 00374 movlw 0x07 00DF 05A2 00375 andwf B_EDO3, F 00E0 12A3 00376 bcf B_EDO4, 5 ;ADC_ready 00E1 120B 00377 bcf INTCON, INTE ;RB0/INT off 00E2 3048 00378 movlw 0x48 00E3 00A0 00379 movwf B_EDO1 00E4 28E8 00380 goto O_C_I 00381 00E5 00382 NO_FUE 00E5 16A2 00383 bsf B_EDO3, 5 ;EDF_waiting SET 00E6 11A2 00384 bcf B_EDO3, 3 ;EDF1 = 0 00E7 280C 00385 goto LOOP 00386 00387 ;------------------------------------------ OPEN/CLOSE INTERRUPTOR 00E8 00388 O_C_I 00E8 1AA0 00389 btfsc B_EDO1, 5 ;Enclave 00E9 28EF 00390 goto OPEN 00EA 1BA0 00391 btfsc B_EDO1, 7 ;Close interrupt 00EB 28ED 00392 goto CLOSE 00EC 28EF 00393 goto OPEN 00394 00ED 00395 CLOSE ;Close to open = TM even t 00ED 1685 00396 bsf PORTA, 5 ;CLOSE CONTROL BIT 00EE 28F2 00397 goto DELAY_50i 00398 00EF 00399 OPEN 00EF 1C86 00400 btfss PORTB, 1 00F0 2815 00401 goto CHK_OI 00F1 1605 00402 bsf PORTA, 4 ;OPEN CONTROL BIT 00403 00F2 00404 DELAY_50i 00F2 300E 00405 movlw 0x0E 00F3 00A9 00406 movwf d1 00F4 3028 00407 movlw 0x28 00F5 00AA 00408 movwf d2 00409 00F6 00410 DELAY_50 00F6 0BA9 00411 decfsz d1, F ;F=1 00F7 28F9 00412 goto $+2 MPASM 03.80.03 Internal RECONECTADOR00.ASM 10-17-2004 11:06:25 PAGE 9 RECONECTADORA ELECTRÓNICA LOC OBJECT CODE LINE SOURCE TEXT VALUE 00F8 0BAA 00413 decfsz d2, 1 00F9 28F6 00414 goto DELAY_50 00415 ; goto $+1 00416 00FA 1BA0 00417 btfsc B_EDO1, 7 ;CI flag ? 00FB 2904 00418 goto END_CLOSE 00419 00FC 1205 00420 bcf PORTA, 4 ;turn off, OPEN CONTROL bit 00FD 1720 00421 bsf B_EDO1, 6 ;turn on, open interrupt or flag 00FE 11A2 00422 bcf B_EDO3, 3 ;EDF1 = 0 00FF 1222 00423 bcf B_EDO3, 4 ;EDF2 = 0 0100 120B 00424 bcf INTCON, INTE ;No RB0/INT 00425 0101 1AA0 00426 btfsc B_EDO1, 5 ;enclave? 0102 298B 00427 goto NV_E1 00428 0103 280C 00429 goto LOOP 00430 0104 00431 END_CLOSE 0104 1105 00432 bcf PORTA, 2 ;TM LED off 0105 1185 00433 bcf PORTA, 3 ;DF LED off 0106 1285 00434 bcf PORTA, 5 ;turn off, CLOSE CONTROL bit, relay 00435 0107 3000 00436 movlw 0x00 ;B_EDO1: 0000 0000 0108 00A0 00437 movwf B_EDO1 ;CI,=I,ENC,ETMX,EDFX,ISRTMDF,x,EDFxU 00438 0109 160B 00439 bsf INTCON, INTE ;turn on, RB0/INT interrupt 00440 010A 3000 00441 movlw 0x00 ;TM events have occurred 010B 1103 00442 bcf STATUS, Z ;if not, no 30min countd own 010C 0627 00443 xorwf C_TM, W 010D 1D03 00444 btfss STATUS, Z 010E 2914 00445 goto INI_CD ;antes DFExU 00446 010F 3000 00447 movlw 0x00 0110 1103 00448 bcf STATUS, Z 0111 0628 00449 xorwf C_DF, W 0112 1903 00450 btfsc STATUS, Z 0113 280C 00451 goto LOOP 0114 00452 INI_CD 0114 17A2 00453 bsf B_EDO3, 7 ;start 30 minute 0115 1322 00454 bcf B_EDO3, 6 ;restore 30 minutes 0116 280C 00455 goto LOOP 00456 00457 ;------------------------------------------ Interrupt Service Routine T0&RB0 0117 00458 ISR 00459 ; movlw 0x00 00460 ; bcf STATUS, Z 00461 ; xorwf TMR0 MPASM 03.80.03 Internal RECONECTADOR00.ASM 10-17-2004 11:06:25 PAGE 10 RECONECTADORA ELECTRÓNICA LOC OBJECT CODE LINE SOURCE TEXT VALUE 00462 ; btfsc STATUS, Z 00463 ; goto $+3 00464 00465 0117 00B4 00466 movwf W_temp ;save W in W_temp 0118 0E03 00467 swapf STATUS, W ;move STATUS to W 0119 00B5 00468 movwf S_temp ;save STATUS in S_temp 00469 011A 188B 00470 btfsc INTCON, INTF ;DF Event Generated by user ? 011B 2976 00471 goto EDFxU ;yes 00472 011C 30B1 00473 movlw 0xB1 011D 0081 00474 movwf TMR0 00475 011E 1AA2 00476 btfsc B_EDO3, 5 ;waiting for a 2nd DF event ? 011F 296E 00477 goto DELAY_tempo 00478 0120 1A20 00479 btfsc B_EDO1, 4 ;EMTX ? is set 0121 2941 00480 goto REC_TMDF ;yes 00481 0122 00482 TMDF 0122 19A0 00483 btfsc B_EDO1, 3 ;EDFX ? is set 0123 2941 00484 goto REC_TMDF ;yes 00485 00486 ;------------------------------------------ Count Down 30 minutes 0124 00487 m30 0124 1FA2 00488 btfss B_EDO3, 7 ;CD30, count down 0125 2979 00489 goto END_TO 00490 0126 00491 m30_set 0126 1B22 00492 btfsc B_EDO3, 6 ;30! ? 0127 292E 00493 goto DELAY_30 0128 3064 00494 movlw 0x64 ;100 0129 00AE 00495 movwf m_30 012A 3014 00496 movlw 0x14 012B 00AF 00497 movwf m_31 012C 302D 00498 movlw 0x2D 012D 00B0 00499 movwf m_32 00500 012E 00501 DELAY_30 012E 0BAE 00502 decfsz m_30, F 012F 2936 00503 goto FIX_CD 0130 0BAF 00504 decfsz m_31, F 0131 293A 00505 goto RELOAD_30 0132 0BB0 00506 decfsz m_32, F 0133 293C 00507 goto RELOAD_30_31 0134 1423 00508 bsf B_EDO4, 0 ;RestoreC_TM_DF 0135 2979 00509 goto END_TO 00510 0136 00511 FIX_CD 0136 1B23 00512 btfsc B_EDO4, 6 ;30! 0137 2979 00513 goto END_TO 0138 1723 00514 bsf B_EDO4, 6 ;30! set MPASM 03.80.03 Internal RECONECTADOR00.ASM 10-17-2004 11:06:25 PAGE 11 RECONECTADORA ELECTRÓNICA LOC OBJECT CODE LINE SOURCE TEXT VALUE 0139 2979 00515 goto END_TO 00516 013A 00517 RELOAD_30 013A 3064 00518 movlw 0x64 013B 00AE 00519 movwf m_30 00520 013C 00521 RELOAD_30_31 013C 3064 00522 movlw 0x64 013D 00AE 00523 movwf m_30 013E 300A 00524 movlw 0x0A 013F 00AF 00525 movwf m_31 0140 2979 00526 goto END_TO 00527 00528 ;------------------------------------------ Evento TM & DF 0141 00529 REC_TMDF 0141 1920 00530 btfsc B_EDO1, 2; ;IRSTMDF 0142 2954 00531 goto DELAY_event 00532 0143 3064 00533 movlw 0x64 ;100 0144 00B1 00534 movwf t_1 00535 0145 1B21 00536 btfsc B_EDO2, 6 ;DF2 ? 0146 294F 00537 goto seg40 00538 0147 1A21 00539 btfsc B_EDO2, 4 ;ETMX ? 0148 2952 00540 goto min1 00541 0149 00542 seg20 0149 300A 00543 movlw 0x0A ;10 014A 00B2 00544 movwf t_2 00545 014B 1AA1 00546 btfsc B_EDO2, 5 ;DF1 014C 2954 00547 goto DELAY_event 00548 014D 00549 min5 014D 300F 00550 movlw 0x0F 014E 00B3 00551 movwf t_3 00552 014F 00553 seg40 014F 3014 00554 movlw 0x14 ;20 0150 00B2 00555 movwf t_2 0151 2954 00556 goto DELAY_event 00557 0152 00558 min1 0152 3019 00559 movlw 0x19 ;25 0153 00B2 00560 movwf t_2 00561 0154 00562 DELAY_event 0154 0BB1 00563 decfsz t_1, F 0155 295E 00564 goto FIX_ISRTMDF 0156 0BB2 00565 decfsz t_2, F 0157 2962 00566 goto LOAD_t1 0158 2965 00567 goto CHK_timing MPASM 03.80.03 Internal RECONECTADOR00.ASM 10-17-2004 11:06:25 PAGE 12 RECONECTADORA ELECTRÓNICA LOC OBJECT CODE LINE SOURCE TEXT VALUE 00568 0159 00569 TIME_3 0159 0BB3 00570 decfsz t_3, F 015A 2979 00571 goto END_TO 00572 015B 00573 END_delay 015B 308C 00574 movlw 0x8C Message[305]: Using default destination of 1 (file). 015C 07A0 00575 addwf B_EDO1 015D 2924 00576 goto m30 00577 015E 00578 FIX_ISRTMDF 015E 1920 00579 btfsc B_EDO1, 2 ;ISRTMDF ? 015F 2979 00580 goto END_TO ;ISRTMDF already set 0160 1520 00581 bsf B_EDO1, 2 ;ISRTMDF set 0161 2979 00582 goto END_TO 00583 0162 00584 LOAD_t1 0162 3064 00585 movlw 0x64; ;100 0163 00B1 00586 movwf t_1 0164 2979 00587 goto END_TO 00588 0165 00589 CHK_timing 0165 1A20 00590 btfsc B_EDO1, 4 ;ETMX ? 0166 295B 00591 goto END_delay 0167 1FA2 00592 btfss B_EDO3, 7 ;DF3 ? 0168 295B 00593 goto END_delay 0169 3064 00594 movlw 0x64 ;100 016A 00B1 00595 movwf t_1 016B 300A 00596 movlw 0x0A ;10 016C 00B2 00597 movwf t_2 016D 2959 00598 goto TIME_3 00599 00600 ;------------------------------------------ Waiting for a 2nd DF event 016E 00601 DELAY_tempo 016E 0BAC 00602 decfsz set_dec, F 016F 2922 00603 goto TMDF 00604 ;Delay finished 0170 082B 00605 movf set_old, W 0171 00AC 00606 movwf set_dec 0172 00AD 00607 movwf set_cmp 0173 1622 00608 bsf B_EDO3, 4 ;EDF2 set 0174 16A3 00609 bsf B_EDO4, 5 ;ADC_ready set 0175 2979 00610 goto END_TO 00611 00612 ;------------------------------------------ DF event by user, generated by RB0 0176 00613 EDFxU 0176 1420 00614 bsf B_EDO1, 0 ;EDFxU 0177 108B 00615 bcf INTCON, INTF 0178 297A 00616 goto END_ISR 00617 0179 00618 END_TO 0179 110B 00619 bcf INTCON, T0IF MPASM 03.80.03 Internal RECONECTADOR00.ASM 10-17-2004 11:06:25 PAGE 13 RECONECTADORA ELECTRÓNICA LOC OBJECT CODE LINE SOURCE TEXT VALUE 017A 00620 END_ISR 017A 0E35 00621 swapf S_temp, W ;Restore STATUS 017B 0083 00622 movwf STATUS 017C 0EB4 00623 swapf W_temp, F 017D 0E34 00624 swapf W_temp, W ;Restore W without affecting st atus 017E 0009 00625 RETFIE 00626 00627 ;------------------------------------------ No counters available 017F 00628 MANUAL 017F 1023 00629 bcf B_EDO4, 0 ;Restore, set when 30min finished 0180 13A2 00630 bcf B_EDO3, 7 ;stop 30 minutes 0181 1322 00631 bcf B_EDO3, 6 ;restore 30 minutes 0182 1120 00632 bcf B_EDO1, 2 ;ISRTMDF to 0 0183 01A7 00633 clrf C_TM 0184 01A8 00634 clrf C_DF 0185 2811 00635 goto LOOP1 00636 00637 ;------------------------------------------ ENCLAVE & NO VALID routine 0186 00638 NV_E 0186 128B 00639 bcf INTCON, T0IE 0187 120B 00640 bcf INTCON, INTE 0188 1505 00641 bsf PORTA, 2 ;TM LED on 0189 1585 00642 bsf PORTA, 3 ;DF LED on 018A 16A0 00643 bsf B_EDO1, 5 ;ENCLAVE flag on 018B 00644 NV_E1 018B 1C86 00645 btfss PORTB, 1 018C 298B 00646 goto $-1 018D 28E8 00647 goto O_C_I 00648 00649 ;------------------------------------------ CLOSE Interruptor if initially opened 018E 00650 CHK_SYSTEM 018E 1886 00651 btfsc PORTB, 1 018F 280C 00652 goto LOOP 0190 17A0 00653 bsf B_EDO1, 7 ;Close interrupt 0191 28E8 00654 goto O_C_I 00655 00656 ;------------------------------------------ OPTION_REG 0192 00657 CFG_OPTION 0192 1683 00658 bsf STATUS, RP0 ;Bank 1 0193 1303 00659 bcf STATUS, RP1 00660 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0194 1301 00661 bcf OPTION_REG, INTEDG ;interrupt on falling adge Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0195 1281 00662 bcf OPTION_REG, T0CS ;internal instruction cycle cloc k Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0196 1181 00663 bcf OPTION_REG, PSA ;prescaler is assigned t o T0 00664 ; bsf OPTION_REG, PS2 ; Prescaler rate 00665 ; bsf OPTION_REG, PS1 ; 1:256 TMR0 rate MPASM 03.80.03 Internal RECONECTADOR00.ASM 10-17-2004 11:06:25 PAGE 14 RECONECTADORA ELECTRÓNICA LOC OBJECT CODE LINE SOURCE TEXT VALUE 00666 ; bsf OPTION_REG, PS0 00667 0197 0008 00668 RETURN 00669 ;------------------------------------------ INTCON 0198 00670 CFG_INTCON 0198 1283 00671 bcf STATUS, RP0 ;Bank 0 00672 0199 30B1 00673 movlw 0xB1 ;every 20ms 019A 0081 00674 movwf TMR0 00675 019B 178B 00676 bsf INTCON, GIE ;Global enable bit (7) 019C 168B 00677 bsf INTCON, T0IE ;Enable TMR0 interrupt (5) 019D 160B 00678 bsf INTCON, INTE ;Enable RB0/INT external interru pt (4) 00679 00680 ; bcf INTCON, T0IF ;Timer flag to 0 00681 ; bcf INTCON, INTF ;Interrupt RB0 to 0 00682 019E 0008 00683 RETURN 00684 00685 ;------------------------------------------ PORTS 019F 00686 CFG_PORTS 00687 ; bcf STATUS, RP0 00688 ;------------------------------------------ PORT A 019F 0185 00689 clrf PORTA 00690 01A0 3041 00691 movlw 0x41 ;<5MHz/AN0/start/x/ADON 01A1 009F 00692 movwf ADCON0 ;01 000 0 x 1 00693 01A2 1683 00694 bsf STATUS, RP0 00695 01A3 30FE 00696 movlw 0xFE ;RJ/x/(0 analog)-(1:5 digital) Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 01A4 009F 00697 movwf ADCON1 ;1 xxx 1110 00698 01A5 3001 00699 movlw 0x01 ;(0 analog=input)-(1:5 digital=o utput) Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 01A6 0085 00700 movwf TRISA 00701 00702 ; clrf PORTB 00703 ; clrf PORTC 00704 ;------------------------------------------ PORT B & C 00705 ; movlw 0xFF 00706 ; movwf PORTB 00707 ; movwf PORTC 00708 01A7 0008 00709 RETURN 00710 00711 ;------------------------------------------ Variables initialization 01A8 00712 INI_VARIABLES 01A8 3020 00713 movlw 0x20 ;initialize pointer 01A9 0084 00714 movwf FSR ;to RAM MPASM 03.80.03 Internal RECONECTADOR00.ASM 10-17-2004 11:06:25 PAGE 15 RECONECTADORA ELECTRÓNICA LOC OBJECT CODE LINE SOURCE TEXT VALUE 01AA 00715 NEXT 01AA 0180 00716 clrf INDF ;clear INDF register 01AB 0A84 00717 incf FSR,F ;inc pointer 01AC 1103 00718 bcf STATUS, Z 01AD 0804 00719 movf FSR, W 01AE 3A36 00720 xorlw 0x36 ;S_temp 01AF 1D03 00721 btfss STATUS, Z ;all done? 01B0 29AA 00722 goto NEXT ;no clear next 00723 00724 ; movlw 0x00 00725 ; movwf B_EDO1 00726 ; movwf B_EDO2 00727 ; movwf B_EDO3 00728 ; movwf B_EDO3 00729 ; movwf ADCH 00730 ; movwf ADCL 00731 ; movwf ADCLHN 00732 ; movwf C_TM 00733 ; movwf C_DF 00734 00735 ; movwf set_old 00736 ; movwf set_dec 00737 ; movwf set_cmp 00738 ; movwf m_30 00739 ; movwf m_31 00740 ; movwf m_32 00741 ; movwf t_1 00742 ; movwf t_2 00743 ; movwf t_3 00744 ; movwf W_temp 00745 ; movwf S_temp 00746 01B1 0008 00747 RETURN 00748 00749 END MPASM 03.80.03 Internal RECONECTADOR00.ASM 10-17-2004 11:06:25 PAGE 16 RECONECTADORA ELECTRÓNICA SYMBOL TABLE LABEL VALUE ADC 0000001D ADCH 00000024 ADCL 00000025 ADCLHN 00000026 ADCON0 0000001F ADCON1 0000009F ADCS0 00000006 ADCS1 00000007 ADC_R 0000000D ADDEN 00000003 ADFM 00000007 ADIE 00000006 ADIF 00000006 ADON 00000000 ADRESH 0000001E ADRESL 0000009E A_M 0000000F BRGH 00000002 B_EDO1 00000020 B_EDO2 00000021 B_EDO3 00000022 B_EDO4 00000023 C 00000000 CCP1CON 00000017 CCP1IE 00000002 CCP1IF 00000002 CCP1M0 00000000 CCP1M1 00000001 CCP1M2 00000002 CCP1M3 00000003 CCP1X 00000005 CCP1Y 00000004 CCPR1H 00000016 CCPR1L 00000015 CFG_INTCON 00000198 CFG_OPTION 00000192 CFG_PORTS 0000019F CHK1 00000038 CHK2 0000003F CHK3 00000044 CHK4 00000047 CHK_ADCL 0000006C CHK_ADC_VALUES 00000062 CHK_CI 00000013 CHK_EDFU 000000B7 CHK_OI 00000015 CHK_SYSTEM 0000018E CHK_sensibility 00000054 CHK_timing 00000165 CHS0 00000003 CHS1 00000004 CHS2 00000005 CLOSE 000000ED MPASM 03.80.03 Internal RECONECTADOR00.ASM 10-17-2004 11:06:25 PAGE 17 RECONECTADORA ELECTRÓNICA SYMBOL TABLE LABEL VALUE CREN 00000004 CSRC 00000007 CYCLE_DONE 00000050 C_DF 00000028 C_TM 00000027 DC 00000001 DELAY_30 0000012E DELAY_50 000000F6 DELAY_50i 000000F2 DELAY_event 00000154 DELAY_tempo 0000016E DF2_set 000000CC DF3_set 000000D4 DFExU 00000017 DF_event 000000B2 EDF2_set 000000DD EDFU 00000097 EDFU_back 00000099 EDFxU 00000176 EEADR 0000010D EEADRH 0000010F EECON1 0000018C EECON2 0000018D EEDATA 0000010C EEDATH 0000010E EEIE 00000004 EEIF 00000004 EEPGD 00000007 END_CLOSE 00000104 END_ISR 0000017A END_TO 00000179 END_delay 0000015B E_300_600mA 000000D7 F 00000001 FERR 00000002 FIX_CD 00000136 FIX_ISRTMDF 0000015E FSR 00000004 GIE 00000007 GO 00000002 GO_DONE 00000002 INC_300_600 000000B6 INDF 00000000 INI_CD 00000114 INI_VARIABLES 000001A8 INTCON 0000000B INTE 00000004 INTEDG 00000006 INTF 00000001 IRP 00000007 ISR 00000117 LOAD_t1 00000162 LOOP 0000000C MPASM 03.80.03 Internal RECONECTADOR00.ASM 10-17-2004 11:06:25 PAGE 18 RECONECTADORA ELECTRÓNICA SYMBOL TABLE LABEL VALUE LOOP1 00000011 MAIN 00000005 MANUAL 0000017F NEXT 000001AA NOT_BO 00000000 NOT_BOR 00000000 NOT_DONE 00000002 NOT_PD 00000003 NOT_POR 00000001 NOT_RBPU 00000007 NOT_RC8 00000006 NOT_T1SYNC 00000002 NOT_TO 00000004 NOT_TX8 00000006 NO_EDF2 00000091 NO_FUE 000000E5 NV_E 00000186 NV_E1 0000018B OERR 00000001 OPEN 000000EF OPTION_REG 00000081 O_C_I 000000E8 PCFG0 00000000 PCFG1 00000001 PCFG2 00000002 PCFG3 00000003 PCL 00000002 PCLATH 0000000A PCON 0000008E PEIE 00000006 PIE1 0000008C PIE2 0000008D PIR1 0000000C PIR2 0000000D PORTA 00000005 PORTB 00000006 PORTC 00000007 PR2 00000092 PS0 00000000 PS1 00000001 PS2 00000002 PSA 00000003 RBIE 00000003 RBIF 00000000 RC8_9 00000006 RC9 00000006 RCD8 00000000 RCIE 00000005 RCIF 00000005 RCREG 0000001A RCSTA 00000018 RD 00000000 REC_TMDF 00000141 MPASM 03.80.03 Internal RECONECTADOR00.ASM 10-17-2004 11:06:25 PAGE 19 RECONECTADORA ELECTRÓNICA SYMBOL TABLE LABEL VALUE RELOAD_30 0000013A RELOAD_30_31 0000013C RP0 00000005 RP1 00000006 RX9 00000006 RX9D 00000000 SET_VARIABLES 0000004C SPBRG 00000099 SPEN 00000007 SREN 00000005 STATUS 00000003 SYNC 00000004 S_temp 00000035 T0CS 00000005 T0IE 00000005 T0IF 00000002 T0SE 00000004 T1CKPS0 00000004 T1CKPS1 00000005 T1CON 00000010 T1INSYNC 00000002 T1OSCEN 00000003 T1SYNC 00000002 T2CKPS0 00000000 T2CKPS1 00000001 T2CON 00000012 TEMPORIZADOR 0000002A TEMPO_READY 00000049 TIME_3 00000159 TMDF 00000122 TMR0 00000001 TMR1CS 00000001 TMR1H 0000000F TMR1IE 00000000 TMR1IF 00000000 TMR1L 0000000E TMR1ON 00000000 TMR2 00000011 TMR2IE 00000001 TMR2IF 00000001 TMR2ON 00000002 TM_event 000000A0 TOUTPS0 00000003 TOUTPS1 00000004 TOUTPS2 00000005 TOUTPS3 00000006 TRISA 00000085 TRISB 00000086 TRISC 00000087 TRMT 00000001 TX8_9 00000006 TX9 00000006 TX9D 00000000 MPASM 03.80.03 Internal RECONECTADOR00.ASM 10-17-2004 11:06:25 PAGE 20 RECONECTADORA ELECTRÓNICA SYMBOL TABLE LABEL VALUE TXD8 00000000 TXEN 00000005 TXIE 00000004 TXIF 00000004 TXREG 00000019 TXSTA 00000098 W 00000000 WR 00000001 WREN 00000002 WRERR 00000003 W_temp 00000034 Z 00000002 _BODEN_OFF 00003FBF _BODEN_ON 00003FFF _CPD_OFF 00003FFF _CPD_ON 00003EFF _CP_ALL 00000FCF _CP_OFF 00003FFF _DEBUG_OFF 00003FFF _DEBUG_ON 000037FF _HS_OSC 00003FFE _LP_OSC 00003FFC _LVP_OFF 00003F7F _LVP_ON 00003FFF _PWRTE_OFF 00003FFF _PWRTE_ON 00003FF7 _RC_OSC 00003FFF _WDT_OFF 00003FFB _WDT_ON 00003FFF _WRT_ENABLE_OFF 00003DFF _WRT_ENABLE_ON 00003FFF _XT_OSC 00003FFD __16F870 00000001 d1 00000029 d2 0000002A m30 00000124 m30_set 00000126 mA300 00000060 mA300_ADC 00000076 mA30_ADC 00000067 mA600 0000005C mA600_ADC 00000081 m_30 0000002E m_31 0000002F m_32 00000030 min1 00000152 min5 0000014D see_back 000000C7 seg20 00000149 seg40 0000014F set_cmp 0000002D set_dec 0000002C set_old 0000002B MPASM 03.80.03 Internal RECONECTADOR00.ASM 10-17-2004 11:06:25 PAGE 21 RECONECTADORA ELECTRÓNICA SYMBOL TABLE LABEL VALUE t_1 00000031 t_2 00000032 t_3 00000033 MEMORY USAGE MAP ('X' = Used, '-' = Unused) 0000 : X---XXXXXXXXXXXX XXXXXXXXXXXXXXXX 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 XX-------------- 2000 : -------X-------- ---------------- ---------------- ---------------- All other memory blocks unused. Program Memory Words Used: 431 Program Memory Words Free: 1617 Errors : 0 Warnings : 0 reported, 0 suppressed Messages : 9 reported, 0 suppressed