16F628A asm programları yükleme sorunu.

Başlatan oguzerdal, 01 Haziran 2023, 04:07:52

oguzerdal

Değerli arkadaşlar, daha evvelki bir sorunu tekrar açmışım gibi görünebilir ama öyle değil sanırım. Mavi kapaklı Orhan Altınbaşak'ın 16F628A asm kitabının neredeyse tamamını çalıştım,yükledim ( Expkit deneme kartı ile ) hiç birinde sorun çıkmadı şıkır şıkır çalıştı,derlendi,yüklendi. Ama ekteki "kodlagitsin " programı yükleme başarısız deyip kalıyor. ( Exprog ile ) . En son aklıma gelen şey, programın içinde makrolar var. Listing dosyasına baktım yanında kod yok. Sabahın bu saatinde de başka bir şey düşünemiyorum artık. Daha önce de benzer sorun PBP programlarında olmuştu ve ETE hocayla bir türlü bir sonuca varamamıştık. Ne olabilir , bir fikri  yardımı olan lütfen... ( B0-B3 --->D4-D7  bağlı )

;------------------------------16F628A & 1602A LCD ---------------------------------
;----------------------------------Kodla Gitsin-------------------------------------
            LIST         P=16F628A
           #include "P16F628A.inc"
    __CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BODEN_OFF & _LVP_OFF & _CP_OFF 
            ERRORLEVEL -302

            CBLOCK H'20'
            MESAJ
            KRKTR
            TEMP
            SAYAC1
            SAYAC2
            ENDC
#DEFINE     RS          PORTB,4
#DEFINE     E           PORTB,5    
;-------------------------BAĞLANTILAR----------------------------
;RS=RB4 
;E=RB5 
;D4..D7=RB0..RB3
;----------------------------------------------------------------
            MOVLW h'07'  
            MOVWF CMCON           ;COMPARATOR ÖZELLİĞİ (analog gerilim karşılaştırıcı özelliği) KAPALI VE PORTA I/O İÇİN AKTİF MODDA
            CLRF  PORTB           ;PORTB Yİ SIFIRLA
             
;GİRİŞ-ÇIKIŞ TANIMLAMALARI
     
            BANKSEL     TRISA               ;BANK1 E GEÇİŞ YAP  
            CLRF        TRISA           ;PORTA NIN BÜTÜN PİNLERİNİ ÇIKIŞ YAP    
            CLRF        TRISB           ;PORTB NİN BÜTÜN PİNLERİNİ ÇIKIŞ YAP
            MOVLW       H'80'
            MOVWF       OPTION_REG
            BANKSEL     PORTB          ;TEKRAR BANK0 A GEÇ
            CLRF        PORTB           ;PORTB Yİ SIFIRLA
            CLRF        PORTA
;---------------------KOMUT GÖNDERME MAKROSU------------------------------------
KMT MACRO   
            CALL        KISA_GECIKME
            BCF         RS
            BSF         E
            NOP
            BCF         E
            NOP 
            ENDM
;--------------------MESAJ GÖNDERME MAKROSU-------------------------------------
MSJ MACRO
            CALL        KISA_GECIKME
            BSF         RS
            BSF         E
            NOP
            BCF         E
            NOP
            ENDM
;------------------KURSÖRÜ BAŞA AL------------------------------------------
            MOVLW       D'02'          
            MOVWF       PORTB
            KMT     
;-----------------LCD'Yİ 4 BİT 2 SATIRA AYARLA, B'00101000'-----------------
            CALL        UZUN_GECIKME
            MOVLW       B'00000010'     ;ÖNCE ÜST 4 BİTİ GÖNDER
            MOVWF       PORTB
            KMT                     
            MOVLW       B'00001000'     ;SONRA ALT 4 BİTİ
            MOVWF       PORTB
            KMT
;------------------EKRANI VE KURSÖRÜ AÇ-------------------------------------
            CALL        UZUN_GECIKME
            CLRF        PORTB           ;ÜST 4 BİTİ GÖNDER
            KMT
            MOVLW       B'00001110'     ;ALT 4 BİTİ GÖNDER
            MOVWF       PORTB   
            KMT
;-----------------ARTIŞ SAĞA DOĞRU-----------------------------------------
            CALL        UZUN_GECIKME
            CLRF        PORTB           ;ÜST 4 BİTİ GÖNDER
            KMT
            MOVLW       B'00000110'     ;ALT 4 BİTİ GÖNDER
            MOVWF       PORTB
            KMT
;-----------------EKRANI TEMİZLE-------------------------------------------
            CALL        UZUN_GECIKME
            CLRF        PORTB           ;ÜST 4 BİTİ GÖNDER
            KMT
            MOVLW       B'00000001'     ;ALT 4 BİTİ GÖNDER
            MOVWF       PORTB   
            KMT
            CALL        UZUN_GECIKME    
;-----------------BİRİNCİ MESAJI GÖNDER-------------------------------------------  
            CLRF        KRKTR   
MSJ_GONDER                      
            MOVF        KRKTR,W
            CALL        MESAJ1          ;MESAJI ÇAĞIR
            MOVWF       TEMP            ;KARAKTERİ DEĞİŞKENE AT 
            XORLW       H'00'           ;KARAKTER UZUNLUĞU(D'12') İLE XOR İŞLEMİ YAP
            BTFSC       STATUS,Z        ;İŞLEM SONUCU 1 SE 2. MESAJI YAZ
            GOTO        M_DEVAM
             
            SWAPF       TEMP,F          ;DEĞİŞKENİN ALT 4 BİTİYLE ÜST 4 BİTİNİ ARALARINDA DEĞİŞTİR
            MOVF        TEMP,W
            MOVWF       PORTB
            MSJ
            SWAPF       TEMP,F          ;DEĞİŞKENİN ALT 4 BİTİYLE ÜST 4 BİTİNİ ARALARINDA DEĞİŞTİR
            MOVF        TEMP,W
            MOVWF       PORTB
            MSJ
            INCF        KRKTR,F         ;KRKTR DEĞİŞKENİNİ 1 ARTIR
            GOTO        MSJ_GONDER
 
;----------------İKİNCİ MESAJI GÖNDER---------------------------------------------
M_DEVAM
            CLRF        KRKTR
;-----İKİNCİ SATIRA GEÇ---------
            MOVLW       B'00001100'
            MOVWF       PORTB
            KMT
            CLRF        PORTB
            KMT     
;-------------------------------
MSJ_GONDER2
            MOVF        KRKTR,W
            CALL        MESAJ2          ;MESAJI ÇAĞIR
            MOVWF       TEMP            ;KARAKTERİ DEĞİŞKENE AT
            XORLW       H'00'           ;KARAKTER UZUNLUĞU(D'5') İLE XOR İŞLEMİ YAP
            BTFSC       STATUS,Z        ;İŞLEM SONUCU 1 SE SONSUZ DÖNGÜYE GİR
SNSZ_DONGU
            GOTO        SNSZ_DONGU
            SWAPF       TEMP,F          ;DEĞİŞKENİN ALT 4 BİTİYLE ÜST 4 BİTİNİ ARALARINDA DEĞİŞTİR
            MOVF        TEMP,W
            MOVWF       PORTB
            MSJ
            SWAPF       TEMP,F          ;DEĞİŞKENİN ALT 4 BİTİYLE ÜST 4 BİTİNİ ARALARINDA DEĞİŞTİR
            MOVF        TEMP,W
            MOVWF       PORTB
            MSJ
            INCF        KRKTR,F         ;KRKTR DEĞİŞKENİNİ 1 ARTIR
            GOTO        MSJ_GONDER2
;----------------------------------------------------------------------------------
      
MESAJ1
            ADDWF       PCL,F
            DT          "Kodla Gitsin",0    ;Tırnak içindeki karakterleri ve 0 rakamını döndürür
            MOVF        PCL,W
            RETURN
     
MESAJ2
            ADDWF       PCL,F
            DT          "LCD YAZI",0      ;Tırnak içindeki karakterleri ve 0 rakamını döndürür
            MOVF        PCL,W
            RETURN
 
;-------------------25 MS'LİK GECIKME-----------------------------------    
UZUN_GECIKME
            MOVLW       H'FF'
            MOVWF       SAYAC1
DONGU1
             MOVLW       D'33'
            MOVWF       SAYAC2
DONGU2
            DECFSZ      SAYAC2,F
            GOTO        DONGU2
            DECFSZ      SAYAC1,F
            GOTO        DONGU1
            RETURN
;------------------255 US'LİK GECİKME-----------------------------------
KISA_GECIKME
            MOVLW       H'FF'
            MOVWF       SAYAC1
DONGU3
            DECFSZ      SAYAC1,F
            GOTO        DONGU3
            RETURN
            END

elektro77

Azmine hayran kaldım. Ama eminim bu konudaki sorunun birçok şey kattı sana. Ben de şu anda bildiğim birçok şeyi bu yolla öğrendim. Bu yolla öğrenilen aklın silinmeyen tarafına kaydediliyor. Yani kalıcı oluyor.
Ama şunu da belirtmeliyim ki: Eğer sorunun konusunda bilgi sahibi olsaydım çözer sana verirdim.
Bu konuda yapabileceğim edebiyattan öte gitmez. Kolay gelsin.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

oguzerdal

 hahahaha çok teşekkür ederim. Elektrik mühendisiyim ( en azından bir zamanlar  :)  ) Mühendis olmak için inat lazım. Ama artık genç değilim bu yaşta çok sıkıntı veriyor bunlar. Çok genç yaşta öğrenilmesi gereken şeyler. Yani yazılımla uğraşmak yerine böyle sıkıntılar adamı bezdiriyor. İnsan biraz da yazayım, takayım çalışsın, öyle üzerinde dolanırım istiyor. Sizlerden de pek yardım gelmiyor yahu !!! Geçen gün bir Arjantinli yardım etmişti , nasıl olduysa ??? hayret sağolsun :)
    okumanız bile kafi.

onurinci

Sıkıntı görünmüyor.nadiren yıllar evvel bir arkadaş uğraşıyordu.simulasyonda çalışıyor bord'a program atamıyorum diye Zif sokette F628'in LVP ayağına ya PullUP yada PullDown bir direnç atarak çözmüştü konuyu.


ete

Bende Basic içinde ASM - ENDASM bloğu içine alıp derledim.
Yanlızca sigorta ayarlarını dışarı aldım çünki orada hata veriyor iki defa aynı satırı işlemek zorunda kaldığı için.
Sorunsuz çalışıyor.

Dosyalar ilişiktedir.

Ete

oguzerdal



ETE hoca valla çok sağol. Durum şu:
- soldaki tek chip sizin hex ve benim hex ( MPlab ) ile yüklendi.
- sağdaki ikili ne sizinki ne de benim hex ile başarısız diyor.
     Geldiğimiz nokta en azından bir fikir veriyor ama o zaman nasıl kitapdaki bütün örnekler sorunsuz hepsinde çalışıyor. O da asm bu da asm......belki MPasm içinde hex file ayarları falan var.Onlarla mı oynamak gerek acaba? Bu arada pek çoğunuzun yeter ulan dediğinizi duyuyorum ama herkesin başına gelebilir. Çoğunluk anladığım kadarıyla PİCkit 2 veya 3 kullanıyor. Çok teşekkürler ETE hocam. Büyük hizmet veriyorsun.

onurinci

bazen oluyor bir gariplik.yıllar evvel ETE hocamız MeteoMonitor diye SHT11 'li çiğlenme durumunu gösteren bir proje paylaşmıştı,

bu projeyi kendi nedenlerinden dolayı sadece HEX dosya vermişti,bir çok arkadaşım yapıp çalıştırmıştı.bende nafile yükleme başarılı diyor ama çalışmamıştı.16F877 fiyatı sürekli artıyor diye bende fazla almıştım.
neyseki satın aldığım yer tanıdık idi dillendirmeden,getir değiştirelim dedi ,
yeni işlemciler anında çalıştı.sonradan anladım verilen işlemciler 16F877A idi.yani A Suffix'i yüzünden çalışmıyorlardı.

ete

16F628 lerin bir hastalığı var idi şimdi hatırladım. Bu işlemcilere kilitli olarak bir program kayıt ederseniz o kilidi açmak için (yeniden programlama aşamasında) diğer işlemcilere göre daha fazla akım gerekiyor. Klon programlayıcılar için bu sorun oluyordu. Güç yetmediği için işlemciyi silemiyor bu nedenle de yeni kayıt yapamıyor idi. Benzer bir durum olabilir.
Programlama voltajı yaklaşık 13V civarındadır ve bu voltaj 5V dan voltaj pompası yöntemi ile üretiliyor. Ama malzeme kaliteleri bu voltajın üretilmesinde etkili oluyor sanırım ve bazı programlayıcılarda yeterli akım yaratılamıyor. Sorun büyük ihtimalle budur.

Bana kalırsa o yüklenemeyen işlemcileri sil komutu ile önce silmek sonra kayıt almaya çalışmak gerekir. Zaten bir sorun var ise ortaya çıkacaktır.

Bu gibi durumlarda hemen insanın aklına Çakma entegre tabiri geliyor. Çünki pek çok entegrenin , transistörün çakması piyasada kol geziyor. Bu durumuda yabana atmamak gerekir.

Ete

designer.21

Oguzerdal hocam sorununa çözüm bulmaya çalışırken, Bu konu vesilesiyle yeni birşey öğrenmiş olduk. 
Ete hocamın yukarıda 628 ile ilgili yaptığı paylaşım bence çok önemli bir konu. Dediği gibi bu durum yabana atılacak gibi değil gerçekten.

Oguzerdal hocam bununla ilgili olabilir mi acaba

oguzerdal

#9
ETE hocam cevap için teşekkürler. designer 21 bana hoca deme yaa!!!!  ustalara ayıp oluyor... :) 
  Arkadaşlar sigorta ayarlarına falan ,MPASM hex ayarına vs... bir çok yere baktım olmuyor. İşlemcileri siliyorum tabii, Şimdi bir tek şey kaldı. Bu mavi kapaklı 628 kitabında Orhan A. hoca Macro kullanmamış.Hiç bir örnekte yok. Olabilir mi acaba? Hex dosya üzerinde bir etkisi var mı bilmiyorum. sadece atıyorum. Programı değiştirebilirmiyim onu da bilmiyorum. Zor olacak.
( ARKADAŞLAR MACROLARI KALDIRDIM, YANİ BECERDİM. ÇALIŞAN CHİP'DE ÇALIŞTI AMA KARAKTERLER YANLIŞ ÇIKTI  ( OLSUN ..)  ÇALIŞMAYAN CHİPLERİ TAKTIM : YİNE YÜKLENMEDİ ) . ARTIK BU İŞİ KURCALAMAYI BIRAKIYORUM AMA AKLIMDA HEP KALACAK  :)  NEDEN ADAMIN KİTABINDAKİ ÖRNEKLER ÇALIŞTI DA BU ÇALIŞMADI.  :)

İLGİLENENLERE TEŞEKKÜRLER.

mehmet

O kitapta kullanılan MPASM versiyonunu
bulmalısınız.

ASM çok fazla saç yoldurur. İstediğiniz
kadar bana kızın ama; ASM ile fazla yol
alınmaz.

Eğer hedef, en kısa yoldan gitmekse;
Basic, C hızlıdır.
İşkence yapmayın kendinize...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr

oguzerdal

Rica ederim Mehmet bey neden kızayım. Doğru tabii söylediğiniz. Ama biraz işin temelini öğreneyim ondan sonra geçerim Basic ve C'ye demiştim. Aslında artık tamam gibi kafamda ne olup bittiği canlandı.Becerebilirsem yazın veya sonbahara artık Basic ve C çalışacağım. Mplab konusunda bir tek denemediğim kitapdaki version kaldı. O da şimdi tam külfet. Şimdikini kaldır ,7.xx idi galiba kitapdaki, onu yükle falan... Yalnız şöyle bir şey yapabiliriz.Kadıköy,Üsküdar veya merkeze yakın yerlerde Pickit 2 veya 3 olan arkadaş varsa yüklenemeyen chiplerin birini verebilirim.Belki tercihan 3 daha iyi olur.Hem de arkadaşa hediyem olur. :)
ilgilenenlere teşekkürler.

Powered by EzPortal