CCS PCM C Compiler, Version 3.245, 27853 08-V-08 23:27Filename: D:\MLAB_E\projekty\Ovladani_mobilnim_telefonem\SW\final\main.lstROM used: 1505 words (18%)Largest free fragment is 2048RAM used: 56 (32%) at main() level64 (37%) worst caseStack: 4 locations*0000: MOVLW 000001: MOVWF 0A0002: GOTO 29D0003: NOP.................... #include ".\main.h".................... #include <16F876A.h>.................... //////// Standard Header file for the PIC16F876A device ////////////////.................... #device PIC16F876A.................... #list........................................ #device adc=8........................................ #FUSES NOWDT //Watch Dog Timer.................... #FUSES HS//XT //Crystal osc <= 4mhz.................... #FUSES NOPUT //No Power Up Timer.................... #FUSES NOPROTECT //Code not protected from reading.................... #FUSES NODEBUG //No Debug mode for ICD.................... #FUSES NOBROWNOUT //No brownout reset.................... #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O.................... #FUSES NOCPD //No EE protection.................... #FUSES NOWRT //Program memory not write protected........................................ #use delay(clock=18432000,RESTART_WDT)*0126: MOVLW 520127: MOVWF 040128: MOVF 00,W0129: BTFSC 03.2012A: GOTO 13B012B: MOVLW 05012C: MOVWF 78012D: MOVLW BF012E: MOVWF 77012F: CLRWDT0130: DECFSZ 77,F0131: GOTO 12F0132: DECFSZ 78,F0133: GOTO 12D0134: MOVLW F90135: MOVWF 770136: DECFSZ 77,F0137: GOTO 1360138: CLRWDT0139: DECFSZ 00,F013A: GOTO 12B013B: RETLW 00*0153: MOVLW 040154: SUBWF 58,F0155: BTFSS 03.00156: GOTO 16B0157: MOVLW 580158: MOVWF 040159: MOVLW F8015A: ANDWF 00,F015B: BCF 03.0015C: RRF 00,F015D: RRF 00,F015E: RRF 00,F015F: MOVF 00,W0160: BTFSC 03.20161: GOTO 16B0162: MOVLW 0A0163: MOVWF 770164: DECFSZ 77,F0165: GOTO 1640166: NOP0167: NOP0168: CLRWDT0169: DECFSZ 00,F016A: GOTO 162016B: BCF 0A.3016C: BCF 0A.4016D: GOTO 183 (RETURN).................... #use rs232(STREAM=MOBIL,baud=19200,force_sw,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)*01C3: BCF 20.601C4: MOVF 20,W01C5: BSF 03.501C6: MOVWF 0701C7: BCF 03.501C8: BCF 07.601C9: MOVLW 0801CA: MOVWF 7801CB: NOP01CC: NOP01CD: NOP01CE: BSF 78.701CF: GOTO 1DF01D0: BCF 78.701D1: RRF 51,F01D2: BTFSC 03.001D3: BSF 07.601D4: BTFSS 03.001D5: BCF 07.601D6: BSF 78.601D7: GOTO 1DF01D8: BCF 78.601D9: DECFSZ 78,F01DA: GOTO 1D101DB: NOP01DC: NOP01DD: NOP01DE: BSF 07.601DF: MOVLW 4901E0: MOVWF 0401E1: DECFSZ 04,F01E2: GOTO 1E101E3: NOP01E4: NOP01E5: NOP01E6: BTFSC 78.701E7: GOTO 1D001E8: BTFSC 78.601E9: GOTO 1D801EA: BCF 0A.301EB: BCF 0A.401EC: GOTO 324 (RETURN)01ED: MOVLW 0801EE: MOVWF 7701EF: BSF 20.701F0: MOVF 20,W01F1: BSF 03.501F2: MOVWF 0701F3: BCF 03.501F4: BTFSS 07.701F5: GOTO 1F801F6: BSF 03.501F7: GOTO 1F301F8: CLRF 5001F9: BSF 77.701FA: GOTO 20901FB: BCF 77.701FC: GOTO 20901FD: BCF 03.001FE: BTFSC 07.701FF: BSF 03.00200: RRF 50,F0201: BSF 77.60202: GOTO 2090203: BCF 77.60204: DECFSZ 77,F0205: GOTO 1FD0206: MOVF 50,W0207: MOVWF 780208: GOTO 2160209: MOVLW 49020A: BTFSC 77.7020B: MOVLW 14020C: MOVWF 78020D: DECFSZ 78,F020E: GOTO 20D020F: NOP0210: NOP0211: BTFSC 77.70212: GOTO 1FB0213: BTFSC 77.60214: GOTO 2030215: GOTO 1FD0216: RETLW 00*02B1: MOVLW FF02B2: BCF 03.502B3: MOVWF 20.................... #use rs232(STREAM=VRTULE,baud=600,parity=N,xmit=PIN_B2,rcv=PIN_B4,bits=8)*026F: BSF 03.50270: BCF 06.20271: BCF 03.50272: BCF 06.20273: MOVLW 080274: MOVWF 780275: NOP0276: NOP0277: NOP0278: BSF 78.70279: GOTO 289027A: BCF 78.7027B: RRF 51,F027C: BTFSC 03.0027D: BSF 06.2027E: BTFSS 03.0027F: BCF 06.20280: BSF 78.60281: GOTO 2890282: BCF 78.60283: DECFSZ 78,F0284: GOTO 27B0285: NOP0286: NOP0287: NOP0288: BSF 06.20289: MOVLW 09028A: MOVWF 77028B: CLRF 04028C: DECFSZ 04,F028D: GOTO 28C028E: DECFSZ 77,F028F: GOTO 28B0290: MOVLW F00291: MOVWF 040292: DECFSZ 04,F0293: GOTO 2920294: NOP0295: NOP0296: BTFSC 78.70297: GOTO 27A0298: BTFSC 78.60299: GOTO 282029A: BCF 0A.3029B: BCF 0A.4029C: GOTO 514 (RETURN)................................................................................ #define LCD_RS PIN_B1 // rizeni registru LCD displeje.................... #define LCD_E PIN_B0 // enable LCD displeje.................... #define LCD_DATA_LSB PIN_C0 // pripojeni LSB bitu datoveho portu LCD displeje (celkem 4 bity vzestupne za sebou).................... #define zar1 PIN_A3........................................ #bit SPEN=0x18.7.................... #bit RCIF=0x0C.5........................................ #include "mylcd.c".................... // LCD modul pro ovladani dvouradkoveho LCD modulu se standardnim Hitachi radicem.................... // (c)miho 2002.................... //.................... // Historie:.................... //.................... // 0.0 Uvodni verze se snadnou definici portu LCD displeje.................... //.................... //.................... // Funkce:.................... //.................... // lcd_init() inicializuje LCD displej a porty, nutno volat jako prvni.................... //.................... // lcd_putc(c) zapis snaku do lcd displeje, zpracovava nasledujici ridici znaky.................... // \f = \x0C - nova stranka - smazani displeje.................... // \n = \x0A - odradkovani (prechod na druhou radku).................... // \b = \x08 - backspace - posunuti kurzoru o 1 pozici zpet.................... // \r = \x0D - goto home to position 1,1.................... // \0 .. \7 - definovatelne znaky v pozicich 0 az 7 v CGRAM.................... // \20 .. \27 - alternativne zapsane znaky (oktalove) v pozicich 0 az 7 CGRAM.................... // Pozor na to, ze funkce printf konci tisk pokud narazi na \0 (konec retezce).................... //.................... // lcd_gotoxy(x,y) presune kurzor na uvedenou adresu.................... // nekontroluje parametry.................... //.................... // lcd_cursor_on zapne kurzor.................... // lcd_cursor_off vypne kurzor.................... //.................... // lcd_define_char(Index, Def) Makro, ktere definuje znaky od pozice Index obsahem definicniho.................... // retezce Def. Kazdych 8 znaku retezce Def definuje dalsi znak v CGRAM..................... // Kapacita CGRAM je celkem 8 znaku s indexem 0 az 7..................... // Na konci se provede lcd_gotoxy(1,1)..................... // Na konci teto knihovny je priklad pouziti definovanych znaku.................... //.................... // Definice portu:.................... //.................... // #DEFINE LCD_RS PIN_B2 // rizeni registru LCD displeje.................... // #DEFINE LCD_E PIN_B1 // enable LCD displeje.................... // #DEFINE LCD_DATA_LSB PIN_C2 // pripojeni LSB bitu datoveho portu LCD displeje (celkem 4 bity vzestupne za sebou).................................................................................................... // Privatni sekce, cist jen v pripade, ze neco nefunguje.................................................................................................... // Generovane defince portu pro ucely teto knihovny aby kod generoval spravne IO operace a soucasne.................... // bylo mozne jednoduse deklarovat pripojene piny LCD displeje pri pouziti teto knihovny. Problem spociva.................... // v tom, ze se musi spravne ridit smery portu a soucasne datovy port zabira jen 4 bity ze zadaneho portu.................... //.................... #DEFINE LCD_SHIFT (LCD_DATA_LSB&7) // pocet bitu posuvu dataoveho kanalu v datovem portu.................... #DEFINE LCD_PORT (LCD_DATA_LSB>>3) // adresa LCD datoveho portu.................... #DEFINE LCD_TRIS (LCD_PORT+0x80) // adresa prislusneho TRIS registru.................... #DEFINE LCD_MASK (0xF<<LCD_SHIFT) // maska platnych bitu.................... //.................... #IF LCD_SHIFT>4 // kontrola mezi.................... #ERROR LCD data port LSB bit not in range 0..4.................... #ENDIF............................................................ // Definice konstant pro LCD display.................... //.................... #define LCD_CURSOR_ON_ 0x0E // kurzor jako blikajici radka pod znakem.................... #define LCD_CURSOR_OFF_ 0x0C // zadny kurzor.................... #define LCD_LINE_2 0x40 // adresa 1. znaku 2. radky............................................................ // Definice rezimu LCD displeje.................... //.................... BYTE const LCD_INIT_STRING[4] =.................... {.................... 0x28, // intrfejs 4 bity, 2 radky, font 5x7.................... LCD_CURSOR_OFF_, // display on, kurzor off,.................... 0x01, // clear displeje.................... 0x06 // inkrement pozice kurzoru (posun kurzoru doprava).................... };............................................................ // Odesle nibble do displeje (posle data a klikne signalem e).................... //.................... void lcd_send_nibble( BYTE n ).................... {.................... *LCD_PORT = (*LCD_PORT & ~LCD_MASK) | ((n << LCD_SHIFT) & LCD_MASK); // nastav datove bity portu a ostatni zachovej*013C: MOVF 07,W013D: ANDLW F0013E: MOVWF 59013F: MOVF 58,W0140: ANDLW 0F0141: IORWF 59,W0142: MOVWF 07.................... output_bit(LCD_E,1); // vzestupna hrana0143: BSF 06.00144: BSF 03.50145: BCF 06.0.................... delay_us(100); // pockej alespon 450ns od e nebo alespon 195ns od dat0146: CLRWDT0147: MOVLW 980148: MOVWF 770149: DECFSZ 77,F014A: GOTO 149014B: NOP014C: NOP.................... output_bit(LCD_E,0); // sestupna hrana (minimalni perioda e je 1us)014D: BCF 03.5014E: BCF 06.0014F: BSF 03.50150: BCF 06.0.................... }0151: BCF 03.50152: RETLW 00............................................................ // Odesle bajt do registru LCD.................... //.................... // Pokud je Adr=0 .. instrukcni registr.................... // Pokud je Adr=1 .. datovy registr.................... //.................... void lcd_send_byte( BOOLEAN Adr, BYTE n ).................... {.................... output_bit(LCD_RS,Adr); // vyber registr*016E: MOVF 56,F016F: BTFSS 03.20170: GOTO 1730171: BCF 06.10172: GOTO 1740173: BSF 06.10174: BSF 03.50175: BCF 06.1.................... swap(n);0176: BCF 03.50177: SWAPF 57,F.................... lcd_send_nibble(n); // posli horni pulku bajtu0178: MOVF 57,W0179: MOVWF 58017A: CALL 13C.................... swap(n);017B: SWAPF 57,F.................... lcd_send_nibble(n); // posli spodni pulku bajtu017C: MOVF 57,W017D: MOVWF 58017E: CALL 13C.................... delay_us(200); // minimalni doba na provedeni prikazu017F: CLRWDT0180: MOVLW C70181: MOVWF 580182: GOTO 153.................... }0183: RETLW 00............................................................ // Provede inicializaci LCD displeje, smaze obsah a nastavi mod displeje.................... //.................... // Tato procedura se musi volat pred pouzitim ostatnich lcd_ procedur.................... //.................... void lcd_init().................... {........................................ int i; // pocitadlo cyklu........................................ delay_ms(20); // spozdeni pro provedeni startu displeje po zapnuti napajeni0184: MOVLW 140185: MOVWF 520186: CALL 126........................................ *LCD_TRIS = *LCD_TRIS & ~LCD_MASK; // nuluj odpovidajici bity tris registru datoveho portu LCD0187: MOVLW F00188: BSF 03.50189: ANDWF 07,F........................................ output_bit(LCD_RS,0); // nastav jako vystup a nastav klidovy stav018A: BCF 03.5018B: BCF 06.1018C: BSF 03.5018D: BCF 06.1.................... output_bit(LCD_E,0); // nastav jako vystup a nastav klidovy stav018E: BCF 03.5018F: BCF 06.00190: BSF 03.50191: BCF 06.0........................................ for (i=0; i<3; i++) // nastav lcd do rezimu 8 bitu sbernice0192: BCF 03.50193: CLRF 500194: MOVF 50,W0195: SUBLW 020196: BTFSS 03.00197: GOTO 1A0.................... {.................... delay_ms(2); // muze byt rozdelany prenos dat (2x 4 bity) nebo pomaly povel0198: MOVLW 020199: MOVWF 52019A: CALL 126.................... lcd_send_nibble(3); // rezim 8 bitu019B: MOVLW 03019C: MOVWF 58019D: CALL 13C.................... }019E: INCF 50,F019F: GOTO 194........................................ delay_us(40); // cas na zpracovani01A0: CLRWDT01A1: MOVLW 3C01A2: MOVWF 7701A3: DECFSZ 77,F01A4: GOTO 1A301A5: NOP01A6: NOP.................... lcd_send_nibble(2); // nastav rezim 4 bitu (plati od nasledujiciho prenosu)01A7: MOVLW 0201A8: MOVWF 5801A9: CALL 13C.................... delay_us(40); // cas na zpracovani01AA: CLRWDT01AB: MOVLW 3C01AC: MOVWF 7701AD: DECFSZ 77,F01AE: GOTO 1AD01AF: NOP01B0: NOP........................................ for (i=0;i<3;i++) // proved inicializaci (nastaveni modu, smazani apod)01B1: CLRF 5001B2: MOVF 50,W01B3: SUBLW 0201B4: BTFSS 03.001B5: GOTO 1C2.................... {.................... lcd_send_byte(0,LCD_INIT_STRING[i]);01B6: MOVF 50,W01B7: CALL 00401B8: MOVWF 5101B9: CLRF 5601BA: MOVF 51,W01BB: MOVWF 5701BC: CALL 16E.................... delay_ms(2);01BD: MOVLW 0201BE: MOVWF 5201BF: CALL 126.................... }01C0: INCF 50,F01C1: GOTO 1B2.................... }01C2: RETLW 00............................................................ // Proved presun kurzoru.................... //.................... // Pozice 1.1 je domu.................... //.................... #separate.................... void lcd_gotoxy( BYTE x, BYTE y).................... {........................................ BYTE Adr;........................................ switch(y).................... {*0217: MOVLW 010218: SUBWF 53,W0219: ADDLW FC021A: BTFSC 03.0021B: GOTO 229021C: ADDLW 04021D: GOTO 234.................... case 1: Adr=0; break;021E: CLRF 54021F: GOTO 229.................... case 2: Adr=0x40; break;0220: MOVLW 400221: MOVWF 540222: GOTO 229.................... case 3: Adr=0x14; break;0223: MOVLW 140224: MOVWF 540225: GOTO 229.................... case 4: Adr=0x54; break;0226: MOVLW 540227: MOVWF 540228: GOTO 229.................... }.................... Adr+=x-1;0229: MOVLW 01022A: SUBWF 52,W022B: ADDWF 54,F........................................ lcd_send_byte(0,0x80|Adr);022C: MOVF 54,W022D: IORLW 80022E: MOVWF 55022F: CLRF 560230: MOVF 55,W0231: MOVWF 570232: CALL 16E.................... }0233: RETLW 00............................................................ // Zapis znaku na displej, zpracovani ridicich znaku.................... //.................... #separate.................... void lcd_putc( char c).................... {........................................ switch (c).................... {*023C: MOVF 51,W023D: XORLW 0C023E: BTFSC 03.2023F: GOTO 24A0240: XORLW 060241: BTFSC 03.20242: GOTO 2520243: XORLW 070244: BTFSC 03.20245: GOTO 2580246: XORLW 050247: BTFSC 03.20248: GOTO 25D0249: GOTO 262.................... case '\f' : lcd_send_byte(0,1); // smaz displej024A: CLRF 56024B: MOVLW 01024C: MOVWF 57024D: CALL 16E.................... delay_ms(2);024E: MOVLW 02024F: MOVWF 520250: CALL 126.................... break;0251: GOTO 26E.................... case '\n' : lcd_gotoxy(1,2); break; // presun se na 1. znak 2. radky0252: MOVLW 010253: MOVWF 520254: MOVLW 020255: MOVWF 530256: CALL 2170257: GOTO 26E.................... case '\r' : lcd_gotoxy(1,1); break; // presun home0258: MOVLW 010259: MOVWF 52025A: MOVWF 53025B: CALL 217025C: GOTO 26E.................... case '\b' : lcd_send_byte(0,0x10); break; // posun kurzor o 1 zpet025D: CLRF 56025E: MOVLW 10025F: MOVWF 570260: CALL 16E0261: GOTO 26E.................... default : if (c<0x20) c&=0x7; // preklopeni definovatelnych znaku na rozsah 0 az 0x1F0262: MOVF 51,W0263: SUBLW 1F0264: BTFSS 03.00265: GOTO 2680266: MOVLW 070267: ANDWF 51,F.................... lcd_send_byte(1,c); break; // zapis znak0268: MOVLW 010269: MOVWF 56026A: MOVF 51,W026B: MOVWF 57026C: CALL 16E026D: GOTO 26E.................... }.................... }026E: RETLW 00............................................................ // Zapni kurzor.................... //.................... void lcd_cursor_on().................... {.................... lcd_send_byte(0,LCD_CURSOR_ON_);.................... }............................................................ // Vypni kurzor.................... //.................... void lcd_cursor_off().................... {.................... lcd_send_byte(0,LCD_CURSOR_OFF_);.................... }............................................................ // Definice vlastnich fontu.................... //.................... // Vlastnich definic muze byt jen 8 do pozic 0 az 7 pameti CGRAM radice lcd displeje.................... // Pro snadne definovani jsou pripraveny nasledujici definice a na konci souboru je uveden.................... // priklad pouziti definovanych znaku............................................................. // Pomocna procedura pro posilani ridicich dat do radice displeje.................... //.................... void lcd_putc2(int Data).................... {.................... lcd_send_byte(1,Data);.................... }............................................................ // Pomocne definice pro programovani obsahu CGRAM.................... //.................... #DEFINE lcd_define_start(Code) lcd_send_byte(0,0x40+(Code<<3)); delay_ms(2).................... #DEFINE lcd_define_def(String) printf(lcd_putc2,String);.................... #DEFINE lcd_define_end() lcd_send_byte(0,3); delay_ms(2)............................................................ // Vlastni vykonne makro pro definovani fontu do pozice Index CGRAM s definicnim retezcem Def.................... //.................... #DEFINE lcd_define_char(Index, Def) lcd_define_start(Index); lcd_define_def(Def); lcd_define_end();............................................................ // Pripravene definice fontu vybranych znaku.................... // V tabulce nesmi byt 00 (konec retezce v printf()), misto toho davame 80.................... //.................... #DEFINE LCD_CHAR_BAT100 "\x0E\x1F\x1F\x1F\x1F\x1F\x1F\x1F" /* symbol plne baterie */.................... #DEFINE LCD_CHAR_BAT50 "\x0E\x1F\x11\x11\x13\x17\x1F\x1F" /* symbol polovicni baterie */.................... #DEFINE LCD_CHAR_BAT0 "\x0E\x1F\x11\x11\x11\x11\x11\x1F" /* symbol vybite baterie */.................... #DEFINE LCD_CHAR_LUA "\x04\x0E\x11\x11\x1F\x11\x11\x80" /* A s carkou */.................... #DEFINE LCD_CHAR_LLA "\x01\x02\x0E\x01\x1F\x11\x0F\x80" /* a s carkou */.................... #DEFINE LCD_CHAR_HUC "\x0A\x0E\x11\x10\x10\x11\x0E\x80" /* C s hackem */.................... #DEFINE LCD_CHAR_HLC "\x0A\x04\x0E\x10\x10\x11\x0E\x80" /* c s hackem */.................... #DEFINE LCD_CHAR_HUD "\x0A\x1C\x12\x11\x11\x12\x1C\x80" /* D s hackem */.................... #DEFINE LCD_CHAR_HLD "\x05\x03\x0D\x13\x11\x11\x0F\x80" /* d s hackem */.................... #DEFINE LCD_CHAR_LUE "\x04\x1F\x10\x10\x1E\x10\x1F\x80" /* E s carkou */.................... #DEFINE LCD_CHAR_LLE "\x01\x02\x0E\x11\x1F\x10\x0E\x80" /* e s carkou */.................... #DEFINE LCD_CHAR_HUE "\x0A\x1F\x10\x1E\x10\x10\x1F\x80" /* E s hackem */.................... #DEFINE LCD_CHAR_HLE "\x0A\x04\x0E\x11\x1F\x10\x0E\x80" /* e s hackem */.................... #DEFINE LCD_CHAR_LUI "\x04\x0E\x04\x04\x04\x04\x0E\x80" /* I s carkou */.................... #DEFINE LCD_CHAR_LLI "\x02\x04\x80\x0C\x04\x04\x0E\x80" /* i s carkou */.................... #DEFINE LCD_CHAR_HUN "\x0A\x15\x11\x19\x15\x13\x11\x80" /* N s hackem */.................... #DEFINE LCD_CHAR_HLN "\x0A\x04\x16\x19\x11\x11\x11\x80" /* n s hackem */.................... #DEFINE LCD_CHAR_LUO "\x04\x0E\x11\x11\x11\x11\x0E\x80" /* O s carkou */.................... #DEFINE LCD_CHAR_LLO "\x02\x04\x0E\x11\x11\x11\x0E\x80" /* o s carkou */.................... #DEFINE LCD_CHAR_HUR "\x0A\x1E\x11\x1E\x14\x12\x11\x80" /* R s hackem */.................... #DEFINE LCD_CHAR_HLR "\x0A\x04\x16\x19\x10\x10\x10\x80" /* r s hackem */.................... #DEFINE LCD_CHAR_HUS "\x0A\x0F\x10\x0E\x01\x01\x1E\x80" /* S s hackem */.................... #DEFINE LCD_CHAR_HLS "\x0A\x04\x0E\x10\x0E\x01\x1E\x80" /* s s hackem */.................... #DEFINE LCD_CHAR_HUT "\x0A\x1F\x04\x04\x04\x04\x04\x80" /* T s hackem */.................... #DEFINE LCD_CHAR_HLT "\x0A\x0C\x1C\x08\x08\x09\x06\x80" /* t s hackem */.................... #DEFINE LCD_CHAR_LUU "\x02\x15\x11\x11\x11\x11\x0E\x80" /* U s carkou */.................... #DEFINE LCD_CHAR_LLU "\x02\x04\x11\x11\x11\x13\x0D\x80" /* u s carkou */.................... #DEFINE LCD_CHAR_CUU "\x06\x17\x11\x11\x11\x11\x0E\x80" /* U s krouzkem */.................... #DEFINE LCD_CHAR_CLU "\x06\x06\x11\x11\x11\x11\x0E\x80" /* u s krouzkem */.................... #DEFINE LCD_CHAR_LUY "\x02\x15\x11\x0A\x04\x04\x04\x80" /* Y s carkou */.................... #DEFINE LCD_CHAR_LLY "\x02\x04\x11\x11\x0F\x01\x0E\x80" /* y s carkou */.................... #DEFINE LCD_CHAR_HUZ "\x0A\x1F\x01\x02\x04\x08\x1F\x80" /* Z s hackem */.................... #DEFINE LCD_CHAR_HLZ "\x0A\x04\x1F\x02\x04\x08\x1F\x80" /* z s hackem */............................................................ // Priklad pouziti definovanych znaku.................... //.................... //.................... //void lcd_sample().................... //{.................... // lcd_define_char(0,LCD_CHAR_BAT50); // Priklad definice znaku baterie do pozice 0.................... // lcd_define_char(2,LCD_CHAR_HLE LCD_CHAR_LUI); // Priklad definice znaku e s hackem a I s carkou od pozice 2.................... // // vsimnete si, ze neni carka mezi retezci s definici (oba retezce definuji.................... // // jediny definicni retezec).................... // printf(lcd_putc,"\fZnaky:\20\22\23"); // priklad vypisu znaku z pozice 0, 2 a 3.................... // delay_ms(1000);.................... // lcd_define_char(0,LCD_CHAR_BAT0); // Predefinovani tvaru znaku v pozici 0.................... // delay_ms(1000);.................... //}............................................................ void main().................... {*029D: CLRF 04029E: MOVLW 1F029F: ANDWF 03,F02A0: BCF 20.602A1: MOVF 20,W02A2: BSF 03.502A3: MOVWF 0702A4: BCF 03.502A5: BSF 07.602A6: BSF 03.502A7: BCF 06.202A8: BCF 03.502A9: BSF 06.202AA: BSF 03.502AB: BSF 1F.002AC: BSF 1F.102AD: BSF 1F.202AE: BCF 1F.302AF: MOVLW 0702B0: MOVWF 1C.................... char odp[40];.................... int pom,pom2,pom3,odkl,odkl2,maskovadlo,status;........................................ setup_adc_ports(NO_ANALOGS);*02B4: BSF 03.502B5: BSF 1F.002B6: BSF 1F.102B7: BSF 1F.202B8: BCF 1F.3.................... setup_adc(ADC_OFF);02B9: BCF 03.502BA: BCF 1F.0.................... setup_spi(SPI_SS_DISABLED);02BB: BCF 14.502BC: BCF 20.502BD: MOVF 20,W02BE: BSF 03.502BF: MOVWF 0702C0: BCF 03.502C1: BSF 20.402C2: MOVF 20,W02C3: BSF 03.502C4: MOVWF 0702C5: BCF 03.502C6: BCF 20.302C7: MOVF 20,W02C8: BSF 03.502C9: MOVWF 0702CA: MOVLW 0102CB: BCF 03.502CC: MOVWF 1402CD: MOVLW 0002CE: BSF 03.502CF: MOVWF 14.................... setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);02D0: MOVF 01,W02D1: ANDLW C702D2: IORLW 0802D3: MOVWF 01.................... setup_timer_1(T1_DISABLED);02D4: BCF 03.502D5: CLRF 10.................... setup_timer_2(T2_DISABLED,0,1);02D6: MOVLW 0002D7: MOVWF 7802D8: MOVWF 1202D9: MOVLW 0002DA: BSF 03.502DB: MOVWF 12.................... setup_comparator(NC_NC_NC_NC);02DC: MOVLW 0702DD: MOVWF 1C02DE: MOVF 05,W02DF: CLRWDT02E0: MOVLW 0E02E1: MOVWF 7702E2: DECFSZ 77,F02E3: GOTO 2E202E4: NOP02E5: NOP02E6: MOVF 1C,W02E7: BCF 03.502E8: BCF 0D.6.................... setup_vref(FALSE);02E9: BSF 03.502EA: CLRF 1D.................... setup_wdt(WDT_2304MS);02EB: MOVLW 0F02EC: MOVWF 7702ED: MOVLW 0702EE: BCF 03.502EF: CLRF 0102F0: MOVLW 8102F1: MOVWF 0402F2: MOVF 00,W02F3: ANDLW F002F4: IORLW 0702F5: MOVWF 0002F6: CLRWDT02F7: MOVF 00,W02F8: ANDLW F702F9: BTFSC 77.302FA: ANDLW F002FB: IORWF 77,W02FC: MOVWF 00.................... lcd_init();02FD: CALL 184........................................ while(TRUE).................... {.................... restart_wdt();02FE: CLRWDT........................................ output_low(PIN_A4) ;02FF: BSF 03.50300: BCF 05.40301: BCF 03.50302: BCF 05.4.................... delay_ms(150);0303: MOVLW 960304: MOVWF 520305: CALL 126.................... output_high(PIN_A4);0306: BSF 03.50307: BCF 05.40308: BCF 03.50309: BSF 05.4.................... delay_ms(150);030A: MOVLW 96030B: MOVWF 52030C: CALL 126.................... output_low(PIN_A4) ;030D: BSF 03.5030E: BCF 05.4030F: BCF 03.50310: BCF 05.4.................... delay_ms(150);0311: MOVLW 960312: MOVWF 520313: CALL 126.................... output_high(PIN_A4);0314: BSF 03.50315: BCF 05.40316: BCF 03.50317: BSF 05.4.................... delay_ms(150);0318: MOVLW 960319: MOVWF 52031A: CALL 126........................................ /*.................... while(kbhit(MOBIL)) {fgetc(MOBIL); delay_ms(100);} // Preskoc zbytek radku.................... fprintf(MOBIL,"AT\r"); //vycti prijate SMS.................... while(fgetc(MOBIL)!=0x0A); // predkoc prvni radek odpovedi........................................ delay_ms(500);.................... for(pom=0;pom<80;pom++) odp[pom]=0;.................... fprintf(MOBIL,"AT\r"); //vycti prijate SMS.................... odp[0]=fgetc(MOBIL);.................... odp[1]=fgetc(MOBIL);.................... odp[2]=fgetc(MOBIL);........................................ fprintf(VRTULE,"*%s*\n\r",odp);.................... fgetc(MOBIL);.................... output_low(PIN_A4);.................... fgetc(MOBIL);.................... fgetc(MOBIL);........................................ delay_ms(1000);.................... continue;.................... */.................... fprintf(MOBIL,"AT+CMGL=1\r"); //vycti prijate SMS (0=nove;1=vsechny)031B: CLRF 50031C: MOVF 50,W031D: CALL 00C031E: IORLW 00031F: BTFSC 03.20320: GOTO 3250321: INCF 50,F0322: MOVWF 510323: GOTO 1C30324: GOTO 31C.................... //SPEN=1;............................................................ while(fgetc(MOBIL)!=0x0A); // predkoc prvni radek odpovedi0325: CALL 1ED0326: MOVF 78,W0327: SUBLW 0A0328: BTFSS 03.20329: GOTO 325........................................ odp[0]=fgetc(MOBIL); // Nacti prvni dva znaky druheho radku odpovedi032A: CALL 1ED032B: MOVF 78,W032C: MOVWF 21.................... odp[1]=fgetc(MOBIL);032D: CALL 1ED032E: MOVF 78,W032F: MOVWF 22.................... while(fgetc(MOBIL)!=0x0A); // Preskoc zbytek radku0330: CALL 1ED0331: MOVF 78,W0332: SUBLW 0A0333: BTFSS 03.20334: GOTO 330........................................ // while(kbhit(MOBIL)) {fgetc(MOBIL); delay_ms(100);} // Preskoc zbytek radku.................... output_high(PIN_A4);0335: BSF 03.50336: BCF 05.40337: BCF 03.50338: BSF 05.4............................................................ if(odp[0] == 79 && odp[1] ==75) // Je odpoved "OK"?0339: MOVF 21,W033A: SUBLW 4F033B: BTFSS 03.2033C: GOTO 384033D: MOVF 22,W033E: SUBLW 4B033F: BTFSS 03.20340: GOTO 384.................... {.................... lcd_gotoxy(1,1);0341: MOVLW 010342: MOVWF 520343: MOVWF 530344: CALL 217.................... printf(lcd_putc,"\fNeni nova SMS zprava");0345: CLRF 500346: MOVF 50,W0347: CALL 01B0348: IORLW 000349: BTFSC 03.2034A: GOTO 34F034B: INCF 50,F034C: MOVWF 51034D: CALL 23C034E: GOTO 346.................... lcd_gotoxy(1,2);034F: MOVLW 010350: MOVWF 520351: MOVLW 020352: MOVWF 530353: CALL 217.................... printf(lcd_putc,"");0354: CLRF 500355: MOVF 50,W0356: CALL 0350357: IORLW 000358: BTFSC 03.20359: GOTO 35E035A: INCF 50,F035B: MOVWF 51035C: CALL 23C035D: GOTO 355.................... lcd_gotoxy(1,3);035E: MOVLW 01035F: MOVWF 520360: MOVLW 030361: MOVWF 530362: CALL 217.................... printf(lcd_putc,"Zaslete SMS na cislo");0363: CLRF 500364: MOVF 50,W0365: CALL 03A0366: IORLW 000367: BTFSC 03.20368: GOTO 36D0369: INCF 50,F036A: MOVWF 51036B: CALL 23C036C: GOTO 364.................... lcd_gotoxy(1,4);036D: MOVLW 01036E: MOVWF 52036F: MOVLW 040370: MOVWF 530371: CALL 217.................... printf(lcd_putc," 736 655 250");0372: CLRF 500373: MOVF 50,W0374: CALL 0530375: IORLW 000376: BTFSC 03.20377: GOTO 37C0378: INCF 50,F0379: MOVWF 51037A: CALL 23C037B: GOTO 373.................... delay_ms(5000);037C: MOVLW 14037D: MOVWF 50037E: MOVLW FA037F: MOVWF 520380: CALL 1260381: DECFSZ 50,F0382: GOTO 37E.................... }.................... else0383: GOTO 5DF.................... {.................... //!!!KAKL for(pom=0;pom<55;pom++) //preskoc nedulezite informace.................... for(pom=0;pom<54;pom++) //preskoc nedulezite informace0384: CLRF 490385: MOVF 49,W0386: SUBLW 350387: BTFSS 03.00388: GOTO 38C.................... {.................... fgetc(MOBIL);0389: CALL 1ED.................... }038A: INCF 49,F038B: GOTO 385........................................ //gets(odp); //uloz zakodovany text SMS........................................ odp[0]=fgetc(MOBIL);038C: CALL 1ED038D: MOVF 78,W038E: MOVWF 21.................... odp[1]=fgetc(MOBIL);038F: CALL 1ED0390: MOVF 78,W0391: MOVWF 22.................... odp[2]=fgetc(MOBIL);0392: CALL 1ED0393: MOVF 78,W0394: MOVWF 23.................... odp[3]=fgetc(MOBIL);0395: CALL 1ED0396: MOVF 78,W0397: MOVWF 24.................... odp[4]=fgetc(MOBIL);0398: CALL 1ED0399: MOVF 78,W039A: MOVWF 25.................... odp[5]=fgetc(MOBIL);039B: CALL 1ED039C: MOVF 78,W039D: MOVWF 26.................... odp[6]=fgetc(MOBIL);039E: CALL 1ED039F: MOVF 78,W03A0: MOVWF 27.................... odp[7]=fgetc(MOBIL);03A1: CALL 1ED03A2: MOVF 78,W03A3: MOVWF 28........................................ /*lcd_gotoxy(1,1);.................... printf(lcd_putc,"\f%s\n",odp);*/........................................ if(odp[0]==0) odp[1]='0'; // Prevod z ASCII do BIN03A4: MOVF 21,F03A5: BTFSS 03.203A6: GOTO 3A903A7: MOVLW 3003A8: MOVWF 22.................... odp[0]=odp[0] - '0';03A9: MOVLW 3003AA: SUBWF 21,F.................... odp[1]=odp[1] - '0';03AB: SUBWF 22,F.................... if(odp[0]>9) odp[0]=odp[0]-7;03AC: MOVF 21,W03AD: SUBLW 0903AE: BTFSC 03.003AF: GOTO 3B203B0: MOVLW 0703B1: SUBWF 21,F.................... if(odp[1]>9) odp[1]=odp[1]-7;03B2: MOVF 22,W03B3: SUBLW 0903B4: BTFSC 03.003B5: GOTO 3B803B6: MOVLW 0703B7: SUBWF 22,F.................... odp[0]=odp[0] << 4;03B8: SWAPF 21,F03B9: MOVLW F003BA: ANDWF 21,F.................... odp[0] |= odp[1];03BB: MOVF 22,W03BC: IORWF 21,F........................................ if(odp[2]==0) odp[3]='0';03BD: MOVF 23,F03BE: BTFSS 03.203BF: GOTO 3C203C0: MOVLW 3003C1: MOVWF 24.................... odp[2]=odp[2] - '0';03C2: MOVLW 3003C3: SUBWF 23,F.................... odp[3]=odp[3] - '0';03C4: SUBWF 24,F.................... if(odp[2]>9) odp[2]=odp[2]-7;03C5: MOVF 23,W03C6: SUBLW 0903C7: BTFSC 03.003C8: GOTO 3CB03C9: MOVLW 0703CA: SUBWF 23,F.................... if(odp[3]>9) odp[3]=odp[3]-7;03CB: MOVF 24,W03CC: SUBLW 0903CD: BTFSC 03.003CE: GOTO 3D103CF: MOVLW 0703D0: SUBWF 24,F.................... odp[2]=odp[2] << 4;03D1: SWAPF 23,F03D2: MOVLW F003D3: ANDWF 23,F.................... odp[2] |= odp[3];03D4: MOVF 24,W03D5: IORWF 23,F........................................ if(odp[4]==0) odp[5]='0';03D6: MOVF 25,F03D7: BTFSS 03.203D8: GOTO 3DB03D9: MOVLW 3003DA: MOVWF 26.................... odp[4]=odp[4] - '0';03DB: MOVLW 3003DC: SUBWF 25,F.................... odp[5]=odp[5] - '0';03DD: SUBWF 26,F.................... if(odp[4]>9) odp[4]=odp[4]-7;03DE: MOVF 25,W03DF: SUBLW 0903E0: BTFSC 03.003E1: GOTO 3E403E2: MOVLW 0703E3: SUBWF 25,F.................... if(odp[5]>9) odp[5]=odp[5]-7;03E4: MOVF 26,W03E5: SUBLW 0903E6: BTFSC 03.003E7: GOTO 3EA03E8: MOVLW 0703E9: SUBWF 26,F.................... odp[4]=odp[4] << 4;03EA: SWAPF 25,F03EB: MOVLW F003EC: ANDWF 25,F.................... odp[4] |= odp[5];03ED: MOVF 26,W03EE: IORWF 25,F........................................ if(odp[6]==0) odp[7]='0';03EF: MOVF 27,F03F0: BTFSS 03.203F1: GOTO 3F403F2: MOVLW 3003F3: MOVWF 28.................... odp[6]=odp[6] - '0';03F4: MOVLW 3003F5: SUBWF 27,F.................... odp[7]=odp[7] - '0';03F6: SUBWF 28,F.................... if(odp[6]>9) odp[6]=odp[6]-7;03F7: MOVF 27,W03F8: SUBLW 0903F9: BTFSC 03.003FA: GOTO 3FD03FB: MOVLW 0703FC: SUBWF 27,F.................... if(odp[7]>9) odp[7]=odp[7]-7;03FD: MOVF 28,W03FE: SUBLW 0903FF: BTFSC 03.00400: GOTO 4030401: MOVLW 070402: SUBWF 28,F.................... odp[6]=odp[6] << 4;0403: SWAPF 27,F0404: MOVLW F00405: ANDWF 27,F.................... odp[6] |= odp[7];0406: MOVF 28,W0407: IORWF 27,F........................................ odp[1]=odp[2];0408: MOVF 23,W0409: MOVWF 22.................... odp[2]=odp[4];040A: MOVF 25,W040B: MOVWF 23.................... odp[3]=odp[6];040C: MOVF 27,W040D: MOVWF 24.................... odp[4]=odp[5]=odp[6]=0;040E: CLRF 27040F: MOVF 27,W0410: MOVWF 260411: MOVWF 25........................................ /*lcd_gotoxy(1,2);.................... printf(lcd_putc,"%u %u %u %u",odp[0],odp[1],odp[2]odp[3]); */........................................ pom3=0;0412: CLRF 4B.................... for (pom = 0; pom < 4;pom++)0413: CLRF 490414: MOVF 49,W0415: SUBLW 030416: BTFSS 03.00417: GOTO 46B.................... {.................... maskovadlo = maskovadlo >> 1; //rotace promene urcene pro maskovani0418: BCF 03.00419: RRF 4E,F.................... maskovadlo = maskovadlo | 0x80;041A: BSF 4E.7.................... odkl = odp[pom] & maskovadlo; //odlozeni "prenosu" do odkl pomoci maskovadla041B: MOVLW 21041C: ADDWF 49,W041D: MOVWF 04041E: MOVF 00,W041F: ANDWF 4E,W0420: MOVWF 4C.................... odp[pom] = odp[pom] << pom3; //rotace znaku0421: MOVLW 210422: ADDWF 49,W0423: MOVWF 500424: MOVLW 210425: ADDWF 49,W0426: MOVWF 040427: MOVF 00,W0428: MOVWF 770429: MOVF 4B,W042A: MOVWF 78042B: BTFSC 03.2042C: GOTO 431042D: BCF 03.0042E: RLF 77,F042F: DECFSZ 78,F0430: GOTO 42D0431: MOVF 50,W0432: MOVWF 040433: MOVF 77,W0434: MOVWF 00.................... for (pom2 = 0; pom2 < (8-pom3);pom2++) //rotace odkl20435: CLRF 4A0436: MOVF 4B,W0437: SUBLW 080438: SUBWF 4A,W0439: BTFSC 03.0043A: GOTO 440.................... {.................... odkl2 = odkl2 >> 1;043B: BCF 03.0043C: RRF 4D,F.................... odkl2 = odkl2 & 127;043D: BCF 4D.7.................... }043E: INCF 4A,F043F: GOTO 436.................... odp[pom] = odp[pom] | odkl2; //pridani odkl2 ke znaku0440: MOVLW 210441: ADDWF 49,W0442: MOVWF 500443: MOVLW 210444: ADDWF 49,W0445: MOVWF 040446: MOVF 00,W0447: IORWF 4D,W0448: MOVWF 520449: MOVF 50,W044A: MOVWF 04044B: MOVF 52,W044C: MOVWF 00.................... odp[pom] = odp[pom] & 127; //smazani nejvysiho bitu044D: MOVLW 21044E: ADDWF 49,W044F: MOVWF 500450: MOVLW 210451: ADDWF 49,W0452: MOVWF 040453: MOVF 00,W0454: ANDLW 7F0455: MOVWF 520456: MOVF 50,W0457: MOVWF 040458: MOVF 52,W0459: MOVWF 00.................... odkl2 = odkl; //ulozeni odlk na dalsi pruchod045A: MOVF 4C,W045B: MOVWF 4D.................... pom3++; //inkrementace citace rotace045C: INCF 4B,F.................... if (pom3 == 8) //kazdy 8my znak045D: MOVF 4B,W045E: SUBLW 08045F: BTFSS 03.20460: GOTO 469.................... {.................... pom3 = 0; //smaz citac0461: CLRF 4B.................... odp[pom+1] = odkl2; //uloz 8my znak vznikly z "prenosu"0462: MOVLW 010463: ADDWF 49,W0464: ADDLW 210465: MOVWF 040466: MOVF 4D,W0467: MOVWF 00.................... maskovadlo = 0; //smaz maskovadlo0468: CLRF 4E.................... }.................... }0469: INCF 49,F046A: GOTO 414.................... odp[pom]='\0';046B: MOVLW 21046C: ADDWF 49,W046D: MOVWF 04046E: CLRF 00........................................ /*lcd_gotoxy(1,3);.................... printf(lcd_putc,"%u %u %u %u",odp[0],odp[1],odp[2],odp[3]); */.................... lcd_init();046F: CALL 184.................... lcd_gotoxy(1,1);0470: MOVLW 010471: MOVWF 520472: MOVWF 530473: CALL 217.................... printf(lcd_putc,"\fPrijata SMS s textem");0474: CLRF 500475: MOVF 50,W0476: CALL 0670477: IORLW 000478: BTFSC 03.20479: GOTO 47E047A: INCF 50,F047B: MOVWF 51047C: CALL 23C047D: GOTO 475.................... lcd_gotoxy(9,3);047E: MOVLW 09047F: MOVWF 520480: MOVLW 030481: MOVWF 530482: CALL 217.................... printf(lcd_putc,"%s",odp);0483: MOVLW 210484: MOVWF 040485: MOVLW 000486: IORWF 00,W0487: BTFSC 03.20488: GOTO 4920489: MOVF 04,W048A: MOVWF 50048B: MOVF 00,W048C: MOVWF 51048D: CALL 23C048E: MOVF 50,W048F: MOVWF 040490: INCF 04,F0491: GOTO 485.................... output_low(PIN_A4) ;0492: BSF 03.50493: BCF 05.40494: BCF 03.50495: BCF 05.4.................... delay_ms(1000);0496: MOVLW 040497: MOVWF 500498: MOVLW FA0499: MOVWF 52049A: CALL 126049B: DECFSZ 50,F049C: GOTO 498.................... output_high(PIN_A4);049D: BSF 03.5049E: BCF 05.4049F: BCF 03.504A0: BSF 05.4........................................ //!!! fprintf(MOBIL,"AT+CMGD=1\r"); //smaz prijatou SMSku........................................ if (odp[0] > 64 && odp[0] < 91 )04A1: MOVF 21,W04A2: SUBLW 4004A3: BTFSC 03.004A4: GOTO 4AB04A5: MOVF 21,W04A6: SUBLW 5A04A7: BTFSS 03.004A8: GOTO 4AB.................... {.................... odp[0] += 32;04A9: MOVLW 2004AA: ADDWF 21,F.................... }........................................ if (odp[1] > 64 && odp[1] < 91 )04AB: MOVF 22,W04AC: SUBLW 4004AD: BTFSC 03.004AE: GOTO 4B504AF: MOVF 22,W04B0: SUBLW 5A04B1: BTFSS 03.004B2: GOTO 4B5.................... {.................... odp[1] += 32;04B3: MOVLW 2004B4: ADDWF 22,F.................... }........................................ if (odp[2] > 64 && odp[2] < 91 )04B5: MOVF 23,W04B6: SUBLW 4004B7: BTFSC 03.004B8: GOTO 4BF04B9: MOVF 23,W04BA: SUBLW 5A04BB: BTFSS 03.004BC: GOTO 4BF.................... {.................... odp[2] += 32;04BD: MOVLW 2004BE: ADDWF 23,F.................... }........................................ if (odp[3] > 64 && odp[3] < 91 )04BF: MOVF 24,W04C0: SUBLW 4004C1: BTFSC 03.004C2: GOTO 4C904C3: MOVF 24,W04C4: SUBLW 5A04C5: BTFSS 03.004C6: GOTO 4C9.................... {.................... odp[3] += 32;04C7: MOVLW 2004C8: ADDWF 24,F.................... }........................................ lcd_gotoxy(1,1);04C9: MOVLW 0104CA: MOVWF 5204CB: MOVWF 5304CC: CALL 217.................... printf(lcd_putc,"\f Odstraneni velkych");04CD: CLRF 5004CE: MOVF 50,W04CF: CALL 08104D0: IORLW 0004D1: BTFSC 03.204D2: GOTO 4D704D3: INCF 50,F04D4: MOVWF 5104D5: CALL 23C04D6: GOTO 4CE.................... lcd_gotoxy(1,2);04D7: MOVLW 0104D8: MOVWF 5204D9: MOVLW 0204DA: MOVWF 5304DB: CALL 217.................... printf(lcd_putc," pismen");04DC: CLRF 5004DD: MOVF 50,W04DE: CALL 09A04DF: IORLW 0004E0: BTFSC 03.204E1: GOTO 4E604E2: INCF 50,F04E3: MOVWF 5104E4: CALL 23C04E5: GOTO 4DD.................... lcd_gotoxy(9,4);04E6: MOVLW 0904E7: MOVWF 5204E8: MOVLW 0404E9: MOVWF 5304EA: CALL 217.................... printf(lcd_putc,"%s",odp);04EB: MOVLW 2104EC: MOVWF 0404ED: MOVLW 0004EE: IORWF 00,W04EF: BTFSC 03.204F0: GOTO 4FA04F1: MOVF 04,W04F2: MOVWF 5004F3: MOVF 00,W04F4: MOVWF 5104F5: CALL 23C04F6: MOVF 50,W04F7: MOVWF 0404F8: INCF 04,F04F9: GOTO 4ED.................... output_low(PIN_A4) ;04FA: BSF 03.504FB: BCF 05.404FC: BCF 03.504FD: BCF 05.4.................... delay_ms(1000);04FE: MOVLW 0404FF: MOVWF 500500: MOVLW FA0501: MOVWF 520502: CALL 1260503: DECFSZ 50,F0504: GOTO 500.................... output_high(PIN_A4);0505: BSF 03.50506: BCF 05.40507: BCF 03.50508: BSF 05.4............................................................ //!!!KAKL.................... fprintf(VRTULE,"%s",odp);0509: MOVLW 21050A: MOVWF 04050B: MOVLW 00050C: IORWF 00,W050D: BTFSC 03.2050E: GOTO 518050F: MOVF 04,W0510: MOVWF 500511: MOVF 00,W0512: MOVWF 510513: GOTO 26F0514: MOVF 50,W0515: MOVWF 040516: INCF 04,F0517: GOTO 50B............................................................ if (odp[0] == 122 && odp[1] == 97 && odp[2] == 112 && odp[3] == 49) //odp=="zap1"0518: MOVF 21,W0519: SUBLW 7A051A: BTFSS 03.2051B: GOTO 52A051C: MOVF 22,W051D: SUBLW 61051E: BTFSS 03.2051F: GOTO 52A0520: MOVF 23,W0521: SUBLW 700522: BTFSS 03.20523: GOTO 52A0524: MOVF 24,W0525: SUBLW 310526: BTFSS 03.20527: GOTO 52A.................... {.................... status=1;0528: MOVLW 010529: MOVWF 4F.................... }........................................ if (odp[0] == 118 && odp[1] == 121 && odp[2] == 112 && odp[3]== 49) //odp=="vyp1"052A: MOVF 21,W052B: SUBLW 76052C: BTFSS 03.2052D: GOTO 53C052E: MOVF 22,W052F: SUBLW 790530: BTFSS 03.20531: GOTO 53C0532: MOVF 23,W0533: SUBLW 700534: BTFSS 03.20535: GOTO 53C0536: MOVF 24,W0537: SUBLW 310538: BTFSS 03.20539: GOTO 53C.................... {.................... status=2;053A: MOVLW 02053B: MOVWF 4F.................... }........................................ if (odp[0] == 97 && odp[1] == 104 && odp[2] == 111 && odp[3]== 106) //odp=="ahoj"053C: MOVF 21,W053D: SUBLW 61053E: BTFSS 03.2053F: GOTO 54E0540: MOVF 22,W0541: SUBLW 680542: BTFSS 03.20543: GOTO 54E0544: MOVF 23,W0545: SUBLW 6F0546: BTFSS 03.20547: GOTO 54E0548: MOVF 24,W0549: SUBLW 6A054A: BTFSS 03.2054B: GOTO 54E.................... {.................... status=3;054C: MOVLW 03054D: MOVWF 4F.................... }........................................ switch (status).................... {054E: MOVF 4F,W054F: XORLW 010550: BTFSC 03.20551: GOTO 5590552: XORLW 030553: BTFSC 03.20554: GOTO 5770555: XORLW 010556: BTFSC 03.20557: GOTO 5950558: GOTO 5AF........................................ case 1: output_low(zar1);0559: BSF 03.5055A: BCF 05.3055B: BCF 03.5055C: BCF 05.3.................... printf(lcd_putc,"\f");055D: CLRF 50055E: MOVF 50,W055F: CALL 0AC0560: IORLW 000561: BTFSC 03.20562: GOTO 5670563: INCF 50,F0564: MOVWF 510565: CALL 23C0566: GOTO 55E.................... lcd_gotoxy(1,2);0567: MOVLW 010568: MOVWF 520569: MOVLW 02056A: MOVWF 53056B: CALL 217.................... printf(lcd_putc," Zapnuto zarizeni 1");056C: CLRF 50056D: MOVF 50,W056E: CALL 0B2056F: IORLW 000570: BTFSC 03.20571: GOTO 5760572: INCF 50,F0573: MOVWF 510574: CALL 23C0575: GOTO 56D.................... break;0576: GOTO 5D8........................................ case 2: output_high(zar1);0577: BSF 03.50578: BCF 05.30579: BCF 03.5057A: BSF 05.3.................... printf(lcd_putc,"\f");057B: CLRF 50057C: MOVF 50,W057D: CALL 0AC057E: IORLW 00057F: BTFSC 03.20580: GOTO 5850581: INCF 50,F0582: MOVWF 510583: CALL 23C0584: GOTO 57C.................... lcd_gotoxy(1,2);0585: MOVLW 010586: MOVWF 520587: MOVLW 020588: MOVWF 530589: CALL 217.................... printf(lcd_putc," Vypnuto zarizeni 1");058A: CLRF 50058B: MOVF 50,W058C: CALL 0CA058D: IORLW 00058E: BTFSC 03.2058F: GOTO 5940590: INCF 50,F0591: MOVWF 510592: CALL 23C0593: GOTO 58B.................... break;0594: GOTO 5D8........................................ case 3: printf(lcd_putc,"\f");0595: CLRF 500596: MOVF 50,W0597: CALL 0AC0598: IORLW 000599: BTFSC 03.2059A: GOTO 59F059B: INCF 50,F059C: MOVWF 51059D: CALL 23C059E: GOTO 596.................... lcd_gotoxy(1,2);059F: MOVLW 0105A0: MOVWF 5205A1: MOVLW 0205A2: MOVWF 5305A3: CALL 217.................... printf(lcd_putc," Preji hezky den!");05A4: CLRF 5005A5: MOVF 50,W05A6: CALL 0E205A7: IORLW 0005A8: BTFSC 03.205A9: GOTO 5AE05AA: INCF 50,F05AB: MOVWF 5105AC: CALL 23C05AD: GOTO 5A5.................... break;05AE: GOTO 5D8........................................ default: printf(lcd_putc,"\f");05AF: CLRF 5005B0: MOVF 50,W05B1: CALL 0AC05B2: IORLW 0005B3: BTFSC 03.205B4: GOTO 5B905B5: INCF 50,F05B6: MOVWF 5105B7: CALL 23C05B8: GOTO 5B0.................... lcd_gotoxy(1,2);05B9: MOVLW 0105BA: MOVWF 5205BB: MOVLW 0205BC: MOVWF 5305BD: CALL 217.................... printf(lcd_putc," Prikaz nebyl");05BE: CLRF 5005BF: MOVF 50,W05C0: CALL 0F905C1: IORLW 0005C2: BTFSC 03.205C3: GOTO 5C805C4: INCF 50,F05C5: MOVWF 5105C6: CALL 23C05C7: GOTO 5BF.................... lcd_gotoxy(1,3);05C8: MOVLW 0105C9: MOVWF 5205CA: MOVLW 0305CB: MOVWF 5305CC: CALL 217.................... printf(lcd_putc," rozeznan");05CD: CLRF 5005CE: MOVF 50,W05CF: CALL 11305D0: IORLW 0005D1: BTFSC 03.205D2: GOTO 5D705D3: INCF 50,F05D4: MOVWF 5105D5: CALL 23C05D6: GOTO 5CE.................... break;05D7: GOTO 5D8.................... }.................... delay_ms(1000);05D8: MOVLW 0405D9: MOVWF 5005DA: MOVLW FA05DB: MOVWF 5205DC: CALL 12605DD: DECFSZ 50,F05DE: GOTO 5DA.................... }........................................ }05DF: GOTO 2FE.................... }05E0: SLEEPConfiguration Fuses:Word 1: 3F3A HS NOWDT NOPUT NODEBUG NOPROTECT NOBROWNOUT NOLVP NOCPD NOWRT