Pravila | Recent posts | RSS temo | Iskanje | Registracija | Prijava

LCD vmesnik s PIC - Vadnica --

Post new topic Reply to topic EDAboard.com Forum Index -> mikrokontrolerji -> LCD vmesnik s PIC - Vadnica --
Različica v arabščini Bolgarska različica Katalonščina različica Češka različica Različica v danščini Nemška različica Grška različica English version Španska različica Različica v finščini Francoska različica Hindi version Croatian version Indonezijščina različica Italijanska različica Različica v hebrejščini Japonska različica Korejska različica Litovska različica Različica v latvijščini Različica v nizozemščini Norveška različica Različica v poljščini Različica v portugalščini Romunska različica Russian version Slovaška različica Slovenska različica Serbian version Različica v švedščini Tagalog version Ukrainian version Vietnamščina različica Kitajska različica
Avtor Sporočilo
TekUT



Pridružen /-a: 17. junij 2008
Posts: 413
Pomagali: 23


Post 26 Sep 2008 17:15 LCD vmesnik s PIC - Vadnica --

Hi all,
Sem videl veliko ljudi ima težave približno LCD vmesnikov, ki sem jih pravkar končali razviti knjižnico, da stori vse kar je potrebno za vožnjo HD44780 LCD upravljavca temeljijo izpis s PIC. Moja vloga je sposoben za delo s 4-bitni vmesnik (v vrstnem redu, da shranite 4 pin na mikrokrmilniška) in tudi ni omejena na nekatere PIC, samo spremenite PIN doznaka o header file in vse je naredil.

Ta načrt je bil prvotno zbrani s Hi-Tech za PIC16F870 (20 MHz uro), vendar ni nobene omejitve glede tega, kaj tip PIC lahko uporabljate, preprosto spremenite PIN doznaka kot bom pokazal kasneje.

Obstajajo samo tri datoteke:

- Lcddisp.c (glavna datoteka - samo kažejo, kako uporabljati knjižnico)
- LCD-lib.c (koda za vožnjo LCD)
- LCD-lib.h (pin doznaka)

Zagon z glavno datoteko smo na prvo vključitev glavo datoteke glede mikrokrmilniška pin doznaka:

Koda:

# vključujejo <pic.h>
# vključujejo <stdio.h>

# vključujejo "LCD-lib.h" / / Pin opredelitev za LCD


file: Odpri LCD-lib.h datoteke, tukaj spodaj, lahko najdete v izjavi pin za Hi-Tech prevajalnik, če uporabite drug tip sestavljač preprosto spremenite PIN sintakso, samo samo stvari, ne dotikajte se pin ime ( RS, RW, EN, DB4, dB5, DB6, DB7), ker te bo navajal iz LCD rutinsko v LCD-lib.c datoteke:

Koda:

/ / -------------------------------------------
/ / LCD tipa
/ / -------------------------------------------
# define MAXPOSX 16
# define MAXPOSY 2

/ / -------------------------------------------
/ / Definicija LCD UP pin (Hi-Tech prevajalnik)
/ / -------------------------------------------
statični hlapnih bit RS @ (nepodpisanih) & Porta * 8 0;
statični hlapnih bit RW @ (nepodpisanih) Porta & * 8 1;
statični hlapnih bit EN @ (nepodpisanih) Porta & * 8 2;
statični hlapnih bit DB4 @ (nepodpisanih) & PORTB * 8 1;
statični hlapnih bit dB5 @ (nepodpisanih) & PORTB * 8 2;
statični hlapnih bit DB6 @ (nepodpisanih) & PORTB * 8 3;
statični hlapnih bit DB7 @ (nepodpisanih) & PORTB * 8 4;


Zdaj ste na voljo te funkcije:

Koda:

neveljaven GenDelay (int); / / Generic zamudo
neveljaven LongDelay (dolgo); / / Long generična zamudo
LCDInit neveljaven (ničen); / / LCD inIT rutinsko
ClearDisplay neveljaven (ničen); / / Clear LCD zaslon
CursorAtHome neveljaven (ničen); / / Nastavi za domačo položaj kurzorja
neveljaven Printxy (nepodpisanih char, char nepotpisani, nepodpisane char); / / Print a char


Če uporabljate drugačen prevajalnik ali drugo frekvenco ure preprosto spremenite zakasnitev rutinsko za izpolnitev vaše potrebe, samo skrbi o časovni razporeditvi, da sem kot pisna pripomba v izvorno kodo.

O zaslonu ni omejitev, samo stvari je približno upravljavca mora biti HD44780 ali združljivi.
Ive 'tudi priloži pic na povezavo (v 2kOhm obrezovalnik na desni strani konektor se uporablja za nastaviti kontrast LCD), vseeno sem se na zaslonu konektor signal ime:

Pin 1: vss (0 V)
Pin 2: VCC ( 5 V)
Pin 3: Vee (kontrast, samo uporabo preprost 2kOhm obrezovalnik iz VCC na vss, kurzor na Vee)
Pin 4: RS
Pin 5: R / W
Pin 6: E
Pin 7: DB0 (ne uporabljajo za 4-bitni vmesnik)
Pin 8: DB1 (ne uporabljajo za 4-bitni vmesnik)
Pin 9: DB2 (ne uporabljajo za 4-bitni vmesnik)
Pin 10: DB3 (ne uporabljajo za 4-bitni vmesnik)
Pin 11: DB4 (za 4-bitni vmesnik)
Pin 12: dB5 (za 4-bitni vmesnik)
Pin 13: DB6 (za 4-bitni vmesnik)
Pin 14: DB7 (za 4-bitni vmesnik)
Pin 15: Led anodi ( )
Pin 16: Led katode (-)

Sem ne uporablja LED osvetlitev za nazaj, če želite uporabljati povezavo Pin 15 korito a 680Ohm upor do 5 V in 16 pin na 0V.
Upam, da to lahko pomaga, a bit.

Adijo
Pow
Nazaj na vrh
View user's profile
Google
AdSense





Post 26 Sep 2008 17:15 oglasov






Oprosti, ampak, kar potrebujete za prijavo v to prilogo, da si ogledate

Nazaj na vrh
xylynn



Pridružen /-a: 26. november 2007
Posts: 48


Post 28 Sep 2008 5:53 Re: LCD vmesnik s PIC - Vadnica --

Ali lahko dobim assmebly izvorno kodo za to??

S spoštovanjem
Nazaj na vrh
View user's profile
TekUT



Pridružen /-a: 17. junij 2008
Posts: 413
Pomagali: 23


Post 29 Sep 2008 9:38 Re: LCD vmesnik s PIC - Vadnica --

file in assembly. Sem kodirani v C, ampak mislim, da je zelo enostavno prevesti rutinskih znotraj LCD-lib.c datoteke v montažo. Povej mi, če boste potrebovali pomoč, na zdaj sem več časa, vendar v naslednjih dneh sem lahko poskusite, da se prevedejo do ASM.
Da bi vam pomagali na hitro sem se priloži seznam ASM, to je zbiranje Rezultati potem si lahko spremembe v enostaven način.

Koda:

--- C: \ Temp \ PIC_LCD \ LCD-lib.c ----------------------------------- -------------------------------
1: neveljavno GenDelay (int); / / Funzione na ritrado generico (<1 secondo)
2: neveljavno LongDelay (dolgo); / / Funzione na ritrado generico (> 1 secondo)
3: neveljavno LCDInit (ničen);
4: neveljavno ClearDisplay (ničen); / / Cancella il contenuto dedl izpis
5: neveljavno CursorAtHome (ničen); / / Posiziona il cursore nella posizione di Home
6: neveljavno Printxy (nepodpisanih char, char nepotpisani, nepodpisane char); / / Visualizza un carattere sul izpis
7:
8: / / ---------------------------------------------- -------------------------
9: / / Namen: Generic zamudo (nam območje)
10: / / Avtor: Powermos
11: / / creazione Date: 25/09/2008
12: / / ---------------------------------------------- -------------------------
13:
14: neveljavno GenDelay (int DelayPar)
15: (
16: Loop1:
17: ASM ( "clrwdt");
4D4 0064 CLRWDT
18: if (DelayPar> = 0)
4D5 1283 BCF 0x3, 0x5
4D6 1303 BCF 0x3, 0x6
4D7 1BA9 BTFSC 0x29, 0x7
19: (
20: DelayPar -;
4D9 08A8 MOVF 0x28, F
4DA 1903 BTFSC 0x3, 0x2
4DB 03A9 DECF 0x29, F
4DC 03A8 DECF 0x28, F
21: Goto Loop1;
4DD 2CD4 Goto 0x4d4
22:)
23: vračanje;
24:)
4D8 0008 DONOSNOST
25:
26: / / ---------------------------------------------- -------------------------
27: / / Namen: Generic zamudo (ms razpon)
28: / / Avtor: Powermos
29: / / creazione Date: 25/09/2008
30: / / ---------------------------------------------- -------------------------
31:
32: neveljavno LongDelay (dolgo DelayExt)
33: (
50F 3020 MOVLW 0x20
34: dolgo DelayInt = 800;
510 0183 CLRF 0x3
511 00A7 MOVWF 0x27
512 3003 MOVLW 0x3
513 00A8 MOVWF 0x28
514 3000 MOVLW 0
515 01A9 CLRF 0x29
516 01AA CLRF 0x2a
35:
36: LoopExt:
37, če: (DelayExt> = 0)
517 2D45 Goto 0x545
545 1BA6 BTFSC 0x26, 0x7
547 2D2A Goto 0x52a
38: (
39: LoopInt:
40: ASM ( "clrwdt");
52A 0064 CLRWDT
41, če: (DelayInt> = 0)
52B 1FAA BTFSS 0x2a, 0x7
52C 2D18 Goto 0x518
42: (
43: DelayInt -;
518 3001 MOVLW 0x1
519 00F0 MOVWF 0x70
51A 01F1 CLRF 0x71
51b 01F2 CLRF 0x72
51C 01F3 CLRF 0x73
51D 02A7 SUBWF 0x27, F
51E 0871 MOVF 0x71, W
51F 1C03 BTFSS 0x3, 0
520 0F71 INCFSZ 0x71, W
521 02A8 SUBWF 0x28, F
522 0872 MOVF 0x72, W
523 1C03 BTFSS 0x3, 0
524 0F72 INCFSZ 0x72, W
525 02A9 SUBWF 0x29, F
526 0873 MOVF 0x73, W
527 1C03 BTFSS 0x3, 0
528 0A73 INCF 0x73, W
529 02AA SUBWF 0x2a, F
44: Goto LoopInt;
45:)
46: DelayInt = 800;
52D 3020 MOVLW 0x20
52E 00A7 MOVWF 0x27
52F 3003 MOVLW 0x3
530 00A8 MOVWF 0x28
531 01A9 CLRF 0x29
532 01AA CLRF 0x2a
47: DelayExt -;
533 3001 MOVLW 0x1
534 00F0 MOVWF 0x70
535 01F1 CLRF 0x71
536 01F2 CLRF 0x72
537 01F3 CLRF 0x73
538 02A3 SUBWF 0x23, F
539 0871 MOVF 0x71, W
53A 1C03 BTFSS 0x3, 0
53b 0F71 INCFSZ 0x71, W
53C 02A4 SUBWF 0x24, F
53d 0872 MOVF 0x72, W
53E 1C03 BTFSS 0x3, 0
53F 0F72 INCFSZ 0x72, W
540 02A5 SUBWF 0x25, F
541 0873 MOVF 0x73, W
542 1C03 BTFSS 0x3, 0
543 0A73 INCF 0x73, W
544 02A6 SUBWF 0x26, F
48: Goto LoopExt;
49:)
50: vračanje;
51:)
546 0008 DONOSNOST
52:
53: / / ---------------------------------------------- -------------------------
54: / / Namen: LCD inicializacijo 4 bitni vmesnik
55: / / Avtor: Powermos
56: / / creazione Date: 25/09/2008
57: / / ---------------------------------------------- -------------------------
58: neveljavno LCDInit (ničen)
59: (
639 0183 CLRF 0x3
60: char i;
61:
62: / / Code 0x03
63: RS = 0;
63a 1005 BCF 0x5, 0
64: RW = 0;
63b 1085 BCF 0x5, 0x1
65: DB4 = 1;
63c 1486 BSF 0x6, 0x1
66: dB5 = 1;
63D 1506 BSF 0x6, 0x2
67: DB6 = 0;
63E 1186 BCF 0x6, 0x3
68: DB7 = 0;
63F 1206 BCF 0x6, 0x4
69: SL = 1;
640 1505 BSF 0x5, 0x2
70: ASM ( "nop");
641 0000 NOP
71: ASM ( "nop");
642 0000 NOP
72: ASM ( "nop");
643 0000 NOP
73: ASM ( "nop");
644 0000 NOP
74: ASM ( "nop");
645 0000 NOP
75: SL = 0;
646 1105 BCF 0x5, 0x2
76: for (i = 0; i <8; i )
647 01A3 CLRF 0x23
64C 0AA3 INCF 0x23, F
64D 3008 MOVLW 0x8
64E 0223 SUBWF 0x23, W
64F 1C03 BTFSS 0x3, 0
650 2E48 Goto 0x648
77: (
78: GenDelay (255); / / Time odlašanja 5 ms minimalne
648 30FF MOVLW 0xff
649 00A8 MOVWF 0x28
64a 01A9 CLRF 0x29
64b 24D4 RAZPIS 0x4d4
79:)
80:
81: / / Code 0x03
82: RS = 0;
651 1005 BCF 0x5, 0
83: RW = 0;
652 1085 BCF 0x5, 0x1
84: DB4 = 1;
653 1486 BSF 0x6, 0x1
85: dB5 = 1;
654 1506 BSF 0x6, 0x2
86: DB6 = 0;
655 1186 BCF 0x6, 0x3
87: DB7 = 0;
656 1206 BCF 0x6, 0x4
88: SL = 1;
657 1505 BSF 0x5, 0x2
89: ASM ( "nop");
658 0000 NOP
90: ASM ( "nop");
659 0000 NOP
91: ASM ( "nop");
65A 0000 NOP
92: ASM ( "nop");
65B 0000 NOP
93: ASM ( "nop");
65C 0000 NOP
94: SL = 0;
65D 1105 BCF 0x5, 0x2
95: GenDelay (60); / / Time dalay 160 nam minimalnih
65E 303C MOVLW 0x3c
65F 00A8 MOVWF 0x28
660 01A9 CLRF 0x29
661 24D4 RAZPIS 0x4d4
96:
97: / / Code 0x03
98: RS = 0;
662 1005 BCF 0x5, 0
99: RW = 0;
663 1085 BCF 0x5, 0x1
100: DB4 = 1;
664 1486 BSF 0x6, 0x1
101: dB5 = 1;
665 1506 BSF 0x6, 0x2
102: DB6 = 0;
666 1186 BCF 0x6, 0x3
103: DB7 = 0;
667 1206 BCF 0x6, 0x4
104: SL = 1;
668 1505 BSF 0x5, 0x2
105: ASM ( "nop");
669 0000 NOP
106: ASM ( "nop");
66a 0000 NOP
107: ASM ( "nop");
66b 0000 NOP
108: ASM ( "nop");
66c 0000 NOP
109: ASM ( "nop");
66D 0000 NOP
110: SL = 0;
66E 1105 BCF 0x5, 0x2
111: GenDelay (60); / / Time dalay 160 nam minimalnih
66f 303C MOVLW 0x3c
670 00A8 MOVWF 0x28
671 01A9 CLRF 0x29
672 24D4 RAZPIS 0x4d4
112:
113: / / Funkcija Set (Code 0x02)
114: RS = 0;
673 1005 BCF 0x5, 0
115: RW = 0;
674 1085 BCF 0x5, 0x1
116: DB4 = 0;
675 1086 BCF 0x6, 0x1
117: dB5 = 1;
676 1506 BSF 0x6, 0x2
118: DB6 = 0;
677 1186 BCF 0x6, 0x3
119: DB7 = 0;
678 1206 BCF 0x6, 0x4
120: SL = 1;
679 1505 BSF 0x5, 0x2
121: ASM ( "nop");
67a 0000 NOP
122: ASM ( "nop");
67b 0000 NOP
123: ASM ( "nop");
67C 0000 NOP
124: ASM ( "nop");
67D 0000 NOP
125: ASM ( "nop");
67E 0000 NOP
126: SL = 0;
67F 1105 BCF 0x5, 0x2
127: GenDelay (20); / / Počakajte 59 nas (minimalna zahtevana 37 us)
680 3014 MOVLW 0x14
681 00A8 MOVWF 0x28
682 01A9 CLRF 0x29
683 24D4 RAZPIS 0x4d4
128:
129: / / Funkcija Set (D, N, F)
130: RS = 0;
684 1005 BCF 0x5, 0
131: RW = 0;
685 1085 BCF 0x5, 0x1
132: DB4 = 0; / / D = 0 nastavite 4-bitni vmesnik
686 1086 BCF 0x6, 0x1
133: dB5 = 1;
687 1506 BSF 0x6, 0x2
134: DB6 = 0;
688 1186 BCF 0x6, 0x3
135: DB7 = 0;
689 1206 BCF 0x6, 0x4
136: SL = 1;
68A 1505 BSF 0x5, 0x2
137: ASM ( "nop");
68B 0000 NOP
138: ASM ( "nop");
68C 0000 NOP
139: ASM ( "nop");
68D 0000 NOP
140: ASM ( "nop");
68E 0000 NOP
141: ASM ( "nop");
68F 0000 NOP
142: SL = 0;
690 1105 BCF 0x5, 0x2
143: DB4 = 0;
691 1086 BCF 0x6, 0x1
144: dB5 = 0;
692 1106 BCF 0x6, 0x2
145: DB6 = 0; / / F = 0 pisave
693 1186 BCF 0x6, 0x3
146: DB7 = 1; / / N = 1 izpis 2 linee
694 1606 BSF 0x6, 0x4
147: SL = 1;
695 1505 BSF 0x5, 0x2
148: ASM ( "nop");
696 0000 NOP
149: ASM ( "nop");
697 0000 NOP
150: ASM ( "nop");
698 0000 NOP
151: ASM ( "nop");
699 0000 NOP
152: ASM ( "nop");
69a 0000 NOP
153: SL = 0;
69B 1105 BCF 0x5, 0x2
154: GenDelay (20); / / Počakajte 59 nas (minimalna zahtevana 37 us)
69C 3014 MOVLW 0x14
69D 00A8 MOVWF 0x28
69E 01A9 CLRF 0x29
69F 24D4 RAZPIS 0x4d4
155:
156: / / Display OFF
157: RS = 0;
6A0 1005 BCF 0x5, 0
158: RW = 0;
6A1 1085 BCF 0x5, 0x1
159: DB4 = 0;
6A2 1086 BCF 0x6, 0x1
160: dB5 = 0;
6A3 1106 BCF 0x6, 0x2
161: DB6 = 0;
6A4 1186 BCF 0x6, 0x3
162: DB7 = 0;
6A5 1206 BCF 0x6, 0x4
163: SL = 1;
6A6 1505 BSF 0x5, 0x2
164: ASM ( "nop");
6A7 0000 NOP
165: ASM ( "nop");
6A8 0000 NOP
166: ASM ( "nop");
6A9 0000 NOP
167: ASM ( "nop");
6AA 0000 NOP
168: ASM ( "nop");
6AB 0000 NOP
169: SL = 0;
6AC 1105 BCF 0x5, 0x2
170: DB4 = 0;
6AD 1086 BCF 0x6, 0x1
171: dB5 = 0;
6AE 1106 BCF 0x6, 0x2
172: DB6 = 0;
6AF 1186 BCF 0x6, 0x3
173: DB7 = 1;
6B0 1606 BSF 0x6, 0x4
174: SL = 1;
6B1 1505 BSF 0x5, 0x2
175: ASM ( "nop");
6B2 0000 NOP
176: ASM ( "nop");
6B3 0000 NOP
177: ASM ( "nop");
6B4 0000 NOP
178: ASM ( "nop");
6B5 0000 NOP
179: ASM ( "nop");
6B6 0000 NOP
180: SL = 0;
6B7 1105 BCF 0x5, 0x2
181: GenDelay (20); / / Počakajte 59 nas (minimalna zahtevana 37 us)
6B8 3014 MOVLW 0x14
6B9 00A8 MOVWF 0x28
6BA 01A9 CLRF 0x29
6BB 24D4 RAZPIS 0x4d4
182:
183: / / Display O
184: RS = 0;
6BC 1005 BCF 0x5, 0
185: RW = 0;
6BD 1085 BCF 0x5, 0x1
186: DB4 = 0;
6BE 1086 BCF 0x6, 0x1
187: dB5 = 0;
6BF 1106 BCF 0x6, 0x2
188: DB6 = 0;
6C0 1186 BCF 0x6, 0x3
189: DB7 = 0;
6C1 1206 BCF 0x6, 0x4
190: SL = 1;
6C2 1505 BSF 0x5, 0x2
191: ASM ( "nop");
6C3 0000 NOP
192: ASM ( "nop");
6C4 0000 NOP
193: ASM ( "nop");
6C5 0000 NOP
194: ASM ( "nop");
6C6 0000 NOP
195: ASM ( "nop");
6C7 0000 NOP
196: SL = 0;
6C8 1105 BCF 0x5, 0x2
197: DB4 = 0; / / B (kurzor utripa O = 1, OFF = 0)
6C9 1086 BCF 0x6, 0x1
198: dB5 = 0; / / C (Cursor O = 1, OFF = 0)
6CA 1106 BCF 0x6, 0x2
199: DB6 = 1; / / D (Display O = 1, OFF = 0)
6CB 1586 BSF 0x6, 0x3
200: DB7 = 1;
6CC 1606 BSF 0x6, 0x4
201: SL = 1;
6CD 1505 BSF 0x5, 0x2
202: ASM ( "nop");
6CE 0000 NOP
203: ASM ( "nop");
6CF 0000 NOP
204: ASM ( "nop");
6D0 0000 NOP
205: ASM ( "nop");
6D1 0000 NOP
206: ASM ( "nop");
6D2 0000 NOP
207: SL = 0;
6D3 1105 BCF 0x5, 0x2
208: GenDelay (20); / / Počakajte 59 nas (minimalna zahtevana 37 us)
6D4 3014 MOVLW 0x14
6D5 00A8 MOVWF 0x28
6D6 01A9 CLRF 0x29
6D7 24D4 RAZPIS 0x4d4
209:
210: / / Vstop nastavljenim
211: RS = 0;
6D8 1005 BCF 0x5, 0
212: RW = 0;
6D9 1085 BCF 0x5, 0x1
213: DB4 = 0;
6DA 1086 BCF 0x6, 0x1
214: dB5 = 0;
6DB 1106 BCF 0x6, 0x2
215: DB6 = 0;
6DC 1186 BCF 0x6, 0x3
216: DB7 = 0;
6DD 1206 BCF 0x6, 0x4
217: SL = 1;
6DE 1505 BSF 0x5, 0x2
218: ASM ( "nop");
6DF 0000 NOP
219: ASM ( "nop");
6E0 0000 NOP
220: ASM ( "nop");
6E1 0000 NOP
221: ASM ( "nop");
6E2 0000 NOP
222: ASM ( "nop");
6E3 0000 NOP
223: SL = 0;
6E4 1105 BCF 0x5, 0x2
224: DB4 = 0; / / S = 0
6E5 1086 BCF 0x6, 0x1
225: dB5 = 1, / / ID = 1
6E6 1506 BSF 0x6, 0x2
226: DB6 = 1;
6E7 1586 BSF 0x6, 0x3
227: DB7 = 0;
6E8 1206 BCF 0x6, 0x4
228: SL = 1;
6E9 1505 BSF 0x5, 0x2
229: ASM ( "nop");
6EA 0000 NOP
230: ASM ( "nop");
6EB 0000 NOP
231: ASM ( "nop");
6EC 0000 NOP
232: ASM ( "nop");
6ED 0000 NOP
233: ASM ( "nop");
6EE 0000 NOP
234: SL = 0;
6EF 1105 BCF 0x5, 0x2
235: GenDelay (20); / / Počakajte 59 nas (minimalna zahtevana 37 us)
6F0 3014 MOVLW 0x14
6F1 00A8 MOVWF 0x28
6F2 01A9 CLRF 0x29
6F3 24D4 RAZPIS 0x4d4
236:
237: ClearDisplay ();
6F4 2CEB Goto 0x4eb
238:
239: return;
240:)
241:
242: / / ---------------------------------------------- -------------------------
243: / / Namen: Cancella il contenuto dedl izpis
244: / / Avtor: Powermos
245: / / creazione Date: 25/09/2008
246: / / ---------------------------------------------- -------------------------
247: ClearDisplay neveljaven (ničen)
248 (
4EB 0183 CLRF 0x3
249: char i;
250:
251: / / Clear Display
252: RS = 0;
4EC 1005 BCF 0x5, 0
253: RW = 0;
4ED 1085 BCF 0x5, 0x1
254: DB4 = 0;
4EE 1086 BCF 0x6, 0x1
255: dB5 = 0;
4EF 1106 BCF 0x6, 0x2
256: DB6 = 0;
4F0 1186 BCF 0x6, 0x3
257: DB7 = 0;
4F1 1206 BCF 0x6, 0x4
258: SL = 1;
4F2 1505 BSF 0x5, 0x2
259: ASM ( "nop");
4F3 0000 NOP
260: ASM ( "nop");
4F4 0000 NOP
261: ASM ( "nop");
4F5 0000 NOP
262: ASM ( "nop");
4F6 0000 NOP
263: ASM ( "nop");
4F7 0000 NOP
264: SL = 0;
4F8 1105 BCF 0x5, 0x2
265: DB4 = 1;
4F9 1486 BSF 0x6, 0x1
266: dB5 = 0;
4FA 1106 BCF 0x6, 0x2
267: DB6 = 0;
4FB 1186 BCF 0x6, 0x3
268: DB7 = 0;
4FC 1206 BCF 0x6, 0x4
269: SL = 1;
4FD 1505 BSF 0x5, 0x2
270: ASM ( "nop");
4FE 0000 NOP
271: ASM ( "nop");
4FF 0000 NOP
272: ASM ( "nop");
500 0000 NOP
273: ASM ( "nop");
501 0000 NOP
274: ASM ( "nop");
502 0000 NOP
275: SL = 0;
503 1105 BCF 0x5, 0x2
276: for (i = 0; i <8; i )
504 01A4 CLRF 0x24
509 0AA4 INCF 0x24, F
50A 3008 MOVLW 0x8
50B 0224 SUBWF 0x24, W
50C 1803 BTFSC 0x3, 0
50D 0008 DONOSNOST
50E 2D05 Goto 0x505
277 (
278: GenDelay (255); / / Počakajte 5 ms min
505 30FF MOVLW 0xff
279:)
280:
281: return;
282:)
283:
284: / / ---------------------------------------------- -------------------------
285: / / Namen: določiti položaj kazalke na domu
286: / / Avtor: Powermos
287: / / creazione Date: 25/09/2008
288: / / ---------------------------------------------- -------------------------
289: CursorAtHome neveljaven (ničen)
290 (
548 0183 CLRF 0x3
291: nepotpisani char stališče = 0;
549 01A3 CLRF 0x23
292:
293: = Position Položaj | 0b10000000; / / Nastavi DB7 1
54A 17A3 BSF 0x23, 0x7
294: RS = 0;
54b 1005 BCF 0x5, 0
295: RW = 0;
54c 1085 BCF 0x5, 0x1
296: DB4 = ((Položaj & 0b00010000) == 16)? 1: 0;
54D 1E23 BTFSS 0x23, 0x4
54E 2D51 Goto 0x551
54F 1486 BSF 0x6, 0x1
550 2D52 Goto 0x552
551 1086 BCF 0x6, 0x1
297: dB5 = ((Položaj & 0b00100000) == 32)? 1: 0;
552 1283 BCF 0x3, 0x5
553 1303 BCF 0x3, 0x6
554 1EA3 BTFSS 0x23, 0x5
555 2D58 Goto 0x558
556 1506 BSF 0x6, 0x2
557 2D59 Goto 0x559
558 1106 BCF 0x6, 0x2
298: DB6 = ((Položaj & 0b01000000) == 64)? 1: 0;
559 1F23 BTFSS 0x23, 0x6
55A 2D5D Goto 0x55d
55b 1586 BSF 0x6, 0x3
55c 2D5E Goto 0x55e
55D 1186 BCF 0x6, 0x3
299: DB7 = ((Položaj & 0b10000000) == 128)? 1: 0;
55E 1FA3 BTFSS 0x23, 0x7
55F 2D62 Goto 0x562
560 1606 BSF 0x6, 0x4
561 2D63 Goto 0x563
562 1206 BCF 0x6, 0x4
300: SL = 1;
563 1505 BSF 0x5, 0x2
301: ASM ( "nop");
564 0000 NOP
302: ASM ( "nop");
565 0000 NOP
303: ASM ( "nop");
566 0000 NOP
304: ASM ( "nop");
567 0000 NOP
305: ASM ( "nop");
568 0000 NOP
306: SL = 0;
569 1105 BCF 0x5, 0x2
307: DB4 = ((Položaj & 0b00000001) == 1)? 1: 0;
56a 1C23 BTFSS 0x23, 0
56b 2D6E Goto 0x56e
56c 1486 BSF 0x6, 0x1
56d 2D6F Goto 0x56f
56E 1086 BCF 0x6, 0x1
308: dB5 = ((Položaj & 0b00000010) == 2)? 1: 0;
56F 1CA3 BTFSS 0x23, 0x1
570 2D73 Goto 0x573
571 1506 BSF 0x6, 0x2
572 2D74 Goto 0x574
573 1106 BCF 0x6, 0x2
309: DB6 = ((Položaj & 0b00000100) == 4)? 1: 0;
574 1D23 BTFSS 0x23, 0x2
575 2D78 Goto 0x578
576 1586 BSF 0x6, 0x3
577 2D79 Goto 0x579
578 1186 BCF 0x6, 0x3
310: DB7 = ((Položaj & 0b00001000) == 8)? 1: 0;
579 1DA3 BTFSS 0x23, 0x3
57a 2D7D Goto 0x57d
57b 1606 BSF 0x6, 0x4
57c 2D7E Goto 0x57e
57D 1206 BCF 0x6, 0x4
311: SL = 1;
57E 1505 BSF 0x5, 0x2
312: ASM ( "nop");
57F 0000 NOP
313: ASM ( "nop");
580 0000 NOP
314: ASM ( "nop");
581 0000 NOP
315: ASM ( "nop");
582 0000 NOP
316: ASM ( "nop");
583 0000 NOP
317: SL = 0;
584 1105 BCF 0x5, 0x2
318: GenDelay (20); / / Počakajte približno 59 nas (minimalna zahtevana je 37 us)
585 3014 MOVLW 0x14
319:
320: return;
321:)
322:
323: / / ---------------------------------------------- -------------------------
324: / / Namen: pokazati znak na LCD
325: / / Input: X položaj, Y položaj, char koda za prikazovanje
326: / / Output: --
327: / / Avtor: Powermos
328: / / creazione Date: 25/09/2008
329: / / ---------------------------------------------- -------------------------
330:
331: neveljavno Printxy (nepodpisanih char Xpos, nepodpisane char Ypos, nepodpisane char CharToDisp)
332 (
589 0183 CLRF 0x3
58a 00A5 MOVWF 0x25
333: int stališče = 0;
58B 01A6 CLRF 0x26
58C 01A7 CLRF 0x27
334:               unsigned char CharLo;
335:               unsigned char CharHi;
336:
337:                // Check if X and Y are valid for the current display
338:                if (Xpos > MAXPOSX)
58D    3011     MOVLW 0x11
58E    0225     SUBWF 0x25, W
58F    1C03     BTFSS 0x3, 0
590    2D93     GOTO 0x593
339:                  Xpos = MAXPOSX;
591    3010     MOVLW 0x10
592    00A5     MOVWF 0x25
340:                if (Ypos > MAXPOSY)
593    3003     MOVLW 0x3
594    0223     SUBWF 0x23, W
595    1C03     BTFSS 0x3, 0
596    2DA9     GOTO 0x5a9
341:                  Ypos = MAXPOSY;
597    3002     MOVLW 0x2
598    00A3     MOVWF 0x23
342:
343:                // Calculate the DDRAM address
344:                switch (Ypos)
599    2DA9     GOTO 0x5a9
5A9    0823     MOVF 0x23, W
5AA    3A01     XORLW 0x1
5AB    1903     BTFSC 0x3, 0x2
5AC    2DB6     GOTO 0x5b6
5AD    3A03     XORLW 0x3
5AE    1903     BTFSC 0x3, 0x2
5AF    2D9A     GOTO 0x59a
5B0    3A01     XORLW 0x1
5B1    1903     BTFSC 0x3, 0x2
5B2    2D9C     GOTO 0x59c
5B3    3A07     XORLW 0x7
5B4    1903     BTFSC 0x3, 0x2
5B5    2D9E     GOTO 0x59e
345:                 {
346:                   case 1 : Position =  0 Xpos;
347:                       break;
348:                   case 2 : Position = 64 Xpos;
59A    3040     MOVLW 0x40
59B    2D9F     GOTO 0x59f
349:                       break;
350:                   case 3 : Position = 20 Xpos;
59C    3014     MOVLW 0x14
59D    2D9F     GOTO 0x59f
351:                       break;
352:                   case 4 : Position = 84 Xpos;
59E    3054     MOVLW 0x54
59F    00F0     MOVWF 0x70
5A0    01F1     CLRF 0x71
5A1    0825     MOVF 0x25, W
5A2    0770     ADDWF 0x70, W
5A3    00A6     MOVWF 0x26
5A4    0871     MOVF 0x71, W
5A5    1803     BTFSC 0x3, 0
5A6    0A71     INCF 0x71, W
5A7    00A7     MOVWF 0x27
353:                       break;
5A8    2DB9     GOTO 0x5b9
354:                   default: Position =  0 Xpos;
5B6    0825     MOVF 0x25, W
5B7    00A6     MOVWF 0x26
5B8    01A7     CLRF 0x27
355:                       break;
356:                 }
357:
358:                // Set the cursor position (DDRAM address)
359:                Position = Position | 0b10000000;   // Set DB7 to 1
5B9    17A6     BSF 0x26, 0x7
360:                RS    = 0;
5BA    1005     BCF 0x5, 0
361:                RW    = 0;
5BB    1085     BCF 0x5, 0x1
362:                DB4   = ((Position & 0b00010000) == 16) ? 1: 0;
5BC    1E26     BTFSS 0x26, 0x4
5BD    2DC0     GOTO 0x5c0
5BE    1486     BSF 0x6, 0x1
5BF    2DC1     GOTO 0x5c1
5C0    1086     BCF 0x6, 0x1
363:                DB5   = ((Position & 0b00100000) == 32) ? 1: 0;
5C1    1283     BCF 0x3, 0x5
5C2    1303     BCF 0x3, 0x6
5C3    1EA6     BTFSS 0x26, 0x5
5C4    2DC7     GOTO 0x5c7
5C5    1506     BSF 0x6, 0x2
5C6    2DC8     GOTO 0x5c8
5C7    1106     BCF 0x6, 0x2
364:                DB6   = ((Position & 0b01000000) == 64) ? 1: 0;
5C8    1F26     BTFSS 0x26, 0x6
5C9    2DCC     GOTO 0x5cc
5CA    1586     BSF 0x6, 0x3
5CB    2DCD     GOTO 0x5cd
5CC    1186     BCF 0x6, 0x3
365:                DB7   = ((Position & 0b10000000) == 128) ? 1: 0;
5CD    1FA6     BTFSS 0x26, 0x7
5CE    2DD1     GOTO 0x5d1
5CF    1606     BSF 0x6, 0x4
5D0    2DD2     GOTO 0x5d2
5D1    1206     BCF 0x6, 0x4
366:                EN    = 1;
5D2    1505     BSF 0x5, 0x2
367:                asm("nop");
5D3    0000     NOP
368:                asm("nop");
5D4    0000     NOP
369:                asm("nop");
5D5    0000     NOP
370:                asm("nop");
5D6    0000     NOP
371:                asm("nop");
5D7    0000     NOP
372:                EN    = 0;
5D8    1105     BCF 0x5, 0x2
373:                DB4   = ((Position & 0b00000001) == 1) ? 1: 0;
5D9    1C26     BTFSS 0x26, 0
5DA    2DDD     GOTO 0x5dd
5DB    1486     BSF 0x6, 0x1
5DC    2DDE     GOTO 0x5de
5DD    1086     BCF 0x6, 0x1
374:                DB5   = ((Position & 0b00000010) == 2) ? 1: 0;
5DE    1CA6     BTFSS 0x26, 0x1
5DF    2DE2     GOTO 0x5e2
5E0    1506     BSF 0x6, 0x2
5E1    2DE3     GOTO 0x5e3
5E2    1106     BCF 0x6, 0x2
375:                DB6   = ((Position & 0b00000100) == 4) ? 1: 0;
5E3    1D26     BTFSS 0x26, 0x2
5E4    2DE7     GOTO 0x5e7
5E5    1586     BSF 0x6, 0x3
5E6    2DE8     GOTO 0x5e8
5E7    1186     BCF 0x6, 0x3
376:                DB7   = ((Position & 0b00001000) == 8) ? 1: 0;
5E8    1DA6     BTFSS 0x26, 0x3
5E9    2DEC     GOTO 0x5ec
5EA    1606     BSF 0x6, 0x4
5EB    2DED     GOTO 0x5ed
5EC    1206     BCF 0x6, 0x4
377:                EN    = 1;
5ED    1505     BSF 0x5, 0x2
378:                asm("nop");
5EE    0000     NOP
379:                asm("nop");
5EF    0000     NOP
380:                asm("nop");
5F0    0000     NOP
381:                asm("nop");
5F1    0000     NOP
382:                asm("nop");
5F2    0000     NOP
383:                EN    = 0;
5F3    1105     BCF 0x5, 0x2
384:                GenDelay(20); // Wait approx 59 us (minimum requested is 37 us)
5F4    3014     MOVLW 0x14
5F5    00A8     MOVWF 0x28
5F6    01A9     CLRF 0x29
5F7    24D4     CALL 0x4d4
385:
386:                // Show the char on the LCD
387:                RS    = 1;
5F8    1405     BSF 0x5, 0
388:                RW    = 0;
5F9    1085     BCF 0x5, 0x1
389:                DB4   = ((CharToDisp & 0b00010000) == 16) ? 1: 0;
5FA    1E24     BTFSS 0x24, 0x4
5FB    2DFE     GOTO 0x5fe
5FC    1486     BSF 0x6, 0x1
5FD    2DFF     GOTO 0x5ff
5FE    1086     BCF 0x6, 0x1
390:                DB5   = ((CharToDisp & 0b00100000) == 32) ? 1: 0;
5FF    1283     BCF 0x3, 0x5
600    1303     BCF 0x3, 0x6
601    1EA4     BTFSS 0x24, 0x5
602    2E05     GOTO 0x605
603    1506     BSF 0x6, 0x2
604    2E06     GOTO 0x606
605    1106     BCF 0x6, 0x2
391:                DB6   = ((CharToDisp & 0b01000000) == 64) ? 1: 0;
606    1F24     BTFSS 0x24, 0x6
607    2E0A     GOTO 0x60a
608    1586     BSF 0x6, 0x3
609    2E0B     GOTO 0x60b
60A    1186     BCF 0x6, 0x3
392:                DB7   = ((CharToDisp & 0b10000000) == 128) ? 1: 0;
60B    1FA4     BTFSS 0x24, 0x7
60C    2E0F     GOTO 0x60f
60D    1606     BSF 0x6, 0x4
60E    2E10     GOTO 0x610
60F    1206     BCF 0x6, 0x4
393:                EN    = 1;
610    1505     BSF 0x5, 0x2
394:                asm("nop");
611    0000     NOP
395:                asm("nop");
612    0000     NOP
396:                asm("nop");
613    0000     NOP
397:                asm("nop");
614    0000     NOP
398:                asm("nop");
615    0000     NOP
399:                EN    = 0;
616    1105     BCF 0x5, 0x2
400:                DB4   = ((CharToDisp & 0b00000001) == 1) ? 1: 0;
617    1C24     BTFSS 0x24, 0
618    2E1B     GOTO 0x61b
619    1486     BSF 0x6, 0x1
61A    2E1C     GOTO 0x61c
61B    1086     BCF 0x6, 0x1
401:                DB5   = ((CharToDisp & 0b00000010) == 2) ? 1: 0;
61C    1CA4     BTFSS 0x24, 0x1
61D    2E20     GOTO 0x620
61E    1506     BSF 0x6, 0x2
61F    2E21     GOTO 0x621
620    1106     BCF 0x6, 0x2
402:                DB6   = ((CharToDisp & 0b00000100) == 4) ? 1: 0;
621    1D24     BTFSS 0x24, 0x2
622    2E25     GOTO 0x625
623    1586     BSF 0x6, 0x3
624    2E26     GOTO 0x626
625    1186     BCF 0x6, 0x3
403:                DB7   = ((CharToDisp & 0b00001000) == 8) ? 1: 0;
626    1DA4     BTFSS 0x24, 0x3
627    2E2A     GOTO 0x62a
628    1606     BSF 0x6, 0x4
629    2E2B     GOTO 0x62b
62A    1206     BCF 0x6, 0x4
404:                EN    = 1;
62B    1505     BSF 0x5, 0x2
405:                asm("nop");
62C    0000     NOP
406:                asm("nop");
62D    0000     NOP
407:                asm("nop");
62E    0000     NOP
408:                asm("nop");
62F    0000     NOP
409:                asm("nop");
630    0000     NOP
410:                EN    = 0;
631    1105     BCF 0x5, 0x2
411:                GenDelay(20); // Wait approx 59 us (minimum requested is 37 us)
632    3014     MOVLW 0x14
633    00A8     MOVWF 0x28
634    01A9     CLRF 0x29
635    24D4     CALL 0x4d4
412:                RS    = 0;
636    1005     BCF 0x5, 0
413:                RW    = 0;
637    1085     BCF 0x5, 0x1
414:
415:                return;
416:               }
638    0008     RETURN
---  C:\Temp\PIC_LCD\lcddisp.c  ------------------------------------------------------------------
1:                 #include <pic.h>
2:                 #include <stdio.h>
3:
4:                 #include "lcd-lib.h"      // Pin definition file for the LCD
5:
6:                 // ---------------------------------------------------------------------------
7:                 // Design  : LCDDISP.PJT
8:                 // Purpose : LCD display with PIC16F870 (LCD 2x16) 4 bit interface
9:                 // Author  : Powermos
10:                // Date    : 25/09/2008
11:                // Rev     : 0
12:                // General : Fosc = 20.000 MHz, C1=C2=33 pF, Rosc2 = 10 Ohm, Hi-Tech compiler
13:                // ---------------------------------------------------------------------------
14:                //
15:                //   PORTA
16:                //      0 = RS (Data / Instruction register select)
17:                //      1 = RW (Read / Write )
18:                //      2 = EN (Enable signal, start data read / write)
19:                //      3 = NOT USED (Input)
20:                //      4 = NOT USED (Input)
21:                //      5 = NOT USED (Input)
22:                //
23:                //   PORTB (4 bit data bus display LCD)
24:                //      0 = NOT USED (Input)
25:                //      1 = NOT USED (Input)
26:                //      2 = NOT USED (Input)
27:                //      3 = NOT USED (Input)
28:                //      4 = DB4
29:                //      5 = DB5
30:                //      6 = DB6
31:                //      7 = DB7
32:                //
33:                //   PORTC
34:                //      0 = NOT USED (Input)
35:                //      1 = NOT USED (Input)
36:                //      2 = NOT USED (Input)
37:                //      3 = NOT USED (Input)
38:                //      4 = NOT USED (Input)
39:                //      5 = NOT USED (Input)
40:                //      6 = NOT USED (Input)
41:                //      7 = NOT USED (Input)
42:                //
43:                // ---------------------------------------------------------------------------
44:
45:                 __CONFIG(0x3F72);
46:                 __IDLOC(FFFF); // ID0 = 0F, ID1 = 0F, ID2 = 0F, ID3 = 0F
47:
48:                // ===========================================================================
49:                // GLOBAL VARIABLE DEFINITION
50:                // ===========================================================================
51:                unsigned char SWVersion[] = "Ver. 1.0";
52:                unsigned char SWDate[]    = "25/09/2008";
53:
54:                // ===========================================================================
55:                // FUNCTIONS DECLARATION
56:                // ===========================================================================
57:                void HardwareInit(void);                                         // Inizializzazione periferiche hardware
58:                void interrupt InterruptServiceRoutine(void);                     // Funzione per gestione interrupt
59:
60:                // ===========================================================================
61:                // FUNCTIONS DEFINITION
62:                // ===========================================================================
63:
64:                void  HardwareInit(void)
65:                {
66:                 // -----------------------------------------------------------------------
67:                 // uP hardware initialization
68:                 // -----------------------------------------------------------------------
69:
70:                 // ADC off, all digital I/O
71:                 ADON = 0;
4DE    0183     CLRF 0x3
4DF    101F     BCF 0x1f, 0
72:                 ADCON1 = 0b00000110;
4E0    3006     MOVLW 0x6
4E1    1683     BSF 0x3, 0x5
4E2    009F     MOVWF 0x1f
73:
74:                 // PORT direction register
75:                 TRISA = 0b11111000;
4E3    30F8     MOVLW 0xf8
4E4    0085     MOVWF 0x5
76:                 TRISB = 0b11100001;
4E5    30E1     MOVLW 0xe1
4E6    0086     MOVWF 0x6
77:                 TRISC = 0b11111111;
4E7    30FF     MOVLW 0xff
4E8    0087     MOVWF 0x7
78:
79:                 return;
80:                }
4E9    1283     BCF 0x3, 0x5
81:
82:                // -----------------------------------------------------------------------
83:                // Interrupt handler
84:                // -----------------------------------------------------------------------
85:
86:                void interrupt InterruptServiceRoutine(void)
87:                 {
88:                   GIE = 0;
008    138B     BCF 0xb, 0x7
89:
90:                   // ...........
91:
92:                   GIE = 1;
009    178B     BSF 0xb, 0x7
93:                   return;
94:                }
00A    1303     BCF 0x3, 0x6
95:
96:                // -----------------------------------------------------------------------
97:                // Include the LCD source code
98:                // -----------------------------------------------------------------------
99:                #include "lcd-lib.c"
100:
101:               // ===========================================================================
102:               // MAIN
103:               // ===========================================================================
104:               void main(void)
105:               {
6F5    1283     BCF 0x3, 0x5
106:                 unsigned char i = 0;
6F6    1303     BCF 0x3, 0x6
6F7    01A2     CLRF 0x22
107:                 unsigned char Xpos = 0;
6F8    01A0     CLRF 0x20
108:                 unsigned char Ypos = 0;
6F9    01A1     CLRF 0x21
109:
110:                 // Init the uP hardware
111:                 HardwareInit();
6FA    24DE     CALL 0x4de
112:
113:                 // Power-up time (almeno 50 ms)
114:                 LongDelay(10);
6FB    300A     MOVLW 0xa
6FC    00A3     MOVWF 0x23
6FD    01A4     CLRF 0x24
6FE    01A5     CLRF 0x25
6FF    01A6     CLRF 0x26
700    250F     CALL 0x50f
115:
116:                 // Must be the first function called!!!!
117:                 LCDInit();
701    2639     CALL 0x639
118:
119:                 // Show the software release version
120:                 Xpos = 4;
702    3004     MOVLW 0x4
703    00A0     MOVWF 0x20
121:                 Ypos = 1;
704    01A1     CLRF 0x21
705    0AA1     INCF 0x21, F
122:                 for(i = 0; i <= 7; i )
706    01A2     CLRF 0x22
712    0AA2     INCF 0x22, F
713    3008     MOVLW 0x8
714    0222     SUBWF 0x22, W
715    1C03     BTFSS 0x3, 0
716    2F07     GOTO 0x707
123:                   Printxy(Xpos i, Ypos, *(SWVersion i));
707    0821     MOVF 0x21, W
708    00A3     MOVWF 0x23
709    0822     MOVF 0x22, W
70A    3E2B     ADDLW 0x2b
70B    0084     MOVWF 0x4
70C    1383     BCF 0x3, 0x7
70D    0800     MOVF 0, W
70E    00A4     MOVWF 0x24
70F    0820     MOVF 0x20, W
710    0722     ADDWF 0x22, W
711    2589     CALL 0x589
124:
125:                 // Show the data release
126:                 Xpos = 3;
717    3003     MOVLW 0x3
718    00A0     MOVWF 0x20
127:                 Ypos = 2;
719    3002     MOVLW 0x2
71A    00A1     MOVWF 0x21
128:                 for(i = 0; i <= 9; i )
71B    01A2     CLRF 0x22
727    0AA2     INCF 0x22, F
728    300A     MOVLW 0xa
729    0222     SUBWF 0x22, W
72A    1C03     BTFSS 0x3, 0
72B    2F1C     GOTO 0x71c
129:                   Printxy(Xpos i, Ypos, *(SWDate i));
71C    0821     MOVF 0x21, W
71D    00A3     MOVWF 0x23
71E    0822     MOVF 0x22, W
71F    3E34     ADDLW 0x34
720    0084     MOVWF 0x4
721    1383     BCF 0x3, 0x7
722    0800     MOVF 0, W
723    00A4     MOVWF 0x24
724    0820     MOVF 0x20, W
725    0722     ADDWF 0x22, W
726    2589     CALL 0x589
130:
131:                 // Wait for 2s
132:                 LongDelay(400);
72C    3090     MOVLW 0x90
72D    00A3     MOVWF 0x23
72E    3001     MOVLW 0x1
72F    00A4     MOVWF 0x24
730    3000     MOVLW 0
731    01A5     CLRF 0x25
732    01A6     CLRF 0x26
733    250F     CALL 0x50f
133:
134:                 ClearDisplay();
734    24EB     CALL 0x4eb
135:
136:                 // Write char at the specified location
137:                 Printxy(0 , 1, 'H');
735    01A3     CLRF 0x23
736    0AA3     INCF 0x23, F
737    3048     MOVLW 0x48
738    00A4     MOVWF 0x24
739    3000     MOVLW 0
73A    2589     CALL 0x589
138:                 Printxy(1 , 1, 'E');
73B    01A3     CLRF 0x23
73C    0AA3     INCF 0x23, F
73D    3045     MOVLW 0x45
73E    00A4     MOVWF 0x24
73F    3001     MOVLW 0x1
740    2589     CALL 0x589
139:                 Printxy(2 , 1, 'L');
741    01A3     CLRF 0x23
742    0AA3     INCF 0x23, F
743    304C     MOVLW 0x4c
744    00A4     MOVWF 0x24
745    3002     MOVLW 0x2
746    2589     CALL 0x589
140:                 Printxy(3 , 1, 'L');
747    01A3     CLRF 0x23
748    0AA3     INCF 0x23, F
749    304C     MOVLW 0x4c
74A    00A4     MOVWF 0x24
74B    3003     MOVLW 0x3
74C    2589     CALL 0x589
141:                 Printxy(4 , 1, 'O');
74D    01A3     CLRF 0x23
74E    0AA3     INCF 0x23, F
74F    304F     MOVLW 0x4f
750    00A4     MOVWF 0x24
751    3004     MOVLW 0x4
752    2589     CALL 0x589
142:                 Printxy(5 , 1, ' ');
753    01A3     CLRF 0x23
754    0AA3     INCF 0x23, F
755    3020     MOVLW 0x20
756    00A4     MOVWF 0x24
757    3005     MOVLW 0x5
758    2589     CALL 0x589
143:                 Printxy(6 , 1, 'W');
759    01A3     CLRF 0x23
75A    0AA3     INCF 0x23, F
75B    3057     MOVLW 0x57
75C    00A4     MOVWF 0x24
75D    3006     MOVLW 0x6
75E    2589     CALL 0x589
144:                 Printxy(7 , 1, 'O');
75F    01A3     CLRF 0x23
760    0AA3     INCF 0x23, F
761    304F     MOVLW 0x4f
762    00A4     MOVWF 0x24
763    3007     MOVLW 0x7
764    2589     CALL 0x589
145:                 Printxy(8 , 1, 'R');
765    01A3     CLRF 0x23
766    0AA3     INCF 0x23, F
767    3052     MOVLW 0x52
768    00A4     MOVWF 0x24
769    3008     MOVLW 0x8
76A    2589     CALL 0x589
146:                 Printxy(9, 1, 'L');
76B    01A3     CLRF 0x23
76C    0AA3     INCF 0x23, F
76D    304C     MOVLW 0x4c
76E    00A4     MOVWF 0x24
76F    3009     MOVLW 0x9
770    2589     CALL 0x589
147:                 Printxy(10, 1, 'D');
771    01A3     CLRF 0x23
772    0AA3     INCF 0x23, F
773    3044     MOVLW 0x44
774    00A4     MOVWF 0x24
775    300A     MOVLW 0xa
776    2589     CALL 0x589
148:                 Printxy(11, 1, '!');
777    01A3     CLRF 0x23
778    0AA3     INCF 0x23, F
779    3021     MOVLW 0x21
77A    00A4     MOVWF 0x24
77B    300B     MOVLW 0xb
77C    2589     CALL 0x589
149:
150:                 Printxy(0 , 2, 'L');
77D    3002     MOVLW 0x2
77E    00A3     MOVWF 0x23
77F    304C     MOVLW 0x4c
780    00A4     MOVWF 0x24
781    3000     MOVLW 0
782    2589     CALL 0x589
151:                 Printxy(1 , 2, 'C');
783    3002     MOVLW 0x2
784    00A3     MOVWF 0x23
785    3043     MOVLW 0x43
786    00A4     MOVWF 0x24
787    3001     MOVLW 0x1
788    2589     CALL 0x589
152:                 Printxy(2 , 2, 'D');
789    3002     MOVLW 0x2
78A    00A3     MOVWF 0x23
78B    3044     MOVLW 0x44
78C    00A4     MOVWF 0x24
78D    3002     MOVLW 0x2
78E    2589     CALL 0x589
153:                 Printxy(3 , 2, ' ');
78F    3002     MOVLW 0x2
790    00A3     MOVWF 0x23
791    3020     MOVLW 0x20
792    00A4     MOVWF 0x24
793    3003     MOVLW 0x3
794    2589     CALL 0x589
154:                 Printxy(4 , 2, 'T');
795    3002     MOVLW 0x2
796    00A3     MOVWF 0x23
797    3054     MOVLW 0x54
798    00A4     MOVWF 0x24
799    3004     MOVLW 0x4
79A    2589     CALL 0x589
155:                 Printxy(5 , 2, 'E');
79B    3002     MOVLW 0x2
79C    00A3     MOVWF 0x23
79D    3045     MOVLW 0x45
79E    00A4     MOVWF 0x24
79F    3005     MOVLW 0x5
7A0    2589     CALL 0x589
156:                 Printxy(6 , 2, 'S');
7A1    3002     MOVLW 0x2
7A2    00A3     MOVWF 0x23
7A3    3053     MOVLW 0x53
7A4    00A4     MOVWF 0x24
7A5    3006     MOVLW 0x6
7A6    2589     CALL 0x589
157:                 Printxy(7 , 2, 'T');
7A7    3002     MOVLW 0x2
7A8    00A3     MOVWF 0x23
7A9    3054     MOVLW 0x54
7AA    00A4     MOVWF 0x24
7AB    3007     MOVLW 0x7
7AC    2589     CALL 0x589
158:
159:                 CursorAtHome();
7AD    2548     CALL 0x548
160:
161:                 // Wait for 2s
162:                 LongDelay(400);
7AE    3090     MOVLW 0x90
7AF    00A3     MOVWF 0x23
7B0    3001     MOVLW 0x1
7B1    00A4     MOVWF 0x24
7B2    3000     MOVLW 0
7B3    01A5     CLRF 0x25
7B4    01A6     CLRF 0x26
7B5    250F     CALL 0x50f
163:
164:                 // -----------------------------
165:                 // Main loop
166:                 // -----------------------------
167:                 while (1)
168:                  {
169:                     asm("clrwdt");
7B6    0064     CLRWDT
170:
171:                     for (i=0; i<=MAXPOSX; i )
7B7    01A2     CLRF 0x22
7CC    0AA2     INCF 0x22, F
7CD    3011     MOVLW 0x11
7CE    0222     SUBWF 0x22, W
7CF    1C03     BTFSS 0x3, 0
7D0    2FB8     GOTO 0x7b8
172:                        {
173:                           ClearDisplay();
7B8    24EB     CALL 0x4eb
174:                           Printxy(i , 1, '*');
7B9    01A3     CLRF 0x23
7BA    0AA3     INCF 0x23, F
7BB    302A     MOVLW 0x2a
7BC    00A4     MOVWF 0x24
7BD    0822     MOVF 0x22, W
7BE    2589     CALL 0x589
175:                           Printxy(MAXPOSX-i, 2, '*');
7BF    3002     MOVLW 0x2
7C0    00A3     MOVWF 0x23
7C1    302A     MOVLW 0x2a
7C2    00A4     MOVWF 0x24
7C3    0822     MOVF 0x22, W
7C4    3C10     SUBLW 0x10
7C5    2589     CALL 0x589
176:                           LongDelay(10);
7C6    300A     MOVLW 0xa
7C7    00A3     MOVWF 0x23
7C8    01A4     CLRF 0x24
7C9    01A5     CLRF 0x25
7CA    01A6     CLRF 0x26
7CB    250F     CALL 0x50f
177:                        }
178:
179:                     for (i=0; i<=MAXPOSX; i )
7D1    01A2     CLRF 0x22
7E6    0AA2     INCF 0x22, F
180:                        {
181:                           ClearDisplay();
7D2    24EB     CALL 0x4eb
182:                           Printxy(MAXPOSX-i , 1, '*');
7D3    01A3     CLRF 0x23
7D4    0AA3     INCF 0x23, F
7D5    302A     MOVLW 0x2a
7D6    00A4     MOVWF 0x24
7D7    0822     MOVF 0x22, W
7D8    3C10     SUBLW 0x10
7D9    2589     CALL 0x589
183:                               Printxy(i , 2, '*');
7DA    3002     MOVLW 0x2
7DB    00A3     MOVWF 0x23
7DC    302A     MOVLW 0x2a
7DD    00A4     MOVWF 0x24
7DE    0822     MOVF 0x22, W
7DF    2589     CALL 0x589
184:                           LongDelay(10);
7E0    300A     MOVLW 0xa


Adijo
Pow
Nazaj na vrh
View user's profile
TekUT



Pridružen /-a: 17. junij 2008
Posts: 413
Pomagali: 23


Post 03 Oct 2008 17:13 Re: LCD interfacing with a PIC - TUTORIAL -

Let me know if you need some help.

Adijo
Pow
Nazaj na vrh
View user's profile
Post new topic Reply to topic EDAboard.com Forum Index -> Microcontrollers -> LCD interfacing with a PIC - TUTORIAL -
Stran 1 od 1 Vsi časi so GMT 2 uri


Zloraba | | Administrator | | Moderatorji | | Podprite nas | | kazalo
Topic RSS