TekUT
Pridružen /-a: 17. junij 2008 Posts: 413 Pomagali: 23
| 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 |
|