Rev Author Line No. Line
239 kaklik 1 CCS PCM C Compiler, Version 3.245, 27853 08-V-08 23:27
223 kapl 2  
239 kaklik 3 Filename: D:\MLAB_E\projekty\Ovladani_mobilnim_telefonem\SW\final\main.lst
223 kapl 4  
239 kaklik 5 ROM used: 1505 words (18%)
238 kaklik 6 Largest free fragment is 2048
239 kaklik 7 RAM used: 56 (32%) at main() level
8 64 (37%) worst case
223 kapl 9 Stack: 4 locations
10  
11 *
12 0000: MOVLW 00
13 0001: MOVWF 0A
239 kaklik 14 0002: GOTO 29D
223 kapl 15 0003: NOP
16 .................... #include ".\main.h"
238 kaklik 17 .................... #include <16F876A.h>
18 .................... //////// Standard Header file for the PIC16F876A device ////////////////
19 .................... #device PIC16F876A
223 kapl 20 .................... #list
21 ....................
22 .................... #device adc=8
23 ....................
238 kaklik 24 .................... #FUSES NOWDT //Watch Dog Timer
25 .................... #FUSES HS//XT //Crystal osc <= 4mhz
223 kapl 26 .................... #FUSES NOPUT //No Power Up Timer
27 .................... #FUSES NOPROTECT //Code not protected from reading
28 .................... #FUSES NODEBUG //No Debug mode for ICD
29 .................... #FUSES NOBROWNOUT //No brownout reset
30 .................... #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
31 .................... #FUSES NOCPD //No EE protection
32 .................... #FUSES NOWRT //Program memory not write protected
33 ....................
238 kaklik 34 .................... #use delay(clock=18432000,RESTART_WDT)
223 kapl 35 *
239 kaklik 36 0126: MOVLW 52
37 0127: MOVWF 04
38 0128: MOVF 00,W
39 0129: BTFSC 03.2
40 012A: GOTO 13B
41 012B: MOVLW 05
42 012C: MOVWF 78
43 012D: MOVLW BF
44 012E: MOVWF 77
45 012F: CLRWDT
46 0130: DECFSZ 77,F
47 0131: GOTO 12F
48 0132: DECFSZ 78,F
49 0133: GOTO 12D
50 0134: MOVLW F9
51 0135: MOVWF 77
52 0136: DECFSZ 77,F
53 0137: GOTO 136
54 0138: CLRWDT
55 0139: DECFSZ 00,F
56 013A: GOTO 12B
57 013B: RETLW 00
238 kaklik 58 *
239 kaklik 59 0153: MOVLW 04
60 0154: SUBWF 58,F
61 0155: BTFSS 03.0
62 0156: GOTO 16B
63 0157: MOVLW 58
64 0158: MOVWF 04
65 0159: MOVLW F8
66 015A: ANDWF 00,F
67 015B: BCF 03.0
68 015C: RRF 00,F
69 015D: RRF 00,F
70 015E: RRF 00,F
71 015F: MOVF 00,W
72 0160: BTFSC 03.2
73 0161: GOTO 16B
74 0162: MOVLW 0A
75 0163: MOVWF 77
76 0164: DECFSZ 77,F
77 0165: GOTO 164
78 0166: NOP
79 0167: NOP
80 0168: CLRWDT
81 0169: DECFSZ 00,F
82 016A: GOTO 162
83 016B: BCF 0A.3
84 016C: BCF 0A.4
85 016D: GOTO 183 (RETURN)
238 kaklik 86 .................... #use rs232(STREAM=MOBIL,baud=19200,force_sw,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
87 *
239 kaklik 88 01C3: BCF 20.6
89 01C4: MOVF 20,W
90 01C5: BSF 03.5
91 01C6: MOVWF 07
92 01C7: BCF 03.5
93 01C8: BCF 07.6
94 01C9: MOVLW 08
95 01CA: MOVWF 78
96 01CB: NOP
97 01CC: NOP
98 01CD: NOP
99 01CE: BSF 78.7
100 01CF: GOTO 1DF
101 01D0: BCF 78.7
102 01D1: RRF 51,F
103 01D2: BTFSC 03.0
104 01D3: BSF 07.6
105 01D4: BTFSS 03.0
106 01D5: BCF 07.6
107 01D6: BSF 78.6
108 01D7: GOTO 1DF
109 01D8: BCF 78.6
110 01D9: DECFSZ 78,F
111 01DA: GOTO 1D1
112 01DB: NOP
113 01DC: NOP
114 01DD: NOP
115 01DE: BSF 07.6
116 01DF: MOVLW 49
117 01E0: MOVWF 04
118 01E1: DECFSZ 04,F
119 01E2: GOTO 1E1
120 01E3: NOP
121 01E4: NOP
122 01E5: NOP
123 01E6: BTFSC 78.7
124 01E7: GOTO 1D0
125 01E8: BTFSC 78.6
126 01E9: GOTO 1D8
127 01EA: BCF 0A.3
128 01EB: BCF 0A.4
129 01EC: GOTO 324 (RETURN)
130 01ED: MOVLW 08
131 01EE: MOVWF 77
132 01EF: BSF 20.7
133 01F0: MOVF 20,W
238 kaklik 134 01F1: BSF 03.5
239 kaklik 135 01F2: MOVWF 07
136 01F3: BCF 03.5
137 01F4: BTFSS 07.7
138 01F5: GOTO 1F8
139 01F6: BSF 03.5
140 01F7: GOTO 1F3
141 01F8: CLRF 50
142 01F9: BSF 77.7
143 01FA: GOTO 209
144 01FB: BCF 77.7
145 01FC: GOTO 209
146 01FD: BCF 03.0
147 01FE: BTFSC 07.7
148 01FF: BSF 03.0
149 0200: RRF 50,F
150 0201: BSF 77.6
151 0202: GOTO 209
152 0203: BCF 77.6
153 0204: DECFSZ 77,F
154 0205: GOTO 1FD
155 0206: MOVF 50,W
156 0207: MOVWF 78
157 0208: GOTO 216
158 0209: MOVLW 49
159 020A: BTFSC 77.7
160 020B: MOVLW 14
161 020C: MOVWF 78
162 020D: DECFSZ 78,F
163 020E: GOTO 20D
164 020F: NOP
165 0210: NOP
166 0211: BTFSC 77.7
167 0212: GOTO 1FB
168 0213: BTFSC 77.6
169 0214: GOTO 203
170 0215: GOTO 1FD
171 0216: RETLW 00
238 kaklik 172 *
239 kaklik 173 02B1: MOVLW FF
174 02B2: BCF 03.5
175 02B3: MOVWF 20
238 kaklik 176 .................... #use rs232(STREAM=VRTULE,baud=600,parity=N,xmit=PIN_B2,rcv=PIN_B4,bits=8)
177 *
239 kaklik 178 026F: BSF 03.5
179 0270: BCF 06.2
180 0271: BCF 03.5
181 0272: BCF 06.2
182 0273: MOVLW 08
183 0274: MOVWF 78
184 0275: NOP
185 0276: NOP
186 0277: NOP
187 0278: BSF 78.7
188 0279: GOTO 289
189 027A: BCF 78.7
190 027B: RRF 51,F
191 027C: BTFSC 03.0
192 027D: BSF 06.2
193 027E: BTFSS 03.0
194 027F: BCF 06.2
195 0280: BSF 78.6
196 0281: GOTO 289
197 0282: BCF 78.6
198 0283: DECFSZ 78,F
199 0284: GOTO 27B
200 0285: NOP
201 0286: NOP
202 0287: NOP
203 0288: BSF 06.2
204 0289: MOVLW 09
205 028A: MOVWF 77
206 028B: CLRF 04
207 028C: DECFSZ 04,F
208 028D: GOTO 28C
209 028E: DECFSZ 77,F
210 028F: GOTO 28B
211 0290: MOVLW F0
212 0291: MOVWF 04
213 0292: DECFSZ 04,F
214 0293: GOTO 292
215 0294: NOP
216 0295: NOP
217 0296: BTFSC 78.7
218 0297: GOTO 27A
219 0298: BTFSC 78.6
220 0299: GOTO 282
221 029A: BCF 0A.3
222 029B: BCF 0A.4
223 029C: GOTO 514 (RETURN)
223 kapl 224 ....................
225 ....................
226 ....................
227 .................... #define LCD_RS PIN_B1 // rizeni registru LCD displeje
228 .................... #define LCD_E PIN_B0 // enable LCD displeje
229 .................... #define LCD_DATA_LSB PIN_C0 // pripojeni LSB bitu datoveho portu LCD displeje (celkem 4 bity vzestupne za sebou)
230 .................... #define zar1 PIN_A3
231 ....................
238 kaklik 232 .................... #bit SPEN=0x18.7
233 .................... #bit RCIF=0x0C.5
234 ....................
223 kapl 235 .................... #include "mylcd.c"
236 .................... // LCD modul pro ovladani dvouradkoveho LCD modulu se standardnim Hitachi radicem
237 .................... // (c)miho 2002
238 .................... //
239 .................... // Historie:
240 .................... //
241 .................... // 0.0 Uvodni verze se snadnou definici portu LCD displeje
242 .................... //
243 .................... //
244 .................... // Funkce:
245 .................... //
246 .................... // lcd_init() inicializuje LCD displej a porty, nutno volat jako prvni
247 .................... //
248 .................... // lcd_putc(c) zapis snaku do lcd displeje, zpracovava nasledujici ridici znaky
249 .................... // \f = \x0C - nova stranka - smazani displeje
250 .................... // \n = \x0A - odradkovani (prechod na druhou radku)
251 .................... // \b = \x08 - backspace - posunuti kurzoru o 1 pozici zpet
252 .................... // \r = \x0D - goto home to position 1,1
253 .................... // \0 .. \7 - definovatelne znaky v pozicich 0 az 7 v CGRAM
254 .................... // \20 .. \27 - alternativne zapsane znaky (oktalove) v pozicich 0 az 7 CGRAM
255 .................... // Pozor na to, ze funkce printf konci tisk pokud narazi na \0 (konec retezce)
256 .................... //
257 .................... // lcd_gotoxy(x,y) presune kurzor na uvedenou adresu
258 .................... // nekontroluje parametry
259 .................... //
260 .................... // lcd_cursor_on zapne kurzor
261 .................... // lcd_cursor_off vypne kurzor
262 .................... //
263 .................... // lcd_define_char(Index, Def) Makro, ktere definuje znaky od pozice Index obsahem definicniho
264 .................... // retezce Def. Kazdych 8 znaku retezce Def definuje dalsi znak v CGRAM.
265 .................... // Kapacita CGRAM je celkem 8 znaku s indexem 0 az 7.
266 .................... // Na konci se provede lcd_gotoxy(1,1).
267 .................... // Na konci teto knihovny je priklad pouziti definovanych znaku
268 .................... //
269 .................... // Definice portu:
270 .................... //
271 .................... // #DEFINE LCD_RS PIN_B2 // rizeni registru LCD displeje
272 .................... // #DEFINE LCD_E PIN_B1 // enable LCD displeje
273 .................... // #DEFINE LCD_DATA_LSB PIN_C2 // pripojeni LSB bitu datoveho portu LCD displeje (celkem 4 bity vzestupne za sebou)
274 ....................
275 ....................
276 ....................
277 ....................
278 .................... // Privatni sekce, cist jen v pripade, ze neco nefunguje
279 ....................
280 ....................
281 ....................
282 ....................
283 .................... // Generovane defince portu pro ucely teto knihovny aby kod generoval spravne IO operace a soucasne
284 .................... // bylo mozne jednoduse deklarovat pripojene piny LCD displeje pri pouziti teto knihovny. Problem spociva
285 .................... // v tom, ze se musi spravne ridit smery portu a soucasne datovy port zabira jen 4 bity ze zadaneho portu
286 .................... //
287 .................... #DEFINE LCD_SHIFT (LCD_DATA_LSB&7) // pocet bitu posuvu dataoveho kanalu v datovem portu
288 .................... #DEFINE LCD_PORT (LCD_DATA_LSB>>3) // adresa LCD datoveho portu
289 .................... #DEFINE LCD_TRIS (LCD_PORT+0x80) // adresa prislusneho TRIS registru
290 .................... #DEFINE LCD_MASK (0xF<<LCD_SHIFT) // maska platnych bitu
291 .................... //
292 .................... #IF LCD_SHIFT>4 // kontrola mezi
293 .................... #ERROR LCD data port LSB bit not in range 0..4
294 .................... #ENDIF
295 ....................
296 ....................
297 .................... // Definice konstant pro LCD display
298 .................... //
299 .................... #define LCD_CURSOR_ON_ 0x0E // kurzor jako blikajici radka pod znakem
300 .................... #define LCD_CURSOR_OFF_ 0x0C // zadny kurzor
301 .................... #define LCD_LINE_2 0x40 // adresa 1. znaku 2. radky
302 ....................
303 ....................
304 .................... // Definice rezimu LCD displeje
305 .................... //
306 .................... BYTE const LCD_INIT_STRING[4] =
307 .................... {
308 .................... 0x28, // intrfejs 4 bity, 2 radky, font 5x7
309 .................... LCD_CURSOR_OFF_, // display on, kurzor off,
310 .................... 0x01, // clear displeje
311 .................... 0x06 // inkrement pozice kurzoru (posun kurzoru doprava)
312 .................... };
313 ....................
314 ....................
315 .................... // Odesle nibble do displeje (posle data a klikne signalem e)
316 .................... //
317 .................... void lcd_send_nibble( BYTE n )
318 .................... {
319 .................... *LCD_PORT = (*LCD_PORT & ~LCD_MASK) | ((n << LCD_SHIFT) & LCD_MASK); // nastav datove bity portu a ostatni zachovej
238 kaklik 320 *
239 kaklik 321 013C: MOVF 07,W
322 013D: ANDLW F0
323 013E: MOVWF 59
324 013F: MOVF 58,W
325 0140: ANDLW 0F
326 0141: IORWF 59,W
327 0142: MOVWF 07
223 kapl 328 .................... output_bit(LCD_E,1); // vzestupna hrana
239 kaklik 329 0143: BSF 06.0
330 0144: BSF 03.5
331 0145: BCF 06.0
223 kapl 332 .................... delay_us(100); // pockej alespon 450ns od e nebo alespon 195ns od dat
239 kaklik 333 0146: CLRWDT
334 0147: MOVLW 98
335 0148: MOVWF 77
336 0149: DECFSZ 77,F
337 014A: GOTO 149
338 014B: NOP
339 014C: NOP
223 kapl 340 .................... output_bit(LCD_E,0); // sestupna hrana (minimalni perioda e je 1us)
239 kaklik 341 014D: BCF 03.5
342 014E: BCF 06.0
343 014F: BSF 03.5
344 0150: BCF 06.0
223 kapl 345 .................... }
239 kaklik 346 0151: BCF 03.5
347 0152: RETLW 00
223 kapl 348 ....................
349 ....................
350 .................... // Odesle bajt do registru LCD
351 .................... //
352 .................... // Pokud je Adr=0 .. instrukcni registr
353 .................... // Pokud je Adr=1 .. datovy registr
354 .................... //
355 .................... void lcd_send_byte( BOOLEAN Adr, BYTE n )
356 .................... {
357 .................... output_bit(LCD_RS,Adr); // vyber registr
239 kaklik 358 *
359 016E: MOVF 56,F
360 016F: BTFSS 03.2
361 0170: GOTO 173
362 0171: BCF 06.1
363 0172: GOTO 174
364 0173: BSF 06.1
365 0174: BSF 03.5
366 0175: BCF 06.1
223 kapl 367 .................... swap(n);
239 kaklik 368 0176: BCF 03.5
369 0177: SWAPF 57,F
223 kapl 370 .................... lcd_send_nibble(n); // posli horni pulku bajtu
239 kaklik 371 0178: MOVF 57,W
372 0179: MOVWF 58
373 017A: CALL 13C
223 kapl 374 .................... swap(n);
239 kaklik 375 017B: SWAPF 57,F
223 kapl 376 .................... lcd_send_nibble(n); // posli spodni pulku bajtu
239 kaklik 377 017C: MOVF 57,W
378 017D: MOVWF 58
379 017E: CALL 13C
223 kapl 380 .................... delay_us(200); // minimalni doba na provedeni prikazu
239 kaklik 381 017F: CLRWDT
382 0180: MOVLW C7
383 0181: MOVWF 58
384 0182: GOTO 153
223 kapl 385 .................... }
239 kaklik 386 0183: RETLW 00
223 kapl 387 ....................
388 ....................
389 .................... // Provede inicializaci LCD displeje, smaze obsah a nastavi mod displeje
390 .................... //
391 .................... // Tato procedura se musi volat pred pouzitim ostatnich lcd_ procedur
392 .................... //
393 .................... void lcd_init()
394 .................... {
395 ....................
396 .................... int i; // pocitadlo cyklu
397 ....................
398 .................... delay_ms(20); // spozdeni pro provedeni startu displeje po zapnuti napajeni
239 kaklik 399 0184: MOVLW 14
400 0185: MOVWF 52
401 0186: CALL 126
223 kapl 402 ....................
403 .................... *LCD_TRIS = *LCD_TRIS & ~LCD_MASK; // nuluj odpovidajici bity tris registru datoveho portu LCD
239 kaklik 404 0187: MOVLW F0
405 0188: BSF 03.5
406 0189: ANDWF 07,F
223 kapl 407 ....................
408 .................... output_bit(LCD_RS,0); // nastav jako vystup a nastav klidovy stav
239 kaklik 409 018A: BCF 03.5
410 018B: BCF 06.1
411 018C: BSF 03.5
412 018D: BCF 06.1
223 kapl 413 .................... output_bit(LCD_E,0); // nastav jako vystup a nastav klidovy stav
239 kaklik 414 018E: BCF 03.5
415 018F: BCF 06.0
416 0190: BSF 03.5
417 0191: BCF 06.0
223 kapl 418 ....................
419 .................... for (i=0; i<3; i++) // nastav lcd do rezimu 8 bitu sbernice
239 kaklik 420 0192: BCF 03.5
421 0193: CLRF 50
422 0194: MOVF 50,W
423 0195: SUBLW 02
424 0196: BTFSS 03.0
425 0197: GOTO 1A0
223 kapl 426 .................... {
427 .................... delay_ms(2); // muze byt rozdelany prenos dat (2x 4 bity) nebo pomaly povel
239 kaklik 428 0198: MOVLW 02
429 0199: MOVWF 52
430 019A: CALL 126
223 kapl 431 .................... lcd_send_nibble(3); // rezim 8 bitu
239 kaklik 432 019B: MOVLW 03
433 019C: MOVWF 58
434 019D: CALL 13C
223 kapl 435 .................... }
239 kaklik 436 019E: INCF 50,F
437 019F: GOTO 194
223 kapl 438 ....................
439 .................... delay_us(40); // cas na zpracovani
239 kaklik 440 01A0: CLRWDT
441 01A1: MOVLW 3C
442 01A2: MOVWF 77
443 01A3: DECFSZ 77,F
444 01A4: GOTO 1A3
445 01A5: NOP
446 01A6: NOP
223 kapl 447 .................... lcd_send_nibble(2); // nastav rezim 4 bitu (plati od nasledujiciho prenosu)
239 kaklik 448 01A7: MOVLW 02
449 01A8: MOVWF 58
450 01A9: CALL 13C
223 kapl 451 .................... delay_us(40); // cas na zpracovani
239 kaklik 452 01AA: CLRWDT
453 01AB: MOVLW 3C
454 01AC: MOVWF 77
455 01AD: DECFSZ 77,F
456 01AE: GOTO 1AD
457 01AF: NOP
458 01B0: NOP
223 kapl 459 ....................
460 .................... for (i=0;i<3;i++) // proved inicializaci (nastaveni modu, smazani apod)
239 kaklik 461 01B1: CLRF 50
462 01B2: MOVF 50,W
463 01B3: SUBLW 02
464 01B4: BTFSS 03.0
465 01B5: GOTO 1C2
223 kapl 466 .................... {
467 .................... lcd_send_byte(0,LCD_INIT_STRING[i]);
239 kaklik 468 01B6: MOVF 50,W
469 01B7: CALL 004
470 01B8: MOVWF 51
471 01B9: CLRF 56
472 01BA: MOVF 51,W
473 01BB: MOVWF 57
474 01BC: CALL 16E
223 kapl 475 .................... delay_ms(2);
239 kaklik 476 01BD: MOVLW 02
477 01BE: MOVWF 52
478 01BF: CALL 126
223 kapl 479 .................... }
239 kaklik 480 01C0: INCF 50,F
481 01C1: GOTO 1B2
223 kapl 482 .................... }
239 kaklik 483 01C2: RETLW 00
223 kapl 484 ....................
485 ....................
486 .................... // Proved presun kurzoru
487 .................... //
488 .................... // Pozice 1.1 je domu
489 .................... //
490 .................... #separate
491 .................... void lcd_gotoxy( BYTE x, BYTE y)
492 .................... {
493 ....................
494 .................... BYTE Adr;
495 ....................
496 .................... switch(y)
497 .................... {
238 kaklik 498 *
239 kaklik 499 0217: MOVLW 01
500 0218: SUBWF 53,W
501 0219: ADDLW FC
502 021A: BTFSC 03.0
503 021B: GOTO 229
504 021C: ADDLW 04
505 021D: GOTO 234
223 kapl 506 .................... case 1: Adr=0; break;
239 kaklik 507 021E: CLRF 54
508 021F: GOTO 229
223 kapl 509 .................... case 2: Adr=0x40; break;
239 kaklik 510 0220: MOVLW 40
511 0221: MOVWF 54
512 0222: GOTO 229
223 kapl 513 .................... case 3: Adr=0x14; break;
239 kaklik 514 0223: MOVLW 14
515 0224: MOVWF 54
516 0225: GOTO 229
223 kapl 517 .................... case 4: Adr=0x54; break;
239 kaklik 518 0226: MOVLW 54
519 0227: MOVWF 54
520 0228: GOTO 229
223 kapl 521 .................... }
522 .................... Adr+=x-1;
239 kaklik 523 0229: MOVLW 01
524 022A: SUBWF 52,W
525 022B: ADDWF 54,F
223 kapl 526 ....................
527 .................... lcd_send_byte(0,0x80|Adr);
239 kaklik 528 022C: MOVF 54,W
529 022D: IORLW 80
530 022E: MOVWF 55
531 022F: CLRF 56
532 0230: MOVF 55,W
533 0231: MOVWF 57
534 0232: CALL 16E
223 kapl 535 .................... }
239 kaklik 536 0233: RETLW 00
223 kapl 537 ....................
538 ....................
539 .................... // Zapis znaku na displej, zpracovani ridicich znaku
540 .................... //
541 .................... #separate
542 .................... void lcd_putc( char c)
543 .................... {
544 ....................
545 .................... switch (c)
546 .................... {
547 *
239 kaklik 548 023C: MOVF 51,W
549 023D: XORLW 0C
550 023E: BTFSC 03.2
551 023F: GOTO 24A
552 0240: XORLW 06
553 0241: BTFSC 03.2
554 0242: GOTO 252
555 0243: XORLW 07
556 0244: BTFSC 03.2
557 0245: GOTO 258
558 0246: XORLW 05
559 0247: BTFSC 03.2
560 0248: GOTO 25D
561 0249: GOTO 262
223 kapl 562 .................... case '\f' : lcd_send_byte(0,1); // smaz displej
239 kaklik 563 024A: CLRF 56
564 024B: MOVLW 01
565 024C: MOVWF 57
566 024D: CALL 16E
223 kapl 567 .................... delay_ms(2);
239 kaklik 568 024E: MOVLW 02
569 024F: MOVWF 52
570 0250: CALL 126
223 kapl 571 .................... break;
239 kaklik 572 0251: GOTO 26E
223 kapl 573 .................... case '\n' : lcd_gotoxy(1,2); break; // presun se na 1. znak 2. radky
239 kaklik 574 0252: MOVLW 01
575 0253: MOVWF 52
576 0254: MOVLW 02
577 0255: MOVWF 53
578 0256: CALL 217
579 0257: GOTO 26E
223 kapl 580 .................... case '\r' : lcd_gotoxy(1,1); break; // presun home
239 kaklik 581 0258: MOVLW 01
582 0259: MOVWF 52
583 025A: MOVWF 53
584 025B: CALL 217
585 025C: GOTO 26E
223 kapl 586 .................... case '\b' : lcd_send_byte(0,0x10); break; // posun kurzor o 1 zpet
239 kaklik 587 025D: CLRF 56
588 025E: MOVLW 10
589 025F: MOVWF 57
590 0260: CALL 16E
591 0261: GOTO 26E
223 kapl 592 .................... default : if (c<0x20) c&=0x7; // preklopeni definovatelnych znaku na rozsah 0 az 0x1F
239 kaklik 593 0262: MOVF 51,W
594 0263: SUBLW 1F
595 0264: BTFSS 03.0
596 0265: GOTO 268
597 0266: MOVLW 07
598 0267: ANDWF 51,F
223 kapl 599 .................... lcd_send_byte(1,c); break; // zapis znak
239 kaklik 600 0268: MOVLW 01
601 0269: MOVWF 56
602 026A: MOVF 51,W
603 026B: MOVWF 57
604 026C: CALL 16E
605 026D: GOTO 26E
223 kapl 606 .................... }
607 .................... }
239 kaklik 608 026E: RETLW 00
223 kapl 609 ....................
610 ....................
611 .................... // Zapni kurzor
612 .................... //
613 .................... void lcd_cursor_on()
614 .................... {
615 .................... lcd_send_byte(0,LCD_CURSOR_ON_);
616 .................... }
617 ....................
618 ....................
619 .................... // Vypni kurzor
620 .................... //
621 .................... void lcd_cursor_off()
622 .................... {
623 .................... lcd_send_byte(0,LCD_CURSOR_OFF_);
624 .................... }
625 ....................
626 ....................
627 .................... // Definice vlastnich fontu
628 .................... //
629 .................... // Vlastnich definic muze byt jen 8 do pozic 0 az 7 pameti CGRAM radice lcd displeje
630 .................... // Pro snadne definovani jsou pripraveny nasledujici definice a na konci souboru je uveden
631 .................... // priklad pouziti definovanych znaku.
632 ....................
633 ....................
634 .................... // Pomocna procedura pro posilani ridicich dat do radice displeje
635 .................... //
636 .................... void lcd_putc2(int Data)
637 .................... {
638 .................... lcd_send_byte(1,Data);
639 .................... }
640 ....................
641 ....................
642 .................... // Pomocne definice pro programovani obsahu CGRAM
643 .................... //
644 .................... #DEFINE lcd_define_start(Code) lcd_send_byte(0,0x40+(Code<<3)); delay_ms(2)
645 .................... #DEFINE lcd_define_def(String) printf(lcd_putc2,String);
646 .................... #DEFINE lcd_define_end() lcd_send_byte(0,3); delay_ms(2)
647 ....................
648 ....................
649 .................... // Vlastni vykonne makro pro definovani fontu do pozice Index CGRAM s definicnim retezcem Def
650 .................... //
651 .................... #DEFINE lcd_define_char(Index, Def) lcd_define_start(Index); lcd_define_def(Def); lcd_define_end();
652 ....................
653 ....................
654 .................... // Pripravene definice fontu vybranych znaku
655 .................... // V tabulce nesmi byt 00 (konec retezce v printf()), misto toho davame 80
656 .................... //
657 .................... #DEFINE LCD_CHAR_BAT100 "\x0E\x1F\x1F\x1F\x1F\x1F\x1F\x1F" /* symbol plne baterie */
658 .................... #DEFINE LCD_CHAR_BAT50 "\x0E\x1F\x11\x11\x13\x17\x1F\x1F" /* symbol polovicni baterie */
659 .................... #DEFINE LCD_CHAR_BAT0 "\x0E\x1F\x11\x11\x11\x11\x11\x1F" /* symbol vybite baterie */
660 .................... #DEFINE LCD_CHAR_LUA "\x04\x0E\x11\x11\x1F\x11\x11\x80" /* A s carkou */
661 .................... #DEFINE LCD_CHAR_LLA "\x01\x02\x0E\x01\x1F\x11\x0F\x80" /* a s carkou */
662 .................... #DEFINE LCD_CHAR_HUC "\x0A\x0E\x11\x10\x10\x11\x0E\x80" /* C s hackem */
663 .................... #DEFINE LCD_CHAR_HLC "\x0A\x04\x0E\x10\x10\x11\x0E\x80" /* c s hackem */
664 .................... #DEFINE LCD_CHAR_HUD "\x0A\x1C\x12\x11\x11\x12\x1C\x80" /* D s hackem */
665 .................... #DEFINE LCD_CHAR_HLD "\x05\x03\x0D\x13\x11\x11\x0F\x80" /* d s hackem */
666 .................... #DEFINE LCD_CHAR_LUE "\x04\x1F\x10\x10\x1E\x10\x1F\x80" /* E s carkou */
667 .................... #DEFINE LCD_CHAR_LLE "\x01\x02\x0E\x11\x1F\x10\x0E\x80" /* e s carkou */
668 .................... #DEFINE LCD_CHAR_HUE "\x0A\x1F\x10\x1E\x10\x10\x1F\x80" /* E s hackem */
669 .................... #DEFINE LCD_CHAR_HLE "\x0A\x04\x0E\x11\x1F\x10\x0E\x80" /* e s hackem */
670 .................... #DEFINE LCD_CHAR_LUI "\x04\x0E\x04\x04\x04\x04\x0E\x80" /* I s carkou */
671 .................... #DEFINE LCD_CHAR_LLI "\x02\x04\x80\x0C\x04\x04\x0E\x80" /* i s carkou */
672 .................... #DEFINE LCD_CHAR_HUN "\x0A\x15\x11\x19\x15\x13\x11\x80" /* N s hackem */
673 .................... #DEFINE LCD_CHAR_HLN "\x0A\x04\x16\x19\x11\x11\x11\x80" /* n s hackem */
674 .................... #DEFINE LCD_CHAR_LUO "\x04\x0E\x11\x11\x11\x11\x0E\x80" /* O s carkou */
675 .................... #DEFINE LCD_CHAR_LLO "\x02\x04\x0E\x11\x11\x11\x0E\x80" /* o s carkou */
676 .................... #DEFINE LCD_CHAR_HUR "\x0A\x1E\x11\x1E\x14\x12\x11\x80" /* R s hackem */
677 .................... #DEFINE LCD_CHAR_HLR "\x0A\x04\x16\x19\x10\x10\x10\x80" /* r s hackem */
678 .................... #DEFINE LCD_CHAR_HUS "\x0A\x0F\x10\x0E\x01\x01\x1E\x80" /* S s hackem */
679 .................... #DEFINE LCD_CHAR_HLS "\x0A\x04\x0E\x10\x0E\x01\x1E\x80" /* s s hackem */
680 .................... #DEFINE LCD_CHAR_HUT "\x0A\x1F\x04\x04\x04\x04\x04\x80" /* T s hackem */
681 .................... #DEFINE LCD_CHAR_HLT "\x0A\x0C\x1C\x08\x08\x09\x06\x80" /* t s hackem */
682 .................... #DEFINE LCD_CHAR_LUU "\x02\x15\x11\x11\x11\x11\x0E\x80" /* U s carkou */
683 .................... #DEFINE LCD_CHAR_LLU "\x02\x04\x11\x11\x11\x13\x0D\x80" /* u s carkou */
684 .................... #DEFINE LCD_CHAR_CUU "\x06\x17\x11\x11\x11\x11\x0E\x80" /* U s krouzkem */
685 .................... #DEFINE LCD_CHAR_CLU "\x06\x06\x11\x11\x11\x11\x0E\x80" /* u s krouzkem */
686 .................... #DEFINE LCD_CHAR_LUY "\x02\x15\x11\x0A\x04\x04\x04\x80" /* Y s carkou */
687 .................... #DEFINE LCD_CHAR_LLY "\x02\x04\x11\x11\x0F\x01\x0E\x80" /* y s carkou */
688 .................... #DEFINE LCD_CHAR_HUZ "\x0A\x1F\x01\x02\x04\x08\x1F\x80" /* Z s hackem */
689 .................... #DEFINE LCD_CHAR_HLZ "\x0A\x04\x1F\x02\x04\x08\x1F\x80" /* z s hackem */
690 ....................
691 ....................
692 .................... // Priklad pouziti definovanych znaku
693 .................... //
694 .................... //
695 .................... //void lcd_sample()
696 .................... //{
697 .................... // lcd_define_char(0,LCD_CHAR_BAT50); // Priklad definice znaku baterie do pozice 0
698 .................... // lcd_define_char(2,LCD_CHAR_HLE LCD_CHAR_LUI); // Priklad definice znaku e s hackem a I s carkou od pozice 2
699 .................... // // vsimnete si, ze neni carka mezi retezci s definici (oba retezce definuji
700 .................... // // jediny definicni retezec)
701 .................... // printf(lcd_putc,"\fZnaky:\20\22\23"); // priklad vypisu znaku z pozice 0, 2 a 3
702 .................... // delay_ms(1000);
703 .................... // lcd_define_char(0,LCD_CHAR_BAT0); // Predefinovani tvaru znaku v pozici 0
704 .................... // delay_ms(1000);
705 .................... //}
706 ....................
707 ....................
708 .................... void main()
709 .................... {
238 kaklik 710 *
239 kaklik 711 029D: CLRF 04
712 029E: MOVLW 1F
713 029F: ANDWF 03,F
714 02A0: BCF 20.6
715 02A1: MOVF 20,W
716 02A2: BSF 03.5
717 02A3: MOVWF 07
718 02A4: BCF 03.5
719 02A5: BSF 07.6
720 02A6: BSF 03.5
721 02A7: BCF 06.2
722 02A8: BCF 03.5
723 02A9: BSF 06.2
724 02AA: BSF 03.5
725 02AB: BSF 1F.0
726 02AC: BSF 1F.1
727 02AD: BSF 1F.2
728 02AE: BCF 1F.3
729 02AF: MOVLW 07
730 02B0: MOVWF 1C
731 .................... char odp[40];
223 kapl 732 .................... int pom,pom2,pom3,odkl,odkl2,maskovadlo,status;
733 ....................
734 .................... setup_adc_ports(NO_ANALOGS);
735 *
239 kaklik 736 02B4: BSF 03.5
737 02B5: BSF 1F.0
738 02B6: BSF 1F.1
739 02B7: BSF 1F.2
740 02B8: BCF 1F.3
223 kapl 741 .................... setup_adc(ADC_OFF);
239 kaklik 742 02B9: BCF 03.5
743 02BA: BCF 1F.0
223 kapl 744 .................... setup_spi(SPI_SS_DISABLED);
239 kaklik 745 02BB: BCF 14.5
746 02BC: BCF 20.5
747 02BD: MOVF 20,W
748 02BE: BSF 03.5
749 02BF: MOVWF 07
750 02C0: BCF 03.5
751 02C1: BSF 20.4
752 02C2: MOVF 20,W
753 02C3: BSF 03.5
754 02C4: MOVWF 07
755 02C5: BCF 03.5
756 02C6: BCF 20.3
757 02C7: MOVF 20,W
758 02C8: BSF 03.5
759 02C9: MOVWF 07
760 02CA: MOVLW 01
761 02CB: BCF 03.5
762 02CC: MOVWF 14
763 02CD: MOVLW 00
764 02CE: BSF 03.5
765 02CF: MOVWF 14
223 kapl 766 .................... setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
239 kaklik 767 02D0: MOVF 01,W
768 02D1: ANDLW C7
769 02D2: IORLW 08
770 02D3: MOVWF 01
223 kapl 771 .................... setup_timer_1(T1_DISABLED);
239 kaklik 772 02D4: BCF 03.5
773 02D5: CLRF 10
223 kapl 774 .................... setup_timer_2(T2_DISABLED,0,1);
239 kaklik 775 02D6: MOVLW 00
776 02D7: MOVWF 78
777 02D8: MOVWF 12
778 02D9: MOVLW 00
779 02DA: BSF 03.5
780 02DB: MOVWF 12
223 kapl 781 .................... setup_comparator(NC_NC_NC_NC);
239 kaklik 782 02DC: MOVLW 07
783 02DD: MOVWF 1C
784 02DE: MOVF 05,W
785 02DF: CLRWDT
786 02E0: MOVLW 0E
787 02E1: MOVWF 77
788 02E2: DECFSZ 77,F
789 02E3: GOTO 2E2
790 02E4: NOP
791 02E5: NOP
792 02E6: MOVF 1C,W
793 02E7: BCF 03.5
794 02E8: BCF 0D.6
223 kapl 795 .................... setup_vref(FALSE);
239 kaklik 796 02E9: BSF 03.5
797 02EA: CLRF 1D
223 kapl 798 .................... setup_wdt(WDT_2304MS);
239 kaklik 799 02EB: MOVLW 0F
800 02EC: MOVWF 77
801 02ED: MOVLW 07
802 02EE: BCF 03.5
803 02EF: CLRF 01
804 02F0: MOVLW 81
805 02F1: MOVWF 04
806 02F2: MOVF 00,W
807 02F3: ANDLW F0
808 02F4: IORLW 07
809 02F5: MOVWF 00
810 02F6: CLRWDT
811 02F7: MOVF 00,W
812 02F8: ANDLW F7
813 02F9: BTFSC 77.3
814 02FA: ANDLW F0
815 02FB: IORWF 77,W
816 02FC: MOVWF 00
223 kapl 817 .................... lcd_init();
239 kaklik 818 02FD: CALL 184
819 ....................
223 kapl 820 .................... while(TRUE)
821 .................... {
822 .................... restart_wdt();
239 kaklik 823 02FE: CLRWDT
824 ....................
223 kapl 825 .................... output_low(PIN_A4) ;
239 kaklik 826 02FF: BSF 03.5
827 0300: BCF 05.4
828 0301: BCF 03.5
829 0302: BCF 05.4
223 kapl 830 .................... delay_ms(150);
239 kaklik 831 0303: MOVLW 96
832 0304: MOVWF 52
833 0305: CALL 126
223 kapl 834 .................... output_high(PIN_A4);
239 kaklik 835 0306: BSF 03.5
836 0307: BCF 05.4
837 0308: BCF 03.5
838 0309: BSF 05.4
223 kapl 839 .................... delay_ms(150);
239 kaklik 840 030A: MOVLW 96
841 030B: MOVWF 52
842 030C: CALL 126
223 kapl 843 .................... output_low(PIN_A4) ;
239 kaklik 844 030D: BSF 03.5
845 030E: BCF 05.4
846 030F: BCF 03.5
847 0310: BCF 05.4
223 kapl 848 .................... delay_ms(150);
239 kaklik 849 0311: MOVLW 96
850 0312: MOVWF 52
851 0313: CALL 126
223 kapl 852 .................... output_high(PIN_A4);
239 kaklik 853 0314: BSF 03.5
854 0315: BCF 05.4
855 0316: BCF 03.5
856 0317: BSF 05.4
223 kapl 857 .................... delay_ms(150);
239 kaklik 858 0318: MOVLW 96
859 0319: MOVWF 52
860 031A: CALL 126
861 ....................
238 kaklik 862 .................... /*
863 .................... while(kbhit(MOBIL)) {fgetc(MOBIL); delay_ms(100);} // Preskoc zbytek radku
864 .................... fprintf(MOBIL,"AT\r"); //vycti prijate SMS
865 .................... while(fgetc(MOBIL)!=0x0A); // predkoc prvni radek odpovedi
866 ....................
867 .................... delay_ms(500);
868 .................... for(pom=0;pom<80;pom++) odp[pom]=0;
869 .................... fprintf(MOBIL,"AT\r"); //vycti prijate SMS
870 .................... odp[0]=fgetc(MOBIL);
871 .................... odp[1]=fgetc(MOBIL);
872 .................... odp[2]=fgetc(MOBIL);
873 ....................
874 .................... fprintf(VRTULE,"*%s*\n\r",odp);
875 .................... fgetc(MOBIL);
876 .................... output_low(PIN_A4);
877 .................... fgetc(MOBIL);
878 .................... fgetc(MOBIL);
879 ....................
880 .................... delay_ms(1000);
881 .................... continue;
882 .................... */
239 kaklik 883 .................... fprintf(MOBIL,"AT+CMGL=1\r"); //vycti prijate SMS (0=nove;1=vsechny)
884 031B: CLRF 50
885 031C: MOVF 50,W
886 031D: CALL 00C
887 031E: IORLW 00
888 031F: BTFSC 03.2
889 0320: GOTO 325
890 0321: INCF 50,F
891 0322: MOVWF 51
892 0323: GOTO 1C3
893 0324: GOTO 31C
238 kaklik 894 .................... //SPEN=1;
239 kaklik 895 ....................
896 ....................
238 kaklik 897 .................... while(fgetc(MOBIL)!=0x0A); // predkoc prvni radek odpovedi
239 kaklik 898 0325: CALL 1ED
899 0326: MOVF 78,W
900 0327: SUBLW 0A
901 0328: BTFSS 03.2
902 0329: GOTO 325
238 kaklik 903 ....................
904 .................... odp[0]=fgetc(MOBIL); // Nacti prvni dva znaky druheho radku odpovedi
239 kaklik 905 032A: CALL 1ED
906 032B: MOVF 78,W
907 032C: MOVWF 21
238 kaklik 908 .................... odp[1]=fgetc(MOBIL);
239 kaklik 909 032D: CALL 1ED
910 032E: MOVF 78,W
911 032F: MOVWF 22
238 kaklik 912 .................... while(fgetc(MOBIL)!=0x0A); // Preskoc zbytek radku
239 kaklik 913 0330: CALL 1ED
914 0331: MOVF 78,W
915 0332: SUBLW 0A
916 0333: BTFSS 03.2
917 0334: GOTO 330
238 kaklik 918 ....................
239 kaklik 919 .................... // while(kbhit(MOBIL)) {fgetc(MOBIL); delay_ms(100);} // Preskoc zbytek radku
920 .................... output_high(PIN_A4);
921 0335: BSF 03.5
922 0336: BCF 05.4
923 0337: BCF 03.5
924 0338: BSF 05.4
238 kaklik 925 ....................
926 ....................
927 .................... if(odp[0] == 79 && odp[1] ==75) // Je odpoved "OK"?
239 kaklik 928 0339: MOVF 21,W
929 033A: SUBLW 4F
930 033B: BTFSS 03.2
931 033C: GOTO 384
932 033D: MOVF 22,W
933 033E: SUBLW 4B
934 033F: BTFSS 03.2
935 0340: GOTO 384
223 kapl 936 .................... {
937 .................... lcd_gotoxy(1,1);
239 kaklik 938 0341: MOVLW 01
939 0342: MOVWF 52
940 0343: MOVWF 53
941 0344: CALL 217
223 kapl 942 .................... printf(lcd_putc,"\fNeni nova SMS zprava");
239 kaklik 943 0345: CLRF 50
944 0346: MOVF 50,W
945 0347: CALL 01B
946 0348: IORLW 00
947 0349: BTFSC 03.2
948 034A: GOTO 34F
949 034B: INCF 50,F
950 034C: MOVWF 51
951 034D: CALL 23C
952 034E: GOTO 346
223 kapl 953 .................... lcd_gotoxy(1,2);
239 kaklik 954 034F: MOVLW 01
955 0350: MOVWF 52
956 0351: MOVLW 02
957 0352: MOVWF 53
958 0353: CALL 217
223 kapl 959 .................... printf(lcd_putc,"");
239 kaklik 960 0354: CLRF 50
961 0355: MOVF 50,W
962 0356: CALL 035
963 0357: IORLW 00
964 0358: BTFSC 03.2
965 0359: GOTO 35E
966 035A: INCF 50,F
967 035B: MOVWF 51
968 035C: CALL 23C
969 035D: GOTO 355
223 kapl 970 .................... lcd_gotoxy(1,3);
239 kaklik 971 035E: MOVLW 01
972 035F: MOVWF 52
973 0360: MOVLW 03
974 0361: MOVWF 53
975 0362: CALL 217
223 kapl 976 .................... printf(lcd_putc,"Zaslete SMS na cislo");
239 kaklik 977 0363: CLRF 50
978 0364: MOVF 50,W
979 0365: CALL 03A
980 0366: IORLW 00
981 0367: BTFSC 03.2
982 0368: GOTO 36D
983 0369: INCF 50,F
984 036A: MOVWF 51
985 036B: CALL 23C
986 036C: GOTO 364
223 kapl 987 .................... lcd_gotoxy(1,4);
239 kaklik 988 036D: MOVLW 01
989 036E: MOVWF 52
990 036F: MOVLW 04
991 0370: MOVWF 53
992 0371: CALL 217
223 kapl 993 .................... printf(lcd_putc," 736 655 250");
239 kaklik 994 0372: CLRF 50
995 0373: MOVF 50,W
996 0374: CALL 053
997 0375: IORLW 00
998 0376: BTFSC 03.2
999 0377: GOTO 37C
1000 0378: INCF 50,F
1001 0379: MOVWF 51
1002 037A: CALL 23C
1003 037B: GOTO 373
223 kapl 1004 .................... delay_ms(5000);
239 kaklik 1005 037C: MOVLW 14
1006 037D: MOVWF 50
1007 037E: MOVLW FA
1008 037F: MOVWF 52
1009 0380: CALL 126
1010 0381: DECFSZ 50,F
1011 0382: GOTO 37E
1012 .................... }
1013 .................... else
1014 0383: GOTO 5DF
223 kapl 1015 .................... {
238 kaklik 1016 .................... //!!!KAKL for(pom=0;pom<55;pom++) //preskoc nedulezite informace
1017 .................... for(pom=0;pom<54;pom++) //preskoc nedulezite informace
239 kaklik 1018 0384: CLRF 49
1019 0385: MOVF 49,W
1020 0386: SUBLW 35
1021 0387: BTFSS 03.0
1022 0388: GOTO 38C
223 kapl 1023 .................... {
238 kaklik 1024 .................... fgetc(MOBIL);
239 kaklik 1025 0389: CALL 1ED
1026 .................... }
1027 038A: INCF 49,F
1028 038B: GOTO 385
1029 ....................
223 kapl 1030 .................... //gets(odp); //uloz zakodovany text SMS
239 kaklik 1031 ....................
238 kaklik 1032 .................... odp[0]=fgetc(MOBIL);
239 kaklik 1033 038C: CALL 1ED
1034 038D: MOVF 78,W
1035 038E: MOVWF 21
238 kaklik 1036 .................... odp[1]=fgetc(MOBIL);
239 kaklik 1037 038F: CALL 1ED
1038 0390: MOVF 78,W
1039 0391: MOVWF 22
238 kaklik 1040 .................... odp[2]=fgetc(MOBIL);
239 kaklik 1041 0392: CALL 1ED
1042 0393: MOVF 78,W
1043 0394: MOVWF 23
238 kaklik 1044 .................... odp[3]=fgetc(MOBIL);
239 kaklik 1045 0395: CALL 1ED
1046 0396: MOVF 78,W
1047 0397: MOVWF 24
238 kaklik 1048 .................... odp[4]=fgetc(MOBIL);
239 kaklik 1049 0398: CALL 1ED
1050 0399: MOVF 78,W
1051 039A: MOVWF 25
238 kaklik 1052 .................... odp[5]=fgetc(MOBIL);
239 kaklik 1053 039B: CALL 1ED
1054 039C: MOVF 78,W
1055 039D: MOVWF 26
238 kaklik 1056 .................... odp[6]=fgetc(MOBIL);
239 kaklik 1057 039E: CALL 1ED
1058 039F: MOVF 78,W
1059 03A0: MOVWF 27
238 kaklik 1060 .................... odp[7]=fgetc(MOBIL);
239 kaklik 1061 03A1: CALL 1ED
1062 03A2: MOVF 78,W
1063 03A3: MOVWF 28
238 kaklik 1064 ....................
223 kapl 1065 .................... /*lcd_gotoxy(1,1);
1066 .................... printf(lcd_putc,"\f%s\n",odp);*/
239 kaklik 1067 ....................
1068 .................... if(odp[0]==0) odp[1]='0'; // Prevod z ASCII do BIN
1069 03A4: MOVF 21,F
1070 03A5: BTFSS 03.2
1071 03A6: GOTO 3A9
1072 03A7: MOVLW 30
1073 03A8: MOVWF 22
223 kapl 1074 .................... odp[0]=odp[0] - '0';
239 kaklik 1075 03A9: MOVLW 30
1076 03AA: SUBWF 21,F
223 kapl 1077 .................... odp[1]=odp[1] - '0';
239 kaklik 1078 03AB: SUBWF 22,F
223 kapl 1079 .................... if(odp[0]>9) odp[0]=odp[0]-7;
239 kaklik 1080 03AC: MOVF 21,W
1081 03AD: SUBLW 09
1082 03AE: BTFSC 03.0
1083 03AF: GOTO 3B2
1084 03B0: MOVLW 07
1085 03B1: SUBWF 21,F
223 kapl 1086 .................... if(odp[1]>9) odp[1]=odp[1]-7;
239 kaklik 1087 03B2: MOVF 22,W
1088 03B3: SUBLW 09
1089 03B4: BTFSC 03.0
1090 03B5: GOTO 3B8
1091 03B6: MOVLW 07
1092 03B7: SUBWF 22,F
223 kapl 1093 .................... odp[0]=odp[0] << 4;
239 kaklik 1094 03B8: SWAPF 21,F
1095 03B9: MOVLW F0
1096 03BA: ANDWF 21,F
223 kapl 1097 .................... odp[0] |= odp[1];
239 kaklik 1098 03BB: MOVF 22,W
1099 03BC: IORWF 21,F
1100 ....................
223 kapl 1101 .................... if(odp[2]==0) odp[3]='0';
239 kaklik 1102 03BD: MOVF 23,F
1103 03BE: BTFSS 03.2
1104 03BF: GOTO 3C2
1105 03C0: MOVLW 30
1106 03C1: MOVWF 24
223 kapl 1107 .................... odp[2]=odp[2] - '0';
239 kaklik 1108 03C2: MOVLW 30
1109 03C3: SUBWF 23,F
223 kapl 1110 .................... odp[3]=odp[3] - '0';
239 kaklik 1111 03C4: SUBWF 24,F
223 kapl 1112 .................... if(odp[2]>9) odp[2]=odp[2]-7;
239 kaklik 1113 03C5: MOVF 23,W
1114 03C6: SUBLW 09
1115 03C7: BTFSC 03.0
1116 03C8: GOTO 3CB
1117 03C9: MOVLW 07
1118 03CA: SUBWF 23,F
223 kapl 1119 .................... if(odp[3]>9) odp[3]=odp[3]-7;
239 kaklik 1120 03CB: MOVF 24,W
1121 03CC: SUBLW 09
1122 03CD: BTFSC 03.0
1123 03CE: GOTO 3D1
1124 03CF: MOVLW 07
1125 03D0: SUBWF 24,F
223 kapl 1126 .................... odp[2]=odp[2] << 4;
239 kaklik 1127 03D1: SWAPF 23,F
1128 03D2: MOVLW F0
1129 03D3: ANDWF 23,F
223 kapl 1130 .................... odp[2] |= odp[3];
239 kaklik 1131 03D4: MOVF 24,W
1132 03D5: IORWF 23,F
1133 ....................
223 kapl 1134 .................... if(odp[4]==0) odp[5]='0';
239 kaklik 1135 03D6: MOVF 25,F
1136 03D7: BTFSS 03.2
1137 03D8: GOTO 3DB
1138 03D9: MOVLW 30
1139 03DA: MOVWF 26
223 kapl 1140 .................... odp[4]=odp[4] - '0';
239 kaklik 1141 03DB: MOVLW 30
1142 03DC: SUBWF 25,F
223 kapl 1143 .................... odp[5]=odp[5] - '0';
239 kaklik 1144 03DD: SUBWF 26,F
223 kapl 1145 .................... if(odp[4]>9) odp[4]=odp[4]-7;
239 kaklik 1146 03DE: MOVF 25,W
1147 03DF: SUBLW 09
1148 03E0: BTFSC 03.0
1149 03E1: GOTO 3E4
1150 03E2: MOVLW 07
1151 03E3: SUBWF 25,F
223 kapl 1152 .................... if(odp[5]>9) odp[5]=odp[5]-7;
239 kaklik 1153 03E4: MOVF 26,W
1154 03E5: SUBLW 09
1155 03E6: BTFSC 03.0
1156 03E7: GOTO 3EA
1157 03E8: MOVLW 07
1158 03E9: SUBWF 26,F
223 kapl 1159 .................... odp[4]=odp[4] << 4;
239 kaklik 1160 03EA: SWAPF 25,F
1161 03EB: MOVLW F0
1162 03EC: ANDWF 25,F
223 kapl 1163 .................... odp[4] |= odp[5];
239 kaklik 1164 03ED: MOVF 26,W
1165 03EE: IORWF 25,F
1166 ....................
223 kapl 1167 .................... if(odp[6]==0) odp[7]='0';
239 kaklik 1168 03EF: MOVF 27,F
1169 03F0: BTFSS 03.2
1170 03F1: GOTO 3F4
1171 03F2: MOVLW 30
1172 03F3: MOVWF 28
223 kapl 1173 .................... odp[6]=odp[6] - '0';
239 kaklik 1174 03F4: MOVLW 30
1175 03F5: SUBWF 27,F
223 kapl 1176 .................... odp[7]=odp[7] - '0';
239 kaklik 1177 03F6: SUBWF 28,F
223 kapl 1178 .................... if(odp[6]>9) odp[6]=odp[6]-7;
239 kaklik 1179 03F7: MOVF 27,W
1180 03F8: SUBLW 09
1181 03F9: BTFSC 03.0
1182 03FA: GOTO 3FD
1183 03FB: MOVLW 07
1184 03FC: SUBWF 27,F
223 kapl 1185 .................... if(odp[7]>9) odp[7]=odp[7]-7;
239 kaklik 1186 03FD: MOVF 28,W
1187 03FE: SUBLW 09
1188 03FF: BTFSC 03.0
1189 0400: GOTO 403
1190 0401: MOVLW 07
1191 0402: SUBWF 28,F
223 kapl 1192 .................... odp[6]=odp[6] << 4;
239 kaklik 1193 0403: SWAPF 27,F
1194 0404: MOVLW F0
1195 0405: ANDWF 27,F
223 kapl 1196 .................... odp[6] |= odp[7];
239 kaklik 1197 0406: MOVF 28,W
1198 0407: IORWF 27,F
223 kapl 1199 ....................
1200 .................... odp[1]=odp[2];
239 kaklik 1201 0408: MOVF 23,W
1202 0409: MOVWF 22
223 kapl 1203 .................... odp[2]=odp[4];
239 kaklik 1204 040A: MOVF 25,W
1205 040B: MOVWF 23
223 kapl 1206 .................... odp[3]=odp[6];
239 kaklik 1207 040C: MOVF 27,W
1208 040D: MOVWF 24
1209 .................... odp[4]=odp[5]=odp[6]=0;
1210 040E: CLRF 27
1211 040F: MOVF 27,W
1212 0410: MOVWF 26
1213 0411: MOVWF 25
1214 ....................
1215 .................... /*lcd_gotoxy(1,2);
223 kapl 1216 .................... printf(lcd_putc,"%u %u %u %u",odp[0],odp[1],odp[2]odp[3]); */
239 kaklik 1217 ....................
223 kapl 1218 .................... pom3=0;
239 kaklik 1219 0412: CLRF 4B
1220 .................... for (pom = 0; pom < 4;pom++)
1221 0413: CLRF 49
1222 0414: MOVF 49,W
1223 0415: SUBLW 03
1224 0416: BTFSS 03.0
1225 0417: GOTO 46B
223 kapl 1226 .................... {
1227 .................... maskovadlo = maskovadlo >> 1; //rotace promene urcene pro maskovani
239 kaklik 1228 0418: BCF 03.0
1229 0419: RRF 4E,F
223 kapl 1230 .................... maskovadlo = maskovadlo | 0x80;
239 kaklik 1231 041A: BSF 4E.7
223 kapl 1232 .................... odkl = odp[pom] & maskovadlo; //odlozeni "prenosu" do odkl pomoci maskovadla
239 kaklik 1233 041B: MOVLW 21
1234 041C: ADDWF 49,W
1235 041D: MOVWF 04
1236 041E: MOVF 00,W
1237 041F: ANDWF 4E,W
1238 0420: MOVWF 4C
223 kapl 1239 .................... odp[pom] = odp[pom] << pom3; //rotace znaku
239 kaklik 1240 0421: MOVLW 21
1241 0422: ADDWF 49,W
1242 0423: MOVWF 50
1243 0424: MOVLW 21
1244 0425: ADDWF 49,W
1245 0426: MOVWF 04
1246 0427: MOVF 00,W
1247 0428: MOVWF 77
1248 0429: MOVF 4B,W
1249 042A: MOVWF 78
1250 042B: BTFSC 03.2
1251 042C: GOTO 431
1252 042D: BCF 03.0
1253 042E: RLF 77,F
1254 042F: DECFSZ 78,F
1255 0430: GOTO 42D
1256 0431: MOVF 50,W
1257 0432: MOVWF 04
1258 0433: MOVF 77,W
1259 0434: MOVWF 00
223 kapl 1260 .................... for (pom2 = 0; pom2 < (8-pom3);pom2++) //rotace odkl2
239 kaklik 1261 0435: CLRF 4A
1262 0436: MOVF 4B,W
1263 0437: SUBLW 08
1264 0438: SUBWF 4A,W
1265 0439: BTFSC 03.0
1266 043A: GOTO 440
223 kapl 1267 .................... {
1268 .................... odkl2 = odkl2 >> 1;
239 kaklik 1269 043B: BCF 03.0
1270 043C: RRF 4D,F
1271 .................... odkl2 = odkl2 & 127;
1272 043D: BCF 4D.7
223 kapl 1273 .................... }
239 kaklik 1274 043E: INCF 4A,F
1275 043F: GOTO 436
223 kapl 1276 .................... odp[pom] = odp[pom] | odkl2; //pridani odkl2 ke znaku
239 kaklik 1277 0440: MOVLW 21
1278 0441: ADDWF 49,W
1279 0442: MOVWF 50
1280 0443: MOVLW 21
1281 0444: ADDWF 49,W
1282 0445: MOVWF 04
1283 0446: MOVF 00,W
1284 0447: IORWF 4D,W
1285 0448: MOVWF 52
1286 0449: MOVF 50,W
1287 044A: MOVWF 04
1288 044B: MOVF 52,W
1289 044C: MOVWF 00
223 kapl 1290 .................... odp[pom] = odp[pom] & 127; //smazani nejvysiho bitu
239 kaklik 1291 044D: MOVLW 21
1292 044E: ADDWF 49,W
1293 044F: MOVWF 50
1294 0450: MOVLW 21
1295 0451: ADDWF 49,W
1296 0452: MOVWF 04
1297 0453: MOVF 00,W
1298 0454: ANDLW 7F
1299 0455: MOVWF 52
1300 0456: MOVF 50,W
1301 0457: MOVWF 04
1302 0458: MOVF 52,W
1303 0459: MOVWF 00
223 kapl 1304 .................... odkl2 = odkl; //ulozeni odlk na dalsi pruchod
239 kaklik 1305 045A: MOVF 4C,W
1306 045B: MOVWF 4D
223 kapl 1307 .................... pom3++; //inkrementace citace rotace
239 kaklik 1308 045C: INCF 4B,F
223 kapl 1309 .................... if (pom3 == 8) //kazdy 8my znak
239 kaklik 1310 045D: MOVF 4B,W
1311 045E: SUBLW 08
1312 045F: BTFSS 03.2
1313 0460: GOTO 469
223 kapl 1314 .................... {
1315 .................... pom3 = 0; //smaz citac
239 kaklik 1316 0461: CLRF 4B
223 kapl 1317 .................... odp[pom+1] = odkl2; //uloz 8my znak vznikly z "prenosu"
239 kaklik 1318 0462: MOVLW 01
1319 0463: ADDWF 49,W
1320 0464: ADDLW 21
1321 0465: MOVWF 04
1322 0466: MOVF 4D,W
1323 0467: MOVWF 00
223 kapl 1324 .................... maskovadlo = 0; //smaz maskovadlo
239 kaklik 1325 0468: CLRF 4E
223 kapl 1326 .................... }
1327 .................... }
239 kaklik 1328 0469: INCF 49,F
1329 046A: GOTO 414
1330 .................... odp[pom]='\0';
1331 046B: MOVLW 21
1332 046C: ADDWF 49,W
1333 046D: MOVWF 04
1334 046E: CLRF 00
1335 ....................
223 kapl 1336 .................... /*lcd_gotoxy(1,3);
1337 .................... printf(lcd_putc,"%u %u %u %u",odp[0],odp[1],odp[2],odp[3]); */
238 kaklik 1338 .................... lcd_init();
239 kaklik 1339 046F: CALL 184
223 kapl 1340 .................... lcd_gotoxy(1,1);
239 kaklik 1341 0470: MOVLW 01
1342 0471: MOVWF 52
1343 0472: MOVWF 53
1344 0473: CALL 217
1345 .................... printf(lcd_putc,"\fPrijata SMS s textem");
1346 0474: CLRF 50
1347 0475: MOVF 50,W
1348 0476: CALL 067
1349 0477: IORLW 00
1350 0478: BTFSC 03.2
1351 0479: GOTO 47E
1352 047A: INCF 50,F
1353 047B: MOVWF 51
1354 047C: CALL 23C
1355 047D: GOTO 475
223 kapl 1356 .................... lcd_gotoxy(9,3);
239 kaklik 1357 047E: MOVLW 09
1358 047F: MOVWF 52
1359 0480: MOVLW 03
1360 0481: MOVWF 53
1361 0482: CALL 217
1362 .................... printf(lcd_putc,"%s",odp);
1363 0483: MOVLW 21
1364 0484: MOVWF 04
1365 0485: MOVLW 00
1366 0486: IORWF 00,W
1367 0487: BTFSC 03.2
1368 0488: GOTO 492
1369 0489: MOVF 04,W
1370 048A: MOVWF 50
1371 048B: MOVF 00,W
1372 048C: MOVWF 51
1373 048D: CALL 23C
1374 048E: MOVF 50,W
1375 048F: MOVWF 04
1376 0490: INCF 04,F
1377 0491: GOTO 485
223 kapl 1378 .................... output_low(PIN_A4) ;
239 kaklik 1379 0492: BSF 03.5
1380 0493: BCF 05.4
1381 0494: BCF 03.5
1382 0495: BCF 05.4
238 kaklik 1383 .................... delay_ms(1000);
239 kaklik 1384 0496: MOVLW 04
1385 0497: MOVWF 50
1386 0498: MOVLW FA
1387 0499: MOVWF 52
1388 049A: CALL 126
1389 049B: DECFSZ 50,F
1390 049C: GOTO 498
223 kapl 1391 .................... output_high(PIN_A4);
239 kaklik 1392 049D: BSF 03.5
1393 049E: BCF 05.4
1394 049F: BCF 03.5
1395 04A0: BSF 05.4
238 kaklik 1396 ....................
1397 .................... //!!! fprintf(MOBIL,"AT+CMGD=1\r"); //smaz prijatou SMSku
239 kaklik 1398 ....................
223 kapl 1399 .................... if (odp[0] > 64 && odp[0] < 91 )
239 kaklik 1400 04A1: MOVF 21,W
1401 04A2: SUBLW 40
1402 04A3: BTFSC 03.0
1403 04A4: GOTO 4AB
1404 04A5: MOVF 21,W
1405 04A6: SUBLW 5A
1406 04A7: BTFSS 03.0
1407 04A8: GOTO 4AB
223 kapl 1408 .................... {
1409 .................... odp[0] += 32;
239 kaklik 1410 04A9: MOVLW 20
1411 04AA: ADDWF 21,F
223 kapl 1412 .................... }
239 kaklik 1413 ....................
223 kapl 1414 .................... if (odp[1] > 64 && odp[1] < 91 )
239 kaklik 1415 04AB: MOVF 22,W
1416 04AC: SUBLW 40
1417 04AD: BTFSC 03.0
1418 04AE: GOTO 4B5
1419 04AF: MOVF 22,W
1420 04B0: SUBLW 5A
1421 04B1: BTFSS 03.0
1422 04B2: GOTO 4B5
223 kapl 1423 .................... {
1424 .................... odp[1] += 32;
239 kaklik 1425 04B3: MOVLW 20
1426 04B4: ADDWF 22,F
223 kapl 1427 .................... }
239 kaklik 1428 ....................
223 kapl 1429 .................... if (odp[2] > 64 && odp[2] < 91 )
239 kaklik 1430 04B5: MOVF 23,W
1431 04B6: SUBLW 40
1432 04B7: BTFSC 03.0
1433 04B8: GOTO 4BF
1434 04B9: MOVF 23,W
1435 04BA: SUBLW 5A
1436 04BB: BTFSS 03.0
1437 04BC: GOTO 4BF
223 kapl 1438 .................... {
1439 .................... odp[2] += 32;
239 kaklik 1440 04BD: MOVLW 20
1441 04BE: ADDWF 23,F
223 kapl 1442 .................... }
239 kaklik 1443 ....................
223 kapl 1444 .................... if (odp[3] > 64 && odp[3] < 91 )
239 kaklik 1445 04BF: MOVF 24,W
1446 04C0: SUBLW 40
1447 04C1: BTFSC 03.0
1448 04C2: GOTO 4C9
1449 04C3: MOVF 24,W
1450 04C4: SUBLW 5A
1451 04C5: BTFSS 03.0
1452 04C6: GOTO 4C9
223 kapl 1453 .................... {
1454 .................... odp[3] += 32;
239 kaklik 1455 04C7: MOVLW 20
1456 04C8: ADDWF 24,F
223 kapl 1457 .................... }
239 kaklik 1458 ....................
223 kapl 1459 .................... lcd_gotoxy(1,1);
239 kaklik 1460 04C9: MOVLW 01
1461 04CA: MOVWF 52
1462 04CB: MOVWF 53
1463 04CC: CALL 217
1464 .................... printf(lcd_putc,"\f Odstraneni velkych");
1465 04CD: CLRF 50
1466 04CE: MOVF 50,W
1467 04CF: CALL 081
1468 04D0: IORLW 00
1469 04D1: BTFSC 03.2
1470 04D2: GOTO 4D7
1471 04D3: INCF 50,F
1472 04D4: MOVWF 51
1473 04D5: CALL 23C
1474 04D6: GOTO 4CE
223 kapl 1475 .................... lcd_gotoxy(1,2);
239 kaklik 1476 04D7: MOVLW 01
1477 04D8: MOVWF 52
1478 04D9: MOVLW 02
1479 04DA: MOVWF 53
1480 04DB: CALL 217
223 kapl 1481 .................... printf(lcd_putc," pismen");
239 kaklik 1482 04DC: CLRF 50
1483 04DD: MOVF 50,W
1484 04DE: CALL 09A
1485 04DF: IORLW 00
1486 04E0: BTFSC 03.2
1487 04E1: GOTO 4E6
1488 04E2: INCF 50,F
1489 04E3: MOVWF 51
1490 04E4: CALL 23C
1491 04E5: GOTO 4DD
223 kapl 1492 .................... lcd_gotoxy(9,4);
239 kaklik 1493 04E6: MOVLW 09
1494 04E7: MOVWF 52
1495 04E8: MOVLW 04
1496 04E9: MOVWF 53
1497 04EA: CALL 217
1498 .................... printf(lcd_putc,"%s",odp);
1499 04EB: MOVLW 21
1500 04EC: MOVWF 04
1501 04ED: MOVLW 00
1502 04EE: IORWF 00,W
1503 04EF: BTFSC 03.2
1504 04F0: GOTO 4FA
1505 04F1: MOVF 04,W
1506 04F2: MOVWF 50
1507 04F3: MOVF 00,W
1508 04F4: MOVWF 51
1509 04F5: CALL 23C
1510 04F6: MOVF 50,W
1511 04F7: MOVWF 04
1512 04F8: INCF 04,F
1513 04F9: GOTO 4ED
223 kapl 1514 .................... output_low(PIN_A4) ;
239 kaklik 1515 04FA: BSF 03.5
1516 04FB: BCF 05.4
1517 04FC: BCF 03.5
1518 04FD: BCF 05.4
238 kaklik 1519 .................... delay_ms(1000);
239 kaklik 1520 04FE: MOVLW 04
1521 04FF: MOVWF 50
1522 0500: MOVLW FA
1523 0501: MOVWF 52
1524 0502: CALL 126
1525 0503: DECFSZ 50,F
1526 0504: GOTO 500
223 kapl 1527 .................... output_high(PIN_A4);
239 kaklik 1528 0505: BSF 03.5
1529 0506: BCF 05.4
1530 0507: BCF 03.5
1531 0508: BSF 05.4
238 kaklik 1532 ....................
239 kaklik 1533 ....................
238 kaklik 1534 .................... //!!!KAKL
1535 .................... fprintf(VRTULE,"%s",odp);
239 kaklik 1536 0509: MOVLW 21
1537 050A: MOVWF 04
1538 050B: MOVLW 00
1539 050C: IORWF 00,W
1540 050D: BTFSC 03.2
1541 050E: GOTO 518
1542 050F: MOVF 04,W
1543 0510: MOVWF 50
1544 0511: MOVF 00,W
1545 0512: MOVWF 51
1546 0513: GOTO 26F
1547 0514: MOVF 50,W
1548 0515: MOVWF 04
1549 0516: INCF 04,F
1550 0517: GOTO 50B
238 kaklik 1551 ....................
1552 ....................
223 kapl 1553 .................... if (odp[0] == 122 && odp[1] == 97 && odp[2] == 112 && odp[3] == 49) //odp=="zap1"
239 kaklik 1554 0518: MOVF 21,W
1555 0519: SUBLW 7A
1556 051A: BTFSS 03.2
1557 051B: GOTO 52A
1558 051C: MOVF 22,W
1559 051D: SUBLW 61
1560 051E: BTFSS 03.2
1561 051F: GOTO 52A
1562 0520: MOVF 23,W
1563 0521: SUBLW 70
1564 0522: BTFSS 03.2
1565 0523: GOTO 52A
1566 0524: MOVF 24,W
1567 0525: SUBLW 31
1568 0526: BTFSS 03.2
1569 0527: GOTO 52A
223 kapl 1570 .................... {
1571 .................... status=1;
239 kaklik 1572 0528: MOVLW 01
1573 0529: MOVWF 4F
223 kapl 1574 .................... }
239 kaklik 1575 ....................
223 kapl 1576 .................... if (odp[0] == 118 && odp[1] == 121 && odp[2] == 112 && odp[3]== 49) //odp=="vyp1"
239 kaklik 1577 052A: MOVF 21,W
1578 052B: SUBLW 76
1579 052C: BTFSS 03.2
1580 052D: GOTO 53C
1581 052E: MOVF 22,W
1582 052F: SUBLW 79
1583 0530: BTFSS 03.2
1584 0531: GOTO 53C
1585 0532: MOVF 23,W
1586 0533: SUBLW 70
1587 0534: BTFSS 03.2
1588 0535: GOTO 53C
1589 0536: MOVF 24,W
1590 0537: SUBLW 31
1591 0538: BTFSS 03.2
1592 0539: GOTO 53C
223 kapl 1593 .................... {
1594 .................... status=2;
239 kaklik 1595 053A: MOVLW 02
1596 053B: MOVWF 4F
223 kapl 1597 .................... }
239 kaklik 1598 ....................
223 kapl 1599 .................... if (odp[0] == 97 && odp[1] == 104 && odp[2] == 111 && odp[3]== 106) //odp=="ahoj"
239 kaklik 1600 053C: MOVF 21,W
1601 053D: SUBLW 61
1602 053E: BTFSS 03.2
1603 053F: GOTO 54E
1604 0540: MOVF 22,W
1605 0541: SUBLW 68
1606 0542: BTFSS 03.2
1607 0543: GOTO 54E
1608 0544: MOVF 23,W
1609 0545: SUBLW 6F
1610 0546: BTFSS 03.2
1611 0547: GOTO 54E
1612 0548: MOVF 24,W
1613 0549: SUBLW 6A
1614 054A: BTFSS 03.2
1615 054B: GOTO 54E
223 kapl 1616 .................... {
1617 .................... status=3;
239 kaklik 1618 054C: MOVLW 03
1619 054D: MOVWF 4F
223 kapl 1620 .................... }
239 kaklik 1621 ....................
1622 .................... switch (status)
238 kaklik 1623 .................... {
239 kaklik 1624 054E: MOVF 4F,W
1625 054F: XORLW 01
1626 0550: BTFSC 03.2
1627 0551: GOTO 559
1628 0552: XORLW 03
1629 0553: BTFSC 03.2
1630 0554: GOTO 577
1631 0555: XORLW 01
1632 0556: BTFSC 03.2
1633 0557: GOTO 595
1634 0558: GOTO 5AF
223 kapl 1635 ....................
1636 .................... case 1: output_low(zar1);
239 kaklik 1637 0559: BSF 03.5
1638 055A: BCF 05.3
1639 055B: BCF 03.5
1640 055C: BCF 05.3
223 kapl 1641 .................... printf(lcd_putc,"\f");
239 kaklik 1642 055D: CLRF 50
1643 055E: MOVF 50,W
1644 055F: CALL 0AC
1645 0560: IORLW 00
1646 0561: BTFSC 03.2
1647 0562: GOTO 567
1648 0563: INCF 50,F
1649 0564: MOVWF 51
1650 0565: CALL 23C
1651 0566: GOTO 55E
223 kapl 1652 .................... lcd_gotoxy(1,2);
239 kaklik 1653 0567: MOVLW 01
1654 0568: MOVWF 52
1655 0569: MOVLW 02
1656 056A: MOVWF 53
1657 056B: CALL 217
223 kapl 1658 .................... printf(lcd_putc," Zapnuto zarizeni 1");
239 kaklik 1659 056C: CLRF 50
1660 056D: MOVF 50,W
1661 056E: CALL 0B2
1662 056F: IORLW 00
1663 0570: BTFSC 03.2
1664 0571: GOTO 576
1665 0572: INCF 50,F
1666 0573: MOVWF 51
1667 0574: CALL 23C
1668 0575: GOTO 56D
223 kapl 1669 .................... break;
239 kaklik 1670 0576: GOTO 5D8
223 kapl 1671 ....................
1672 .................... case 2: output_high(zar1);
239 kaklik 1673 0577: BSF 03.5
1674 0578: BCF 05.3
1675 0579: BCF 03.5
1676 057A: BSF 05.3
223 kapl 1677 .................... printf(lcd_putc,"\f");
239 kaklik 1678 057B: CLRF 50
1679 057C: MOVF 50,W
1680 057D: CALL 0AC
1681 057E: IORLW 00
1682 057F: BTFSC 03.2
1683 0580: GOTO 585
1684 0581: INCF 50,F
1685 0582: MOVWF 51
1686 0583: CALL 23C
1687 0584: GOTO 57C
223 kapl 1688 .................... lcd_gotoxy(1,2);
239 kaklik 1689 0585: MOVLW 01
1690 0586: MOVWF 52
1691 0587: MOVLW 02
1692 0588: MOVWF 53
1693 0589: CALL 217
223 kapl 1694 .................... printf(lcd_putc," Vypnuto zarizeni 1");
239 kaklik 1695 058A: CLRF 50
1696 058B: MOVF 50,W
1697 058C: CALL 0CA
1698 058D: IORLW 00
1699 058E: BTFSC 03.2
1700 058F: GOTO 594
1701 0590: INCF 50,F
1702 0591: MOVWF 51
1703 0592: CALL 23C
1704 0593: GOTO 58B
223 kapl 1705 .................... break;
239 kaklik 1706 0594: GOTO 5D8
1707 ....................
223 kapl 1708 .................... case 3: printf(lcd_putc,"\f");
239 kaklik 1709 0595: CLRF 50
1710 0596: MOVF 50,W
1711 0597: CALL 0AC
1712 0598: IORLW 00
1713 0599: BTFSC 03.2
1714 059A: GOTO 59F
1715 059B: INCF 50,F
1716 059C: MOVWF 51
1717 059D: CALL 23C
1718 059E: GOTO 596
223 kapl 1719 .................... lcd_gotoxy(1,2);
239 kaklik 1720 059F: MOVLW 01
1721 05A0: MOVWF 52
1722 05A1: MOVLW 02
1723 05A2: MOVWF 53
1724 05A3: CALL 217
223 kapl 1725 .................... printf(lcd_putc," Preji hezky den!");
239 kaklik 1726 05A4: CLRF 50
1727 05A5: MOVF 50,W
1728 05A6: CALL 0E2
1729 05A7: IORLW 00
1730 05A8: BTFSC 03.2
1731 05A9: GOTO 5AE
1732 05AA: INCF 50,F
1733 05AB: MOVWF 51
1734 05AC: CALL 23C
1735 05AD: GOTO 5A5
223 kapl 1736 .................... break;
239 kaklik 1737 05AE: GOTO 5D8
1738 ....................
223 kapl 1739 .................... default: printf(lcd_putc,"\f");
239 kaklik 1740 05AF: CLRF 50
1741 05B0: MOVF 50,W
1742 05B1: CALL 0AC
1743 05B2: IORLW 00
1744 05B3: BTFSC 03.2
1745 05B4: GOTO 5B9
1746 05B5: INCF 50,F
1747 05B6: MOVWF 51
1748 05B7: CALL 23C
1749 05B8: GOTO 5B0
223 kapl 1750 .................... lcd_gotoxy(1,2);
239 kaklik 1751 05B9: MOVLW 01
1752 05BA: MOVWF 52
1753 05BB: MOVLW 02
1754 05BC: MOVWF 53
1755 05BD: CALL 217
223 kapl 1756 .................... printf(lcd_putc," Prikaz nebyl");
239 kaklik 1757 05BE: CLRF 50
1758 05BF: MOVF 50,W
1759 05C0: CALL 0F9
1760 05C1: IORLW 00
1761 05C2: BTFSC 03.2
1762 05C3: GOTO 5C8
1763 05C4: INCF 50,F
1764 05C5: MOVWF 51
1765 05C6: CALL 23C
1766 05C7: GOTO 5BF
223 kapl 1767 .................... lcd_gotoxy(1,3);
239 kaklik 1768 05C8: MOVLW 01
1769 05C9: MOVWF 52
1770 05CA: MOVLW 03
1771 05CB: MOVWF 53
1772 05CC: CALL 217
223 kapl 1773 .................... printf(lcd_putc," rozeznan");
239 kaklik 1774 05CD: CLRF 50
1775 05CE: MOVF 50,W
1776 05CF: CALL 113
1777 05D0: IORLW 00
1778 05D1: BTFSC 03.2
1779 05D2: GOTO 5D7
1780 05D3: INCF 50,F
1781 05D4: MOVWF 51
1782 05D5: CALL 23C
1783 05D6: GOTO 5CE
1784 .................... break;
1785 05D7: GOTO 5D8
238 kaklik 1786 .................... }
1787 .................... delay_ms(1000);
239 kaklik 1788 05D8: MOVLW 04
1789 05D9: MOVWF 50
1790 05DA: MOVLW FA
1791 05DB: MOVWF 52
1792 05DC: CALL 126
1793 05DD: DECFSZ 50,F
1794 05DE: GOTO 5DA
223 kapl 1795 .................... }
238 kaklik 1796 ....................
223 kapl 1797 .................... }
239 kaklik 1798 05DF: GOTO 2FE
223 kapl 1799 .................... }
239 kaklik 1800 05E0: SLEEP
223 kapl 1801  
1802 Configuration Fuses:
238 kaklik 1803 Word 1: 3F3A HS NOWDT NOPUT NODEBUG NOPROTECT NOBROWNOUT NOLVP NOCPD NOWRT