PCLATH ve RETLW kullanmada ilginç bir hata

enver328

Üye
Katılım
11 Ara 2009
Mesajlar
40
Puanları
1
PCLATH kullanımını yeni öğrendim ve ufak bir alıştırma yapmak için simülasyonda PIC16f877A nın C portuna 8 led bağlayarak bu ledlerin farklı biçimlerde yanmasını test ederken ilginç bir durumla karşılaştım.

PCL registerının kullanıldığı altprogramda, led yanma kombinasyonlarını yaparken ilk başta ledleri 8 farklı şekilde yaktım ve program sorunsuz çalıştı. Fakat bu sayıyı 9 yaptığım zaman simülasyonda hata oluştu ve ne yaptıysam yine de kodu düzgün çalıştıramadım. Daha iyi anlaşılması için kodlar :

---- ledlerin sırayla yanmasını sağlayan satır
CLRF SAYAC3

B1_ALT
MOVF SAYAC3, 0
ANDLW D'7' --------> normal çalışan değer bu. aşağıda B'00000000' satırını başa ya da sona eklediğim zaman bu sayıyı 8 yapıyorum fakat çalışmıyor.
CALL B1_TABLO
MOVWF PORTC
CALL GECIKME
CALL GECIKME
INCF SAYAC3
GOTO B1_ALT
GOTO B1

---- PCL nin çalıştığı kod :

ADDWF PCL, F
; RETLW B'00000000' ---> bu satırı ekleyip yukardaki 7 yi 8 yapınca çalışmıyor
RETLW B'00000001'
RETLW B'10000001'
RETLW B'10000011'
RETLW B'11000011'
RETLW B'11000111'
RETLW B'11100111'
RETLW B'11101111'
RETLW B'11111111'


Yani demek istediğim şu : RETLW kullanacağımız satır sayısı 8,16,32,64 satır şeklinde gidiyor. Bunun dışında mesela 12 ya da 15 satır RETLW komutu kullanınca yukardaki SAYAC registerına 11 ya da 14 gibi sınırlayıcı sayıyı doğru bir biçimde yüklesek bile olmuyor. Bunu bulmak baya zamanımı aldı ve eğer bu bir ayrıntıysa bu ayrıntının neden kitaplarda yazmadığını çok merak ediyorum.
(7 segment display çalışıyor diyenler için : onlarda 16 satır kullanılıyor yani kuralı bozmuyor.)
 

Forum istatistikleri

Konular
129,786
Mesajlar
930,094
Kullanıcılar
452,566
Son üye
FATHDLL

Yeni konular

Geri
Üst