16F628A İLE 2 ADET SERİ BAĞLI 74HC595 İLE SIRALI LED YAKMA

Başlatan Y_K, 18 Aralık 2021, 23:49:34

mehmet

Bütün data gittikten sonra sadece
bir kere LATCH çalıştırılacak.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr

Y_K

Mehmet kardeşim latc dediğin bana göre aktar yazdığım komut oluyor programın neresine yazacağımı söylersen daha iyi yardımcı olursun.şimdiden teşekkürler.

Y_K

Ete hocam sizin dediğiniz gibide yapıyorum üçüncü ve dördüncü ekledidiğim 595 ler 1 ve ikinci 595 ler ile aynı hareket ediyor.oysa onlarda seri bağlı neyi yanlış yapıyorum ben anlamadım gitti   :'(

mehmet

74HC595 'in üç kontrol bacağı var.
Clock, data, latch. BASIC ile ilk
ikisini ilgili komut hallediyor.
Register üzerindeki bilginin pinlere
çıkması için high seviyede olan
Latch bir anlığına low yapılır.
Sonra yine high yapılıp, program
kaldığı yerden devam eder.
Kaç 595 kullandıysanız o kadar
8-bit bilgi yollanır. Sonra Latch low
yapılır.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr

Y_K

        SHIFTOUT DTA,CLK,1,[BILGI.byte1,BILGI.byte0]
        HIGH AKTAR:PAUSEus 5:LOW AKTAR 'BILGI ÇIKIŞA AKTARILDI

         SHIFTOUT DTA,CLK,1,[BILGI.byte1,BILGI.byte0]
        LOW AKTAR:PAUSEus 5:HIGH AKTAR 'BILGI ÇIKIŞA AKTARILDI 
Mehmet kardeşim ikinci defa yazılan hıgh olan yeri low mu yap diyorsun orayı anlayamadım.yukarıdaki gibi

mehmet

LOW AKTAR:PAUSEus 5
SHIFTOUT DTA,CLK,1,[BILGI.byte1,BILGI.byte0] 'Burası muhtemelen 16-bit
PAUSEus 5:HIGH AKTAR 'BILGI ÇIKIŞA AKTARILDI 

LATCH yükselen kenarda register bilgilerini pinlere taşır.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr

ete

İşin mantığını sürekli olarak öğretmeye yada açıklamaya çalışıyorum ama sen şekil takibi yapıyorsun. Amacın işinin görülmesi onu anlıyorum ama bir şeyleride gerektiği gibi öğrenmen iyi olur diye düşünüyorum.
Puls kelimesi sana neyi anlatıyor bir düşün istersen. Bu bir CLK palsi dir. Yani sinyal önce HIGH olacak bir müddet bekleyecek sonra LOW olacak bu bir puls yada CLK palsi dir. Latch yani Aktar bacağına uygulaman gereken bu. BU sayede iç aktarma hafızasına alınan bilgi çıkış pinlerine aktarılmış olur. Değilse içeride bekler durur. Sen tersini yapmışsın önce LOW sonra HIGH verdiğin için aktar bacağı sinyalin yeniden LOW olmasını bekliyor.

Ete

Y_K

Hocam siz nedeseniz haklısınız fakat amacım bıkmadan usanmadan sabırla öğrenmeye çalışmak ve öğrendiklerimi elbette başkalarına öğretmek olacak şuanda sizin yazdıklarınızı anlamaya çalışıyorum.yeni olduğum için mazur görün microcodeyi yeni yeni kullanıyorum.yardımcı oldunuz Allah razı olsun.yazdıklarınızı ve mücadelenizi gördüğüm için ben dahada heveslendim.yoksa olmayacak yapamayacam diye düşünmeye başlamıştım.eğer sorduğum sorular sizi üzüyorsa özür dilerim gündüzleri çalışıyorum çok vaktim olmuyor gece anca vakit buluyorum o yüzden hızlı bir şekilde öğrenmeye çalışıyorum.

Y_K

CMCON=7
symbol CLK=PortA.0
SYMBOL DTA=PORTA.1
SYMBOL AKTAR=PORTA.2

BILGI  VAR  WORD
PORTA=0:bILGI=0

BASLA: 
        IF BILGI=0 THEN BILGI=1  
        SHIFTOUT DTA,CLK,1,[BILGI.byte1,BILGI.byte0]
        HIGH AKTAR:PAUSEus 5:LOW AKTAR 
        
       PAUSE 500
       IF BILGI=65535 THEN TERS_YON   
       BILGI=(BILGI*2)+1
       IF BILGI<=65535 THEN BASLA

TERS_YON:

pause 500 
        BILGI=0
        SHIFTOUT DTA,CLK,1,[BILGI.byte1,BILGI.byte0]
        HIGH AKTAR:PAUSEus 5:LOW AKTAR  
  
GOTO BASLA
SHIFTOUT DTA,CLK,1[BILGI.byte1,BILGI.byte0]
  
HIGH AKTAR:PAUSEus 5:LOW AKTAR 
Ete hocam siz bunları değiştirmeden aynı şekilde ikinci defa yazarsan üçüncü ve dördüncü 595 leri ekleyebilirsin dediniz.bende ekledim olmadı anlayamadım.nereyi değiştirmem gerekiyor.

mehmet

'örnek sadece
LOW AKTAR: PAUSEus 5
SHIFTOUT DTA, CLK, 1, BIRINCI
SHIFTOUT DTA, CLK, 1, IKINCI
SHIFTOUT DTA, CLK, 1, UCUNCU
SHIFTOUT DTA, CLK, 1, DORDUNCU
HIGH AKTAR
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr

ete

Mehmet doğrusunu yada en anlaşılır olanı yapmış. Ne söylemiştik kaç tane 595 var ise Shiftout komutunda da o sayıda bilgi olması gerekir. Mehmet bunu satır satır 595 adedi kadar shiftout komutu vererek göstermiş.
Tek satırda da aynı işi yapabilirsin mantık hep aynı kaç tane 595 var ise o sayıda bilgi olacak,
SHIFTOUT DTA, CLK, 1,[BESINCI, DORDUNCU, UCUNCU, IKINCI, BIRINCI]
BU örnekte 5 adet 595 bulunuyor. Hepsine ait bir bilgi mevcut gördüğün gibi. Sistemin çalışması şöyle,
Picden çıkan DTA hattı BIRINCIYE giriyor. Dolayısıyla Komut satırı çalışınca öncelikle BESINCI ye ait bilgi hatta verilir ve bu bilgi BIRINCIYE yerleşir. birsonraki aşamada DORDUNCU hatta verilir ve bu yapılırken besinci dördüncüye itilir ve oraya yerleşir. Bir sonraki aşamada yüklenenler yeniden ötelenirler ve ÜCÜNCÜ bilgisi BIRINCIYE yerleşirken sıralama UCUNCU-DORDUNCU-BESINCI şeklinde olur. Bu şekilde devam edilerek en sonda sıralama BIRINCI-IKINCI-UCUNCU-DORDUNCU-BESINCI şeklinde kendi 595 lerine yerleşir ve aktar komutu ile bütün bilgiler çıkışlara iletilmiş olur.

Ete

Y_K

Hocam size ve mehmet bey'e çok teşekkür ederim mehmet beyin videolarını izledim yazdığı program dilini Microcode bulunan kodlar ile bağlantı kuramadığım için yazdıklarını bağdaştıramadım.bizim yazdığımızda BILGI diye bir değişken var onunkinde i; diye yazılıyor anladığım kadarı ile benim kafam orada karışıyor.sizin söylediklerinizi anlıyorum fakat nasıl ve nereye yazacağımı bilemiyorum.ama öğreneceğim sayenizde tabi siz uygun görürseniz.mehmet bey yazdıklarınızı akşam uygulayacağım tekrardan ikinizede teşekkür ederim.

Y_K

BILGI  VAR  WORD
BILGI1 VAR  WORD
BILGI2 VAR  WORD
BILGI3 VAR  WORD

BASLA: 
 IF BILGI=0 THEN BILGI=0
SHIFTOUT DTA,CLK,1,[BILGI3.byte1,BILGI3.byte0]
SHIFTOUT DTA,CLK,1,[BILGI2.byte1,BILGI2.byte0]
SHIFTOUT DTA,CLK,1,[BILGI1.byte1,BILGI1.byte0]
SHIFTOUT DTA,CLK,1,[BILGI.byte1,BILGI.byte0]


HIGH CLK:PAUSEus 5:CLK 
HIGH AKTAR:PAUSEus 5:LOW AKTAR
HIGH CLK:PAUSEus 5:CLK 
HIGH AKTAR:PAUSEus 5:LOW AKTAR
HIGH CLK:PAUSEus 5:CLK 
HIGH AKTAR:PAUSEus 5:LOW AKTAR
HIGH CLK:PAUSEus 5:CLK 
HIGH AKTAR:PAUSEus 5:LOW AKTAR
        
       PAUSE 500
       IF BILGI=65535 THEN TERS_YON   
       BILGI=(BILGI*2)+1
       IF BILGI<=65535 THEN BASLA

TERS_YON:

pause 500 
        BILGI=0
        SHIFTOUT DTA,CLK,1,[BILGI.byte1,BILGI.byte0]
        HIGH AKTAR:PAUSEus 5:LOW AKTAR  
  
GOTO BASLA
Ete hocam bu şekilde yapıyorum 595 lere bilgi gidiyor aktarmayıda yapıyor ama sıralı yakamıyorum.

mehmet

Bu kodu yükleyip dener misin?

:02000000FE2FD1
:100F34008501860107309F0083168501860108001C
:100F44008312031305117308AD277208AD278312AA
:100F5400031305150800F0000830F10071080319A7
:100F640008008312031305108510F01B8514031069
:100F7400F00D0514F103B02FF701F70AF801F6019B
:100F84009A277608031DDD2FF927A2278230F50062
:100F9400DD30F400F40BCC2FF50BCC2FD12F8030A7
:100FA4000310F70DF80D7802003003197702031CC3
:100FB400DD2FF601F60A760BC32FF927A22782301C
:100FC400F500DD30F400F40BE52FF50BE52FEA2FE7
:100FD40000300310F80CF70C780202300319770282
:100FE4000318C32FF601F701F70AF801C32F780895
:0C0FF400F3007708F20008008301BE2F14
:02400E0050DE82
:00000001FF

Ek:
Birinci HC595 'in 9 nolu pini, ikinci HC595 'in
14 nolu pinine gidecek.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr

Y_K

Mehmet bey teşekkür ederim.evet senin dediğin gibi 9 nolu pin 14 numaraya giriyor bu şekilde seri bağlı 4 adet 595 var.iki tane seri bağlı olanı ete hocam sağolsun nasıl yakacağım konusunda açık kodlar ile yazıverdi
 Bunu şuanda simülasyon yani isiste  yapıyorum anladığım kadarıyla hex dosyasının yazılım kodunu atmışsınız bu şekilde yüklersem çalışırmı bilemedim. f9 yapıp simülasyon olarak bakıyorum.Rica etsem bunu benim yazdığım şekilde yazabilirmisin.öyle olursa çok memnun olurum.

Powered by EzPortal