; ; ; LIST p=16F628A include "P16F628A.inc" ERRORLEVEL 0, -302, -303 __config 0x3D18 cblock 0x20 count count1 counta countb count2 lcdadat bit_count xpage xpage_count ycolumn index_h index_l flag endc Initialise org 0x0000 movlw 0x07 movwf CMCON ; komparátor ki clrf count SetPorts bsf STATUS,RP0 ; bank 1 clrf TRISA clrf TRISB bcf STATUS,RP0 ; bank 0 clrf PORTA clrf PORTB call Delay255 bsf PORTA,7 ; lcd reset call Delay255 LCD_init bcf PORTA,1 ; mindkét chip kiválasztása bcf PORTA,0 movlw b'00111111' ; lcd on movwf lcdadat call LCD_com call Delay255 movlw b'01000000' ; Y kezdőcím: 0 movwf lcdadat call LCD_com movlw b'10111000' ; X kezdőcím: 0 movwf xpage movwf lcdadat call LCD_com movlw b'11000000' ; Z kezdőcím: 0 movwf lcdadat call LCD_com call Delay255 bsf PORTA,1 ; 1 chip kiválasztása bcf PORTA,0 movlw 0x08 ; 8 lapra fogunk írni X irányban movwf xpage_count Set_Y_col movlw 0x02 ; 2 chipre fogunk írni Y irányban movwf ycolumn LCD_bit movlw 0x40 ; 64 bitet fogunk egy körben kiírni movwf bit_count LCD_pixel btfsc flag,0 ; Ha ez 0 akkor még nem olvastunk ki semmit, ezért az első címléptetést átlépjük incfsz index_l,f ; A táblázat indexének léptetése goto TAB incf index_h,f movf index_h,w xorlw 0x04 btfsc STATUS,Z clrf index_h TAB bsf flag,0 ; Ezzel jelezzük, hogy kiolvastuk az első adatot call GetTabData movwf lcdadat call LCD_write incf count decfsz bit_count goto LCD_pixel movlw b'00000011' ; A chip-et léptetjük xorwf PORTA ; Ha az 1 volt kiválasztva, akkor a 2 lesz, és fordítva movlw 0x40 ; Megint feltöltjük a 64 bit számlálóját movwf bit_count decfsz ycolumn goto LCD_pixel incf xpage ; 1-el növeljük az X címet movfw xpage movwf lcdadat bcf PORTA,1 ; Az X növelésének idejére mindkét chipet kiválasztjuk call LCD_com bsf PORTA,1 decfsz xpage_count goto Set_Y_col goto $ ;LCD routines GetTabData movf index_h,w ; A táblázat címének felső byte -ja addlw high(Picture) ; A kezdőcím hozzáadása movwf PCLATH ; A felső byte tárolása - ezután nem szabad goto / call utasítást tenni a hivás utánig movf index_l,w ; A táblázat címének alsó byte -ja addlw low(Picture) ; A kezdőcím hozzáadása btfsc STATUS,C ; Átvitel kezelése incf PCLATH,f ; Felső byte módosítása movwf PCL ; Ugrás a kiszámított címre LCD_com bcf PORTA,2 movfw lcdadat movwf PORTB bsf PORTA,3 nop bcf PORTA,3 nop return LCD_write bsf PORTA,2 movfw lcdadat movwf PORTB bsf PORTA,3 nop bcf PORTA,3 nop return Delay255 movlw 0xff ;delay 255 mS goto k0 Delay100 movlw d'100' ;delay 100mS goto k0 Delay50 movlw d'50' ;delay 50mS goto k0 Delay20 movlw d'20' ;delay 20mS goto k0 Delay5 movlw 0x05 ;delay 5.000 ms (4 MHz clock) k0 movwf count1 k1 movlw 0xC7 ;delay 1mS movwf counta movlw 0x01 movwf countb Delay_0 decfsz counta, f goto $+2 decfsz countb, f goto Delay_0 decfsz count1 ,f goto k1 retlw 0x00 Picture DT 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 DT 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 DT 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 DT 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 DT 0x00,0x80,0xE0,0xF0,0xF8,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC DT 0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0x7C,0x7C,0x7C,0x7C,0x7C,0xFC,0xFC,0x7C,0x7C,0x7C DT 0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0xFC,0xFC,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C DT 0x7C,0xFC,0xFC,0xFC,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0xFC,0xFC,0x3C,0x1C,0x1C,0x3C,0xF8,0xF0,0xE0,0x80,0x00,0x00,0x00 DT 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x1F,0x07,0x07,0x03,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x03,0x03,0x07 DT 0x0F,0x1F,0x7F,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x80,0x00,0x00 DT 0x00,0x00,0x04,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xF8,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF8,0x00,0x00,0x00,0x00,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x00,0x00 DT 0x00,0x00,0x11,0xFF,0xF8,0x00,0x00,0x00,0x00,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x00,0x00,0x00,0x00,0x3F,0xFC,0x03,0x63,0x63,0x60,0x1F,0xFF,0xFF,0x80,0x00,0x00 DT 0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0xF3,0x33,0x33,0x33,0x33,0x33,0x33,0x00,0x00,0x00,0x00,0x00 DT 0x00,0x00,0x80,0xFF,0xFF,0xFF,0xFF,0xE0,0x20,0xA0,0xA0,0xA0,0xA0,0xBF,0xBF,0xFF,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,0x30,0xB0,0xB0,0xBF,0xBF,0xBF,0xF0,0xF0 DT 0x30,0xF0,0xF0,0x70,0x90,0xD0,0xF0,0xD0,0xD0,0xD0,0x10,0xD0,0xF0,0xF0,0xF0,0x10,0xDF,0xDF,0xD0,0x30,0xF0,0xF0,0x38,0xD8,0xD8,0xD8,0x38,0xF8,0x98,0x38,0x78,0xF8 DT 0xF8,0x18,0xFC,0xFF,0xEF,0x08,0xE8,0xF8,0xF8,0xF8,0x08,0x78,0xB8,0xD8,0xC8,0xF8,0x18,0xE8,0xE8,0xEC,0x1E,0xFF,0xFF,0xFC,0xF0,0xFC,0xFC,0xFF,0xFF,0xFF,0x80,0x00 DT 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xF8,0xF0,0xF0,0xE0,0xC0,0xC0,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x03,0x00,0x00,0x80,0x80,0x80,0xC0,0xC0,0xE0,0xE0,0xF0,0xF8 DT 0xFC,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0xDB,0xDB,0xDB,0xDB,0xDB,0xDF,0xFF,0xC0,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xFF,0xC0,0xDD,0xDD,0xDD,0xCD,0xEF,0xEF,0xFF DT 0xE0,0xFD,0xFA,0xFB,0xF7,0xEF,0xEF,0xFF,0xFF,0xFF,0xE0,0xFF,0xFF,0xFF,0xFF,0xE0,0xFE,0xFC,0xFA,0xFB,0xF7,0xFF,0xF8,0xF7,0xF7,0xF7,0xF0,0xFF,0xFF,0xF0,0xFF,0xFE DT 0xFD,0xF8,0xF7,0xFF,0xFF,0xF8,0xFB,0xFB,0xFF,0xFF,0xF8,0xFF,0xFE,0xFD,0xFB,0xFF,0xF8,0xFE,0xFE,0xFE,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0 DT 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF DT 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF DT 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x3F,0x3F DT 0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x07,0x03 DT 0x00,0x01,0x03,0x07,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07 DT 0x07,0x07,0x07,0x07,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01 DT 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 DT 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 DT 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 DT 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 DT 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 DT 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 end