Lcd Glcd dönüşümü

Başlatan TA7R, 17 Nisan 2015, 23:04:40

RaMu

Asm yi karıştırmayın,
sadece mikroc kullanın çok çok daha kolay olur.

Asm nin kodlarına dahi bakmanıza gerek yok,
program neler yapıyor ne iş görüyor bunu
programın çalışmasından dahi anlamak projeyi yapmanız için yeterli.

Ayrıca daha öncede söyledim pici de değiştirmeniz gerekmiyor.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

TA7R

MErhaba , ne kadar araştırdysam hep GLCD ye resim  yazdırma programları var . Asm ile GLCD nin istediğimiz satırında değişik fontlarla yazı (karakter) yazdırabileceğimiz bir örnek uygulama arıyorum .

RaMu

Şu konuda resim için olanla başlamıştım:
https://www.picproje.org/index.php/topic,28106.msg251351.html#msg251351
Alıntı yapılan: Mujdat117 - 21 Eylül 2011, 14:50:59
MERHABA 320X240 GLCD İLE ÇALIMADIM FAKAT 128X64 GLCD İLE ASM KODLARIYLA ÖRNEK YAPTIM HATTA BU SİTEDEDE YAYINLADI ARTI KONVERT PROGRAMI YAZDIM AŞAĞIDAKİ LİNKLERDEN ULAŞABLİRSİNİZ UMARIM FAYDASINI GÖRÜRSÜNÜZ.
https://www.picproje.org/index.php/topic,34714.0.html
https://www.picproje.org/index.php/topic,34937.0.html
VİDE GÖRÜNTÜLERİNİN OLDUĞU DİĞER LİNKLER
http://www.mcu-turkey.com/?p=14322
http://www.mcu-turkey.com/?p=15724

Sonra
http://www.microchip.com/forums/m457635-print.aspx
bu sitedeki kodu denedim, küçük fontunuda oluşturmuştum
ama font işi biraz zorlar.
Benim dedediğim hallerinden biri aşağıda:
https://www.mediafire.com/?2qg1ehprfh993gi

;===============================================================================
; GLCD Driver
;-------------------------------------------------------------------------------
;
;INTERNAL 4MHZ SELECTED
;

;----------------------------------
;HAZIRLAYAN R. MUHAMMET TULAY
;NOT!
;KODLAR EĞİTİM AMAÇLI HAZIRLANMIŞTIR
;KAYNAK:
;http://www.microchip.com/forums/m457635-print.aspx
;SİTESİNDE BULUNAN BITWISE NICKLI UYENIN YAZMIS OLDUGU, SPIKE NICKLI UYENIN
;YAYINLADIGI GLCD PROGRAMI KULLANILMIS GEREKLI DUZENLEMELER DEGISIKLIKLER EKLER
;TARAFIMCA YAPILMISTIR
;KULLANACAK KISILERE BASARILAR DILER VE TECRUBELERINI PAYLASMALARINI TEMENNİ EDERİM
;RaMu  ucanel@outlook.com
;-----------------------------------

;NOTES... 
;.........PORTA IS SET TO A2D ON POWER UP.......
;
;4MHZ XTAL 1U/SEC CLOCK
;CONNECTIONS TO DISPLAYTECH 64128C
;
;************LCD******************
;PIN	CONNECTION
;1	+VE	+4.5 - 5.5V DC
;2	VSS	GROUND
;3	VO	-3V DC
;4	DB0\
;5	DB1 \
;6	DB2  \	DATA <>
;7	DB3   \
;8	DB4   /	RESET IND
;9	DB5  /	ON/OFF IND
;10	DB6 /
;11	DB7/	BUSY IND
;12	CS1	CHIP SELECT 1
;13	CS2	CHIP SELECT 2
;14	RESET	RESET
;15	R/W	READ/WRITE
;16	D/I	DATA/INSTRUCTION
;17	E	ENABLE
;18	FG	FRAME GROUND
;19	+LED	BACKLIGHT\ +4.2 - 4.6 V DC (150mA)
;20	-LED	BACKLIGHT
;
;***********PIC********************  ;degismis olabilir isis çizime bakınız
;PORTA		LCD	
;RA0	EN	ENABLE
;RA1	CS1	CHIP SELECT 1
;RA2	CS2	CHIP SELECT 2
;RA3	D/I	DATA/INSTRUCTION
;RA4	R/W	READ/WRITE
;RA5	SPARE
;RA6	SPARE
;RA7	RESET	DISPLAY RESET
;----------------------------------------
;PORTB		LCD		
;RB0 		RB0\
;RB1		RB1 \
;RB2		RB2  \
;RB3		RB3   \	8 BIT DATA LINE
;RB4		RB4   /
;RB5		RB5  /
;RB6		RB6 /
;RB7		RB7/
;
;-------------------------------------------------------------------------------
ERRORLEVEL -203,-205,-206,-302,-305
         list   p=16f877a            ; kullanılan pic tanıt
	#include <p16f877a.inc>        ; 
	
;===============================================================================
; Fuse Settings
;-------------------------------------------------------------------------------
	__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC &  _LVP_OFF & _DEBUG_OFF & _CPD_OFF; _WRT_ENABLE_OFF &
;-------------------------------------------------------------------------------

;===============================================================================
; Hardware Configuation		;ILGILI PINLERIN GIRIS CIKIS TANIMLAMALARI YAPILMALI
;-------------------------------------------------------------------------------

GLCD_RES_TRIS    EQU     TRISD           ; /RES        
GLCD_RES         EQU     .7
GLCD_CS1_TRIS    EQU     TRISD           ; /CS1		
GLCD_CS1         EQU     .2
GLCD_CS2_TRIS    EQU     TRISD           ; /CS2
GLCD_CS2         EQU     .3
GLCD_R_W_TRIS    EQU     TRISD           ; R/W
GLCD_R_W         EQU     .5
GLCD_D_I_TRIS    EQU     TRISD           ; D/I
GLCD_D_I         EQU     .4
GLCD_EN_TRIS     EQU     TRISD           ; EN
GLCD_EN          EQU     .6


GLCD_RES_PORT    EQU		PORTD     
GLCD_CS1_PORT    EQU		PORTD
GLCD_CS2_PORT    EQU		PORTD
GLCD_R_W_PORT    EQU     PORTD
GLCD_D_I_PORT    EQU		PORTD
GLCD_EN_PORT     EQU 	PORTD

GLCD_DATA_TRIS   EQU     TRISB           ; D0-D7
GLCD_DATA_PORT   EQU     PORTB

;===============================================================================
; Data Areas
;-------------------------------------------------------------------------------
PAGE_NO	        EQU     20H	        ;PAGE NO STORE
ROW_NO          EQU     21H              ;ROW NO STORE
TEMP_L          EQU     22H              ;TEMP REGISTER

GLYPH           EQU     23H

;==============================================================================
; Interrupt Handler
;------------------------------------------------------------------------------

;.Interrupt      code    h'004'

 ;               retfie                  ; Just a place holder

;==============================================================================
; Power On Reset
;------------------------------------------------------------------------------

;.ResetVector    code    h'000'
ORG 00H
                lgoto   PowerOnReset

;------------------------------------------------------------------------------
PowerOnReset:
			    banksel ADCON1          ;SELECT BANK OF ADCON1
                movlw   h'06'           ;SET ALL PINS
                movwf   ADCON1          ;AS DIGITAL I/P'S

BANKSEL	GLCD_RES_TRIS				;YUKARIDA EQU 
BCF		GLCD_RES_TRIS,GLCD_RES		;ILE
BANKSEL	GLCD_RES_PORT				;PORT
BCF		GLCD_RES_PORT,GLCD_RES		;VE

BANKSEL	GLCD_CS1_TRIS				;TRIS
BCF		GLCD_CS1_TRIS,GLCD_CS1		;OLARAK
BANKSEL	GLCD_CS1_PORT				;ILGILI
BCF		GLCD_CS1_PORT,GLCD_CS1		;PORT

BANKSEL	GLCD_CS2_TRIS				;VE
BCF		GLCD_CS2_TRIS,GLCD_CS2		;TRISLERE
BANKSEL	GLCD_CS2_PORT				;ATANAN
BCF		GLCD_CS2_PORT,GLCD_CS2		;GLCD RESET

BANKSEL	GLCD_R_W_TRIS				;GLCD CHIP SELECT1
BCF		GLCD_R_W_TRIS,GLCD_R_W		;GLCD CHIP SELECT2
BANKSEL	GLCD_R_W_PORT				;GLCD READ WRITE
BCF		GLCD_R_W_PORT,GLCD_R_W		;GLCD D_I

BANKSEL	GLCD_D_I_TRIS				;PINLERI
BCF		GLCD_D_I_TRIS,GLCD_D_I		;BURADA
BANKSEL	GLCD_D_I_PORT				;CIKIS
BCF		GLCD_D_I_PORT,GLCD_D_I		;OLARAK

BANKSEL	GLCD_EN_TRIS		 			;ATANIR
BCF		GLCD_EN_TRIS,GLCD_EN			;VE
BANKSEL	GLCD_EN_PORT					;TEK TEK
BCF		GLCD_EN_PORT,GLCD_EN			;BCF ILE SIFIRLANIR


BANKSEL	GLCD_DATA_TRIS				;EQU ILE DATA PORTU
CLRF	GLCD_DATA_TRIS				;OLARAK SECILMIS PORT
BANKSEL	GLCD_DATA_PORT				;CIKIS OLARAK
CLRF	GLCD_DATA_PORT				;ATANIR, SIFIRLANIR

;-------------------------------------------------------------------------------
;glcd init ediliyor
                call    GLCDSetup        ;DO LCD SETUP
                call    GLCDDisplayOn    ;TURN DISPLAY ON
                call    GLCDDISPLAYSL	;SET DISPLAY START LINE  ;? ? ?

;-------------------------------------------------------------------------------
;Giriş işlmleri yapıldı, glcd fonksiyonları (altprogramları) aş. şek. kullanılıyor:
;aşağıdada görüleceği gibi GLCDSelectLeft ve Right ile
;yazdırma konumu seçilmek zorunda
;left de 8 karakter yazıldıktan sonra
;right programcı tarafından seçilmek zorunda (Glcd CS1 CS2 olayı)
;programam ufak bir ekle buda otomatik hale getirilebilir.

                call    GLCDSelectLeft
                clrw                    ;LOAD W WITH 0
                call    GLCDSetPage	;SET THE PAGE
                clrw                    ;LOAD W WITH 0
                call    GLCDSetRow	;SET THE ROW

                movlw   'H'
                call    CharOut
                movlw   'e'
                call    CharOut
                movlw   'l'
                call    CharOut
                movlw   'l'
                call    CharOut
                movlw   'o'
                call    CharOut


movlw   'M'
                call    CharOut
                movlw   'e'
                call    CharOut
                movlw   'l'
                call    CharOut
               ; movlw   'l'
               ; call    CharOut
                ;movlw   'o'
                ;call    CharOut



                movlw   .1				;YAZMAYA 1. SATIRDAN BASLA (0. SATIR ILK SATIRDIR)
                call    GLCDSetPage
                ;clrw
MOVLW 18H								;SATIRIN 18H SUTUNUNDAN YAZMAYA BASLA (TOPLAM 64 SUTUN VAR)
                call    GLCDSetRow

                movlw   'R'
                call    CharOut			;TABLODAN R HARFININ 8 BYTE DATASINI ALIR YAZAR
                movlw   'a'
                call    CharOut
                movlw   'M'
                call    CharOut
                movlw   'u'
                call    CharOut
	;	goto	$
;------------------------------------------------------------------------------

; Diaplay the entire font to test the LCD

                call    GLCDSelectLeft
                movlw   .2
                call    GLCDSetPage
                clrw
                call    GLCDSetRow

                movlw   h'20'
                call    CharOut
                movlw   h'21'
                call    CharOut
                movlw   h'22'
                call    CharOut
                movlw   h'23'
                call    CharOut
                movlw   h'24'
                call    CharOut
                movlw   h'25'
                call    CharOut
                movlw   h'26'
                call    CharOut
                movlw   h'27'
                call    CharOut

                call    GLCDSelectRight
                movlw   .2
                call    GLCDSetPage
                clrw
                call    GLCDSetRow

                movlw   h'28'
                call    CharOut
                movlw   h'29'
                call    CharOut
                movlw   h'2a'
                call    CharOut
                movlw   h'2b'
                call    CharOut
                movlw   h'2c'
                call    CharOut
                movlw   h'2d'
                call    CharOut
                movlw   h'2e'
                call    CharOut
                movlw   h'2f'
                call    CharOut

                call    GLCDSelectLeft
                movlw   .3
                call    GLCDSetPage
                clrw
                call    GLCDSetRow

                movlw   h'30'
                call    CharOut
                movlw   h'31'
                call    CharOut
                movlw   h'32'
                call    CharOut
                movlw   h'33'
                call    CharOut
                movlw   h'34'
                call    CharOut
                movlw   h'35'
                call    CharOut
                movlw   h'36'
                call    CharOut
                movlw   h'37'
                call    CharOut

                call    GLCDSelectRight
                movlw   .3
                call    GLCDSetPage
                clrw
                call    GLCDSetRow

                movlw   h'38'
                call    CharOut
                movlw   h'39'
                call    CharOut
                movlw   h'3a'
                call    CharOut
                movlw   h'3b'
                call    CharOut
                movlw   h'3c'
                call    CharOut
                movlw   h'3d'
                call    CharOut
                movlw   h'3e'
                call    CharOut
                movlw   h'3f'
                call    CharOut

                call    GLCDSelectLeft
                movlw   .4
                call    GLCDSetPage
                clrw
                call    GLCDSetRow

                movlw   h'40'
                call    CharOut
                movlw   h'41'
                call    CharOut
                movlw   h'42'
                call    CharOut
                movlw   h'43'
                call    CharOut
                movlw   h'44'
                call    CharOut
                movlw   h'45'
                call    CharOut
                movlw   h'46'
                call    CharOut
                movlw   h'47'
                call    CharOut

                call    GLCDSelectRight
                movlw   .4
                call    GLCDSetPage
                clrw
                call    GLCDSetRow

                movlw   h'48'
                call    CharOut
                movlw   h'49'
                call    CharOut
                movlw   h'4a'
                call    CharOut
                movlw   h'4b'
                call    CharOut
                movlw   h'4c'
                call    CharOut
                movlw   h'4d'
                call    CharOut
                movlw   h'4e'
                call    CharOut
                movlw   h'4f'
                call    CharOut

                call    GLCDSelectLeft
                movlw   .5
                call    GLCDSetPage
                clrw
                call    GLCDSetRow

                movlw   h'50'
                call    CharOut
                movlw   h'51'
                call    CharOut
                movlw   h'52'
                call    CharOut
                movlw   h'53'
                call    CharOut
                movlw   h'54'
                call    CharOut
                movlw   h'55'
                call    CharOut
                movlw   h'56'
                call    CharOut
                movlw   h'57'
                call    CharOut

                call    GLCDSelectRight
                movlw   .5
                call    GLCDSetPage
                clrw
                call    GLCDSetRow

                movlw   h'58'
                call    CharOut
                movlw   h'59'
                call    CharOut
                movlw   h'5a'
                call    CharOut
                movlw   h'5b'
                call    CharOut
                movlw   h'5c'
                call    CharOut
                movlw   h'5d'
                call    CharOut
                movlw   h'5e'
                call    CharOut
                movlw   h'5f'
                call    CharOut

                call    GLCDSelectLeft
                movlw   .6
                call    GLCDSetPage
                clrw
                call    GLCDSetRow

                movlw   h'60'
                call    CharOut
                movlw   h'61'
                call    CharOut
                movlw   h'62'
                call    CharOut
                movlw   h'63'
                call    CharOut
                movlw   h'64'
                call    CharOut
                movlw   h'65'
                call    CharOut
                movlw   h'66'
                call    CharOut
                movlw   h'67'
                call    CharOut

                call    GLCDSelectRight
                movlw   .6
                call    GLCDSetPage
                clrw
                call    GLCDSetRow

                movlw   h'68'
                call    CharOut
                movlw   h'69'
                call    CharOut
                movlw   h'6a'
                call    CharOut
                movlw   h'6b'
                call    CharOut
                movlw   h'6c'
                call    CharOut
                movlw   h'6d'
                call    CharOut
                movlw   h'6e'
                call    CharOut
                movlw   h'6f'
                call    CharOut

                call    GLCDSelectLeft
                movlw   .7
                call    GLCDSetPage
                clrw
                call    GLCDSetRow

                movlw   h'70'
                call    CharOut
                movlw   h'71'
                call    CharOut
                movlw   h'72'
                call    CharOut
                movlw   h'73'
                call    CharOut
                movlw   h'74'
                call    CharOut
                movlw   h'75'
                call    CharOut
                movlw   h'76'
                call    CharOut
                movlw   h'77'
                call    CharOut

                call    GLCDSelectRight
                movlw   .7
                call    GLCDSetPage
                clrw
                call    GLCDSetRow

                movlw   h'78'
                call    CharOut
                movlw   h'79'
                call    CharOut
                movlw   h'7a'
                call    CharOut
                movlw   h'7b'
                call    CharOut
                movlw   h'7c'
                call    CharOut
                movlw   h'7d'
                call    CharOut
                movlw   h'7e'
                call    CharOut
                movlw   h'7f'
                call    CharOut

                goto    $               ; Then loop forever
	
;===============================================================================
; Graphical LCD Control Subroutines			;GLCD ALTPROGRAMLAR
;-------------------------------------------------------------------------------
; Initialises the I/O pins used to communicate with the graphics LCD module and
; tells it to reset.

GLCDSetup:
                ;banksel	GLCD_RES_TRIS				;BUNLAR PROG. BASINDA HALLEDILDI
                ;bcf		GLCD_RES_TRIS,GLCD_RES	;SET DIRECTION OF RESET PIN O/P
                ;banksel	GLCD_RES_PORT
                ;bcf		GLCD_RES_PORT,GLCD_RES	;SET PORT O/P LOW (starts reset)
                ;banksel	GLCD_RES_TRIS
                ;bcf		GLCD_CS1_TRIS,GLCD_CS1	;SET DIRECTION OF CS1 PIN O/P
                ;bcf		GLCD_CS2_TRIS,GLCD_CS2	;SET DIRECTION OF CS2 PIN O/P
                ;bcf		GLCD_EN_TRIS,GLCD_EN		;SET DIRECTION OF E PIN O/P
                ;bcf		GLCD_R_W_TRIS,GLCD_R_W	;SET DIRECTION OF RW PIN O/P
                ;bcf		GLCD_D_I_TRIS,GLCD_D_I	;SET DIRECTION OF DI PIN O/P
                banksel	GLCD_EN_PORT
                bcf		GLCD_EN_PORT,GLCD_EN   	 ;SET E LOW
;BANKSEL 		LCD_RES_PORT	;GEREKSİZ EKLERDEN
                bsf		GLCD_RES_PORT,GLCD_RES	;RELEASE FROM RESET   

                call	GLCDSelectLeft
                goto	GLCDWait		; and wait until ready

;-------------------------------------------------------------------------------
; Instruct all the controller chips to turn their displays on.

GLCDDisplayOn:
                movlw	b'00111111'
                goto	GLCDCtrlAll

;-------------------------------------------------------------------------------
; Instruct all the controller chips to turn their displays off.

GLCDDisplayOff:
                movlw	B'00111110'
                goto	GLCDCtrlAll

;-------------------------------------------------------------------------------
;SETS DISPLAY DATA RAM (ADDRESS 00) TO TOP OF PAGE

GLCDDISPLAYSL:
                movlw	B'11000000'
                call	GLCDSelectLeft
                goto	GLCDSendCtrl

;-------------------------------------------------------------------------------
; Sends a command byte to all the display controllers.

GLCDCtrlAll:
                bsf    GLCD_CS1_PORT,GLCD_CS1
                bsf    GLCD_CS2_PORT,GLCD_CS2

;-------------------------------------------------------------------------------
; Sends the command byte in WREG to the currently selected controller chip

GLCDSendCtrl:
                bcf		GLCD_D_I_PORT,GLCD_D_I	; Set D/I = LO for commands
                goto	DoOutput        ;SEND COMMAND

;-------------------------------------------------------------------------------
; Sends the data byte in WREG to the currently selected controller chip

GLCDSendData:
        	bsf	GLCD_D_I_PORT,GLCD_D_I	; Set D/I = HI for data
DoOutput        bcf	GLCD_R_W_PORT,GLCD_R_W	; Set R/W = LO for output
                banksel	GLCD_DATA_TRIS		;SELECT TRISB BANK
                clrf	GLCD_DATA_TRIS		;SET TRISB TO OUTPUTS
                banksel	GLCD_DATA_PORT		;SELECT PORTB BANK
                movwf	GLCD_DATA_PORT		; .. and latch byte
                nop
                bsf	GLCD_EN_PORT,GLCD_EN	; Then strobe EN
                nop
                bcf	GLCD_EN_PORT,GLCD_EN

                btfss	GLCD_D_I_PORT,GLCD_D_I	; SEE IF SENDING DATA
                goto    GLCDWait
                incf	ROW_NO,W	; Bump ROW tracker
                andlw	B'00111111'	; .. and wrap round
                movwf	ROW_NO

;-------------------------------------------------------------------------------
; Reads the status byte from the currently selected controller and waits
; for it to become zero. (note roll thro from above)

GLCDWait:
                call    GLCDReadBusy	;READ STATUS BYTE
                btfsc   TEMP_L,7		;LOOK AT BUSY PIN
                goto    GLCDWait		;(BSY)
                return			;(CLEAR)
;-------------------------------------------------------------------------------
; Reads the status byte from the active controller chip.

GLCDReadBusy:
                bcf	GLCD_D_I_PORT,GLCD_D_I     ; Set D/I = LO for command
                goto	DoInput

;-------------------------------------------------------------------------------
;READS A DATA BYTE ( IN TEMP REG ) FROM THE ACTIVE CONTROLLER CHIP

GLCDReadData:
                bsf	GLCD_D_I_PORT,GLCD_D_I	; Set D/I = HI for data
DoInput         bsf	GLCD_R_W_PORT,GLCD_R_W	; Set R/W = HI for input
                banksel	GLCD_DATA_TRIS		;SET BANK TO TRISB
                movlw	h'ff'		;MAKE I/P'S
                movwf	GLCD_DATA_TRIS		;DO IT
                banksel GLCD_DATA_PORT		;SET BANK TO PORTB
                nop
                bsf	GLCD_EN_PORT,GLCD_EN	; Strobe EN ON
                nop
                movf	GLCD_DATA_PORT,W		;READ BYTE FROM DISPLAY IN W
                movwf	TEMP_L		;PUT W IN TEMP REG
                bcf	GLCD_EN_PORT,GLCD_EN	;EN OFF
                banksel	GLCD_DATA_TRIS		;SET BANK TO TRISB
                clrf	GLCD_DATA_TRIS		;MAKE O/P'S
                banksel	GLCD_DATA_PORT
                return

;-------------------------------------------------------------------------------
; Sets the chip select lines so the left hand side of the screen is enabled

GLCDSelectLeft:
                bsf	GLCD_CS1_PORT,GLCD_CS1
                bcf	GLCD_CS2_PORT,GLCD_CS2
                return

;-------------------------------------------------------------------------------
; Sets the chip select lines so the right hand side of the screen is enabled

GLCDSelectRight:
                bcf	GLCD_CS1_PORT,GLCD_CS1
                bsf	GLCD_CS2_PORT,GLCD_CS2
                return

;-------------------------------------------------------------------------------
; Generates and sends a command to set the selected page 

GLCDSetPage:
                andlw	B'00000111'
                movwf	PAGE_NO
                iorlw	B'10111000'
                goto	GLCDSendCtrl

;-------------------------------------------------------------------------------
; Generates and sends a command to set the selected row

GLCDSetRow
                andlw	b'00111111'
                movwf	ROW_NO
                iorlw	b'01000000'
                goto	GLCDSendCtrl

;===============================================================================
; Character Font Display
;-------------------------------------------------------------------------------

; Draw the 8x8 glyph for the character in WREG

CharOut:
                andlw   h'7f'           ; Ensure character in supported range
                addlw   -h'20'                  
                movwf   GLYPH           ; Multiply by 8 to get table offset
                clrf    PCLATH
                bcf     STATUS,C
                rlf     GLYPH,F
                rlf     GLYPH,F
                rlf     PCLATH,F
                rlf     GLYPH,F
                rlf     PCLATH,F
                movlw   high GlyphData  ; Add to table address to get target
                addwf   PCLATH,F
                movlw   low GlyphData
                addwf   GLYPH,F
                btfsc   STATUS,C
                incf    PCLATH,F

                call    ShowGlyphData   ; Repeat for each pixel column
                call    ShowGlyphData
                call    ShowGlyphData
                call    ShowGlyphData
                call    ShowGlyphData
                call    ShowGlyphData
                call    ShowGlyphData
ShowGlyphData:
                call    GetGlyphData    ; Get next byte of glyph data
                call    GLCDSendData     ; .. and display
                incf    GLYPH,F         ; Then bump data address one place
                btfsc   STATUS,Z
                incf    PCLATH,F
                return

; Recovers a byte of glyph data from the table. (dt createS RETLW instructions)

GetGlyphData:
                movf    GLYPH,W         ; Do a computed jump
                movwf   PCL
GlyphData:
                dt      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                dt      0x00,0x00,0x00,0x5F,0x5F,0x00,0x00,0x00
                dt      0x00,0x07,0x07,0x00,0x00,0x07,0x07,0x00
                dt      0x24,0x7E,0x7E,0x24,0x7E,0x7E,0x24,0x00
                dt      0x00,0x24,0x2E,0x6B,0x6B,0x3A,0x12,0x00
                dt      0x00,0x66,0x36,0x18,0x0C,0x66,0x62,0x00
                dt      0x30,0x7A,0x4F,0x5D,0x37,0x72,0x50,0x00
                dt      0x00,0x00,0x00,0x07,0x07,0x00,0x00,0x00
                dt      0x00,0x00,0x00,0x3E,0x7F,0x63,0x41,0x00 
                dt      0x00,0x41,0x63,0x7F,0x3E,0x00,0x00,0x00
                dt      0x08,0x2A,0x3E,0x1C,0x1C,0x3E,0x2A,0x08
                dt      0x00,0x08,0x08,0x3E,0x3E,0x08,0x08,0x00
                dt      0x00,0x80,0xE0,0x60,0x00,0x00,0x00,0x00
                dt      0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x00
                dt      0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x00
                dt      0x00,0x60,0x30,0x18,0x0C,0x06,0x03,0x00
                dt      0x00,0x3E,0x7F,0x49,0x45,0x7F,0x3E,0x00
                dt      0x00,0x40,0x42,0x7F,0x7F,0x40,0x40,0x00
                dt      0x00,0x42,0x63,0x71,0x59,0x4F,0x46,0x00
                dt      0x00,0x21,0x61,0x45,0x4F,0x7B,0x31,0x00
                dt      0x00,0x18,0x1C,0x16,0x7F,0x7F,0x10,0x00
                dt      0x00,0x27,0x67,0x45,0x45,0x7D,0x39,0x00
                dt      0x00,0x3E,0x7F,0x49,0x49,0x79,0x30,0x00
                dt      0x00,0x01,0x71,0x79,0x0D,0x07,0x03,0x00
                dt      0x00,0x36,0x7F,0x49,0x49,0x7F,0x36,0x00
                dt      0x00,0x06,0x4F,0x49,0x69,0x3F,0x1E,0x00
                dt      0x00,0x00,0x00,0x36,0x36,0x00,0x00,0x00
                dt      0x00,0x00,0x40,0x76,0x36,0x00,0x00,0x00
                dt      0x00,0x00,0x08,0x1C,0x36,0x63,0x41,0x00
                dt      0x00,0x24,0x24,0x24,0x24,0x24,0x24,0x00
                dt      0x00,0x41,0x63,0x36,0x1C,0x08,0x00,0x00
                dt      0x00,0x02,0x03,0x51,0x59,0x0F,0x06,0x00
                dt      0x00,0x3E,0x7F,0x41,0x5D,0x57,0x5E,0x00
                dt      0x00,0x7C,0x7E,0x13,0x13,0x7E,0x7C,0x00
                dt      0x00,0x7F,0x7F,0x49,0x49,0x7F,0x36,0x00
                dt      0x00,0x3E,0x7F,0x41,0x41,0x63,0x22,0x00
                dt      0x00,0x7F,0x7F,0x41,0x63,0x3E,0x1C,0x00
                dt      0x00,0x7F,0x7F,0x49,0x49,0x49,0x41,0x00
                dt      0x00,0x7F,0x7F,0x09,0x09,0x09,0x01,0x00
                dt      0x00,0x3E,0x7F,0x41,0x49,0x79,0x79,0x00
                dt      0x00,0x7F,0x7F,0x08,0x08,0x7F,0x7F,0x00
                dt      0x00,0x00,0x41,0x7F,0x7F,0x41,0x00,0x00
                dt      0x00,0x20,0x60,0x40,0x40,0x7F,0x3F,0x00
                dt      0x00,0x7F,0x7F,0x1C,0x36,0x63,0x41,0x00
                dt      0x00,0x7F,0x7F,0x40,0x40,0x40,0x40,0x00
                dt      0x7F,0x7F,0x06,0x0C,0x06,0x7F,0x7F,0x00
                dt      0x00,0x7F,0x7F,0x0E,0x1C,0x7F,0x7F,0x00
                dt      0x00,0x3E,0x7F,0x41,0x41,0x7F,0x3E,0x00
                dt      0x00,0x7F,0x7F,0x09,0x09,0x0F,0x06,0x00
                dt      0x00,0x3E,0x7F,0x51,0x21,0x7F,0x5E,0x00
                dt      0x00,0x7F,0x7F,0x09,0x19,0x7F,0x66,0x00
                dt      0x00,0x26,0x6F,0x49,0x49,0x7B,0x32,0x00
                dt      0x00,0x01,0x01,0x7F,0x7F,0x01,0x01,0x00
                dt      0x00,0x3F,0x7F,0x40,0x40,0x7F,0x7F,0x00
                dt      0x00,0x1F,0x3F,0x60,0x60,0x3F,0x1F,0x00
                dt      0x7F,0x7F,0x30,0x18,0x30,0x7F,0x7F,0x00
                dt      0x00,0x63,0x77,0x1C,0x1C,0x77,0x63,0x00
                dt      0x00,0x07,0x0F,0x78,0x78,0x0F,0x07,0x00
                dt      0x00,0x61,0x71,0x59,0x4D,0x47,0x43,0x00
                dt      0x00,0x00,0x00,0x7F,0x7F,0x41,0x41,0x00
                dt      0x00,0x03,0x06,0x0C,0x18,0x30,0x60,0x00
                dt      0x00,0x41,0x41,0x7F,0x7F,0x00,0x00,0x00
                dt      0x08,0x0C,0x06,0x03,0x06,0x0C,0x08,0x00
                dt      0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00
                dt      0x02,0x06,0x0C,0x08,0x00,0x00,0x00,0x00
                dt      0x00,0x20,0x74,0x54,0x54,0x7C,0x78,0x00
                dt      0x00,0x7F,0x7F,0x44,0x44,0x7C,0x38,0x00
                dt      0x00,0x38,0x7C,0x44,0x44,0x44,0x00,0x00
                dt      0x00,0x38,0x7C,0x44,0x44,0x7F,0x7F,0x00
                dt      0x00,0x38,0x7C,0x54,0x54,0x5C,0x18,0x00
                dt      0x00,0x04,0x7E,0x7F,0x05,0x05,0x00,0x00
                dt      0x00,0x98,0xBC,0xA4,0xA4,0xFC,0x7C,0x00
                dt      0x00,0x7F,0x7F,0x04,0x04,0x7C,0x78,0x00
                dt      0x00,0x00,0x44,0x7D,0x7D,0x40,0x00,0x00
                dt      0x00,0x80,0x80,0xFD,0x7D,0x00,0x00,0x00
                dt      0x00,0x7F,0x7F,0x10,0x38,0x6C,0x44,0x00
                dt      0x00,0x00,0x41,0x7F,0x7F,0x40,0x00,0x00
                dt      0x7C,0x7C,0x0C,0x18,0x0C,0x7C,0x78,0x00
                dt      0x00,0x7C,0x7C,0x04,0x04,0x7C,0x78,0x00
                dt      0x00,0x38,0x7C,0x44,0x44,0x7C,0x38,0x00
                dt      0x00,0xFC,0xFC,0x44,0x44,0x7C,0x38,0x00
                dt      0x00,0x38,0x7C,0x44,0x44,0xFC,0xFC,0x00
                dt      0x00,0x7C,0x7C,0x04,0x04,0x0C,0x08,0x00
                dt      0x00,0x48,0x5C,0x54,0x54,0x74,0x24,0x00
                dt      0x00,0x04,0x04,0x3E,0x7E,0x44,0x44,0x00
                dt      0x00,0x3C,0x7C,0x40,0x40,0x7C,0x7C,0x00
                dt      0x00,0x1C,0x3C,0x60,0x60,0x3C,0x1C,0x00
                dt      0x1C,0x7C,0x60,0x30,0x60,0x7C,0x1C,0x00
                dt      0x00,0x44,0x6C,0x38,0x38,0x6C,0x44,0x00
                dt      0x00,0x9C,0xBC,0xA0,0xA0,0xFC,0x7C,0x00
                dt      0x00,0x44,0x64,0x74,0x5C,0x4C,0x44,0x00
                dt      0x00,0x00,0x08,0x3E,0x77,0x41,0x41,0x00
                dt      0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00
                dt      0x00,0x41,0x41,0x77,0x3E,0x08,0x00,0x00
                dt      0x0C,0x06,0x06,0x0C,0x18,0x18,0x0C,0x00
                dt      0x00,0x60,0x78,0x5E,0x46,0x58,0x60,0x00

                end


Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

TA7R

Hocam çok teşekkür ederim. Son iki projenizi indirdim inceleyeceğim.