Blame | Last modification | View Log | Download
CCS PCM C Compiler, Version 3.245, 27853 20-IX-06 03:03Filename: D:\KAKL\roboti\solarni\2006\scamnum\menic.lstROM used: 769 words (19%)Largest free fragment is 2048RAM used: 76 (43%) at main() level82 (47%) worst caseStack: 3 locations*0000: MOVLW 000001: MOVWF 0A0002: GOTO 1890003: NOP.................... // *************************************.................... // * Scamnum Specularis ** 20. 9. 2006 *.................... // *************************************........................................ #include ".\menic.h".................... #include <16F88.h>.................... //////// Standard Header file for the PIC16F88 device ////////////////.................... #device PIC16F88.................... #list............................................................ #device adc=8........................................ #fuses NOWDT,INTRC_IO, NOPUT, MCLR, NOBROWNOUT, NOLVP, NOCPD, \.................... NOWRT, DEBUG, NOPROTECT, NOFCMEN, NOIESO, CCPB3........................................ #use delay(clock=3900000,RESTART_WDT)*0004: MOVLW 660005: MOVWF 040006: MOVF 00,W0007: BTFSC 03.20008: GOTO 0190009: MOVLW 01000A: MOVWF 78000B: MOVLW BF000C: MOVWF 77000D: CLRWDT000E: DECFSZ 77,F000F: GOTO 00D0010: DECFSZ 78,F0011: GOTO 00B0012: MOVLW 420013: MOVWF 770014: DECFSZ 77,F0015: GOTO 0140016: CLRWDT0017: DECFSZ 00,F0018: GOTO 0090019: RETLW 00*0176: MOVLW 120177: SUBWF 66,F0178: BTFSS 03.00179: GOTO 188017A: MOVLW 66017B: MOVWF 04017C: MOVLW FC017D: ANDWF 00,F017E: BCF 03.0017F: RRF 00,F0180: RRF 00,F0181: MOVF 00,W0182: BTFSC 03.20183: GOTO 1880184: GOTO 1860185: CLRWDT0186: DECFSZ 00,F0187: GOTO 1850188: RETLW 00................................................................................ #define TXo PIN_B5 // To the transmitter modulator.................... #include ".\AX25.c" // Podprogram pro prenos telemetrie.................... //#define PTT PIN_A2 // PTT control.................... //#define TXo PIN_C0 // To the transmitter modulator.................... //#define PERIODAH delay_us(218) // Halfperiod H 222;78/1200 500;430/500.................... //#define TAILH delay_us(74).................... //#define PERIODAL delay_us(408) // Halfperiod L 412;345/1200 1000;880/500.................... //#define TAILL delay_us(341).................... #define PERIODAH delay_us(222) // Halfperiod H 222;78/1200 500;430/500.................... #define TAILH delay_us(78).................... #define PERIODAL delay_us(412) // Halfperiod L 412;345/1200 1000;880/500.................... #define TAILL delay_us(345).................... #byte STATUS = 3 // CPUs status register........................................ byte SendData[16] = {'A'<<1, 'L'<<1, 'L'<<1, ' '<<1, ' '<<1, ' '<<1, 0x60,.................... 'C'<<1, 'Z'<<1, '0'<<1, 'R'<<1, 'R'<<1, 'R'<<1, 0x61,.................... 0x03, 0xF0};*0194: MOVLW 820195: BCF 03.50196: MOVWF 200197: MOVLW 980198: MOVWF 210199: MOVWF 22019A: MOVLW 40019B: MOVWF 23019C: MOVWF 24019D: MOVWF 25019E: MOVLW 60019F: MOVWF 2601A0: MOVLW 8601A1: MOVWF 2701A2: MOVLW B401A3: MOVWF 2801A4: MOVLW 6001A5: MOVWF 2901A6: MOVLW A401A7: MOVWF 2A01A8: MOVWF 2B01A9: MOVWF 2C01AA: MOVLW 6101AB: MOVWF 2D01AC: MOVLW 0301AD: MOVWF 2E01AE: MOVLW F001AF: MOVWF 2F........................................ boolean bit;.................... int fcslo, fcshi; // variabloes for calculating FCS (CRC).................... int stuff; // stuff counter for extra 0.................... int flag_flag; // if it is sending flag (7E).................... int fcs_flag; // if it is sending Frame Check Sequence.................... int i; // for for........................................ void flipout() //flips the state of output pin a_1.................... {.................... stuff = 0; //since this is a 0, reset the stuff counter*00A3: CLRF 33.................... if (bit)00A4: BTFSS 30.000A5: GOTO 0A8.................... {.................... bit=FALSE; //if the state of the pin was low, make it high.00A6: BCF 30.0.................... }.................... else00A7: GOTO 0A9.................... {.................... bit=TRUE; //if the state of the pin was high make it low00A8: BSF 30.0.................... }.................... }00A9: RETLW 00........................................ void fcsbit(byte tbyte).................... {.................... #asm.................... BCF STATUS,0*0105: BCF 03.0.................... RRF fcshi,F // rotates the entire 16 bits0106: RRF 32,F.................... RRF fcslo,F // to the right0107: RRF 31,F.................... #endasm.................... if (((STATUS & 0x01)^(tbyte)) ==0x01)0108: MOVF 03,W0109: ANDLW 01010A: XORWF 6A,W010B: SUBLW 01010C: BTFSS 03.2010D: GOTO 112.................... {.................... fcshi = fcshi^0x84;010E: MOVLW 84010F: XORWF 32,F.................... fcslo = fcslo^0x08;0110: MOVLW 080111: XORWF 31,F.................... }.................... }........................................ void SendBit ().................... {.................... if (bit)*00AA: BTFSS 30.000AB: GOTO 0D6.................... {.................... output_low(TXo);00AC: BSF 03.500AD: BCF 06.500AE: BCF 03.500AF: BCF 06.5.................... PERIODAH;00B0: CLRWDT00B1: MOVLW 4700B2: MOVWF 7700B3: DECFSZ 77,F00B4: GOTO 0B300B5: NOP.................... output_high(TXo);00B6: BSF 03.500B7: BCF 06.500B8: BCF 03.500B9: BSF 06.5.................... PERIODAH;00BA: CLRWDT00BB: MOVLW 4700BC: MOVWF 7700BD: DECFSZ 77,F00BE: GOTO 0BD00BF: NOP.................... output_low(TXo);00C0: BSF 03.500C1: BCF 06.500C2: BCF 03.500C3: BCF 06.5.................... PERIODAH;00C4: CLRWDT00C5: MOVLW 4700C6: MOVWF 7700C7: DECFSZ 77,F00C8: GOTO 0C700C9: NOP.................... output_high(TXo);00CA: BSF 03.500CB: BCF 06.500CC: BCF 03.500CD: BSF 06.5.................... TAILH;00CE: CLRWDT00CF: MOVLW 1800D0: MOVWF 7700D1: DECFSZ 77,F00D2: GOTO 0D100D3: NOP00D4: NOP.................... }.................... else00D5: GOTO 0E9.................... {.................... output_low(TXo);00D6: BSF 03.500D7: BCF 06.500D8: BCF 03.500D9: BCF 06.5.................... PERIODAL;00DA: CLRWDT00DB: MOVLW 8500DC: MOVWF 7700DD: DECFSZ 77,F00DE: GOTO 0DD.................... output_high(TXo);00DF: BSF 03.500E0: BCF 06.500E1: BCF 03.500E2: BSF 06.5.................... TAILL;00E3: CLRWDT00E4: MOVLW 6F00E5: MOVWF 7700E6: DECFSZ 77,F00E7: GOTO 0E600E8: NOP.................... };.................... }00E9: RETLW 00........................................ void SendByte (byte inbyte).................... {.................... int k, bt;........................................ for (k=0;k<8;k++) //do the following for each of the 8 bits in the byte00EA: CLRF 6800EB: MOVF 68,W00EC: SUBLW 0700ED: BTFSS 03.000EE: GOTO 132.................... {.................... bt = inbyte & 0x01; //strip off the rightmost bit of the byte to be sent (inbyte)00EF: MOVF 67,W00F0: ANDLW 0100F1: MOVWF 69.................... if ((fcs_flag == FALSE) & (flag_flag == FALSE)) fcsbit(bt); //do FCS calc, but only if this00F2: MOVF 35,F00F3: BTFSC 03.200F4: GOTO 0F700F5: MOVLW 0000F6: GOTO 0F800F7: MOVLW 0100F8: MOVWF 6A00F9: MOVF 34,F00FA: BTFSC 03.200FB: GOTO 0FE00FC: MOVLW 0000FD: GOTO 0FF00FE: MOVLW 0100FF: ANDWF 6A,W0100: XORLW 000101: BTFSC 03.20102: GOTO 1120103: MOVF 69,W0104: MOVWF 6A.................... //is not a flag or fcs byte.................... if (bt == 0)*0112: MOVF 69,F0113: BTFSS 03.20114: GOTO 117.................... {.................... flipout();0115: CALL 0A3.................... } // if this bit is a zero, flip the output state.................... else0116: GOTO 12D.................... { //otherwise if it is a 1, do the following:.................... if (flag_flag == FALSE) stuff++; //increment the count of consequtive 1's0117: MOVF 34,F0118: BTFSC 03.20119: INCF 33,F.................... if ((flag_flag == FALSE) & (stuff == 5))011A: MOVF 34,F011B: BTFSC 03.2011C: GOTO 11F011D: MOVLW 00011E: GOTO 120011F: MOVLW 010120: MOVWF 6A0121: MOVF 33,W0122: SUBLW 050123: BTFSC 03.20124: GOTO 1270125: MOVLW 000126: GOTO 1280127: MOVLW 010128: ANDWF 6A,W0129: BTFSC 03.2012A: GOTO 12D.................... { //stuff an extra 0, if 5 1's in a row.................... SendBit();012B: CALL 0AA.................... flipout(); //flip the output state to stuff a 0012C: CALL 0A3.................... }//end of if.................... }//end of else.................... // delay_us(850); //introduces a delay that creates 1200 baud.................... SendBit();012D: CALL 0AA.................... inbyte = inbyte>>1; //go to the next bit in the byte012E: BCF 03.0012F: RRF 67,F.................... }//end of for0130: INCF 68,F0131: GOTO 0EB.................... }//end of SendByte0132: RETLW 00........................................ void SendPacket(char *data).................... {.................... bit=FALSE;0133: BCF 30.0........................................ fcslo=fcshi=0xFF; //The 2 FCS Bytes are initialized to FF0134: MOVLW FF0135: MOVWF 320136: MOVWF 31.................... stuff = 0; //The variable stuff counts the number of 1's in a row. When it gets to 50137: CLRF 33.................... // it is time to stuff a 0......................................... // output_low(PTT); // Blinking LED.................... // delay_ms(1000);.................... // output_high(PTT);........................................ flag_flag = TRUE; //The variable flag is true if you are transmitted flags (7E's) false otherwise.0138: MOVLW 010139: MOVWF 34.................... fcs_flag = FALSE; //The variable fcsflag is true if you are transmitting FCS bytes, false otherwise.013A: CLRF 35........................................ for(i=0; i<10; i++) SendByte(0x7E); //Sends flag bytes. Adjust length for txdelay013B: CLRF 36013C: MOVF 36,W013D: SUBLW 09013E: BTFSS 03.0013F: GOTO 1450140: MOVLW 7E0141: MOVWF 670142: CALL 0EA0143: INCF 36,F0144: GOTO 13C.................... //each flag takes approx 6.7 ms.................... flag_flag = FALSE; //done sending flags0145: CLRF 34........................................ for(i=0; i<16; i++) SendByte(SendData[i]); //send the packet bytes0146: CLRF 360147: MOVF 36,W0148: SUBLW 0F0149: BTFSS 03.0014A: GOTO 154014B: MOVLW 20014C: ADDWF 36,W014D: MOVWF 04014E: MOVF 00,W014F: MOVWF 660150: MOVWF 670151: CALL 0EA0152: INCF 36,F0153: GOTO 147........................................ for(i=0; 0 != *data; i++)0154: CLRF 360155: MOVF 65,W0156: MOVWF 040157: MOVF 00,W0158: BTFSC 03.20159: GOTO 163.................... {.................... SendByte(*data); //send the packet bytes015A: MOVF 65,W015B: MOVWF 04015C: MOVF 00,W015D: MOVWF 66015E: MOVWF 67015F: CALL 0EA.................... data++;0160: INCF 65,F.................... };0161: INCF 36,F0162: GOTO 155........................................ fcs_flag = TRUE; //about to send the FCS bytes0163: MOVLW 010164: MOVWF 35.................... fcslo =fcslo^0xff; //must XOR them with FF before sending0165: MOVLW FF0166: XORWF 31,F.................... fcshi = fcshi^0xff;0167: XORWF 32,F.................... SendByte(fcslo); //send the low byte of fcs0168: MOVF 31,W0169: MOVWF 67016A: CALL 0EA.................... SendByte(fcshi); //send the high byte of fcs016B: MOVF 32,W016C: MOVWF 67016D: CALL 0EA.................... fcs_flag = FALSE; //done sending FCS016E: CLRF 35.................... flag_flag = TRUE; //about to send flags016F: MOVLW 010170: MOVWF 34.................... SendByte(0x7e); // Send a flag to end packet0171: MOVLW 7E0172: MOVWF 670173: CALL 0EA.................... }0174: BCF 0A.30175: GOTO 2C2 (RETURN).................................................................................................... char AXstring[40]; // Buffer pro prenos telemetrie........................................ #define REFSTART 95 // Hodnota odpovidajici 1,2V pri nezatizenych clancich.................... #define DUTY1 2 // Delka sepnuti PWM v us pro sero.................... #define DUTY2 19 // Delka sepnuti PWM v us pro jednu zarovku 500W........................................ // Tabulka hodnot prevodniku pro ruzna napajeci napeti.................... // 80 3,99V.................... // 90 3,54V.................... // 100 3,20V.................... // 105 3,04V.................... // 107 2,99V.................... // 110 2,91v.................... // 200 1,61V........................................ #define PIEZO PIN_A6 // Jeden pol piezo reproduktoru.................... #define LED PIN_A7 // LED / druhy pol piezo reproduktoru.................... #define MENIC PIN_B3 // Spinani tranzistoru menice.................... #define REFPWR PIN_B1 // Napajeni zdroje referencniho napeti.................... #define MOTOR PIN_B2 // Spinani tranzistoru motoru.................... #define SW1 PIN_B6 // DIPswitch 1.................... #define SW2 PIN_B7 // DIPswitch 2.................... #define NAPETI 4 // Cislo kanalu DA prevodniku pro mereni napeti.................... #define PWM 0 // Cislo kanalu DA prevodniku pro nastaveni PWM.................... #define ROZJEZD 1 // Cislo kanalu DA prevodniku pro nastaveni rozjezdu........................................ void pip() // pipnuti a bliknuti.................... {.................... int1 beep;.................... int i;........................................ for(i=0; i<250; i++)*0027: CLRF 660028: MOVF 66,W0029: SUBLW F9002A: BTFSS 03.0002B: GOTO 047.................... {.................... output_bit(PIEZO, beep);002C: BTFSC 65.0002D: GOTO 030002E: BCF 05.6002F: GOTO 0310030: BSF 05.60031: BSF 03.50032: BCF 05.6.................... beep=~beep;0033: MOVLW 010034: BCF 03.50035: XORWF 65,F.................... output_bit(LED, beep);0036: BTFSC 65.00037: GOTO 03A0038: BCF 05.70039: GOTO 03B003A: BSF 05.7003B: BSF 03.5003C: BCF 05.7.................... delay_us(100);003D: CLRWDT003E: MOVLW 1F003F: MOVWF 770040: DECFSZ 77,F0041: GOTO 0400042: NOP0043: NOP.................... };0044: BCF 03.50045: INCF 66,F0046: GOTO 028.................... output_high(PIEZO);0047: BSF 03.50048: BCF 05.60049: BCF 03.5004A: BSF 05.6.................... output_high(LED);004B: BSF 03.5004C: BCF 05.7004D: BCF 03.5004E: BSF 05.7.................... }004F: BCF 0A.30050: GOTO 276 (RETURN)........................................ void cvak() // pouze cvaknuti piezoelementem bez bliknuti.................... {.................... output_bit(PIEZO,~input(PIEZO));*001A: BSF 03.5001B: BSF 05.6001C: BCF 03.5001D: BTFSS 05.6001E: GOTO 021001F: BCF 05.60020: GOTO 0220021: BSF 05.60022: BSF 03.50023: BCF 05.6.................... }0024: BCF 03.50025: BCF 0A.30026: GOTO 229 (RETURN)........................................ void main().................... {*0189: CLRF 04018A: MOVLW 1F018B: ANDWF 03,F018C: BSF 03.5018D: BCF 1F.4018E: BCF 1F.5018F: MOVF 1B,W0190: ANDLW 800191: MOVWF 1B0192: MOVLW 070193: MOVWF 1C.................... int8 n;.................... int8 perioda;.................... int8 razeni;.................... int8 uclanku;.................... int8 ble;........................................ setup_timer_0(RTCC_INTERNAL);setup_wdt(WDT_1152MS);*01B1: BSF 03.501B2: MOVF 01,W01B3: ANDLW C001B4: MOVWF 0101B5: MOVLW 0E01B6: MOVWF 7701B7: MOVLW 0701B8: BCF 03.501B9: CLRF 0101BA: MOVLW 8101BB: MOVWF 0401BC: MOVF 00,W01BD: ANDLW F001BE: IORLW 0701BF: MOVWF 0001C0: CLRWDT01C1: MOVF 00,W01C2: ANDLW F701C3: BTFSC 77.301C4: ANDLW F001C5: IORWF 77,W01C6: MOVWF 00.................... setup_timer_1(T1_DISABLED);01C7: CLRF 10.................... setup_adc_ports(ADC_CLOCK_INTERNAL|sAN0|sAN1|sAN4|VSS_VDD);01C8: BSF 03.501C9: BCF 1F.401CA: BCF 1F.501CB: MOVF 1B,W01CC: ANDLW 8001CD: IORLW D301CE: MOVWF 1B.................... setup_adc(ADC_CLOCK_INTERNAL);01CF: BCF 1F.601D0: BCF 03.501D1: BSF 1F.601D2: BSF 1F.701D3: BSF 03.501D4: BCF 1F.701D5: BCF 03.501D6: BSF 1F.0.................... setup_spi(FALSE);01D7: BCF 14.501D8: BSF 03.501D9: BCF 06.201DA: BSF 06.101DB: BCF 06.401DC: MOVLW 0001DD: BCF 03.501DE: MOVWF 1401DF: BSF 03.501E0: MOVWF 14.................... setup_comparator(NC_NC_NC_NC);01E1: MOVLW 0701E2: MOVWF 1C01E3: MOVF 05,W01E4: CLRWDT01E5: MOVLW 0201E6: MOVWF 7701E7: DECFSZ 77,F01E8: GOTO 1E701E9: NOP01EA: MOVF 1C,W01EB: BCF 03.501EC: BCF 0D.6.................... setup_vref(FALSE);01ED: BSF 03.501EE: CLRF 1D........................................ output_low(MENIC); // Vsechno zastav01EF: BCF 06.301F0: BCF 03.501F1: BCF 06.3.................... output_low(MOTOR);01F2: BSF 03.501F3: BCF 06.201F4: BCF 03.501F5: BCF 06.2.................... output_low(REFPWR);01F6: BSF 03.501F7: BCF 06.101F8: BCF 03.501F9: BCF 06.1.................... output_high(LED);01FA: BSF 03.501FB: BCF 05.701FC: BCF 03.501FD: BSF 05.7.................... output_high(PIEZO);01FE: BSF 03.501FF: BCF 05.60200: BCF 03.50201: BSF 05.6........................................ set_adc_channel(NAPETI); // Vyber AD kanal pro pomerne mereni napeti0202: MOVLW 200203: MOVWF 780204: MOVF 1F,W0205: ANDLW C70206: IORWF 78,W0207: MOVWF 1F.................... set_pwm1_duty(0); // Spust PWM, ale zatim s trvalou 0 na vystupu0208: CLRF 15.................... setup_ccp1(CCP_PWM);0209: BSF 03.5020A: BCF 06.3020B: BCF 03.5020C: BCF 06.3020D: MOVLW 0C020E: MOVWF 17.................... setup_timer_2(T2_DIV_BY_1,100,1); // perioda020F: MOVLW 000210: MOVWF 780211: IORLW 040212: MOVWF 120213: MOVLW 640214: BSF 03.50215: MOVWF 12........................................ setup_oscillator(OSC_4MHZ|OSC_INTRC); // rozjed PIC (zvysi se odber)0216: MOVLW 620217: MOVWF 0F........................................ // jsme v depu?.................... set_pwm1_duty(DUTY1); // PWM pro zatizeni clanku pri malem osvetleni0218: MOVLW 020219: BCF 03.5021A: MOVWF 15.................... n=0;021B: CLRF 60.................... do.................... {.................... output_low(REFPWR); // Vypni napajeni napetove reference, aby se setrilo021C: BSF 03.5021D: BCF 06.1021E: BCF 03.5021F: BCF 06.1.................... delay_ms(100);0220: MOVLW 640221: MOVWF 660222: CALL 004.................... if (4==n++) {cvak(); n=0;}; // Kazdy 4. pruchod cvakni0223: MOVF 60,W0224: INCF 60,F0225: SUBLW 040226: BTFSS 03.20227: GOTO 22A0228: GOTO 01A0229: CLRF 60.................... output_high(REFPWR); // Zapni napajeni napetove reference022A: BSF 03.5022B: BCF 06.1022C: BCF 03.5022D: BSF 06.1.................... delay_ms(1); // Pockej na ustaleni napeti022E: MOVLW 01022F: MOVWF 660230: CALL 004.................... } while (read_adc()>REFSTART); // Odkryl starter clanky?0231: BSF 1F.20232: BTFSC 1F.20233: GOTO 2320234: MOVF 1E,W0235: SUBLW 5F0236: BTFSS 03.00237: GOTO 21C.................... output_low(REFPWR); // Vypni napajeni napetove reference, aby se setrilo0238: BSF 03.50239: BCF 06.1023A: BCF 03.5023B: BCF 06.1........................................ // port_b_pullups(TRUE); // Zapni pullupy, aby slo cist DIPswitch.................... // do.................... // {.................... // Precti trimry.................... set_adc_channel(PWM); // Zjisteni nastaveni PWM023C: MOVLW 00023D: MOVWF 78023E: MOVF 1F,W023F: ANDLW C70240: IORWF 78,W0241: MOVWF 1F.................... delay_us(100); // Pockej na prepnuti kanalu A/D prevodniku0242: CLRWDT0243: MOVLW 1F0244: MOVWF 770245: DECFSZ 77,F0246: GOTO 2450247: NOP0248: NOP.................... perioda=(read_adc()>>2)+40; // rozsah: 40 az 1030249: BSF 1F.2024A: BTFSC 1F.2024B: GOTO 24A024C: MOVF 1E,W024D: MOVWF 77024E: RRF 77,F024F: RRF 77,F0250: MOVLW 3F0251: ANDWF 77,F0252: MOVF 77,W0253: ADDLW 280254: MOVWF 61........................................ set_adc_channel(ROZJEZD); // Zjisteni nastaveni rozjezdu0255: MOVLW 080256: MOVWF 780257: MOVF 1F,W0258: ANDLW C70259: IORWF 78,W025A: MOVWF 1F.................... delay_us(100); // Pockej na prepnuti kanalu A/D prevodniku025B: CLRWDT025C: MOVLW 1F025D: MOVWF 77025E: DECFSZ 77,F025F: GOTO 25E0260: NOP0261: NOP.................... razeni=read_adc()>>4; // rozsah: 0 az 150262: BSF 1F.20263: BTFSC 1F.20264: GOTO 2630265: MOVF 1E,W0266: SWAPF 1E,W0267: MOVWF 620268: MOVLW 0F0269: ANDWF 62,F........................................ // Rozjeti menice.................... set_pwm1_duty(0); // Zastav PWM, aby slo nastavit jinou frekvenci026A: CLRF 15.................... setup_timer_2(T2_DIV_BY_1,perioda,1); // perioda026B: MOVLW 00026C: MOVWF 78026D: IORLW 04026E: MOVWF 12026F: MOVF 61,W0270: BSF 03.50271: MOVWF 12.................... set_pwm1_duty(DUTY2); // PWM pro zatizeni clanku pri jedne 500W zarovce0272: MOVLW 130273: BCF 03.50274: MOVWF 15........................................ pip(); // potvrzeni odstartovani / servisni mod0275: GOTO 027.................... delay_ms(500);0276: MOVLW 020277: MOVWF 650278: MOVLW FA0279: MOVWF 66027A: CALL 004027B: DECFSZ 65,F027C: GOTO 278........................................ // } while (input(SW1)); // Je zapnut servisni mod? SW1(OFF)=ANO.................... // port_b_pullups(FALSE); // Vypni pullupy, aby se setrilo energii........................................ // zmereni napeti na clancich.................... output_high(REFPWR); // Prepni AD na mereni napeti clanku027D: BSF 03.5027E: BCF 06.1027F: BCF 03.50280: BSF 06.1.................... set_adc_channel(NAPETI); // Prepni Zmer napeti clanku0281: MOVLW 200282: MOVWF 780283: MOVF 1F,W0284: ANDLW C70285: IORWF 78,W0286: MOVWF 1F.................... delay_us(50); // Pockej na prepnuti kanalu A/D prevodniku0287: CLRWDT0288: MOVLW 0F0289: MOVWF 77028A: DECFSZ 77,F028B: GOTO 28A028C: NOP.................... uclanku=read_adc();028D: BSF 1F.2028E: BTFSC 1F.2028F: GOTO 28E0290: MOVF 1E,W0291: MOVWF 63.................... output_low(REFPWR); // odpoj odpor pro mereni napeti0292: BSF 03.50293: BCF 06.10294: BCF 03.50295: BCF 06.1........................................ // posli telemetrii.................... sprintf(AXstring,"p=%u r=%u u=%u", perioda, razeni, uclanku); // Convert DATA to String.*01B0: CLRF 5F*0296: MOVLW 370297: MOVWF 5F0298: MOVLW 700299: MOVWF 67029A: CALL 051029B: MOVLW 3D029C: MOVWF 67029D: CALL 051029E: MOVF 61,W029F: MOVWF 6502A0: MOVLW 1B02A1: MOVWF 6602A2: CALL 06E02A3: MOVLW 2002A4: MOVWF 6702A5: CALL 05102A6: MOVLW 7202A7: MOVWF 6702A8: CALL 05102A9: MOVLW 3D02AA: MOVWF 6702AB: CALL 05102AC: MOVF 62,W02AD: MOVWF 6502AE: MOVLW 1B02AF: MOVWF 6602B0: CALL 06E02B1: MOVLW 2002B2: MOVWF 6702B3: CALL 05102B4: MOVLW 7502B5: MOVWF 6702B6: CALL 05102B7: MOVLW 3D02B8: MOVWF 6702B9: CALL 05102BA: MOVF 63,W02BB: MOVWF 6502BC: MOVLW 1B02BD: MOVWF 6602BE: CALL 06E.................... SendPacket(&AXstring[0]);02BF: MOVLW 3702C0: MOVWF 6502C1: GOTO 133........................................ delay_ms(14000); // Pockame do 14.5s02C2: MOVLW 3802C3: MOVWF 6502C4: MOVLW FA02C5: MOVWF 6602C6: CALL 00402C7: DECFSZ 65,F02C8: GOTO 2C4........................................ // rozjezd.................... for( ble=1;ble<255;ble++)02C9: MOVLW 0102CA: MOVWF 6402CB: INCFSZ 64,W02CC: GOTO 2CE02CD: GOTO 2EF.................... {.................... for(n=0;n<=razeni;n++)02CE: CLRF 6002CF: MOVF 60,W02D0: SUBWF 62,W02D1: BTFSS 03.002D2: GOTO 2ED.................... {.................... output_high(MOTOR);02D3: BSF 03.502D4: BCF 06.202D5: BCF 03.502D6: BSF 06.2.................... delay_us(ble);02D7: MOVF 64,W02D8: MOVWF 6602D9: CALL 176.................... delay_us(ble);02DA: MOVF 64,W02DB: MOVWF 6602DC: CALL 176.................... output_low(MOTOR);02DD: BSF 03.502DE: BCF 06.202DF: BCF 03.502E0: BCF 06.2.................... delay_us(255-ble);02E1: MOVF 64,W02E2: SUBLW FF02E3: MOVWF 6502E4: MOVWF 6602E5: CALL 176.................... delay_us(255-ble);02E6: MOVF 64,W02E7: SUBLW FF02E8: MOVWF 6502E9: MOVWF 6602EA: CALL 176.................... }02EB: INCF 60,F02EC: GOTO 2CF.................... }02ED: INCF 64,F02EE: GOTO 2CB........................................ // jedem co to da.................... output_high(MOTOR);02EF: BSF 03.502F0: BCF 06.202F1: BCF 03.502F2: BSF 06.2........................................ delay_ms(1300); // Nemeli bysme jet dele nez 1,3s :-)02F3: MOVLW 0A02F4: MOVWF 6502F5: MOVLW 8202F6: MOVWF 6602F7: CALL 00402F8: DECFSZ 65,F02F9: GOTO 2F5.................... output_low(MOTOR); // Zastav motor02FA: BSF 03.502FB: BCF 06.202FC: BCF 03.502FD: BCF 06.2.................... // Menic je stale zapnut a zatezuje clanky........................................ reset_cpu();02FE: CLRF 0A02FF: GOTO 000.................... }0300: SLEEPConfiguration Fuses:Word 1: 2738 NOWDT NOPUT MCLR NOBROWNOUT NOLVP NOCPD NOWRT DEBUG CCPB3 NOPROTECT INTRC_IOWord 2: 3FFC NOFCMEN NOIESO