Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

877 İLE KAYAN YAZI

Başlatan picman, 01 Aralık 2005, 23:56:31

picman

arkadaşlar şu antrak gazetesi diye internet sitesi var hiç şüpesiz birçoğunuz ordaki pic16f84 ile yapılmış klavye kontrollü kayan yazı devresini görmüştür ben bu devreyi pic16f877a ile yapmaya çalışıyorum daha önce 877 ile çalışmadığım için çok sorun oldu ben devrede biraz değişiklik yapayım dedim örneğin led displayleri 24 sutun yerine 48 sutunlu yaptım display tarama işelminde kullanılan sayıcı ve kod çözücü entegreler yerine sadece 74hc164 entegrelerini kullanarak tarama işelemini yaptırdım tarama işlemi tamam ama devreyi proteusta çalıştıramıyorum. proteusta klavye yok bunun yerine proteusta nasıl bişey yaparızda devrede klavye varmışgibi devreyi çalıştırabiliriz ayrıca bu devrede klavyeden girilen veriler pic in kendi epromunda saklanıyor . ben programın başında eproma bir veri kaydettim belki çalışır diye ama oolmadı yanlız tarama kısmını çalışltırdım 74164 ile tarama işlemi çalışıyor devre şemasını ve programı burdan versen formda gereksiz kalabalığa neden olacağından devreyi ve programı burdan vermiyorum ama aşağıda msn adresim var bu konuda bilgisi olan arkadaşlardan yardım bekliyorum bir arkadaş msn den bana yardımcı olabilirse çok sevinirim saygılarımı sunarım ...

msn adresim : digital_yusuf@msn.com
Bilgi paylaştıkça artar..

ground

Bu tip konularda msn den destek veremiyoruz..  ;)

7/24 picproje.org adresinde soru sorup ve gene bu adreste yanıtını bekleyebilirsiniz..

iyi çalışmalar..
⌒╮'╭⌒╮⌒╮.
╱◥██◣                  
| 田︱田田|              
╬╬╬╬╬╬╬╬╬

Picproje - Sözde değil özde paylaşım..

picman

haklısınız fakat bahsettiğim program bayaa büyük bişey onu forma göndersen kalabalık yapacak birde sorunumu daha iyi anlatmak  ve çözüme daha açbuk ulaşmak babında msn den yardım bekledim böylesi heralde daha iyi olur diye düşündüm
peki o koca programı forma göndereyimmi ne dersiniz?
Bilgi paylaştıkça artar..

ground

İstediğinizi yapabilirsiniz..

Amaç herkezin birşeyler öğrenebilmesi.. Sizin sorunuzla belki başkaları da karşılaşacak.. Önlem alacak..

Siz başka konularda açılmış başlıklardan mutlaka.. Birkaç byte bile olsa bilgi edinmişsinizdir..

Eğer edinmediyseniz siteyi özellikle forum kısmını komple geziniz..

Amacımız kişilere yardım ederek herkezin bundan haberi olması , bilgiyi herkeze aynı anda ulaştırmak..!

Bundan ne kazancınız var diyorsanız.. Ülkemize bir nevi hizmet.. Ülkemizin içinde bulunduğu eğitim sisteminin yeterli olmadığı yerlerde..

Bu tip teknik konularda deneyim kazanmaya çalışan insanlara yardım etmek , yardım alan kişilerin de bu duyguyu hissederek yardım etmelerini sağlamak.. Bu sinerji ile hem birçok kişiye erişip , birçok kişiden de destek umuyoruz..

Umarım azda olsa Picproje.org 'u anlatabilmişimdir..
⌒╮'╭⌒╮⌒╮.
╱◥██◣                  
| 田︱田田|              
╬╬╬╬╬╬╬╬╬

Picproje - Sözde değil özde paylaşım..

picman

ilgin için teşekkür ederim dostum o zaöam programı vereyim ben
[code]
;------------------------------------------------------------------------------------;
;                                      5x7 LED matrix                                ;
; Klavyeden girilen karakterler, önce paralel veriye dönüştürülür. Veri eğer,        ;
; gösterilebilecek bir karakterse, PIC'in EEPROM'una TUŞ KODU olarak kaydedilir.     ;
; Program EEOKU bölümüne geçtiğinde, EEPROM'a kaydedilmiş kodları sırasıyla okur.    ;
; Okunan kod, çevrim tablosu tarafından karaktere dönüştürülür. Elde edilen yeni     ;
; veri, LED display'lere gönderilir.   7 KASIM 2003 CUMA                            ;
;------------------------------------------------------------------------------------;
      LIST   P=16F877A
      INCLUDE   <P16F877A.INC>
      __CONFIG   _CP_OFF &_WDT_OFF &_PWRTE_ON &_XT_OSC
;------------------------------------------------------------------------------------;
; Register tanımlamaları                                                             ;
;------------------------------------------------------------------------------------;


VERI      EQU   H'20'   ; Seri verinin paralel olarak saklandığı file.
BIT_N      EQU   H'21'   ; Klavyeden alınan bit sayısı.
CHAR_SUTUN   EQU   H'22'   ; Karakterin sütun sayısı.
EEREAD_N   EQU   H'23'   ; EEPROM'dan okunacak maximum sütun sayısı.
EEWRITE_N   EQU   H'24'   ; EEPROM'a kaydedilen maximum sütun sayısı.
LINE      EQU   H'25'   ; Çevrim tablosunda ulaşılacak satır no.

TIMER_H1   EQU   H'26'   ; Timer HIGH1.
TIMER_H2   EQU   H'27'   ; Timer HIGH2.
TIMA      EQU   H'28'   ; TimerA
TIMB      EQU   H'29'   ; TimerB
W_TEMP      EQU   H'2A'   ; W'nin saklandığı geçici register.
STATUS_TEMP   EQU   H'2B'   ; STATUS'ın saklandığı geçici register.

SUTUN1      EQU   H'2C'   ; Sütun 1 bilgisinin saklandığı register.
SUTUN2      EQU   H'2D'   ; Sütun 2 bilgisinin saklandığı register.
SUTUN3      EQU   H'2E'   ; Sütun 3 bilgisinin saklandığı register.
SUTUN4      EQU   H'2F'   ; Sütun 4 bilgisinin saklandığı register.
SUTUN5      EQU   H'30'   ; Sütun 5 bilgisinin saklandığı register.
SUTUN6      EQU   H'31'   ; Sütun 6 bilgisinin saklandığı register.
SUTUN7      EQU   H'32'   ; Sütun 7 bilgisinin saklandığı register.
SUTUN8      EQU   H'33'   ; Sütun 8 bilgisinin saklandığı register.
SUTUN9      EQU   H'34'   ; Sütun 9 bilgisinin saklandığı register.
SUTUN10      EQU   H'35'   ; Sütun 10 bilgisinin saklandığı register.
SUTUN11      EQU   H'36'   ; Sütun 11 bilgisinin saklandığı register.
SUTUN12      EQU   H'37'   ; Sütun 12 bilgisinin saklandığı register.
SUTUN13      EQU   H'38'   ; Sütun 13 bilgisinin saklandığı register.
SUTUN14      EQU   H'39'   ; Sütun 14 bilgisinin saklandığı register.
SUTUN15      EQU   H'3A'   ; Sütun 15 bilgisinin saklandığı register.
SUTUN16      EQU   H'3B'   ; Sütun 16 bilgisinin saklandığı register.
SUTUN17      EQU   H'3C'   ; Sütun 17 bilgisinin saklandığı register.
SUTUN18      EQU   H'3D'   ; Sütun 18 bilgisinin saklandığı register.
SUTUN19      EQU   H'3E'   ; Sütun 19 bilgisinin saklandığı register.
SUTUN20      EQU   H'3F'   ; Sütun 20 bilgisinin saklandığı register.
SUTUN21      EQU   H'40'   ; Sütun 21 bilgisinin saklandığı register.
SUTUN22      EQU   H'41'   ; Sütun 22 bilgisinin saklandığı register.
SUTUN23      EQU   H'42'   ; Sütun 23 bilgisinin saklandığı register.
SUTUN24      EQU   H'43'   ; Sütun 24 bilgisinin saklandığı register.
SUTUN25      EQU   H'44'   ; Sütun 1 bilgisinin saklandığı register.
SUTUN26      EQU   H'45'   ; Sütun 2 bilgisinin saklandığı register.
SUTUN27      EQU   H'46'   ; Sütun 3 bilgisinin saklandığı register.
SUTUN28      EQU   H'47'   ; Sütun 4 bilgisinin saklandığı register.
SUTUN29      EQU   H'48'   ; Sütun 5 bilgisinin saklandığı register.
SUTUN30      EQU   H'49'   ; Sütun 6 bilgisinin saklandığı register.
SUTUN31      EQU   H'4A'   ; Sütun 7 bilgisinin saklandığı register.
SUTUN32      EQU   H'4B'   ; Sütun 8 bilgisinin saklandığı register.
SUTUN33      EQU   H'4C'   ; Sütun 9 bilgisinin saklandığı register.
SUTUN34      EQU   H'4D'   ; Sütun 10 bilgisinin saklandığı register.
SUTUN35      EQU   H'4E'   ; Sütun 11 bilgisinin saklandığı register.
SUTUN36      EQU   H'4F'   ; Sütun 12 bilgisinin saklandığı register.
SUTUN37      EQU   H'50'   ; Sütun 13 bilgisinin saklandığı register.
SUTUN38      EQU   H'51'   ; Sütun 14 bilgisinin saklandığı register.
SUTUN39      EQU   H'52'   ; Sütun 15 bilgisinin saklandığı register.
SUTUN40      EQU   H'53'   ; Sütun 16 bilgisinin saklandığı register.
SUTUN41      EQU   H'54'   ; Sütun 17 bilgisinin saklandığı register.
SUTUN42      EQU   H'55'   ; Sütun 18 bilgisinin saklandığı register.
SUTUN43      EQU   H'56'   ; Sütun 19 bilgisinin saklandığı register.
SUTUN44      EQU   H'57'   ; Sütun 20 bilgisinin saklandığı register.
SUTUN45      EQU   H'58'   ; Sütun 21 bilgisinin saklandığı register.
SUTUN46      EQU   H'59'   ; Sütun 22 bilgisinin saklandığı register.
SUTUN47      EQU   H'5A'   ; Sütun 23 bilgisinin saklandığı register.
SUTUN48      EQU   H'5B'   ; Sütun 24 bilgisinin saklandığı register.
TEMP      EQU   H'5C'   ; Geçici register.
SAYICI      EQU H'5D'   ;ZAMAN GECİKMESİ SAYACI


;------------------------------------------------------------------------------------;
      
      ORG   H'0000'      ; RESET adresi.
      GOTO   MAIN      ; Ana programa.
      
      ORG   H'0004'      ; Kesme adresi.
      GOTO   KLYOKU      ; Kesme alt programına.





;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
YUKLE   ; PORTA ve PORTB'nin başlangıç ayarları.
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;

      BSF   STATUS,RP0   ; BANK1'e geç.

MOVLW 0X07
MOVWF ADCON1    ; BÜTÜN PİNLER DİGİTAL OLARAK AYARLANIR....

      MOVLW   B'00000000'   ; W'ye H'10' yükle.
      MOVWF   TRISD      ; Çıkışlar: RA0=CLOCK, RA1=RESET, RA2=PRESET
               ; Girişler: RA3=SCAN_END, RA4=Klavye DATA
       MOVLW D'255'
       MOVWF TRISC

      MOVLW   B'10000000'   ; W'ye H'7F' yükle.
      MOVWF   TRISB      ; RB7 giriş (Klavye CLOCK), diğerleri çıkış.

      BCF   STATUS,RP0   ; BANK0'a dön.
      CLRF   PORTB      ; PORTB'yi temizle.
       CLRF PORTD
       CLRF PORTC

   RETURN
;__________________________________________________________________________________________________
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
KLYTIMER   ; Bu alt program, besleme gerilimin uygulanmasıyla birlikte,         ;
      ; klavyeden gelen tanıtım bilgilerinin bitmesi için birkaç           ;
      ; saniyelik bir gecikme sağlar.                                      ;
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;

      MOVLW   D'5'      ; W'ye 5 yükle.
      MOVWF   TEMP      ; TEMP'e gönder.
      
BEKLE      CALL   TIMER_HIGH   ; Gecikme alt programını çağır.
      DECFSZ   TEMP,F      ; TEMP-1, 0 mı?
      GOTO   BEKLE      ; Hayır, TEMP'i eksiltmeye devam et.
      RETURN         ; Alt programdan çık.

;------------------------------------------------------------------------------------;
MAIN   ; Ana program.
;------------------------------------------------------------------------------------;

   

      CALL   YUKLE      ; Portların başlangıç ayarlarını yap.
      CALL   KLYTIMER   ; Klavyeden gelen parazitleri söndür.
      CLRF   EEREAD_N   ; EEREAD_N'i temizle.
       CLRF   EEWRITE_N   ; EEWRITE_N'i temizle.      
      CLRF   VERI      ; VERI'yi temizle.
       CLRF   PORTB      ; PORTB'yi temizle.
      MOVLW   B'10001000'   ; W'ye B'10001000' yükle.
      MOVWF   INTCON      ; Genel kesme izni, PORTB kesmesi aktif.
BSF STATUS,RP1
      CLRF   EEADR      ; EEADR'yi temizle.
BCF STATUS,RP1

BCF   INTCON,GIE   ; GIE pasif.

      BCF   STATUS,RP0   ; BANK2'e geç.
       BSF STATUS,RP1
MOVLW 0H
MOVWF EEADR
MOVLW D'65'
MOVWF EEDATA

   BSF STATUS,RP0 ;BANK3 E GEÇ
   BSF STATUS,RP1
   BSF   EECON1,WREN   ; Yazma işlemine izin ver.
      MOVLW   H'55'      ; EEPROM...
      MOVWF   EECON2      ; ...için...
      MOVLW   H'AA'      ; ...standard...
      MOVWF   EECON2      ; ...işlemler.


      BSF   EECON1,WREN   ; Evet, Write Enable'ı lojik "1" yap.
      BCF   EECON1,EEIF   ; EEIF'i temizle.
       BCF STATUS,RP1
      BCF   STATUS,RP0   ; BANK0'a dön.


      
   

;------------------------------------------------------------------------------------;
      
START      CLRF   PORTB      ; PORTB'yi temizle.
      CLRF PORTD   ; CLOCK hazır. (Düşen kenarla tetiklenir.)
       NOP
       MOVLW B'00000010'
      BSF   PORTD,1      ; RESET=1, sayıcılar saymaya hazır.
      CALL   SUTUN_TEMIZLE   ; Sütun1...Sütun24'ü temizle.

BCF STATUS,RP0 ; BANK2
BSF STATUS,RP1      
KAYIT_SAYISI?   MOVLW   0      ; W'ye 0 yaz.
      MOVWF   EEADR      ; Veri sayısını okumak üzere EEADR'ye gönder.
BCF STATUS,RP1
      CALL   OKU      ; Kayıt sayısını öğren ve dön.   
BSF STATUS,RP1
      MOVF   EEDATA,W   ; Kayıt sayısını W'ye yaz.
BCF STATUS,RP1
      BTFSC   STATUS,Z   ; Kayıt sayısı 0'dan farklı mı?
      GOTO   START      ; Hayır, kayıtlı sütun sayısı "0"

BSF STATUS,RP1      
DATA?255   MOVF   EEDATA,W   ; EEDATA'yı W'ye yaz.
BCF STATUS,RP1
      SUBLW   D'255'      ; 255-W
      BTFSC   STATUS,Z   ; DATA, 255'ten farklı mı?
      GOTO   START      ; Hayır 255, yeniden başla.
BSF STATUS,RP1
      MOVF   EEDATA,W   ; EEDATA'yı W'ye yaz.
BCF STATUS,RP1
      MOVWF   EEREAD_N   ; EEREAD_N register'a gönder.
      MOVWF   EEWRITE_N   ; EEWRITE_N register'a gönder.
      
KAYIT_VARMI?   MOVF   EEREAD_N,W   ; Okunacak karakter sayısını W'ye yaz.
      SUBLW   H'FF'      ; 255-EEREAD_N
      BTFSC   STATUS,Z   ; Okunacak bir kayıt var mı?
      CALL START      ; Hayır, tüm kayıt silinmiş.

BSF STATUS,RP1
SONRAKI      INCF   EEADR,F      ; EEADR+1
      CALL   OKU      ; EEPROM'a kayıtlı veriyi al ve dön.
BSF STATUS,RP1
      MOVF   EEDATA,W   ; EEDATA'yı W'ye yaz.
BCF STATUS,RP1
      MOVWF   VERI      ; EEDATA'yı VERI'ye gönder.
      SUBLW   D'113'      ; 113-VERI (Delete tuşunu kodu)
      BTFSC   STATUS,Z   ; Basılan tuş DELETE'in dışında mı?
      GOTO   START      ; Hayır, basılan tuş DELETE.
      
      CALL   ANALIZ      ; Evet, tuşu analiz et, PORTB'den gönder.
BSF STATUS,RP1            
      DECFSZ   EEREAD_N,F   ; Kayıtlı son veri okundu mu?
BCF STATUS,RP1
      GOTO   BIR_SUTUN_BOS   ; Hayır, karakter arası 1 sütun boş bırak.
      MOVLW   D'41'      ; Evet.
      MOVWF   VERI      ; W'ye boşluk karakterinin kodunu yaz.
      CALL   BOSLUK1      ; Her CALL BOSLUK1...
      CALL   BOSLUK1      ; ...komutuyla çağrılan...
      CALL   BOSLUK1      ; ...alt programda 3 sütunluk...
      CALL   BOSLUK1      ; ...boşluk bırakılır...
      CALL   BOSLUK1      ; ...Bu, toplam olarak...
      CALL   BOSLUK1      ; ...30 sütunluk boşluğa denk gelir....
      CALL   BOSLUK1      ; ...24 sütun kaydırıldığında display...
      CALL   BOSLUK1      ; ...söner. Bu noktadan itibaren 6 sütun...
      CALL   BOSLUK1      ; ...kayma süresi kadar daha, ekran...
      CALL   BOSLUK1      ; ...sönük kalacaktır.
      GOTO   START      ; Ve tüm işlemleri yeniden yap.
      
BIR_SUTUN_BOS   MOVLW   H'00'      ; W'ye 0 yükle.
      MOVWF   SUTUN1      ; SUTUN1'e gönder.
      MOVWF   PORTB      ; PORTB'den gönder.
      CALL   GOSTER      ; Sütun bilgilerini göster.
      CALL   SHIFT      ; 1 adım sola ötele.
      GOTO   SONRAKI      ; Hayır, sonraki sütun bilgisini oku.
      
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
SUTUN_TEMIZLE   ; Sütun verisini temizle.                                            ;
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;

      CLRF   SUTUN1
      CLRF   SUTUN2
      CLRF   SUTUN3
      CLRF   SUTUN4
      CLRF   SUTUN5
      CLRF   SUTUN6
      CLRF   SUTUN7
      CLRF   SUTUN8
      CLRF   SUTUN9
      CLRF   SUTUN10
      CLRF   SUTUN11
      CLRF   SUTUN12
      CLRF   SUTUN13
      CLRF   SUTUN14
      CLRF   SUTUN15
      CLRF   SUTUN16
      CLRF   SUTUN17
      CLRF   SUTUN18
      CLRF   SUTUN19
      CLRF   SUTUN10
      CLRF   SUTUN21
      CLRF   SUTUN22
      CLRF   SUTUN23
      CLRF   SUTUN24
       CLRF    SUTUN25
       CLRF    SUTUN26
       CLRF    SUTUN27
       CLRF    SUTUN28
       CLRF    SUTUN29
       CLRF    SUTUN30
       CLRF    SUTUN31
       CLRF    SUTUN32
       CLRF    SUTUN32
       CLRF    SUTUN33
       CLRF    SUTUN34
       CLRF    SUTUN35
       CLRF    SUTUN36
       CLRF    SUTUN37
       CLRF    SUTUN38
       CLRF    SUTUN39
       CLRF    SUTUN40
       CLRF    SUTUN41
       CLRF    SUTUN42
       CLRF    SUTUN43
       CLRF    SUTUN44
       CLRF    SUTUN45
       CLRF    SUTUN46
       CLRF    SUTUN47
       CLRF    SUTUN48

      RETURN


;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
OKU   ; EEPROM'daki veriyi oku.
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
       BSF STATUS,RP1
      BSF   STATUS,RP0   ; BANK1'e geç.
      BSF   EECON1,RD   ; Girilen adresle ilgili veriyi oku.
      BCF   STATUS,RP0   ; BANK0'a dön.
       BCF STATUS,RP1
      RETURN

;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
SHIFT   ; Sütunları 1 adım sola ötele.                                               ;
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;


      MOVF   SUTUN47,W   ; 23. sütunu W'ye yaz.
      MOVWF   SUTUN48      ; 24. sütuna gönder.
      
      MOVF   SUTUN46,W   ; 22. sütunu W'ye yaz.
      MOVWF   SUTUN47      ; 23. sütuna gönder.
      
      MOVF   SUTUN45,W   ; 21. sütunu W'ye yaz.
      MOVWF   SUTUN46      ; 22. sütuna gönder.
      
      MOVF   SUTUN44,W   ; 20. sütunu W'ye yaz.
      MOVWF   SUTUN45      ; 21. sütuna gönder.
      
      MOVF   SUTUN43,W   ; 19. sütunu W'ye yaz.
      MOVWF   SUTUN44      ; 20. sütuna gönder.
      
      MOVF   SUTUN42,W   ; 18. sütunu W'ye yaz.
       MOVWF   SUTUN43      ; 19. sütuna gönder.

      MOVF   SUTUN41,W   ; 17. sütunu W'ye yaz.
      MOVWF   SUTUN42      ; 18. sütuna gönder.
      
      MOVF   SUTUN40,W   ; 16. sütunu W'ye yaz.
      MOVWF   SUTUN41      ; 17. sütuna gönder.
      
      MOVF   SUTUN39,W   ; 15. sütunu W'ye yaz.
      MOVWF   SUTUN40      ; 16. sütuna gönder.

       MOVF   SUTUN38,W   ; 14. sütunu W'ye yaz.
      MOVWF   SUTUN39      ; 15. sütuna gönder.

      MOVF   SUTUN37,W   ; 13. sütunu W'ye yaz.
      MOVWF   SUTUN38      ; 14. sütuna gönder.

      MOVF   SUTUN36,W   ; 12. sütunu W'ye yaz.
      MOVWF   SUTUN37      ; 13. sütuna gönder.

      MOVF   SUTUN35,W   ; 11. sütunu W'ye yaz.
      MOVWF   SUTUN36      ; 12. sütuna gönder.

      MOVF   SUTUN34,W   ; 10. sütunu W'ye yaz.
      MOVWF   SUTUN35      ; 11. sütuna gönder.

      MOVF   SUTUN33,W   ; 9. sütunu W'ye yaz.
      MOVWF   SUTUN34      ; 10. sütuna gönder.

      MOVF   SUTUN32,W   ; 8. sütunu W'ye yaz.
      MOVWF   SUTUN33      ; 9. sütuna gönder.

      MOVF   SUTUN31,W   ; 7. sütunu W'ye yaz.
      MOVWF   SUTUN32      ; 8. sütuna gönder.

      MOVF   SUTUN30,W   ; 6. sütunu W'ye yaz.
      MOVWF   SUTUN31      ; 7. sütuna gönder.

      MOVF   SUTUN29,W   ; 5. sütunu W'ye yaz.
      MOVWF   SUTUN30      ; 6. sütuna gönder.

      MOVF   SUTUN28,W   ; 4. sütunu W'ye yaz.
      MOVWF   SUTUN29      ; 5. sütuna gönder.

      MOVF   SUTUN27,W   ; 3. sütunu W'ye yaz.
      MOVWF   SUTUN28      ; 4. sütuna gönder.

      MOVF   SUTUN26,W   ; 2. sütunu W'ye yaz.
      MOVWF   SUTUN27      ; 3. sütuna gönder.

      MOVF   SUTUN25,W   ; 1. sütunu W'ye yaz.
      MOVWF   SUTUN26      ; 2. sütuna gönder.

       MOVF    SUTUN24,W
       MOVWF   SUTUN25
      
      MOVF   SUTUN23,W   ; 23. sütunu W'ye yaz.
      MOVWF   SUTUN24      ; 24. sütuna gönder.
      
      MOVF   SUTUN22,W   ; 22. sütunu W'ye yaz.
      MOVWF   SUTUN23      ; 23. sütuna gönder.
      
      MOVF   SUTUN21,W   ; 21. sütunu W'ye yaz.
      MOVWF   SUTUN22      ; 22. sütuna gönder.
      
      MOVF   SUTUN20,W   ; 20. sütunu W'ye yaz.
      MOVWF   SUTUN21      ; 21. sütuna gönder.
      
      MOVF   SUTUN19,W   ; 19. sütunu W'ye yaz.
      MOVWF   SUTUN20      ; 20. sütuna gönder.
      
      MOVF   SUTUN18,W   ; 18. sütunu W'ye yaz.
      MOVWF   SUTUN19      ; 19. sütuna gönder.
      
      MOVF   SUTUN17,W   ; 17. sütunu W'ye yaz.
      MOVWF   SUTUN18      ; 18. sütuna gönder.
      
      MOVF   SUTUN16,W   ; 16. sütunu W'ye yaz.
      MOVWF   SUTUN17      ; 17. sütuna gönder.
      
      MOVF   SUTUN15,W   ; 15. sütunu W'ye yaz.
      MOVWF   SUTUN16      ; 16. sütuna gönder.

      MOVF   SUTUN14,W   ; 14. sütunu W'ye yaz.
      MOVWF   SUTUN15      ; 15. sütuna gönder.

      MOVF   SUTUN13,W   ; 13. sütunu W'ye yaz.
      MOVWF   SUTUN14      ; 14. sütuna gönder.

      MOVF   SUTUN12,W   ; 12. sütunu W'ye yaz.
      MOVWF   SUTUN13      ; 13. sütuna gönder.

      MOVF   SUTUN11,W   ; 11. sütunu W'ye yaz.
      MOVWF   SUTUN12      ; 12. sütuna gönder.

      MOVF   SUTUN10,W   ; 10. sütunu W'ye yaz.
      MOVWF   SUTUN11      ; 11. sütuna gönder.

      MOVF   SUTUN9,W   ; 9. sütunu W'ye yaz.
      MOVWF   SUTUN10      ; 10. sütuna gönder.

      MOVF   SUTUN8,W   ; 8. sütunu W'ye yaz.
      MOVWF   SUTUN9      ; 9. sütuna gönder.

      MOVF   SUTUN7,W   ; 7. sütunu W'ye yaz.
      MOVWF   SUTUN8      ; 8. sütuna gönder.

      MOVF   SUTUN6,W   ; 6. sütunu W'ye yaz.
      MOVWF   SUTUN7      ; 7. sütuna gönder.

      MOVF   SUTUN5,W   ; 5. sütunu W'ye yaz.
      MOVWF   SUTUN6      ; 6. sütuna gönder.

      MOVF   SUTUN4,W   ; 4. sütunu W'ye yaz.
      MOVWF   SUTUN5      ; 5. sütuna gönder.

      MOVF   SUTUN3,W   ; 3. sütunu W'ye yaz.
      MOVWF   SUTUN4      ; 4. sütuna gönder.

      MOVF   SUTUN2,W   ; 2. sütunu W'ye yaz.
      MOVWF   SUTUN3      ; 3. sütuna gönder.

      MOVF   SUTUN1,W   ; 1. sütunu W'ye yaz.
      MOVWF   SUTUN2      ; 2. sütuna gönder.
      RETURN

;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
GOSTER   ; Tablodan alınan sütun bilgisini PORTB'den gönderme.                        ;
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;

MOVLW B'00000110'
MOVWF PORTD
CALL GECIKME

MOVLW B'00000111'
MOVWF PORTD
CALL GECIKME

MOVLW B'00000010'
MOVWF PORTD
CALL GECIKME


      
      MOVF   SUTUN1,W   ; 1. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN2,W   ; 2. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN3,W   ; 3. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN4,W   ; 4. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN5,W   ; 5. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN6,W   ; 6. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN7,W   ; 7. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN8,W   ; 8. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN9,W   ; 9. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN10,W   ; 10. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN11,W   ; 11. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN12,W   ; 12. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN13,W   ; 13. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN14,W   ; 14. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN15,W   ; 15. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN16,W   ; 16. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN17,W   ; 17. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN18,W   ; 18. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN19,W   ; 19. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN20,W   ; 20. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN21,W   ; 21. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN22,W   ; 22. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN23,W   ; 23. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN24,W   ; 24. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN25,W   ; 1. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN26,W   ; 2. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN27,W   ; 3. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN28,W   ; 4. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN29,W   ; 5. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN30,W   ; 6. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN31,W   ; 7. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN32,W   ; 8. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN33,W   ; 9. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN34,W   ; 10. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN35,W   ; 11. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN36,W   ; 12. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN37,W   ; 13. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN38,W   ; 14. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN39,W   ; 15. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN40,W   ; 16. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN41,W   ; 17. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN42,W   ; 18. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN43,W   ; 19. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN44,W   ; 20. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN45,W   ; 21. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN46,W   ; 22. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN47,W   ; 23. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      MOVF   SUTUN48,W   ; 24. sütunu W'ye yaz.
      CALL   GOSTER_ALT   ; Diğer işlemler için alt programı çağır.
      RETURN


;_________________________________________________________________________________________________________________________      
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
GOSTER_ALT   ; Bu alt program, sütun verisini PORTB'den gönderir.                 ;
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
      
      MOVWF   PORTB      ; Sütun bilgisini PORTB'den gönder.
       CALL TIMA_B      ; Gecikme alt programını çağır.

    MOVLW B'00000010'
    MOVWF PORTD
    CALL GECIKME
    MOVLW B'00000011'
    MOVWF PORTD
    CALL GECIKME
      RETURN

;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
TIMA_B   ; PORTB'den LED'lere gönderilen bilgiyi gösterme süresi.                     ;
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;

      MOVLW   D'20'      ; W'ye 20 yaz.
      MOVWF   TIMA      ; TIMA register'a gönder.
PAUSE2      MOVLW   D'25'      ; W'ye 25 yaz.
      MOVWF   TIMB      ; TIMB register' gönder.
PAUSE1      DECFSZ   TIMB,F      ; TIMB-1, 0'a ulaştı mı?
      GOTO   PAUSE1      ; Hayır.
      DECFSZ   TIMA,F      ; TIMA-1, 0'a ulaştı mı?
      GOTO   PAUSE2      ; Hayır.

      RETURN         ; Evet, alt programdan çık.

;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
TIMER_HIGH   ; Bu alt program yaklaşık 0.2 saniyelik bir gecikme sağlar.          ;
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
      
      MOVLW   D'255'      ; W'ye 255 yaz.
      MOVWF   TIMER_H1   ; TIMER_H1 register'a gönder.
      
DONGU1      MOVLW   D'255'      ; W'ye 255 yaz.
      MOVWF   TIMER_H2   ; TIMER_H2 register'a gönder.
      
DONGU2      DECFSZ   TIMER_H2,F   ; TIMER_H2-1, 0 mı?
      GOTO   DONGU2      ; Hayır.
      DECFSZ   TIMER_H1,F   ; TIMER_H1-1, 0 mı?
      GOTO   DONGU1      ; Hayır.
      RETURN         ; Evet, alt programdan çık.

GECIKME;____________________TARAMA GECİKMESİ ALT PROGRAMI___________________

MOVLW D'255'
MOVWF SAYICI

TEKRAR
DECFSZ SAYICI,F
GOTO TEKRAR
RETURN

;××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××;
KLYOKU   ; Klavyeden gönderilen seri bilgiyi, paralel veriye dönüştürür.              ;
;××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××;
      
      BCF   INTCON,GIE   ; Tüm kesme işlemleri geçersiz.
      BCF   INTCON,RBIE   ; PORTB'den gelecek kesmeler geçersiz.
      BCF   INTCON,RBIF   ; PORTB kesme bayrağını sıfırla.

      MOVWF   W_TEMP      ; W'yi W_TEMP'e gönder.
      SWAPF   STATUS,W   ; Alt ve üst 4-bit'i takas et.
      MOVWF   STATUS_TEMP   ; STATUS'ı STATUS_TEMP'e gönder.
      
;××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××;
      
      CLRF   PORTB      ; PORTB'yi temizle.
      
BASLA      CLRF   VERI      ; VERI'yi, yeni bilgi için temizle.
      CALL   KLY_KONTROL   ; Bit1 : START bit, değerlendirilmeyecek.
      MOVLW   D'8'      ; W'ye 8 yükle.
      MOVWF   BIT_N      ; BIT_N register'a gönder.

BIT_KAYDIR   RRF   VERI,F      ; VERI içindeki bilgiyi, 1-bit sağa ötele.
      CALL   KLY_KONTROL   ; CLOCK ve DATA sinyallerini değerlendir.
      IORWF   VERI,F      ; W ve VERI'ye OR işlevi uygula.
      IORLW   B'01111111'   ; W ve B'01111111'ye OR işlevi uygula.
      ANDWF   VERI,F      ; Maskele.
      DECFSZ   BIT_N,F      ; BIT_N-1, 0 mı?
      GOTO   BIT_KAYDIR   ; Hayır.
      CALL   KLY_KONTROL   ; Bit10 : EŞLİK bit'i, değerlendirilmeyecek.
      CALL   KLY_KONTROL   ; Bit11 : STOP bit'i, değerlendirilmeyecek.
      
      CALL   KLY_KONTROL   ; Klavyeden...
      CALL   KLY_KONTROL   ; ...parmağın...
      CALL   KLY_KONTROL   ; ...kaldırılması...
      CALL   KLY_KONTROL   ; ...sırasında...
      CALL   KLY_KONTROL   ; ...oluşan...
      CALL   KLY_KONTROL   ; ...ikinci...
      CALL   KLY_KONTROL   ; ...interrrupt'ın...
      CALL   KLY_KONTROL   ; ...önlenmesi.
      CALL   KLY_KONTROL   ; Aksi halde...
      CALL   KLY_KONTROL   ; ...her karakter...
      CALL   KLY_KONTROL   ; ...çift olarak gözükecektir.
      
      GOTO   KLY_MAIN    ; Seri veri, paralel veriye dönüştürüldü.

KLY_KONTROL   BTFSC   PORTB,7      ; CLOCK 0 mı?
      GOTO   $ - 1      ; Hayır, 0 olmasını bekle.
      BTFSS   PORTB,7      ; CLOCK, 1 mi?
      GOTO   $ - 1      ; Hayır, 1 olmasını bekle.
      BTFSS   PORTC,0      ; DATA 1 mi?
      RETLW   B'00000000'   ; Hayır, 0 ile dön.
      RETLW   B'10000000'   ; Evet,  1 ile dön.

;××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××;
KLY_MAIN   ; Bu alt program, klavyeden gelen seri bilgiyi okur.                 ;
;××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××;

DELETE?      MOVF   VERI,W      ; VERI'yi W'ye yaz.
      SUBLW   D'113'      ; 113-VERI
      BTFSS   STATUS,Z   ; DELETE tuşuna basıldı mı?
      GOTO   HATAKONTROL   ; Hayır, devam et.
BCF STATUS,RP0 ; BANK2
BSF STATUS,RP1
      MOVLW   H'00'      ; W'ye 0 yaz.
      MOVWF   EEADR      ; Adres bilgisi olarak EEADR'ye gönder.
      MOVWF   EEDATA      ; Veri olarak EEDATA'ya gönder.
      CALL   EEYAZ      ; 0. adrese 0 yaz. (Kayıt sayısını temizle.)
      CALL   SUTUN_TEMIZLE   ; Sütun bilgisini temizle.
      CLRF   EEREAD_N   ; Okunacak kayıt sayısı 0
      CLRF   EEWRITE_N   ; EEPROM'a kayıt sayısı 0
      GOTO   KLYCIK      ; Silme işlemi tamamlandı.

HATAKONTROL   MOVF   VERI,W      ; VERI'yi W'ye yaz.
      SUBLW   B'11110000'   ; HATAKODU-VERI
      BTFSC   STATUS,Z   ; Klavye kodu hatasız mı?
      GOTO   KLYCIK      ; Hatalı, alt programdan çık.
      
SKIP      MOVF   VERI,W      ; VERI'yi W'ye yaz.
      ANDLW   B'01111111'   ; 7. bit'i maskele.      
      MOVWF   VERI      ; Maskelenen bilgiyi yeniden VERI'ye gönder.
      
VERI_KAYDET   MOVF   VERI,W      ; VERI'yi W'ye yaz.
BCF STATUS,RP0 ; BANK2
BSF STATUS,RP1
      MOVWF   EEDATA      ; EEDATA'ya gönder.
      MOVF   EEWRITE_N,W   ; EEWRITE_N'i W'ye yaz.
      MOVWF   EEADR      ; EEADR'ye adres bilgisi olarak gönder.
      INCF   EEADR,F      ; EEADR+1
      INCF   EEWRITE_N,F   ; Yazılan kayıt sayısını 1 arttır.
      CALL   EEYAZ      ; EEPROM'a yaz.   
   
BCF STATUS,RP0 ; BANK2
BSF STATUS,RP1
KAYIT_SAYISI   MOVLW   0      ; Kayıt sayısının tutulduğu adres.
KAYDET      MOVWF   EEADR      ; EEPROM'un ilk adresi.
      MOVF   EEWRITE_N,W   ; Kayıtlı bellek sayısını W'ye yaz.
      MOVWF   EEDATA      ; EEDATA' ya gönder.
      CALL   EEYAZ      ; VERI'yi EEPROM'a kaydet.
      
KLYCIK      SWAPF   STATUS_TEMP,W   ; STATUS_TEMP'i W'ye yaz.
      MOVWF   STATUS      ; STATUS'ı ilk konumuna getir.
      SWAPF   W_TEMP,F   ; W_TEMP'e swap işlemi uygula.
      SWAPF   W_TEMP,W   ; W'yi ilk konumuna getir.

      BCF   INTCON,RBIF   ; PORTB kesme bayrağını sıfırla.
      BSF   INTCON,GIE   ; Yeni kesmeler kabul edilir.
      BSF   INTCON,RBIE   ; PORTB'den gelecek kesmeler geçerli.
      
      RETFIE         ; Alt programından çık.

;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
EEYAZ   ; VERI'yi EEPROM'a kaydetme alt programı.                                    ;
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
      
;      BSF   STATUS,RP0   ; BANK1'e geç.
;      BCF   INTCON,GIE   ; GIE pasif.
;      BSF   EECON1,WREN   ; Yazma işlemine izin ver.
;      MOVLW   H'55'      ; EEPROM...
;      MOVWF   EECON2      ; ...için...
;      MOVLW   H'AA'      ; ...standard...
;      MOVWF   EECON2      ; ...işlemler.
;      BSF   EECON1,WR   ; Yazma işlemini başlat.
;SIFIRDATUT   BTFSC   EECON1,WR   ; Yazma işlemi bitti mi?
;      GOTO   SIFIRDATUT   ; Hayır, bekle.
;      BSF   EECON1,WREN   ; Evet, Write Enable'ı lojik "1" yap.
;      BCF   EECON1,EEIF   ; EEIF'i temizle.
;      BCF   STATUS,RP0   ; BANK0'a dön.
;      RETURN


BCF   INTCON,GIE   ; GIE pasif.
   BSF STATUS,RP0 ;BANK3 E GEÇ
   BSF STATUS,RP1
   BSF   EECON1,WREN   ; Yazma işlemine izin ver.
      MOVLW   H'55'      ; EEPROM...
      MOVWF   EECON2      ; ...için...
      MOVLW   H'AA'      ; ...standard...
      MOVWF   EECON2      ; ...işlemler.


      BSF   EECON1,WREN   ; Evet, Write Enable'ı lojik "1" yap.
      BCF   EECON1,EEIF   ; EEIF'i temizle.
       BCF STATUS,RP1
      BCF   STATUS,RP0   ; BANK0'a dön.

RETURN
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
ANALIZ   ; EEDATA register'ından alınan bilginin değerlendirilmesi.                   ;
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;

BIR_1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'22'      ; 22-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "1" mi?
      GOTO   IKI_1      ; Hayır.
      MOVLW   D'3'      ; W'ye 3 yaz.
      MOVWF   LINE      ; LINE register'a gönder.
      MOVLW   D'3'      ; Sütun sayısını W'ye yaz.
      MOVWF   CHAR_SUTUN   ; CHAR_SUTUN register'a gönder.
BIR_2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   BIR_2      ; Hayır, diğer sütunları oku.
      RETURN

IKI_1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'30'      ; 30-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "2" mi?
      GOTO   UC_1      ; Hayır.
      MOVLW   D'8'      ; W'ye 8 yaz.
      CALL   COMMON1      ; Ortak işlemler1.
IKI_2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   IKI_2      ; Hayır, diğer sütunları oku.
      RETURN
      
UC_1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'38'      ; 38-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "3" mü?
      GOTO   DORT_1      ; Hayır.
      MOVLW   D'13'      ; W'ye 13 yaz.
      CALL   COMMON1      ; Ortak işlemler1.
UC_2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   UC_2      ; Hayır, diğer sütunları oku.
      RETURN
      
DORT_1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'37'      ; 37-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "4" mü?
      GOTO   BES_1      ; Hayır.
      MOVLW   D'18'      ; W'ye 18 yaz.
      CALL   COMMON1      ; Ortak işlemler1.
DORT_2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   DORT_2      ; Hayır, diğer sütunları oku.
      RETURN
      
BES_1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'46'      ; 46-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "5" mi?
      GOTO   ALTI_1      ; Hayır.
      MOVLW   D'23'      ; W'ye 23 yaz.
      CALL   COMMON1      ; Ortak işlemler1.
BES_2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   BES_2      ; Hayır, diğer sütunları oku.
      RETURN
      
ALTI_1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'54'      ; 54-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "6" mı?
      GOTO   YEDI_1      ; Hayır.
      MOVLW   D'28'      ; W'ye 28 yaz.
      CALL   COMMON1      ; Ortak işlemler1.
ALTI_2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   ALTI_2      ; Hayır, diğer sütunları oku.
      RETURN
      
YEDI_1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'61'      ; 61-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "7" mi?
      GOTO   SEKIZ_1      ; Hayır.
      MOVLW   D'33'      ; W'ye 33 yaz.
      CALL   COMMON1      ; Ortak işlemler1.
YEDI_2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   YEDI_2      ; Hayır, diğer sütunları oku.
      RETURN
      
SEKIZ_1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'62'      ; 32-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "8" mi?
      GOTO   DOKUZ_1      ; Hayır.
      MOVLW   D'38'      ; W'ye 38 yaz.
      CALL   COMMON1      ; Ortak işlemler1.
SEKIZ_2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   SEKIZ_2      ; Hayır, diğer sütunları oku.
      RETURN
      
DOKUZ_1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'70'      ; 70-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "9" mu?
      GOTO   SIFIR_1      ; Hayır.
      MOVLW   D'43'      ; W'ye 43 yaz.
      CALL   COMMON1      ; Ortak işlemler1.
DOKUZ_2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   DOKUZ_2      ; Hayır, diğer sütunları oku.
      RETURN
      
SIFIR_1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'69'      ; 69-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "0" mı?
      GOTO   A1      ; Hayır.
      MOVLW   D'48'      ; W'ye 48 yaz.
      CALL   COMMON1      ; Ortak işlemler1.
SIFIR_2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   SIFIR_2      ; Hayır, diğer sütunları oku.
      RETURN

A1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'28'      ; 28-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "A" mı?
      GOTO   B1      ; Hayır.
      MOVLW   D'53'      ; W'ye 53 yaz.
      CALL   COMMON1      ; Ortak işlemler1.
A2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   A2      ; Hayır, diğer sütunları oku.
      RETURN
      
B1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'50'      ; 50-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "B" mi?
      GOTO   C1      ; Hayır.
      MOVLW   D'58'      ; W'ye 58 yaz.
      CALL   COMMON1      ; Ortak işlemler1.
B2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   B2      ; Hayır, diğer sütunları gönder.
      RETURN

C1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'33'      ; 33-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "C" mi?
      GOTO   D1      ; Hayır.
      MOVLW   D'63'      ; W'ye 63 yaz.
      CALL   COMMON1      ; Ortak işlemler1.
C2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   C2      ; Hayır, diğer sütunları gönder.
      RETURN

D1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'35'      ; 35-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "D" mi?
      GOTO   E1      ; Hayır.
      MOVLW   D'68'      ; W'ye 73 yaz.
      CALL   COMMON1      ; Ortak işlemler1.
D2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   D2      ; Hayır, diğer sütunları gönder.
      RETURN
      
E1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'36'      ; 36-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "E" mi?
      GOTO   F1      ; Hayır.
      MOVLW   D'72'      ; W'ye 77 yaz.
      CALL   COMMON4      ; Ortak işlemler4.
E2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   E2      ; Hayır, diğer sütunları gönder.
      RETURN

F1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'43'      ; 43-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "F" mi?
      GOTO   G1      ; Hayır.
      MOVLW   D'76'      ; W'ye 81 yaz.
      CALL   COMMON4      ; Ortak işlemler4.
F2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   F2      ; Hayır, diğer sütunları oku.
      RETURN

G1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'52'      ; 52-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "G" mi?
      GOTO   H1      ; Hayır.
      MOVLW   D'81'      ; W'ye 86 yaz.
      CALL   COMMON1      ; Ortak işlemler1.
G2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   G2      ; Hayır, diğer sütunları oku.
      RETURN

H1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'51'      ; 51-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "H" mi?
      GOTO   I1      ; Hayır.
      MOVLW   D'86'      ; W'ye 96 yaz.
      CALL   COMMON1      ; Ortak işlemler1.
H2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   H2      ; Hayır, diğer sütunları oku.
      RETURN

I1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'67'      ; 67-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "I mı?
      GOTO   J1      ; Hayır.
      MOVLW   D'87'      ; W'ye 97 yaz.
      MOVWF   LINE      ; LINE register'a gönder.
      MOVLW   D'1'      ; I'nın sütun sayısını W'ye yaz.
      MOVWF   CHAR_SUTUN   ; CHAR_SUTUN register'a gönder.
I2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   I2      ; Hayır, diğer sütunları gönder.
      RETURN

J1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'59'      ; 59-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "J mi?
      GOTO   K1      ; Hayır.
      MOVLW   D'91'      ; W'ye 102 yaz.
      CALL   COMMON4      ; Ortak işlemler4.
J2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   J2      ; Hayır, diğer sütunları gönder.
      RETURN

K1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'66'      ; 66-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "K" mı?
      GOTO   L1      ; Hayır.
      MOVLW   D'96'      ; W'ye 107 yaz.
      CALL   COMMON1      ; Ortak işlemler1.
K2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   K2      ; Hayır, diğer sütunları gönder.
      RETURN

L1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'75'      ; 75-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "L" mi?
      GOTO   M1      ; Hayır.
      MOVLW   D'100'      ; W'ye 111 yaz.
      CALL   COMMON4      ; Ortak işlemler4.
L2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   L2      ; Hayır, diğer sütunları gönder.
      RETURN

M1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'58'      ; 58-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "M" mi?
      GOTO   N1      ; Hayır.
      MOVLW   D'107'      ; W'ye 118 yaz.
      MOVWF   LINE      ; LINE register'a gönder.
      MOVLW   D'7'      ; M'nin sütun sayısını W'ye yaz.
      MOVWF   CHAR_SUTUN   ; CHAR_SUTUN register'a gönder.
M2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   M2      ; Hayır, diğer sütunları gönder.
      RETURN

N1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'49'      ; 49-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "M" mi?
      GOTO   O1      ; Hayır.
      MOVLW   D'112'      ; W'ye 123 yaz.
      CALL   COMMON1      ; Ortak işlemler1.
N2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   N2      ; Hayır, diğer sütunları gönder.
      RETURN

O1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'68'      ; 68-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "O" mu?
      GOTO   P1      ; Hayır.
      MOVLW   D'117'      ; W'ye 128 yaz.
      CALL   COMMON1      ; Ortak işlemler1.
O2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   O2      ; Hayır, diğer sütunları gönder.
      RETURN

P1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'77'      ; 77-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "P" mi?
      GOTO   Q1      ; Hayır.
      MOVLW   D'122'      ; W'ye 138 yaz.
      CALL   COMMON1      ; Ortak işlemler1.
P2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   P2      ; Hayır, diğer sütunları gönder.
      RETURN
      
Q1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'21'      ; 21-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "Q" mu?
      GOTO   R1      ; Hayır.
      MOVLW   D'127'      ; W'ye 143 yaz.
      CALL   COMMON1      ; Ortak işlemler1.
Q2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   Q2      ; Hayır, diğer sütunları oku.
      RETURN

R1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'45'      ; 45-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "R" mi?
      GOTO   S1      ; Hayır.
      MOVLW   D'132'      ; W'ye 148 yaz.
      CALL   COMMON1      ; Ortak işlemler1.
R2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   R2      ; Hayır, diğer sütunları gönder.
      RETURN

S1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'27'      ; 27-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "S" mi?
      GOTO   T1      ; Hayır.
      MOVLW   D'137'      ; W'ye 153 yaz.
      CALL   COMMON1      ; Ortak işlemler1.
S2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   S2      ; Hayır, diğer sütunları gönder.
      RETURN

T1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'44'      ; 44-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "T" mi?
      GOTO   U1      ; Hayır.
      MOVLW   D'142'      ; W'ye 163 yaz.
      CALL   COMMON1      ; Ortak işlemler1.
T2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   T2      ; Hayır, diğer sütunları gönder.
      RETURN

U1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'60'      ; 60-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "U" mu?
      GOTO   V1      ; Hayır.
      MOVLW   D'147'      ; W'ye 168 yaz.
      CALL   COMMON1      ; Ortak işlemler1.
U2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   U2      ; Hayır, diğer sütunları gönder.
      RETURN

V1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'42'      ; 42-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "V" mi?
      GOTO   W1      ; Hayır.
      MOVLW   D'152'      ; W'ye 178 yaz.
      CALL   COMMON1      ; Ortak işlemler1.
V2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   V2      ; Hayır, diğer sütunları gönder.
      RETURN
      
W1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'29'      ; 29-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "W" mu?
      GOTO   X1      ; Hayır.
      MOVLW   D'159'      ; W'ye 185 yaz.
      MOVWF   LINE      ; LINE register'a gönder.
      MOVLW   D'7'      ; Sütun sayısını W'ye yaz.
      MOVWF   CHAR_SUTUN   ; CHAR_SUTUN register'a gönder.
W2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   W2      ; Hayır, diğer sütunları oku.
      RETURN
      
X1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'34'      ; 34-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "X" mi?
      GOTO   Y1      ; Hayır.
      MOVLW   D'164'      ; W'ye 190 yaz.
      CALL   COMMON1      ; Ortak işlemler1.
X2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   X2      ; Hayır, diğer sütunları oku.
      RETURN

Y1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'53'      ; 53-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "Y" mi?
      GOTO   Z1      ; Hayır.
      MOVLW   D'169'      ; W'ye 195 yaz.
      CALL   COMMON1      ; Ortak işlemler1.
Y2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   Y2      ; Hayır, diğer sütunları gönder.
      RETURN

Z1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'26'      ; 67-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "Z" mi?
      GOTO   NOKTA1      ; Hayır.
      MOVLW   D'174'      ; W'ye 200 yaz.
      CALL   COMMON1      ; Ortak işlemler1.
Z2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   Z2      ; Hayır, diğer sütunları gönder.
      RETURN

NOKTA1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'74'      ; 74-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "NOKTA" mı?
      GOTO   BOSLUK1      ; Hayır.
      MOVLW   D'175'      ; W'ye 201 yaz.
      MOVWF   LINE      ; LINE register'a gönder.
      MOVLW   D'1'      ; NOKTA'nın sütun sayısını W'ye yaz.
      MOVWF   CHAR_SUTUN   ; CHAR_SUTUN register'a gönder.
NOKTA2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   NOKTA2      ; Hayır, diğer sütunları gönder.
      RETURN
      
BOSLUK1      MOVF   VERI,W      ; Karakter'e ait kodu W'ye yaz.
      SUBLW   D'41'      ; 41-EEDATA
      BTFSS   STATUS,Z   ; Basılan tuş "SPACE" mi?
      RETURN         ; Hayır.
CUMLE_SONU   MOVLW   D'178'      ; W'ye 204 yaz.
      MOVWF   LINE      ; LINE register'a gönder.
      MOVLW   D'3'      ; BOSLUK'un sütun sayısını W'ye yaz.
      MOVWF   CHAR_SUTUN   ; CHAR_SUTUN register'a gönder.
BOSLUK2      MOVLW   B'00000011'   ; W'ye 3 yaz.
      CALL   COMMON2      ; Ortak işlemler2.
      DECFSZ   CHAR_SUTUN,F   ; Karakterin sütun sayısı-1, 0 mı?
      GOTO   BOSLUK2      ; Hayır, diğer sütunları gönder.
      RETURN

;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;
; Karakterlerle ilgili yapılacak ortak işlemler, bu alt programda toplandı.        ;
;«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»;

COMMON1      MOVWF   LINE      ; LINE register'a gönder.
      MOVLW   D'5'      ; Sütun sayısını W'ye yaz.
      MOVWF   CHAR_SUTUN   ; CHAR_SUTUN register'a gönder.
      RETURN

COMMON2      MOVWF   PCLATH      ; Tabloya ulaşmak için üst bayt olarak yaz.
      MOVF   LINE,W      ; Line'ı W'ye yaz.
      CALL   TABLE      ; Çevrim tablosunu çağır.
      CLRF   PCLATH      ; Üst bayt'ı sıfırla.
      MOVWF   SUTUN1      ; Tablo bilgisini SUTUN'a gönder.
      CALL   GOSTER      ; Sütun bilgisini LED göstergeye aktar.
      CALL   SHIFT      ; Sütunları 1 adım sola ötele.
      DECF   LINE,F      ; LINE-1
      RETURN

COMMON4      MOVWF   LINE      ; LINE register'a gönder.
      MOVLW   D'4'      ; Sütun sayısını W'ye yaz.
      MOVWF   CHAR_SUTUN   ; CHAR_SUTUN register'a gönder.
      RETURN

;«»«»«»«»«»«»«»«»«»«»«»«»Â
Bilgi paylaştıkça artar..

picman

yukardaki ana program (main) kesimindeki eproma yazma işlemini belki devre epromda veri bulunmadığıiçin çalışmıyordur diye yaptım normalde yoktu birde daha önce dediğim gibi göster alt programına yaptığım küçük ilavelerle de tarama işleminin 74164 ile yapılmasını sağladım tarama işlemi tamam ama devre çalışmıyor klavye olmadığından mı bilemiyorum ama bu devreyi yapmam gerekli
birde sadece program anlaşılmasını zorlaştırıyor devre şemasını da göndermeye çalışıcam şimdi

şemayı aşağıdaki linke koydum beyler ... umarım bu sorunu çözeriz

kayan yazı devre şeması

saygılarımla çalışmalarınızda başarılar dilerim..
Bilgi paylaştıkça artar..

teknikelektronikci

sayın pic man çok hoş 16f877 ile yapmışınız devrenin açık şeması var ise onuda göndrecekmisiniz birde program aynı öyle değilmi yoksa değişiklik yaptınızmı ?  ben bu projeyi okulda yapmak istiyordum eğer siz basitleştirerek eklerseniz picprojeye ben ve herkez faydalanmış olur teşekürler kolay gelsin
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

teknikelektronikci

sayın pic man çalışmasının sebebi transistör eklememeniz olabilirmi ?
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

picman

devrenin çalışmamasının transistorle alakası yok zaten proteusta trasnsistorlü devrelerde biraz sorun çıkıyor yüksek frakanslarda uyum sağlamıyor ama gerçek ortamda elbetteki transistorlü olacak bu devre
neyse şu asm konusunda bilgi sahibi olan arkadaşlar nerdesiniz ben asm ile fazla uğraşmadığım için tam olarak bu dili bilmişyorum hedi şuna bi el atalımda birçok arkadaş faydalansın budevreden gayet güzel olacak başartılı olursak hadi yardımlarınızı bekliyorum beyler ..
Bilgi paylaştıkça artar..

teknikelektronikci

sayın picman bende bu sizin verdiğiniz şemayı aynen kurdum bir sorum olacaktı ben clock sinyalini dışarıdan veriyorum frekansıda düşük ayarlıyom 5 hz sonuna kadar gidiyor orada duruyor başa dönmüyor yani reset yapmıyor buna ek yapacakmısınız yoksa pice bağladığınızda kendisi resetleyecekmi birde clock ve reset i  port d lere bağlamışınız orijinalde port a lardaydı onları kullansak olmazmı (yani şimdilik programı aynı ya) bir sorum daha olacaktı orijinalde 7442 kulanılmış bunların çıkışı clock geldiğinde lojik 0 oluyor fakat 74164 de lojik 1 oluyor bu dot matrix lerin çeşidinide değiştirirmi daha önce hiç dot matrix kulanmadım o yüzden soruyorum  teşekürler
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

XX_CİHAN_XX

1
     LIST   P=16F84A
     INCLUDE   <P16F877A.INC>  
demıssın ama
     LIST   P=16F877A
     INCLUDE   <P16F877A.INC>  
olması gerekmezmıydı?
2
     ORG   H'0000'      ; RESET adresi.
     GOTO   MAIN      ; Ana programa.
     
     ORG   H'0004'      ; Kesme adresi.
     GOTO   KLYOKU      ; Kesme alt programına.

MOVLW 0X07
MOVWF ADCON1    ; BÜTÜN PİNLER DİGİTAL OLARAK AYARLANIR....
demıssın.  sence,
MOVLW 0X07
MOVWF ADCON1    ; BÜTÜN PİNLER DİGİTAL OLARAK AYARLANIR....
ifadesi doğru yerdemi?
3
ben bu programda porta nın giriş cıkıs olarak ayarlandıgını goremedi sence?
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

picman

dostum dediğin gibi LIST ifadesini 877 için değiştirmemişim onu değiştirdim yine dediğin gibi
MOVLW 0X07
MOVWF ADDCON1

ifadelerini de port ayarlarının yapıldığı yere aldım şimdi dedişği,n sorunlar ortadan kalktı hearlde burdaki sorun bence bank geçiş işlemlerinde
bank geçiş işlemlerinde yanlışlık yapıyorum çünki bu pic16f877 ile çalışmadım daha önce burda hata var birde devreye kalvyeyi proteusta nasıl ekleriz böyle bi özellik varmı yada programa aynı diğer malzemelerde olduğu gibi klavye modeli de ekleniyomu
Bilgi paylaştıkça artar..

XX_CİHAN_XX

Adcon1 bank1 de yer alıyor bu arada onuda hatırlatayım.16f877 nin pdf inden register tablosuna bakarak çalışmanı tavsiye edrim.Adcon1 e bank0 dayken yukleme yapamazsın o tip hatalara dikkat etmelisin.Proteusta klavye kullanamıyorsun galıba ama emin değilim hatta bi ara bende çok aramıştım ama bulamamıstım.Bu konuda kesin bie bilgisi olan arkadaşlar bilgilendirirse daha iyi olur.Bu arada programın düzeldi mi?
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

picman

evet dediğin gibi ADCON1 rgegisteri pic877 de bank 1 de ona bak tım orda yanlışlık yok ama  devre yine aynı sadece boşu boşuna tarama yapıyo görüntü yok ama tarama tamam mükemmel çalışıyo. şimdi bu devrede kalvye den herhangi bi tuşa basılınca o tuş ekranda görünüyo ve eproma kaydediliyo şimdi bizde proteusta klavye yok diye port ayarlamalarının yapıldığı alt programda epromun 0. adresişne bir değer yükledikki devre çalışsın diye normal şartlar altında devrenin epromu okuyup ekranda göstermesi lazım ama bi,şey yok ekranda henüz ben yine yapmaya çalışıyorum almassa bu devrenin orjinali,ni yapan kimse antrak gazetesinin internet sitesinden felan bulacaz artık o adamdan yardım isteyecem devre tamam lanınca tam açık şemasını asm ve hex dosyalarını forma koyarız diğer arkadaşlarda yararlanır ama bu işi iyi bilen form yönetici arkadaşlardan halaa yardım alamadık hadi neyse..
Bilgi paylaştıkça artar..

teknikelektronikci

Sayın arkadaşlar ve pic man, proje hakında hiç haber yokmu haledebildinizmi asm yi lütven bunun üzerinde duralım. yanlış anlamayın ama güzel bir proje olacak bende sene sonunda okulda yapmayı düşünüyorum haber veririseniz sevinirim teşekürler kolay gelsin
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!