0,0 → 1,780 |
CCS PCM C Compiler, Version 3.245, 27853 01-IV-06 23:13 |
|
Filename: D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\main.lst |
|
ROM used: 582 words (14%) |
Largest free fragment is 2048 |
RAM used: 35 (20%) at main() level |
38 (22%) worst case |
Stack: 3 worst case (1 in main + 2 for interrupts) |
|
* |
0000: MOVLW 00 |
0001: MOVWF 0A |
0002: GOTO 18F |
0003: NOP |
.................... #include ".\main.h" |
.................... #include <16F88.h> |
.................... //////// Standard Header file for the PIC16F88 device //////////////// |
.................... #device PIC16F88 |
.................... #list |
.................... |
.................... #device adc=8 |
.................... |
.................... #FUSES NOWDT //No Watch Dog Timer |
.................... #FUSES INTRC_IO |
.................... #FUSES NOPUT //No Power Up Timer |
.................... #FUSES MCLR //Master Clear pin enabled |
.................... #FUSES BROWNOUT //Reset when brownout detected |
.................... #FUSES LVP //Low Voltage Programming on B3(PIC16) or B5(PIC18) |
.................... #FUSES NOCPD //No EE protection |
.................... #FUSES NOWRT //Program memory not write protected |
.................... #FUSES NODEBUG //No Debug mode for ICD |
.................... #FUSES NOPROTECT //Code not protected from reading |
.................... #FUSES FCMEN //Fail-safe clock monitor enabled |
.................... #FUSES IESO //Internal External Switch Over mode enabled |
.................... |
.................... #use delay(clock=8000000,RESTART_WDT) |
000E: MOVLW 3F |
000F: MOVWF 04 |
0010: MOVF 00,W |
0011: BTFSC 03.2 |
0012: GOTO 025 |
0013: MOVLW 02 |
0014: MOVWF 78 |
0015: MOVLW BF |
0016: MOVWF 77 |
0017: CLRWDT |
0018: DECFSZ 77,F |
0019: GOTO 017 |
001A: DECFSZ 78,F |
001B: GOTO 015 |
001C: MOVLW 96 |
001D: MOVWF 77 |
001E: DECFSZ 77,F |
001F: GOTO 01E |
0020: NOP |
0021: NOP |
0022: CLRWDT |
0023: DECFSZ 00,F |
0024: GOTO 013 |
0025: BCF 0A.3 |
0026: GOTO 040 (RETURN) |
0027: MOVLW 08 |
0028: SUBWF 3F,F |
0029: BTFSS 03.0 |
002A: GOTO 036 |
002B: MOVLW 3F |
002C: MOVWF 04 |
002D: BCF 03.0 |
002E: RRF 00,F |
002F: MOVF 00,W |
0030: BTFSC 03.2 |
0031: GOTO 036 |
0032: GOTO 034 |
0033: CLRWDT |
0034: DECFSZ 00,F |
0035: GOTO 033 |
0036: BCF 0A.3 |
0037: GOTO 043 (RETURN) |
.................... |
.................... |
.................... |
.................... #use rtos (timer=2, minor_cycle=2ms) |
.................... |
.................... unsigned int8 sensors; // pomocna promenna pro cteni cidel na caru |
.................... unsigned int8 line; // na ktere strane byla detekovana cara |
.................... unsigned int8 dira; // pocita dobu po kterou je ztracena cara |
.................... unsigned int8 uhel; // urcuje aktualni uhel zataceni |
.................... |
.................... signed int16 Lmotor; // promene, ktere urcuji velikost vykonu na levem |
.................... signed int16 Rmotor; // a pravem motoru |
.................... |
.................... #define LMAX 190 // maximalni zatoceni doleva |
.................... #define RMAX 60 // maximalni zatoceni doprava |
.................... #define STRED 128 // sredni poloha zadniho kolecka |
.................... |
.................... // servo |
.................... #define SERVO PIN_A2 |
.................... |
.................... //motory |
.................... #define FR output_low(PIN_A7); output_high(PIN_A6) // Vpred |
.................... #define FL output_low(PIN_A1); output_high(PIN_A0) |
.................... #define BR output_low(PIN_A6); output_high(PIN_A7) // Vzad |
.................... #define BL output_low(PIN_A0); output_high(PIN_A1) |
.................... #define STOPR output_low(PIN_A6);output_low(PIN_A7) |
.................... #define STOPL output_low(PIN_A0);output_low(PIN_A1) |
.................... |
.................... //HID |
.................... #define LED1 PIN_B1 //oranzova |
.................... #define LED2 PIN_B2 //zluta |
.................... |
.................... #define STROBE PIN_B0 |
.................... //#define SW1 PIN_A2 // Motory On/off |
.................... |
.................... // makro pro PWM |
.................... #define GO(motor, direction, power) if(get_timer0()<=power) \ |
.................... {direction##motor;} else {stop##motor;} |
.................... |
.................... |
.................... //////////////////////////////////////////////////////////////////////////////// |
.................... //////////////////////////////////////////////////////////////////////////////// |
.................... /* |
.................... void diagnostika() |
.................... { |
.................... if(input(SW1))STOPR;STOPL;While(TRUE); |
.................... // if(LSENSOR==true) output_high(LED2); else output_low(LED2); |
.................... // if(RSENSOR==true) output_high(LED1); else output_low(LED1); |
.................... } |
.................... */ |
.................... //////////////////////////////////////////////////////////////////////////////// |
.................... #task (rate=16ms,max=2ms) |
.................... void zatoc() // ridi servo ktere otaci kolem |
.................... { |
.................... unsigned int8 n; |
.................... output_high(SERVO); |
0038: BSF 03.5 |
0039: BCF 05.2 |
003A: BCF 03.5 |
003B: BSF 05.2 |
.................... delay_us(1200); |
003C: CLRWDT |
003D: MOVLW 01 |
003E: MOVWF 3F |
003F: GOTO 00E |
0040: MOVLW C7 |
0041: MOVWF 3F |
0042: GOTO 027 |
.................... for(n=uhel; n>0; n--); |
0043: MOVF 24,W |
0044: MOVWF 3E |
0045: MOVF 3E,F |
0046: BTFSC 03.2 |
0047: GOTO 04A |
0048: DECF 3E,F |
0049: GOTO 045 |
.................... output_low(SERVO); |
004A: BSF 03.5 |
004B: BCF 05.2 |
004C: BCF 03.5 |
004D: BCF 05.2 |
.................... } |
004E: MOVLW 38 |
004F: MOVWF 2E |
0050: MOVLW 00 |
0051: MOVWF 2F |
0052: BCF 0A.3 |
0053: GOTO 236 |
0054: RETLW 00 |
.................... |
.................... //////////////////////////////////////////////////////////////////////////////// |
.................... #task (rate=2ms, max=500us) |
.................... void motory() // umoznuje nezavisle rizeni vykonu na obou motorech |
.................... { |
.................... |
.................... if(Rmotor>0) //pravy motor |
0055: BTFSC 28.7 |
0056: GOTO 07D |
0057: MOVF 28,F |
0058: BTFSS 03.2 |
0059: GOTO 05E |
005A: MOVF 27,W |
005B: SUBLW 00 |
005C: BTFSC 03.0 |
005D: GOTO 07D |
.................... { |
.................... GO(R, F, Rmotor); |
005E: MOVF 01,W |
005F: BTFSS 00.7 |
0060: GOTO 064 |
0061: BTFSS 28.7 |
0062: GOTO 06C |
0063: GOTO 066 |
0064: BTFSC 28.7 |
0065: GOTO 075 |
0066: MOVF 28,F |
0067: BTFSS 03.2 |
0068: GOTO 06C |
0069: SUBWF 27,W |
006A: BTFSS 03.0 |
006B: GOTO 075 |
006C: BSF 03.5 |
006D: BCF 05.7 |
006E: BCF 03.5 |
006F: BCF 05.7 |
0070: BSF 03.5 |
0071: BCF 05.6 |
0072: BCF 03.5 |
0073: BSF 05.6 |
0074: GOTO 07D |
0075: BSF 03.5 |
0076: BCF 05.6 |
0077: BCF 03.5 |
0078: BCF 05.6 |
0079: BSF 03.5 |
007A: BCF 05.7 |
007B: BCF 03.5 |
007C: BCF 05.7 |
.................... } |
.................... |
.................... if(Rmotor==0) STOPR; |
007D: MOVF 27,F |
007E: BTFSS 03.2 |
007F: GOTO 087 |
0080: MOVF 28,F |
0081: BTFSS 03.2 |
0082: GOTO 087 |
0083: BSF 03.5 |
0084: BCF 05.6 |
0085: BCF 03.5 |
0086: BCF 05.6 |
0087: BSF 03.5 |
0088: BCF 05.7 |
0089: BCF 03.5 |
008A: BCF 05.7 |
.................... |
.................... if(Rmotor<0) |
008B: BTFSS 28.7 |
008C: GOTO 0BD |
.................... { |
.................... GO(R, B, abs(Rmotor)); |
008D: MOVF 01,W |
008E: MOVWF 40 |
008F: MOVF 28,W |
0090: MOVWF 7A |
0091: MOVF 27,W |
0092: BTFSS 28.7 |
0093: GOTO 09D |
0094: MOVF 27,W |
0095: SUBLW 00 |
0096: MOVWF 77 |
0097: CLRF 7A |
0098: MOVF 28,W |
0099: BTFSS 03.0 |
009A: INCFSZ 28,W |
009B: SUBWF 7A,F |
009C: MOVF 77,W |
009D: MOVWF 78 |
009E: BTFSS 40.7 |
009F: GOTO 0A3 |
00A0: BTFSS 7A.7 |
00A1: GOTO 0AC |
00A2: GOTO 0A5 |
00A3: BTFSC 7A.7 |
00A4: GOTO 0B5 |
00A5: MOVF 7A,F |
00A6: BTFSS 03.2 |
00A7: GOTO 0AC |
00A8: MOVF 40,W |
00A9: SUBWF 78,W |
00AA: BTFSS 03.0 |
00AB: GOTO 0B5 |
00AC: BSF 03.5 |
00AD: BCF 05.6 |
00AE: BCF 03.5 |
00AF: BCF 05.6 |
00B0: BSF 03.5 |
00B1: BCF 05.7 |
00B2: BCF 03.5 |
00B3: BSF 05.7 |
00B4: GOTO 0BD |
00B5: BSF 03.5 |
00B6: BCF 05.6 |
00B7: BCF 03.5 |
00B8: BCF 05.6 |
00B9: BSF 03.5 |
00BA: BCF 05.7 |
00BB: BCF 03.5 |
00BC: BCF 05.7 |
.................... } |
.................... |
.................... if(Lmotor>0) // levy motor |
00BD: BTFSC 26.7 |
00BE: GOTO 0E5 |
00BF: MOVF 26,F |
00C0: BTFSS 03.2 |
00C1: GOTO 0C6 |
00C2: MOVF 25,W |
00C3: SUBLW 00 |
00C4: BTFSC 03.0 |
00C5: GOTO 0E5 |
.................... { |
.................... GO(L, F, Lmotor); |
00C6: MOVF 01,W |
00C7: BTFSS 00.7 |
00C8: GOTO 0CC |
00C9: BTFSS 26.7 |
00CA: GOTO 0D4 |
00CB: GOTO 0CE |
00CC: BTFSC 26.7 |
00CD: GOTO 0DD |
00CE: MOVF 26,F |
00CF: BTFSS 03.2 |
00D0: GOTO 0D4 |
00D1: SUBWF 25,W |
00D2: BTFSS 03.0 |
00D3: GOTO 0DD |
00D4: BSF 03.5 |
00D5: BCF 05.1 |
00D6: BCF 03.5 |
00D7: BCF 05.1 |
00D8: BSF 03.5 |
00D9: BCF 05.0 |
00DA: BCF 03.5 |
00DB: BSF 05.0 |
00DC: GOTO 0E5 |
00DD: BSF 03.5 |
00DE: BCF 05.0 |
00DF: BCF 03.5 |
00E0: BCF 05.0 |
00E1: BSF 03.5 |
00E2: BCF 05.1 |
00E3: BCF 03.5 |
00E4: BCF 05.1 |
.................... } |
.................... |
.................... if(Lmotor==0) STOPL; |
00E5: MOVF 25,F |
00E6: BTFSS 03.2 |
00E7: GOTO 0EF |
00E8: MOVF 26,F |
00E9: BTFSS 03.2 |
00EA: GOTO 0EF |
00EB: BSF 03.5 |
00EC: BCF 05.0 |
00ED: BCF 03.5 |
00EE: BCF 05.0 |
00EF: BSF 03.5 |
00F0: BCF 05.1 |
00F1: BCF 03.5 |
00F2: BCF 05.1 |
.................... |
.................... if(Lmotor<0) |
00F3: BTFSS 26.7 |
00F4: GOTO 125 |
.................... { |
.................... GO(L, B, abs(Lmotor)); |
00F5: MOVF 01,W |
00F6: MOVWF 40 |
00F7: MOVF 26,W |
00F8: MOVWF 7A |
00F9: MOVF 25,W |
00FA: BTFSS 26.7 |
00FB: GOTO 105 |
00FC: MOVF 25,W |
00FD: SUBLW 00 |
00FE: MOVWF 77 |
00FF: CLRF 7A |
0100: MOVF 26,W |
0101: BTFSS 03.0 |
0102: INCFSZ 26,W |
0103: SUBWF 7A,F |
0104: MOVF 77,W |
0105: MOVWF 78 |
0106: BTFSS 40.7 |
0107: GOTO 10B |
0108: BTFSS 7A.7 |
0109: GOTO 114 |
010A: GOTO 10D |
010B: BTFSC 7A.7 |
010C: GOTO 11D |
010D: MOVF 7A,F |
010E: BTFSS 03.2 |
010F: GOTO 114 |
0110: MOVF 40,W |
0111: SUBWF 78,W |
0112: BTFSS 03.0 |
0113: GOTO 11D |
0114: BSF 03.5 |
0115: BCF 05.0 |
0116: BCF 03.5 |
0117: BCF 05.0 |
0118: BSF 03.5 |
0119: BCF 05.1 |
011A: BCF 03.5 |
011B: BSF 05.1 |
011C: GOTO 125 |
011D: BSF 03.5 |
011E: BCF 05.0 |
011F: BCF 03.5 |
0120: BCF 05.0 |
0121: BSF 03.5 |
0122: BCF 05.1 |
0123: BCF 03.5 |
0124: BCF 05.1 |
.................... } |
.................... } |
0125: MOVLW 55 |
0126: MOVWF 35 |
0127: MOVLW 00 |
0128: MOVWF 36 |
0129: BCF 0A.3 |
012A: GOTO 236 |
012B: RETLW 00 |
.................... //////////////////////////////////////////////////////////////////////////////// |
.................... #task (rate=4ms, max=500us, queue=0) |
.................... void rizeni() |
.................... { |
.................... rizeni: |
.................... |
.................... sensors = spi_read(0); // cteni senzoru na caru |
012C: MOVF 13,W |
012D: CLRF 13 |
012E: BSF 03.5 |
012F: BTFSC 14.0 |
0130: GOTO 133 |
0131: BCF 03.5 |
0132: GOTO 12E |
0133: BCF 03.5 |
0134: MOVF 13,W |
0135: MOVWF 21 |
.................... output_high(STROBE); |
0136: BSF 03.5 |
0137: BCF 06.0 |
0138: BCF 03.5 |
0139: BSF 06.0 |
.................... output_low(STROBE); |
013A: BSF 03.5 |
013B: BCF 06.0 |
013C: BCF 03.5 |
013D: BCF 06.0 |
.................... |
.................... if(bit_test(sensors,0)) //*......// // z duvodu zkraceni doby reakce se cidla nevyhodnocuji poporade ale od krajnich k prostrednimu |
013E: BTFSS 21.0 |
013F: GOTO 148 |
.................... { |
.................... uhel=LMAX; |
0140: MOVLW BE |
0141: MOVWF 24 |
.................... Lmotor=0;Rmotor=127; |
0142: CLRF 26 |
0143: CLRF 25 |
0144: CLRF 28 |
0145: MOVLW 7F |
0146: MOVWF 27 |
.................... goto rizeni; |
0147: GOTO 12C |
.................... } |
.................... if(bit_test(sensors,6)) //......*// |
0148: BTFSS 21.6 |
0149: GOTO 152 |
.................... { |
.................... uhel=RMAX; |
014A: MOVLW 3C |
014B: MOVWF 24 |
.................... Rmotor=0;Lmotor=127; |
014C: CLRF 28 |
014D: CLRF 27 |
014E: CLRF 26 |
014F: MOVLW 7F |
0150: MOVWF 25 |
.................... goto rizeni; |
0151: GOTO 12C |
.................... } |
.................... if(bit_test(sensors,1)) //.*.....// |
0152: BTFSS 21.1 |
0153: GOTO 15D |
.................... { |
.................... uhel=STRED+30; |
0154: MOVLW 9E |
0155: MOVWF 24 |
.................... Lmotor=70;Rmotor=127; |
0156: CLRF 26 |
0157: MOVLW 46 |
0158: MOVWF 25 |
0159: CLRF 28 |
015A: MOVLW 7F |
015B: MOVWF 27 |
.................... goto rizeni; |
015C: GOTO 12C |
.................... } |
.................... if(bit_test(sensors,5)) //.....*.// |
015D: BTFSS 21.5 |
015E: GOTO 168 |
.................... { |
.................... uhel=STRED-30; |
015F: MOVLW 62 |
0160: MOVWF 24 |
.................... Rmotor=70;Lmotor=127; |
0161: CLRF 28 |
0162: MOVLW 46 |
0163: MOVWF 27 |
0164: CLRF 26 |
0165: MOVLW 7F |
0166: MOVWF 25 |
.................... goto rizeni; |
0167: GOTO 12C |
.................... } |
.................... if(bit_test(sensors,2)) //..*....// |
0168: BTFSS 21.2 |
0169: GOTO 173 |
.................... { |
.................... uhel=STRED+20; |
016A: MOVLW 94 |
016B: MOVWF 24 |
.................... Lmotor=90;Rmotor=127; |
016C: CLRF 26 |
016D: MOVLW 5A |
016E: MOVWF 25 |
016F: CLRF 28 |
0170: MOVLW 7F |
0171: MOVWF 27 |
.................... goto rizeni; |
0172: GOTO 12C |
.................... } |
.................... if(bit_test(sensors,4)) //....*..// |
0173: BTFSS 21.4 |
0174: GOTO 17E |
.................... { |
.................... uhel=STRED-20; |
0175: MOVLW 6C |
0176: MOVWF 24 |
.................... Rmotor=90;Lmotor=127; |
0177: CLRF 28 |
0178: MOVLW 5A |
0179: MOVWF 27 |
017A: CLRF 26 |
017B: MOVLW 7F |
017C: MOVWF 25 |
.................... goto rizeni; |
017D: GOTO 12C |
.................... } |
.................... if(bit_test(sensors,3)) //...*...// |
017E: BTFSS 21.3 |
017F: GOTO 188 |
.................... { |
.................... uhel=STRED; |
0180: MOVLW 80 |
0181: MOVWF 24 |
.................... Lmotor=100;Rmotor=100; |
0182: CLRF 26 |
0183: MOVLW 64 |
0184: MOVWF 25 |
0185: CLRF 28 |
0186: MOVWF 27 |
.................... goto rizeni; |
0187: GOTO 12C |
.................... } |
.................... |
.................... /*STOPL;STOPR; |
.................... if(bit_test(sensors,7)) |
.................... { |
.................... |
.................... }*/ |
.................... } |
0188: MOVLW 2C |
0189: MOVWF 3C |
018A: MOVLW 01 |
018B: MOVWF 3D |
018C: BCF 0A.3 |
018D: GOTO 236 |
018E: RETLW 00 |
.................... //////////////////////////////////////////////////////////////////////////////// |
.................... void main() |
.................... { |
018F: CLRF 04 |
0190: MOVLW 1F |
0191: ANDWF 03,F |
0192: MOVLW 70 |
0193: BSF 03.5 |
0194: MOVWF 0F |
0195: BCF 1F.4 |
0196: BCF 1F.5 |
0197: MOVF 1B,W |
0198: ANDLW 80 |
0199: MOVWF 1B |
019A: MOVLW 07 |
019B: MOVWF 1C |
.................... setup_adc_ports(NO_ANALOGS); |
019C: BCF 1F.4 |
019D: BCF 1F.5 |
019E: MOVF 1B,W |
019F: ANDLW 80 |
01A0: MOVWF 1B |
.................... setup_adc(ADC_CLOCK_INTERNAL); |
01A1: BCF 1F.6 |
01A2: BCF 03.5 |
01A3: BSF 1F.6 |
01A4: BSF 1F.7 |
01A5: BSF 03.5 |
01A6: BCF 1F.7 |
01A7: BCF 03.5 |
01A8: BSF 1F.0 |
.................... setup_spi(SPI_MASTER|SPI_H_TO_L|SPI_XMIT_L_TO_H|SPI_CLK_DIV_4); |
01A9: BCF 14.5 |
01AA: BSF 03.5 |
01AB: BCF 06.2 |
01AC: BSF 06.1 |
01AD: BCF 06.4 |
01AE: MOVLW 30 |
01AF: BCF 03.5 |
01B0: MOVWF 14 |
01B1: MOVLW 00 |
01B2: BSF 03.5 |
01B3: MOVWF 14 |
.................... setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); |
01B4: MOVF 01,W |
01B5: ANDLW C7 |
01B6: IORLW 08 |
01B7: MOVWF 01 |
.................... setup_timer_1(T1_DISABLED); |
01B8: BCF 03.5 |
01B9: CLRF 10 |
.................... setup_oscillator(OSC_8MHZ|OSC_INTRC); |
01BA: MOVLW 72 |
01BB: BSF 03.5 |
01BC: MOVWF 0F |
.................... // set_pwm1_duty(0); // Spust PWM, ale zatim s trvalou 0 na vystupu |
.................... // setup_ccp1(CCP_PWM); |
.................... // setup_timer_2(T2_DIV_BY_16,200,1); // perioda |
.................... // setup_timer_2(T2_DIV_BY_4,255,10); // Casovac pro regulaci |
.................... |
.................... STOPR; STOPL; |
01BD: BCF 05.6 |
01BE: BCF 03.5 |
01BF: BCF 05.6 |
01C0: BSF 03.5 |
01C1: BCF 05.7 |
01C2: BCF 03.5 |
01C3: BCF 05.7 |
01C4: BSF 03.5 |
01C5: BCF 05.0 |
01C6: BCF 03.5 |
01C7: BCF 05.0 |
01C8: BSF 03.5 |
01C9: BCF 05.1 |
01CA: BCF 03.5 |
01CB: BCF 05.1 |
.................... uhel=STRED; |
01CC: MOVLW 80 |
01CD: MOVWF 24 |
.................... // diagnostika(); |
.................... Lmotor=0; |
01CE: CLRF 26 |
01CF: CLRF 25 |
.................... Rmotor=0; |
01D0: CLRF 28 |
01D1: CLRF 27 |
.................... rtos_run(); |
01D2: CLRF 29 |
01D3: CLRF 2B |
01D4: MOVLW 08 |
01D5: MOVWF 2A |
01D6: CLRF 2D |
01D7: MOVLW 01 |
01D8: MOVWF 2C |
01D9: MOVLW 38 |
01DA: MOVWF 2E |
01DB: MOVLW 00 |
01DC: MOVWF 2F |
01DD: CLRF 30 |
01DE: CLRF 32 |
01DF: MOVLW 01 |
01E0: MOVWF 31 |
01E1: CLRF 34 |
01E2: CLRF 33 |
01E3: MOVLW 55 |
01E4: MOVWF 35 |
01E5: MOVLW 00 |
01E6: MOVWF 36 |
01E7: CLRF 37 |
01E8: CLRF 39 |
01E9: MOVLW 02 |
01EA: MOVWF 38 |
01EB: CLRF 3B |
01EC: CLRF 3A |
01ED: MOVLW 2C |
01EE: MOVWF 3C |
01EF: MOVLW 01 |
01F0: MOVWF 3D |
01F1: CLRF 20 |
01F2: MOVLW 00 |
01F3: MOVWF 78 |
01F4: IORLW 06 |
01F5: MOVWF 12 |
01F6: MOVLW FA |
01F7: BSF 03.5 |
01F8: MOVWF 12 |
01F9: BCF 03.5 |
01FA: BCF 0C.1 |
01FB: MOVLW 00 |
01FC: MOVWF 78 |
01FD: IORLW 06 |
01FE: MOVWF 12 |
01FF: MOVLW FA |
0200: BSF 03.5 |
0201: MOVWF 12 |
0202: BCF 03.5 |
0203: BCF 0C.1 |
0204: BCF 03.0 |
0205: RLF 20,W |
0206: MOVWF 77 |
0207: CALL 004 |
0208: MOVWF 79 |
0209: MOVLW 01 |
020A: ADDWF 77,W |
020B: CALL 004 |
020C: MOVWF 7A |
020D: MOVF 79,W |
020E: MOVWF 04 |
020F: MOVF 00,W |
0210: MOVWF 79 |
0211: INCF 04,F |
0212: MOVF 00,W |
0213: MOVWF 77 |
0214: INCF 04,F |
0215: MOVF 00,W |
0216: MOVWF 78 |
0217: INCF 04,F |
0218: INCF 00,F |
0219: MOVF 00,W |
021A: MOVWF 7A |
021B: BTFSS 03.2 |
021C: GOTO 220 |
021D: INCF 04,F |
021E: INCF 00,F |
021F: DECF 04,F |
0220: INCF 04,F |
0221: MOVF 00,W |
0222: SUBWF 78,W |
0223: BTFSS 03.2 |
0224: GOTO 238 |
0225: MOVF 77,W |
0226: SUBWF 7A,W |
0227: BTFSS 03.2 |
0228: GOTO 238 |
0229: DECF 04,F |
022A: CLRF 00 |
022B: INCF 04,F |
022C: CLRF 00 |
022D: INCF 04,F |
022E: BTFSC 79.7 |
022F: GOTO 238 |
0230: INCF 04,F |
0231: MOVF 00,W |
0232: MOVWF 0A |
0233: DECF 04,F |
0234: MOVF 00,W |
0235: MOVWF 02 |
0236: BCF 03.5 |
0237: BCF 03.6 |
0238: INCF 20,F |
0239: MOVLW 03 |
023A: SUBWF 20,W |
023B: BTFSS 03.2 |
023C: GOTO 204 |
023D: CLRF 20 |
023E: BTFSS 0C.1 |
023F: GOTO 242 |
0240: BSF 03.5 |
0241: GOTO 202 |
0242: GOTO 23E |
0243: MOVLW FF |
0244: MOVWF 20 |
.................... |
.................... } |
0245: SLEEP |
|
Configuration Fuses: |
Word 1: 3FF8 NOWDT NOPUT MCLR BROWNOUT LVP NOCPD NOWRT NODEBUG CCPB0 NOPROTECT INTRC_IO |
Word 2: 3FFF FCMEN IESO |