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