CCS PCM C Compiler, Version 4.058s, 42064               07-V-08 16:06

               Filename: main.lst

               ROM used: 1821 words (22%)
                         Largest free fragment is 2048
               RAM used: 114 (31%) at main() level
                         291 (79%) worst case
               Stack:    4 locations

*
0000:  MOVLW  00
0001:  MOVWF  0A
0002:  GOTO   2F1
0003:  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) 
*
0119:  MOVLW  9A
011A:  MOVWF  04
011B:  BSF    03.7
011C:  MOVF   00,W
011D:  BTFSC  03.2
011E:  GOTO   12F
011F:  MOVLW  05
0120:  MOVWF  78
0121:  MOVLW  BF
0122:  MOVWF  77
0123:  CLRWDT
0124:  DECFSZ 77,F
0125:  GOTO   123
0126:  DECFSZ 78,F
0127:  GOTO   121
0128:  MOVLW  F9
0129:  MOVWF  77
012A:  DECFSZ 77,F
012B:  GOTO   12A
012C:  CLRWDT
012D:  DECFSZ 00,F
012E:  GOTO   11F
012F:  RETLW  00
*
016E:  MOVLW  04
016F:  SUBWF  20,F
0170:  BTFSS  03.0
0171:  GOTO   186
0172:  MOVLW  A0
0173:  MOVWF  04
0174:  BSF    03.7
0175:  MOVLW  F8
0176:  ANDWF  00,F
0177:  BCF    03.0
0178:  RRF    00,F
0179:  RRF    00,F
017A:  RRF    00,F
017B:  MOVF   00,W
017C:  BTFSC  03.2
017D:  GOTO   186
017E:  MOVLW  0A
017F:  MOVWF  77
0180:  DECFSZ 77,F
0181:  GOTO   180
0182:  GOTO   183
0183:  CLRWDT
0184:  DECFSZ 00,F
0185:  GOTO   17E
.................... #use rs232(STREAM=MOBIL,baud=19200,force_sw,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) 
*
01E4:  BCF    20.6
01E5:  MOVF   20,W
01E6:  BSF    03.5
01E7:  MOVWF  07
01E8:  BCF    03.5
01E9:  BCF    07.6
01EA:  MOVLW  08
01EB:  MOVWF  78
01EC:  GOTO   1ED
01ED:  NOP
01EE:  BSF    78.7
01EF:  GOTO   202
01F0:  BCF    78.7
01F1:  BSF    03.5
01F2:  BSF    03.6
01F3:  RRF    18,F
01F4:  BCF    03.5
01F5:  BCF    03.6
01F6:  BTFSC  03.0
01F7:  BSF    07.6
01F8:  BTFSS  03.0
01F9:  BCF    07.6
01FA:  BSF    78.6
01FB:  GOTO   202
01FC:  BCF    78.6
01FD:  DECFSZ 78,F
01FE:  GOTO   1F1
01FF:  GOTO   200
0200:  NOP
0201:  BSF    07.6
0202:  MOVLW  49
0203:  MOVWF  04
0204:  DECFSZ 04,F
0205:  GOTO   204
0206:  GOTO   207
0207:  NOP
0208:  BTFSC  78.7
0209:  GOTO   1F0
020A:  BTFSC  78.6
020B:  GOTO   1FC
020C:  BCF    0A.3
020D:  BCF    0A.4
020E:  GOTO   38B (RETURN)
020F:  BSF    20.7
0210:  MOVF   20,W
0211:  BSF    03.5
0212:  MOVWF  07
0213:  BCF    03.5
0214:  BTFSC  07.7
0215:  GOTO   214
0216:  MOVLW  08
0217:  MOVWF  77
0218:  BSF    03.5
0219:  BSF    03.6
021A:  CLRF   17
021B:  BSF    77.7
021C:  GOTO   22F
021D:  BCF    77.7
021E:  GOTO   22F
021F:  BCF    03.0
0220:  BCF    03.5
0221:  BCF    03.6
0222:  BTFSC  07.7
0223:  BSF    03.0
0224:  BSF    03.5
0225:  BSF    03.6
0226:  RRF    17,F
0227:  BSF    77.6
0228:  GOTO   22F
0229:  BCF    77.6
022A:  DECFSZ 77,F
022B:  GOTO   21F
022C:  MOVF   17,W
022D:  MOVWF  78
022E:  GOTO   23B
022F:  MOVLW  49
0230:  BTFSC  77.7
0231:  MOVLW  14
0232:  MOVWF  78
0233:  DECFSZ 78,F
0234:  GOTO   233
0235:  GOTO   236
0236:  BTFSC  77.7
0237:  GOTO   21D
0238:  BTFSC  77.6
0239:  GOTO   229
023A:  GOTO   21F
023B:  BCF    03.5
023C:  BCF    03.6
023D:  RETLW  00
*
0306:  MOVLW  FF
0307:  BCF    03.5
0308:  MOVWF  20
.................... #use rs232(STREAM=VRTULE,baud=600,parity=N,xmit=PIN_B2,rcv=PIN_B4,bits=8) 
*
02C2:  BSF    03.5
02C3:  BCF    06.2
02C4:  BCF    03.5
02C5:  BCF    06.2
02C6:  MOVLW  08
02C7:  MOVWF  78
02C8:  GOTO   2C9
02C9:  NOP
02CA:  BSF    78.7
02CB:  GOTO   2DE
02CC:  BCF    78.7
02CD:  BSF    03.5
02CE:  BSF    03.6
02CF:  RRF    19,F
02D0:  BCF    03.5
02D1:  BCF    03.6
02D2:  BTFSC  03.0
02D3:  BSF    06.2
02D4:  BTFSS  03.0
02D5:  BCF    06.2
02D6:  BSF    78.6
02D7:  GOTO   2DE
02D8:  BCF    78.6
02D9:  DECFSZ 78,F
02DA:  GOTO   2CD
02DB:  GOTO   2DC
02DC:  NOP
02DD:  BSF    06.2
02DE:  MOVLW  09
02DF:  MOVWF  77
02E0:  CLRF   04
02E1:  DECFSZ 04,F
02E2:  GOTO   2E1
02E3:  DECFSZ 77,F
02E4:  GOTO   2E0
02E5:  MOVLW  F0
02E6:  MOVWF  04
02E7:  DECFSZ 04,F
02E8:  GOTO   2E7
02E9:  GOTO   2EA
02EA:  BTFSC  78.7
02EB:  GOTO   2CC
02EC:  BTFSC  78.6
02ED:  GOTO   2D8
02EE:  BCF    0A.3
02EF:  BCF    0A.4
02F0:  GOTO   620 (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 
*
0130:  MOVF   07,W
0131:  ANDLW  F0
0132:  BSF    03.5
0133:  BSF    03.6
0134:  MOVWF  21
0135:  MOVF   20,W
0136:  ANDLW  0F
0137:  IORWF  21,W
0138:  BCF    03.5
0139:  BCF    03.6
013A:  MOVWF  07
....................    output_bit(LCD_E,1);       // vzestupna hrana 
013B:  BSF    06.0
013C:  BSF    03.5
013D:  BCF    06.0
....................    delay_us(100);               // pockej alespon 450ns od e nebo alespon 195ns od dat 
013E:  CLRWDT
013F:  MOVLW  98
0140:  MOVWF  77
0141:  DECFSZ 77,F
0142:  GOTO   141
0143:  GOTO   144
....................    output_bit(LCD_E,0);       // sestupna hrana (minimalni perioda e je 1us) 
0144:  BCF    03.5
0145:  BCF    06.0
0146:  BSF    03.5
0147:  BCF    06.0
.................... } 
0148:  BCF    03.5
0149:  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 
014A:  BSF    03.5
014B:  BSF    03.6
014C:  MOVF   1E,F
014D:  BTFSS  03.2
014E:  GOTO   155
014F:  BCF    03.5
0150:  BCF    03.6
0151:  BCF    06.1
0152:  GOTO   158
0153:  BSF    03.5
0154:  BSF    03.6
0155:  BCF    03.5
0156:  BCF    03.6
0157:  BSF    06.1
0158:  BSF    03.5
0159:  BCF    06.1
....................    swap(n); 
015A:  BSF    03.6
015B:  SWAPF  1F,F
....................    lcd_send_nibble(n);        // posli horni pulku bajtu 
015C:  MOVF   1F,W
015D:  MOVWF  20
015E:  BCF    03.5
015F:  BCF    03.6
0160:  CALL   130
....................    swap(n); 
0161:  BSF    03.5
0162:  BSF    03.6
0163:  SWAPF  1F,F
....................    lcd_send_nibble(n);        // posli spodni pulku bajtu 
0164:  MOVF   1F,W
0165:  MOVWF  20
0166:  BCF    03.5
0167:  BCF    03.6
0168:  CALL   130
....................    delay_us(200);              // minimalni doba na provedeni prikazu 
0169:  CLRWDT
016A:  MOVLW  C7
016B:  BSF    03.5
016C:  BSF    03.6
016D:  MOVWF  20
.................... } 
*
0186:  BCF    03.5
0187:  BCF    03.6
0188:  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 napajeni 
0189:  MOVLW  14
018A:  BSF    03.5
018B:  BSF    03.6
018C:  MOVWF  1A
018D:  BCF    03.5
018E:  BCF    03.6
018F:  CALL   119
....................  
....................    *LCD_TRIS = *LCD_TRIS & ~LCD_MASK;  // nuluj odpovidajici bity tris registru datoveho portu LCD 
0190:  MOVLW  F0
0191:  BSF    03.5
0192:  ANDWF  07,F
....................  
....................    output_bit(LCD_RS,0);               // nastav jako vystup a nastav klidovy stav 
0193:  BCF    03.5
0194:  BCF    06.1
0195:  BSF    03.5
0196:  BCF    06.1
....................    output_bit(LCD_E,0);               // nastav jako vystup a nastav klidovy stav 
0197:  BCF    03.5
0198:  BCF    06.0
0199:  BSF    03.5
019A:  BCF    06.0
....................  
....................    for (i=0; i<3; i++)                 // nastav lcd do rezimu 8 bitu sbernice 
019B:  BSF    03.6
019C:  CLRF   17
019D:  MOVF   17,W
019E:  SUBLW  02
019F:  BTFSS  03.0
01A0:  GOTO   1B1
....................    { 
....................       delay_ms(2);                     // muze byt rozdelany prenos dat (2x 4 bity) nebo pomaly povel 
01A1:  MOVLW  02
01A2:  MOVWF  1A
01A3:  BCF    03.5
01A4:  BCF    03.6
01A5:  CALL   119
....................       lcd_send_nibble(3);              // rezim 8 bitu 
01A6:  MOVLW  03
01A7:  BSF    03.5
01A8:  BSF    03.6
01A9:  MOVWF  20
01AA:  BCF    03.5
01AB:  BCF    03.6
01AC:  CALL   130
....................    } 
01AD:  BSF    03.5
01AE:  BSF    03.6
01AF:  INCF   17,F
01B0:  GOTO   19D
....................  
....................    delay_us(40);                       // cas na zpracovani 
01B1:  CLRWDT
01B2:  MOVLW  3C
01B3:  MOVWF  77
01B4:  DECFSZ 77,F
01B5:  GOTO   1B4
01B6:  GOTO   1B7
....................    lcd_send_nibble(2);                 // nastav rezim 4 bitu (plati od nasledujiciho prenosu) 
01B7:  MOVLW  02
01B8:  MOVWF  20
01B9:  BCF    03.5
01BA:  BCF    03.6
01BB:  CALL   130
....................    delay_us(40);                       // cas na zpracovani 
01BC:  CLRWDT
01BD:  MOVLW  3C
01BE:  MOVWF  77
01BF:  DECFSZ 77,F
01C0:  GOTO   1BF
01C1:  GOTO   1C2
....................  
....................    for (i=0;i<3;i++)                   // proved inicializaci (nastaveni modu, smazani apod) 
01C2:  BSF    03.5
01C3:  BSF    03.6
01C4:  CLRF   17
01C5:  MOVF   17,W
01C6:  SUBLW  02
01C7:  BTFSS  03.0
01C8:  GOTO   1E1
....................    { 
....................       lcd_send_byte(0,LCD_INIT_STRING[i]); 
01C9:  MOVF   17,W
01CA:  BCF    03.5
01CB:  BCF    03.6
01CC:  CALL   004
01CD:  BSF    03.5
01CE:  BSF    03.6
01CF:  MOVWF  18
01D0:  CLRF   1E
01D1:  MOVF   18,W
01D2:  MOVWF  1F
01D3:  BCF    03.5
01D4:  BCF    03.6
01D5:  CALL   14A
....................       delay_ms(2); 
01D6:  MOVLW  02
01D7:  BSF    03.5
01D8:  BSF    03.6
01D9:  MOVWF  1A
01DA:  BCF    03.5
01DB:  BCF    03.6
01DC:  CALL   119
....................    } 
01DD:  BSF    03.5
01DE:  BSF    03.6
01DF:  INCF   17,F
01E0:  GOTO   1C5
.................... } 
01E1:  BCF    03.5
01E2:  BCF    03.6
01E3:  RETLW  00
....................  
....................  
.................... // Proved presun kurzoru 
.................... // 
.................... // Pozice 1.1 je domu 
.................... // 
.................... #separate 
.................... void lcd_gotoxy( BYTE x, BYTE y) 
.................... { 
....................  
....................    BYTE Adr; 
....................  
....................    switch(y) 
....................    { 
*
023E:  MOVLW  01
023F:  BSF    03.5
0240:  BSF    03.6
0241:  SUBWF  1B,W
0242:  ADDLW  FC
0243:  BTFSC  03.0
0244:  GOTO   25E
0245:  ADDLW  04
0246:  BCF    03.5
0247:  BCF    03.6
0248:  GOTO   26B
....................       case 1: Adr=0; break; 
0249:  BSF    03.5
024A:  BSF    03.6
024B:  CLRF   1C
024C:  GOTO   25E
....................       case 2: Adr=0x40; break; 
024D:  MOVLW  40
024E:  BSF    03.5
024F:  BSF    03.6
0250:  MOVWF  1C
0251:  GOTO   25E
....................       case 3: Adr=0x14; break; 
0252:  MOVLW  14
0253:  BSF    03.5
0254:  BSF    03.6
0255:  MOVWF  1C
0256:  GOTO   25E
....................       case 4: Adr=0x54; break; 
0257:  MOVLW  54
0258:  BSF    03.5
0259:  BSF    03.6
025A:  MOVWF  1C
025B:  GOTO   25E
025C:  BSF    03.5
025D:  BSF    03.6
....................    } 
....................    Adr+=x-1; 
025E:  MOVLW  01
025F:  SUBWF  1A,W
0260:  ADDWF  1C,F
....................  
....................    lcd_send_byte(0,0x80|Adr); 
0261:  MOVF   1C,W
0262:  IORLW  80
0263:  MOVWF  1D
0264:  CLRF   1E
0265:  MOVF   1D,W
0266:  MOVWF  1F
0267:  BCF    03.5
0268:  BCF    03.6
0269:  CALL   14A
.................... } 
026A:  RETLW  00
....................  
....................  
.................... // Zapis znaku na displej, zpracovani ridicich znaku 
.................... // 
.................... #separate 
.................... void lcd_putc( char c) 
.................... { 
....................  
....................    switch (c) 
....................    { 
*
0273:  BSF    03.5
0274:  BSF    03.6
0275:  MOVF   19,W
0276:  XORLW  0C
0277:  BCF    03.5
0278:  BCF    03.6
0279:  BTFSC  03.2
027A:  GOTO   285
027B:  XORLW  06
027C:  BTFSC  03.2
027D:  GOTO   295
027E:  XORLW  07
027F:  BTFSC  03.2
0280:  GOTO   29F
0281:  XORLW  05
0282:  BTFSC  03.2
0283:  GOTO   2A8
0284:  GOTO   2B1
....................       case '\f'   : lcd_send_byte(0,1);            // smaz displej 
0285:  BSF    03.5
0286:  BSF    03.6
0287:  CLRF   1E
0288:  MOVLW  01
0289:  MOVWF  1F
028A:  BCF    03.5
028B:  BCF    03.6
028C:  CALL   14A
....................                     delay_ms(2); 
028D:  MOVLW  02
028E:  BSF    03.5
028F:  BSF    03.6
0290:  MOVWF  1A
0291:  BCF    03.5
0292:  BCF    03.6
0293:  CALL   119
....................                                             break; 
0294:  GOTO   2C1
....................       case '\n'   : lcd_gotoxy(1,2);        break; // presun se na 1. znak 2. radky 
0295:  MOVLW  01
0296:  BSF    03.5
0297:  BSF    03.6
0298:  MOVWF  1A
0299:  MOVLW  02
029A:  MOVWF  1B
029B:  BCF    03.5
029C:  BCF    03.6
029D:  CALL   23E
029E:  GOTO   2C1
....................       case '\r'   : lcd_gotoxy(1,1);        break; // presun home 
029F:  MOVLW  01
02A0:  BSF    03.5
02A1:  BSF    03.6
02A2:  MOVWF  1A
02A3:  MOVWF  1B
02A4:  BCF    03.5
02A5:  BCF    03.6
02A6:  CALL   23E
02A7:  GOTO   2C1
....................       case '\b'   : lcd_send_byte(0,0x10);  break; // posun kurzor o 1 zpet 
02A8:  BSF    03.5
02A9:  BSF    03.6
02AA:  CLRF   1E
02AB:  MOVLW  10
02AC:  MOVWF  1F
02AD:  BCF    03.5
02AE:  BCF    03.6
02AF:  CALL   14A
02B0:  GOTO   2C1
....................       default     : if (c<0x20) c&=0x7;            // preklopeni definovatelnych znaku na rozsah 0 az 0x1F 
02B1:  BSF    03.5
02B2:  BSF    03.6
02B3:  MOVF   19,W
02B4:  SUBLW  1F
02B5:  BTFSS  03.0
02B6:  GOTO   2B9
02B7:  MOVLW  07
02B8:  ANDWF  19,F
....................                     lcd_send_byte(1,c);     break; // zapis znak 
02B9:  MOVLW  01
02BA:  MOVWF  1E
02BB:  MOVF   19,W
02BC:  MOVWF  1F
02BD:  BCF    03.5
02BE:  BCF    03.6
02BF:  CALL   14A
02C0:  GOTO   2C1
....................    } 
.................... } 
02C1:  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() 
.................... { 
*
02F1:  CLRF   04
02F2:  BCF    03.7
02F3:  MOVLW  1F
02F4:  ANDWF  03,F
02F5:  BCF    20.6
02F6:  MOVF   20,W
02F7:  BSF    03.5
02F8:  MOVWF  07
02F9:  BCF    03.5
02FA:  BSF    07.6
02FB:  BSF    03.5
02FC:  BCF    06.2
02FD:  BCF    03.5
02FE:  BSF    06.2
02FF:  BSF    03.5
0300:  BSF    1F.0
0301:  BSF    1F.1
0302:  BSF    1F.2
0303:  BCF    1F.3
0304:  MOVLW  07
0305:  MOVWF  1C
.................... char odp[96]; 
.................... int pom,pom2,pom3,odkl,odkl2,maskovadlo,status; 
....................  
....................    setup_adc_ports(NO_ANALOGS); 
*
0309:  BSF    03.5
030A:  BSF    1F.0
030B:  BSF    1F.1
030C:  BSF    1F.2
030D:  BCF    1F.3
....................    setup_adc(ADC_OFF); 
030E:  BCF    03.5
030F:  BCF    1F.0
....................    setup_spi(SPI_SS_DISABLED); 
0310:  BCF    14.5
0311:  BCF    20.5
0312:  MOVF   20,W
0313:  BSF    03.5
0314:  MOVWF  07
0315:  BCF    03.5
0316:  BSF    20.4
0317:  MOVF   20,W
0318:  BSF    03.5
0319:  MOVWF  07
031A:  BCF    03.5
031B:  BCF    20.3
031C:  MOVF   20,W
031D:  BSF    03.5
031E:  MOVWF  07
031F:  MOVLW  01
0320:  BCF    03.5
0321:  MOVWF  14
0322:  MOVLW  00
0323:  BSF    03.5
0324:  MOVWF  14
....................    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); 
0325:  MOVF   01,W
0326:  ANDLW  C7
0327:  IORLW  08
0328:  MOVWF  01
....................    setup_timer_1(T1_DISABLED); 
0329:  BCF    03.5
032A:  CLRF   10
....................    setup_timer_2(T2_DISABLED,0,1); 
032B:  MOVLW  00
032C:  MOVWF  78
032D:  MOVWF  12
032E:  MOVLW  00
032F:  BSF    03.5
0330:  MOVWF  12
....................    setup_comparator(NC_NC_NC_NC); 
0331:  MOVLW  07
0332:  MOVWF  1C
0333:  MOVF   05,W
0334:  CLRWDT
0335:  MOVLW  0E
0336:  MOVWF  77
0337:  DECFSZ 77,F
0338:  GOTO   337
0339:  GOTO   33A
033A:  MOVF   1C,W
033B:  BCF    03.5
033C:  BCF    0D.6
....................    setup_vref(FALSE); 
033D:  BSF    03.5
033E:  CLRF   1D
....................    setup_wdt(WDT_2304MS); 
033F:  MOVLW  0F
0340:  MOVWF  77
0341:  MOVLW  07
0342:  BCF    03.5
0343:  CLRF   01
0344:  MOVLW  81
0345:  MOVWF  04
0346:  BCF    03.7
0347:  MOVF   00,W
0348:  ANDLW  F0
0349:  IORLW  07
034A:  MOVWF  00
034B:  CLRWDT
034C:  MOVF   00,W
034D:  ANDLW  F7
034E:  BTFSC  77.3
034F:  ANDLW  F0
0350:  IORWF  77,W
0351:  MOVWF  00
....................    lcd_init(); 
0352:  CALL   189
....................     
....................    /* 
....................    delay_us(10); 
....................    lcd_gotoxy(1,1); 
....................    printf(lcd_putc,"  Ovladani mobilem"); 
....................    lcd_gotoxy(1,2); 
....................    printf(lcd_putc,""); 
....................    lcd_gotoxy(1,3); 
....................    printf(lcd_putc," autor:  Tomas Kapl"); 
....................    lcd_gotoxy(1,4); 
....................    printf(lcd_putc,"    www.kapl.cz"); 
....................    delay_ms(5000); 
....................    */ 
....................     
....................    while(TRUE) 
....................    { 
....................     restart_wdt(); 
0353:  CLRWDT
....................     
....................     output_low(PIN_A4) ; 
0354:  BSF    03.5
0355:  BCF    05.4
0356:  BCF    03.5
0357:  BCF    05.4
....................     delay_ms(150); 
0358:  MOVLW  96
0359:  BSF    03.5
035A:  BSF    03.6
035B:  MOVWF  1A
035C:  BCF    03.5
035D:  BCF    03.6
035E:  CALL   119
....................     output_high(PIN_A4); 
035F:  BSF    03.5
0360:  BCF    05.4
0361:  BCF    03.5
0362:  BSF    05.4
....................     delay_ms(150); 
0363:  MOVLW  96
0364:  BSF    03.5
0365:  BSF    03.6
0366:  MOVWF  1A
0367:  BCF    03.5
0368:  BCF    03.6
0369:  CALL   119
....................     output_low(PIN_A4) ; 
036A:  BSF    03.5
036B:  BCF    05.4
036C:  BCF    03.5
036D:  BCF    05.4
....................     delay_ms(150); 
036E:  MOVLW  96
036F:  BSF    03.5
0370:  BSF    03.6
0371:  MOVWF  1A
0372:  BCF    03.5
0373:  BCF    03.6
0374:  CALL   119
....................     output_high(PIN_A4); 
0375:  BSF    03.5
0376:  BCF    05.4
0377:  BCF    03.5
0378:  BSF    05.4
....................     delay_ms(150); 
0379:  MOVLW  96
037A:  BSF    03.5
037B:  BSF    03.6
037C:  MOVWF  1A
037D:  BCF    03.5
037E:  BCF    03.6
037F:  CALL   119
....................      
.................... /* 
....................    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)     
0380:  CLRF   28
0381:  MOVF   28,W
0382:  CALL   00C
0383:  INCF   28,F
0384:  MOVWF  77
0385:  BSF    03.5
0386:  BSF    03.6
0387:  MOVWF  18
0388:  BCF    03.5
0389:  BCF    03.6
038A:  GOTO   1E4
038B:  MOVLW  0A
038C:  SUBWF  28,W
038D:  BTFSS  03.2
038E:  GOTO   381
.................... //SPEN=1; 
....................     
....................    
....................    while(fgetc(MOBIL)!=0x0A);       // predkoc prvni radek odpovedi 
038F:  CALL   20F
0390:  MOVF   78,W
0391:  SUBLW  0A
0392:  BTFSS  03.2
0393:  GOTO   38F
....................  
....................    odp[0]=fgetc(MOBIL);             // Nacti prvni dva znaky druheho radku odpovedi 
0394:  CALL   20F
0395:  MOVF   78,W
0396:  BSF    03.6
0397:  MOVWF  10
....................    odp[1]=fgetc(MOBIL); 
0398:  BCF    03.6
0399:  CALL   20F
039A:  MOVF   78,W
039B:  BSF    03.6
039C:  MOVWF  11
....................    while(fgetc(MOBIL)!=0x0A);       // Preskoc zbytek radku 
039D:  BCF    03.6
039E:  CALL   20F
039F:  MOVF   78,W
03A0:  SUBLW  0A
03A1:  BTFSS  03.2
03A2:  GOTO   39E
....................  
....................    while(kbhit(MOBIL)) {fgetc(MOBIL); delay_ms(100);}       // Preskoc zbytek radku 
03A3:  BTFSC  07.7
03A4:  GOTO   3AE
03A5:  CALL   20F
03A6:  MOVLW  64
03A7:  BSF    03.5
03A8:  BSF    03.6
03A9:  MOVWF  1A
03AA:  BCF    03.5
03AB:  BCF    03.6
03AC:  CALL   119
03AD:  GOTO   3A3
.................... output_high(PIN_A4) ; 
03AE:  BSF    03.5
03AF:  BCF    05.4
03B0:  BCF    03.5
03B1:  BSF    05.4
....................  
....................  
....................    if(odp[0] == 79 && odp[1] ==75)   // Je odpoved "OK"? 
03B2:  BSF    03.6
03B3:  MOVF   10,W
03B4:  SUBLW  4F
03B5:  BTFSS  03.2
03B6:  GOTO   417
03B7:  MOVF   11,W
03B8:  SUBLW  4B
03B9:  BTFSS  03.2
03BA:  GOTO   417
....................    { 
....................       lcd_gotoxy(1,1); 
03BB:  MOVLW  01
03BC:  BSF    03.5
03BD:  MOVWF  1A
03BE:  MOVWF  1B
03BF:  BCF    03.5
03C0:  BCF    03.6
03C1:  CALL   23E
....................       printf(lcd_putc,"\fNeni nova SMS zprava"); 
03C2:  CLRF   28
03C3:  MOVF   28,W
03C4:  CALL   01B
03C5:  INCF   28,F
03C6:  MOVWF  77
03C7:  BSF    03.5
03C8:  BSF    03.6
03C9:  MOVWF  19
03CA:  BCF    03.5
03CB:  BCF    03.6
03CC:  CALL   273
03CD:  MOVLW  15
03CE:  SUBWF  28,W
03CF:  BTFSS  03.2
03D0:  GOTO   3C3
....................       lcd_gotoxy(1,2); 
03D1:  MOVLW  01
03D2:  BSF    03.5
03D3:  BSF    03.6
03D4:  MOVWF  1A
03D5:  MOVLW  02
03D6:  MOVWF  1B
03D7:  BCF    03.5
03D8:  BCF    03.6
03D9:  CALL   23E
....................       printf(lcd_putc,""); 
....................       lcd_gotoxy(1,3); 
03DA:  MOVLW  01
03DB:  BSF    03.5
03DC:  BSF    03.6
03DD:  MOVWF  1A
03DE:  MOVLW  03
03DF:  MOVWF  1B
03E0:  BCF    03.5
03E1:  BCF    03.6
03E2:  CALL   23E
....................       printf(lcd_putc,"Zaslete SMS na cislo"); 
03E3:  CLRF   28
03E4:  MOVF   28,W
03E5:  CALL   035
03E6:  INCF   28,F
03E7:  MOVWF  77
03E8:  BSF    03.5
03E9:  BSF    03.6
03EA:  MOVWF  19
03EB:  BCF    03.5
03EC:  BCF    03.6
03ED:  CALL   273
03EE:  MOVLW  14
03EF:  SUBWF  28,W
03F0:  BTFSS  03.2
03F1:  GOTO   3E4
....................       lcd_gotoxy(1,4); 
03F2:  MOVLW  01
03F3:  BSF    03.5
03F4:  BSF    03.6
03F5:  MOVWF  1A
03F6:  MOVLW  04
03F7:  MOVWF  1B
03F8:  BCF    03.5
03F9:  BCF    03.6
03FA:  CALL   23E
....................       printf(lcd_putc,"    736 655 250"); 
03FB:  CLRF   28
03FC:  MOVF   28,W
03FD:  CALL   04E
03FE:  INCF   28,F
03FF:  MOVWF  77
0400:  BSF    03.5
0401:  BSF    03.6
0402:  MOVWF  19
0403:  BCF    03.5
0404:  BCF    03.6
0405:  CALL   273
0406:  MOVLW  0F
0407:  SUBWF  28,W
0408:  BTFSS  03.2
0409:  GOTO   3FC
....................       delay_ms(5000); 
040A:  MOVLW  14
040B:  MOVWF  28
040C:  MOVLW  FA
040D:  BSF    03.5
040E:  BSF    03.6
040F:  MOVWF  1A
0410:  BCF    03.5
0411:  BCF    03.6
0412:  CALL   119
0413:  DECFSZ 28,F
0414:  GOTO   40C
....................    }  
....................    else    
0415:  GOTO   71B
0416:  BSF    03.6
....................    { 
.................... //!!!KAKL      for(pom=0;pom<55;pom++)                //preskoc nedulezite informace 
....................       for(pom=0;pom<54;pom++)                //preskoc nedulezite informace 
0417:  BCF    03.6
0418:  CLRF   21
0419:  MOVF   21,W
041A:  SUBLW  35
041B:  BTFSS  03.0
041C:  GOTO   420
....................       { 
....................          fgetc(MOBIL); 
041D:  CALL   20F
....................       }  
041E:  INCF   21,F
041F:  GOTO   419
....................        
....................       //gets(odp);                       //uloz zakodovany text SMS 
....................     
....................       odp[0]=fgetc(MOBIL); 
0420:  CALL   20F
0421:  MOVF   78,W
0422:  BSF    03.6
0423:  MOVWF  10
....................       odp[1]=fgetc(MOBIL); 
0424:  BCF    03.6
0425:  CALL   20F
0426:  MOVF   78,W
0427:  BSF    03.6
0428:  MOVWF  11
....................       odp[2]=fgetc(MOBIL); 
0429:  BCF    03.6
042A:  CALL   20F
042B:  MOVF   78,W
042C:  BSF    03.6
042D:  MOVWF  12
....................       odp[3]=fgetc(MOBIL); 
042E:  BCF    03.6
042F:  CALL   20F
0430:  MOVF   78,W
0431:  BSF    03.6
0432:  MOVWF  13
....................       odp[4]=fgetc(MOBIL); 
0433:  BCF    03.6
0434:  CALL   20F
0435:  MOVF   78,W
0436:  BSF    03.6
0437:  MOVWF  14
....................       odp[5]=fgetc(MOBIL); 
0438:  BCF    03.6
0439:  CALL   20F
043A:  MOVF   78,W
043B:  BSF    03.6
043C:  MOVWF  15
....................       odp[6]=fgetc(MOBIL); 
043D:  BCF    03.6
043E:  CALL   20F
043F:  MOVF   78,W
0440:  BSF    03.6
0441:  MOVWF  16
....................       odp[7]=fgetc(MOBIL); 
0442:  BCF    03.6
0443:  CALL   20F
0444:  MOVF   78,W
0445:  BSF    03.6
0446:  MOVWF  17
....................  
....................       /*lcd_gotoxy(1,1); 
....................       printf(lcd_putc,"\f%s\n",odp);*/ 
....................     
....................       if(odp[0]==0) odp[1]='0';        // Prevod z ASCII do BIN  
0447:  MOVF   10,F
0448:  BTFSS  03.2
0449:  GOTO   44C
044A:  MOVLW  30
044B:  MOVWF  11
....................       odp[0]=odp[0] - '0'; 
044C:  MOVLW  30
044D:  SUBWF  10,F
....................       odp[1]=odp[1] - '0'; 
044E:  SUBWF  11,F
....................       if(odp[0]>9) odp[0]=odp[0]-7; 
044F:  MOVF   10,W
0450:  SUBLW  09
0451:  BTFSC  03.0
0452:  GOTO   455
0453:  MOVLW  07
0454:  SUBWF  10,F
....................       if(odp[1]>9) odp[1]=odp[1]-7; 
0455:  MOVF   11,W
0456:  SUBLW  09
0457:  BTFSC  03.0
0458:  GOTO   45B
0459:  MOVLW  07
045A:  SUBWF  11,F
....................       odp[0]=odp[0] << 4; 
045B:  SWAPF  10,F
045C:  MOVLW  F0
045D:  ANDWF  10,F
....................       odp[0] |= odp[1]; 
045E:  MOVF   11,W
045F:  IORWF  10,F
....................     
....................       if(odp[2]==0) odp[3]='0'; 
0460:  MOVF   12,F
0461:  BTFSS  03.2
0462:  GOTO   465
0463:  MOVLW  30
0464:  MOVWF  13
....................       odp[2]=odp[2] - '0'; 
0465:  MOVLW  30
0466:  SUBWF  12,F
....................       odp[3]=odp[3] - '0'; 
0467:  SUBWF  13,F
....................       if(odp[2]>9) odp[2]=odp[2]-7; 
0468:  MOVF   12,W
0469:  SUBLW  09
046A:  BTFSC  03.0
046B:  GOTO   46E
046C:  MOVLW  07
046D:  SUBWF  12,F
....................       if(odp[3]>9) odp[3]=odp[3]-7; 
046E:  MOVF   13,W
046F:  SUBLW  09
0470:  BTFSC  03.0
0471:  GOTO   474
0472:  MOVLW  07
0473:  SUBWF  13,F
....................       odp[2]=odp[2] << 4; 
0474:  SWAPF  12,F
0475:  MOVLW  F0
0476:  ANDWF  12,F
....................       odp[2] |= odp[3]; 
0477:  MOVF   13,W
0478:  IORWF  12,F
....................     
....................       if(odp[4]==0) odp[5]='0'; 
0479:  MOVF   14,F
047A:  BTFSS  03.2
047B:  GOTO   47E
047C:  MOVLW  30
047D:  MOVWF  15
....................       odp[4]=odp[4] - '0'; 
047E:  MOVLW  30
047F:  SUBWF  14,F
....................       odp[5]=odp[5] - '0'; 
0480:  SUBWF  15,F
....................       if(odp[4]>9) odp[4]=odp[4]-7; 
0481:  MOVF   14,W
0482:  SUBLW  09
0483:  BTFSC  03.0
0484:  GOTO   487
0485:  MOVLW  07
0486:  SUBWF  14,F
....................       if(odp[5]>9) odp[5]=odp[5]-7; 
0487:  MOVF   15,W
0488:  SUBLW  09
0489:  BTFSC  03.0
048A:  GOTO   48D
048B:  MOVLW  07
048C:  SUBWF  15,F
....................       odp[4]=odp[4] << 4; 
048D:  SWAPF  14,F
048E:  MOVLW  F0
048F:  ANDWF  14,F
....................       odp[4] |= odp[5]; 
0490:  MOVF   15,W
0491:  IORWF  14,F
....................     
....................       if(odp[6]==0) odp[7]='0'; 
0492:  MOVF   16,F
0493:  BTFSS  03.2
0494:  GOTO   497
0495:  MOVLW  30
0496:  MOVWF  17
....................       odp[6]=odp[6] - '0'; 
0497:  MOVLW  30
0498:  SUBWF  16,F
....................       odp[7]=odp[7] - '0'; 
0499:  SUBWF  17,F
....................       if(odp[6]>9) odp[6]=odp[6]-7; 
049A:  MOVF   16,W
049B:  SUBLW  09
049C:  BTFSC  03.0
049D:  GOTO   4A0
049E:  MOVLW  07
049F:  SUBWF  16,F
....................       if(odp[7]>9) odp[7]=odp[7]-7; 
04A0:  MOVF   17,W
04A1:  SUBLW  09
04A2:  BTFSC  03.0
04A3:  GOTO   4A6
04A4:  MOVLW  07
04A5:  SUBWF  17,F
....................       odp[6]=odp[6] << 4; 
04A6:  SWAPF  16,F
04A7:  MOVLW  F0
04A8:  ANDWF  16,F
....................       odp[6] |= odp[7]; 
04A9:  MOVF   17,W
04AA:  IORWF  16,F
....................  
....................       odp[1]=odp[2]; 
04AB:  MOVF   12,W
04AC:  MOVWF  11
....................       odp[2]=odp[4]; 
04AD:  MOVF   14,W
04AE:  MOVWF  12
....................       odp[3]=odp[6]; 
04AF:  MOVF   16,W
04B0:  MOVWF  13
....................       odp[4],odp[5],odp[6]=""; 
04B1:  CLRF   16
....................     
....................       /*lcd_gotoxy(1,2);     
....................       printf(lcd_putc,"%u %u %u %u",odp[0],odp[1],odp[2]odp[3]);   */ 
....................     
....................       pom3=0; 
04B2:  BCF    03.6
04B3:  CLRF   23
....................       for (pom = 0; pom < 4;pom++)             
04B4:  CLRF   21
04B5:  MOVF   21,W
04B6:  SUBLW  03
04B7:  BTFSS  03.0
04B8:  GOTO   52A
....................          { 
....................          maskovadlo =  maskovadlo >> 1;                 //rotace promene urcene pro maskovani 
04B9:  BCF    03.0
04BA:  RRF    26,F
....................          maskovadlo =  maskovadlo | 0x80; 
04BB:  BSF    26.7
....................          odkl = odp[pom] & maskovadlo;                  //odlozeni "prenosu" do odkl pomoci maskovadla 
04BC:  MOVLW  10
04BD:  ADDWF  21,W
04BE:  MOVWF  04
04BF:  BSF    03.7
04C0:  MOVF   00,W
04C1:  ANDWF  26,W
04C2:  MOVWF  24
....................          odp[pom] = odp[pom] << pom3;                     //rotace znaku 
04C3:  MOVLW  10
04C4:  ADDWF  21,W
04C5:  MOVWF  78
04C6:  MOVLW  01
04C7:  MOVWF  7A
04C8:  BTFSC  03.0
04C9:  INCF   7A,F
04CA:  MOVF   78,W
04CB:  MOVWF  28
04CC:  MOVF   7A,W
04CD:  MOVWF  29
04CE:  MOVLW  10
04CF:  ADDWF  21,W
04D0:  MOVWF  04
04D1:  BSF    03.7
04D2:  MOVF   00,W
04D3:  MOVWF  77
04D4:  MOVF   23,W
04D5:  MOVWF  78
04D6:  BTFSC  03.2
04D7:  GOTO   4DC
04D8:  BCF    03.0
04D9:  RLF    77,F
04DA:  DECFSZ 78,F
04DB:  GOTO   4D8
04DC:  MOVF   28,W
04DD:  MOVWF  04
04DE:  BCF    03.7
04DF:  BTFSC  29.0
04E0:  BSF    03.7
04E1:  MOVF   77,W
04E2:  MOVWF  00
....................          for (pom2 = 0; pom2 < (8-pom3);pom2++)            //rotace odkl2 
04E3:  CLRF   22
04E4:  MOVF   23,W
04E5:  SUBLW  08
04E6:  SUBWF  22,W
04E7:  BTFSC  03.0
04E8:  GOTO   4EE
....................             { 
....................             odkl2 = odkl2 >> 1; 
04E9:  BCF    03.0
04EA:  RRF    25,F
....................             odkl2 = odkl2 & 127;     
04EB:  BCF    25.7
....................             } 
04EC:  INCF   22,F
04ED:  GOTO   4E4
....................          odp[pom] = odp[pom] | odkl2;                     //pridani odkl2 ke znaku 
04EE:  MOVLW  10
04EF:  ADDWF  21,W
04F0:  MOVWF  78
04F1:  MOVLW  01
04F2:  MOVWF  7A
04F3:  BTFSC  03.0
04F4:  INCF   7A,F
04F5:  MOVLW  10
04F6:  ADDWF  21,W
04F7:  MOVWF  04
04F8:  BSF    03.7
04F9:  MOVF   00,W
04FA:  IORWF  25,W
04FB:  MOVWF  2B
04FC:  MOVF   78,W
04FD:  MOVWF  04
04FE:  BCF    03.7
04FF:  BTFSC  7A.0
0500:  BSF    03.7
0501:  MOVF   2B,W
0502:  MOVWF  00
....................          odp[pom] = odp[pom] & 127;                      //smazani nejvysiho bitu 
0503:  MOVLW  10
0504:  ADDWF  21,W
0505:  MOVWF  78
0506:  MOVLW  01
0507:  MOVWF  7A
0508:  BTFSC  03.0
0509:  INCF   7A,F
050A:  MOVLW  10
050B:  ADDWF  21,W
050C:  MOVWF  04
050D:  BSF    03.7
050E:  MOVF   00,W
050F:  ANDLW  7F
0510:  MOVWF  2B
0511:  MOVF   78,W
0512:  MOVWF  04
0513:  BCF    03.7
0514:  BTFSC  7A.0
0515:  BSF    03.7
0516:  MOVF   2B,W
0517:  MOVWF  00
....................          odkl2 = odkl;                              //ulozeni odlk na dalsi pruchod 
0518:  MOVF   24,W
0519:  MOVWF  25
....................          pom3++;                                    //inkrementace citace rotace 
051A:  INCF   23,F
....................          if (pom3 == 8)                              //kazdy 8my znak 
051B:  MOVF   23,W
051C:  SUBLW  08
051D:  BTFSS  03.2
051E:  GOTO   528
....................             { 
....................             pom3 = 0;                                 //smaz citac 
051F:  CLRF   23
....................             odp[pom+1] = odkl2;                        //uloz 8my znak vznikly z "prenosu" 
0520:  MOVLW  01
0521:  ADDWF  21,W
0522:  ADDLW  10
0523:  MOVWF  04
0524:  BSF    03.7
0525:  MOVF   25,W
0526:  MOVWF  00
....................             maskovadlo = 0;                           //smaz maskovadlo 
0527:  CLRF   26
....................             } 
....................          } 
0528:  INCF   21,F
0529:  GOTO   4B5
....................          odp[pom]='\0';  
052A:  MOVLW  10
052B:  ADDWF  21,W
052C:  MOVWF  04
052D:  BSF    03.7
052E:  CLRF   00
....................        
....................       /*lcd_gotoxy(1,3); 
....................       printf(lcd_putc,"%u %u %u %u",odp[0],odp[1],odp[2],odp[3]);   */ 
....................    lcd_init(); 
052F:  CALL   189
....................       lcd_gotoxy(1,1); 
0530:  MOVLW  01
0531:  BSF    03.5
0532:  BSF    03.6
0533:  MOVWF  1A
0534:  MOVWF  1B
0535:  BCF    03.5
0536:  BCF    03.6
0537:  CALL   23E
....................       printf(lcd_putc,"\fPrijata SMS s textem",); 
0538:  CLRF   28
0539:  MOVF   28,W
053A:  CALL   062
053B:  INCF   28,F
053C:  MOVWF  77
053D:  BSF    03.5
053E:  BSF    03.6
053F:  MOVWF  19
0540:  BCF    03.5
0541:  BCF    03.6
0542:  CALL   273
0543:  MOVLW  15
0544:  SUBWF  28,W
0545:  BTFSS  03.2
0546:  GOTO   539
....................       lcd_gotoxy(9,3); 
0547:  MOVLW  09
0548:  BSF    03.5
0549:  BSF    03.6
054A:  MOVWF  1A
054B:  MOVLW  03
054C:  MOVWF  1B
054D:  BCF    03.5
054E:  BCF    03.6
054F:  CALL   23E
....................       printf(lcd_putc,"%s",odp);  
0550:  MOVLW  10
0551:  MOVWF  04
0552:  BSF    03.7
0553:  MOVLW  00
0554:  IORWF  00,W
0555:  BTFSC  03.2
0556:  GOTO   56B
0557:  CLRF   29
0558:  MOVF   04,W
0559:  MOVWF  28
055A:  BCF    29.0
055B:  BTFSC  03.7
055C:  BSF    29.0
055D:  MOVF   00,W
055E:  BSF    03.5
055F:  BSF    03.6
0560:  MOVWF  19
0561:  BCF    03.5
0562:  BCF    03.6
0563:  CALL   273
0564:  MOVF   28,W
0565:  MOVWF  04
0566:  BCF    03.7
0567:  BTFSC  29.0
0568:  BSF    03.7
0569:  INCF   04,F
056A:  GOTO   553
....................       output_low(PIN_A4) ; 
056B:  BSF    03.5
056C:  BCF    05.4
056D:  BCF    03.5
056E:  BCF    05.4
....................       delay_ms(1000); 
056F:  MOVLW  04
0570:  MOVWF  28
0571:  MOVLW  FA
0572:  BSF    03.5
0573:  BSF    03.6
0574:  MOVWF  1A
0575:  BCF    03.5
0576:  BCF    03.6
0577:  CALL   119
0578:  DECFSZ 28,F
0579:  GOTO   571
....................       output_high(PIN_A4); 
057A:  BSF    03.5
057B:  BCF    05.4
057C:  BCF    03.5
057D:  BSF    05.4
....................  
.................... //!!!      fprintf(MOBIL,"AT+CMGD=1\r");          //smaz prijatou SMSku 
....................      
....................       if (odp[0] > 64 && odp[0] < 91 ) 
057E:  BSF    03.6
057F:  MOVF   10,W
0580:  SUBLW  40
0581:  BTFSC  03.0
0582:  GOTO   589
0583:  MOVF   10,W
0584:  SUBLW  5A
0585:  BTFSS  03.0
0586:  GOTO   589
....................          { 
....................          odp[0] += 32; 
0587:  MOVLW  20
0588:  ADDWF  10,F
....................          } 
....................      
....................       if (odp[1] > 64 && odp[1] < 91 ) 
0589:  MOVF   11,W
058A:  SUBLW  40
058B:  BTFSC  03.0
058C:  GOTO   593
058D:  MOVF   11,W
058E:  SUBLW  5A
058F:  BTFSS  03.0
0590:  GOTO   593
....................          { 
....................          odp[1] += 32; 
0591:  MOVLW  20
0592:  ADDWF  11,F
....................          } 
....................      
....................       if (odp[2] > 64 && odp[2] < 91 ) 
0593:  MOVF   12,W
0594:  SUBLW  40
0595:  BTFSC  03.0
0596:  GOTO   59D
0597:  MOVF   12,W
0598:  SUBLW  5A
0599:  BTFSS  03.0
059A:  GOTO   59D
....................          { 
....................          odp[2] += 32; 
059B:  MOVLW  20
059C:  ADDWF  12,F
....................          } 
....................      
....................       if (odp[3] > 64 && odp[3] < 91 ) 
059D:  MOVF   13,W
059E:  SUBLW  40
059F:  BTFSC  03.0
05A0:  GOTO   5A7
05A1:  MOVF   13,W
05A2:  SUBLW  5A
05A3:  BTFSS  03.0
05A4:  GOTO   5A7
....................          { 
....................          odp[3] += 32; 
05A5:  MOVLW  20
05A6:  ADDWF  13,F
....................          } 
....................      
....................       lcd_gotoxy(1,1); 
05A7:  MOVLW  01
05A8:  BSF    03.5
05A9:  MOVWF  1A
05AA:  MOVWF  1B
05AB:  BCF    03.5
05AC:  BCF    03.6
05AD:  CALL   23E
....................       printf(lcd_putc,"\f Odstraneni velkych",); 
05AE:  CLRF   28
05AF:  MOVF   28,W
05B0:  CALL   07C
05B1:  INCF   28,F
05B2:  MOVWF  77
05B3:  BSF    03.5
05B4:  BSF    03.6
05B5:  MOVWF  19
05B6:  BCF    03.5
05B7:  BCF    03.6
05B8:  CALL   273
05B9:  MOVLW  14
05BA:  SUBWF  28,W
05BB:  BTFSS  03.2
05BC:  GOTO   5AF
....................       lcd_gotoxy(1,2); 
05BD:  MOVLW  01
05BE:  BSF    03.5
05BF:  BSF    03.6
05C0:  MOVWF  1A
05C1:  MOVLW  02
05C2:  MOVWF  1B
05C3:  BCF    03.5
05C4:  BCF    03.6
05C5:  CALL   23E
....................       printf(lcd_putc,"       pismen"); 
05C6:  CLRF   28
05C7:  MOVF   28,W
05C8:  CALL   095
05C9:  INCF   28,F
05CA:  MOVWF  77
05CB:  BSF    03.5
05CC:  BSF    03.6
05CD:  MOVWF  19
05CE:  BCF    03.5
05CF:  BCF    03.6
05D0:  CALL   273
05D1:  MOVLW  0D
05D2:  SUBWF  28,W
05D3:  BTFSS  03.2
05D4:  GOTO   5C7
....................       lcd_gotoxy(9,4); 
05D5:  MOVLW  09
05D6:  BSF    03.5
05D7:  BSF    03.6
05D8:  MOVWF  1A
05D9:  MOVLW  04
05DA:  MOVWF  1B
05DB:  BCF    03.5
05DC:  BCF    03.6
05DD:  CALL   23E
....................       printf(lcd_putc,"%s",odp);  
05DE:  MOVLW  10
05DF:  MOVWF  04
05E0:  BSF    03.7
05E1:  MOVLW  00
05E2:  IORWF  00,W
05E3:  BTFSC  03.2
05E4:  GOTO   5F9
05E5:  CLRF   29
05E6:  MOVF   04,W
05E7:  MOVWF  28
05E8:  BCF    29.0
05E9:  BTFSC  03.7
05EA:  BSF    29.0
05EB:  MOVF   00,W
05EC:  BSF    03.5
05ED:  BSF    03.6
05EE:  MOVWF  19
05EF:  BCF    03.5
05F0:  BCF    03.6
05F1:  CALL   273
05F2:  MOVF   28,W
05F3:  MOVWF  04
05F4:  BCF    03.7
05F5:  BTFSC  29.0
05F6:  BSF    03.7
05F7:  INCF   04,F
05F8:  GOTO   5E1
....................       output_low(PIN_A4) ; 
05F9:  BSF    03.5
05FA:  BCF    05.4
05FB:  BCF    03.5
05FC:  BCF    05.4
....................       delay_ms(1000); 
05FD:  MOVLW  04
05FE:  MOVWF  28
05FF:  MOVLW  FA
0600:  BSF    03.5
0601:  BSF    03.6
0602:  MOVWF  1A
0603:  BCF    03.5
0604:  BCF    03.6
0605:  CALL   119
0606:  DECFSZ 28,F
0607:  GOTO   5FF
....................       output_high(PIN_A4); 
0608:  BSF    03.5
0609:  BCF    05.4
060A:  BCF    03.5
060B:  BSF    05.4
....................      
....................  
.................... //!!!KAKL 
....................       fprintf(VRTULE,"%s",odp); 
060C:  MOVLW  10
060D:  MOVWF  04
060E:  BSF    03.7
060F:  MOVLW  00
0610:  IORWF  00,W
0611:  BTFSC  03.2
0612:  GOTO   627
0613:  CLRF   29
0614:  MOVF   04,W
0615:  MOVWF  28
0616:  BCF    29.0
0617:  BTFSC  03.7
0618:  BSF    29.0
0619:  MOVF   00,W
061A:  BSF    03.5
061B:  BSF    03.6
061C:  MOVWF  19
061D:  BCF    03.5
061E:  BCF    03.6
061F:  GOTO   2C2
0620:  MOVF   28,W
0621:  MOVWF  04
0622:  BCF    03.7
0623:  BTFSC  29.0
0624:  BSF    03.7
0625:  INCF   04,F
0626:  GOTO   60F
....................  
....................  
....................       if (odp[0] == 122 && odp[1] == 97 && odp[2] == 112 && odp[3] == 49)    //odp=="zap1" 
0627:  BSF    03.6
0628:  MOVF   10,W
0629:  SUBLW  7A
062A:  BTFSS  03.2
062B:  GOTO   63C
062C:  MOVF   11,W
062D:  SUBLW  61
062E:  BTFSS  03.2
062F:  GOTO   63C
0630:  MOVF   12,W
0631:  SUBLW  70
0632:  BTFSS  03.2
0633:  GOTO   63C
0634:  MOVF   13,W
0635:  SUBLW  31
0636:  BTFSS  03.2
0637:  GOTO   63C
....................          { 
....................          status=1; 
0638:  MOVLW  01
0639:  BCF    03.6
063A:  MOVWF  27
063B:  BSF    03.6
....................          } 
....................      
....................       if (odp[0] == 118 && odp[1] == 121 && odp[2] == 112 && odp[3]== 49)    //odp=="vyp1" 
063C:  MOVF   10,W
063D:  SUBLW  76
063E:  BTFSS  03.2
063F:  GOTO   650
0640:  MOVF   11,W
0641:  SUBLW  79
0642:  BTFSS  03.2
0643:  GOTO   650
0644:  MOVF   12,W
0645:  SUBLW  70
0646:  BTFSS  03.2
0647:  GOTO   650
0648:  MOVF   13,W
0649:  SUBLW  31
064A:  BTFSS  03.2
064B:  GOTO   650
....................          { 
....................          status=2; 
064C:  MOVLW  02
064D:  BCF    03.6
064E:  MOVWF  27
064F:  BSF    03.6
....................          } 
....................      
....................       if (odp[0] == 97 && odp[1] == 104 && odp[2] == 111 && odp[3]== 106)    //odp=="ahoj" 
0650:  MOVF   10,W
0651:  SUBLW  61
0652:  BTFSS  03.2
0653:  GOTO   664
0654:  MOVF   11,W
0655:  SUBLW  68
0656:  BTFSS  03.2
0657:  GOTO   664
0658:  MOVF   12,W
0659:  SUBLW  6F
065A:  BTFSS  03.2
065B:  GOTO   664
065C:  MOVF   13,W
065D:  SUBLW  6A
065E:  BTFSS  03.2
065F:  GOTO   664
....................          { 
....................          status=3; 
0660:  MOVLW  03
0661:  BCF    03.6
0662:  MOVWF  27
0663:  BSF    03.6
....................          } 
....................             
....................       switch (status)  
....................       { 
0664:  BCF    03.6
0665:  MOVF   27,W
0666:  XORLW  01
0667:  BTFSC  03.2
0668:  GOTO   670
0669:  XORLW  03
066A:  BTFSC  03.2
066B:  GOTO   694
066C:  XORLW  01
066D:  BTFSC  03.2
066E:  GOTO   6B8
066F:  GOTO   6D8
....................  
....................          case 1:  output_low(zar1); 
0670:  BSF    03.5
0671:  BCF    05.3
0672:  BCF    03.5
0673:  BCF    05.3
....................                   printf(lcd_putc,"\f"); 
0674:  MOVLW  0C
0675:  BSF    03.5
0676:  BSF    03.6
0677:  MOVWF  19
0678:  BCF    03.5
0679:  BCF    03.6
067A:  CALL   273
....................                   lcd_gotoxy(1,2); 
067B:  MOVLW  01
067C:  BSF    03.5
067D:  BSF    03.6
067E:  MOVWF  1A
067F:  MOVLW  02
0680:  MOVWF  1B
0681:  BCF    03.5
0682:  BCF    03.6
0683:  CALL   23E
....................                   printf(lcd_putc," Zapnuto zarizeni 1"); 
0684:  CLRF   28
0685:  MOVF   28,W
0686:  CALL   0A7
0687:  INCF   28,F
0688:  MOVWF  77
0689:  BSF    03.5
068A:  BSF    03.6
068B:  MOVWF  19
068C:  BCF    03.5
068D:  BCF    03.6
068E:  CALL   273
068F:  MOVLW  13
0690:  SUBWF  28,W
0691:  BTFSS  03.2
0692:  GOTO   685
....................                   break; 
0693:  GOTO   710
....................  
....................          case 2:  output_high(zar1); 
0694:  BSF    03.5
0695:  BCF    05.3
0696:  BCF    03.5
0697:  BSF    05.3
....................                   printf(lcd_putc,"\f"); 
0698:  MOVLW  0C
0699:  BSF    03.5
069A:  BSF    03.6
069B:  MOVWF  19
069C:  BCF    03.5
069D:  BCF    03.6
069E:  CALL   273
....................                   lcd_gotoxy(1,2); 
069F:  MOVLW  01
06A0:  BSF    03.5
06A1:  BSF    03.6
06A2:  MOVWF  1A
06A3:  MOVLW  02
06A4:  MOVWF  1B
06A5:  BCF    03.5
06A6:  BCF    03.6
06A7:  CALL   23E
....................                   printf(lcd_putc," Vypnuto zarizeni 1"); 
06A8:  CLRF   28
06A9:  MOVF   28,W
06AA:  CALL   0BF
06AB:  INCF   28,F
06AC:  MOVWF  77
06AD:  BSF    03.5
06AE:  BSF    03.6
06AF:  MOVWF  19
06B0:  BCF    03.5
06B1:  BCF    03.6
06B2:  CALL   273
06B3:  MOVLW  13
06B4:  SUBWF  28,W
06B5:  BTFSS  03.2
06B6:  GOTO   6A9
....................                   break; 
06B7:  GOTO   710
....................      
....................          case 3:  printf(lcd_putc,"\f"); 
06B8:  MOVLW  0C
06B9:  BSF    03.5
06BA:  BSF    03.6
06BB:  MOVWF  19
06BC:  BCF    03.5
06BD:  BCF    03.6
06BE:  CALL   273
....................                   lcd_gotoxy(1,2); 
06BF:  MOVLW  01
06C0:  BSF    03.5
06C1:  BSF    03.6
06C2:  MOVWF  1A
06C3:  MOVLW  02
06C4:  MOVWF  1B
06C5:  BCF    03.5
06C6:  BCF    03.6
06C7:  CALL   23E
....................                   printf(lcd_putc,"  Preji hezky den!"); 
06C8:  CLRF   28
06C9:  MOVF   28,W
06CA:  CALL   0D7
06CB:  INCF   28,F
06CC:  MOVWF  77
06CD:  BSF    03.5
06CE:  BSF    03.6
06CF:  MOVWF  19
06D0:  BCF    03.5
06D1:  BCF    03.6
06D2:  CALL   273
06D3:  MOVLW  12
06D4:  SUBWF  28,W
06D5:  BTFSS  03.2
06D6:  GOTO   6C9
....................                   break; 
06D7:  GOTO   710
....................      
....................          default: printf(lcd_putc,"\f"); 
06D8:  MOVLW  0C
06D9:  BSF    03.5
06DA:  BSF    03.6
06DB:  MOVWF  19
06DC:  BCF    03.5
06DD:  BCF    03.6
06DE:  CALL   273
....................                   lcd_gotoxy(1,2); 
06DF:  MOVLW  01
06E0:  BSF    03.5
06E1:  BSF    03.6
06E2:  MOVWF  1A
06E3:  MOVLW  02
06E4:  MOVWF  1B
06E5:  BCF    03.5
06E6:  BCF    03.6
06E7:  CALL   23E
....................                   printf(lcd_putc,"    Prikaz nebyl"); 
06E8:  CLRF   28
06E9:  MOVF   28,W
06EA:  CALL   0EE
06EB:  INCF   28,F
06EC:  MOVWF  77
06ED:  BSF    03.5
06EE:  BSF    03.6
06EF:  MOVWF  19
06F0:  BCF    03.5
06F1:  BCF    03.6
06F2:  CALL   273
06F3:  MOVLW  10
06F4:  SUBWF  28,W
06F5:  BTFSS  03.2
06F6:  GOTO   6E9
....................                   lcd_gotoxy(1,3); 
06F7:  MOVLW  01
06F8:  BSF    03.5
06F9:  BSF    03.6
06FA:  MOVWF  1A
06FB:  MOVLW  03
06FC:  MOVWF  1B
06FD:  BCF    03.5
06FE:  BCF    03.6
06FF:  CALL   23E
....................                   printf(lcd_putc,"      rozeznan"); 
0700:  CLRF   28
0701:  MOVF   28,W
0702:  CALL   106
0703:  INCF   28,F
0704:  MOVWF  77
0705:  BSF    03.5
0706:  BSF    03.6
0707:  MOVWF  19
0708:  BCF    03.5
0709:  BCF    03.6
070A:  CALL   273
070B:  MOVLW  0E
070C:  SUBWF  28,W
070D:  BTFSS  03.2
070E:  GOTO   701
....................                   break;  
070F:  GOTO   710
....................       } 
....................       delay_ms(1000); 
0710:  MOVLW  04
0711:  MOVWF  28
0712:  MOVLW  FA
0713:  BSF    03.5
0714:  BSF    03.6
0715:  MOVWF  1A
0716:  BCF    03.5
0717:  BCF    03.6
0718:  CALL   119
0719:  DECFSZ 28,F
071A:  GOTO   712
....................    } 
....................  
....................  } 
071B:  GOTO   353
.................... } 
071C:  SLEEP

Configuration Fuses:
   Word  1: 3F3A   HS NOWDT NOPUT NODEBUG NOPROTECT NOBROWNOUT NOLVP NOCPD NOWRT