Picproje Elektronik Sitesi

DERLEYİCİLER => PIC Assembly => Konuyu başlatan: protech06 - 07 Mayıs 2007, 20:27:37

Başlık: 0 - 9999 Sayıcı Problemi
Gönderen: protech06 - 07 Mayıs 2007, 20:27:37
Slm arkadaslar Foruma yeni katıldım. Ders için Assembly kullanarak    
0 - 9999 sayıcı yapacam elimde ortak katodlu 4 adet 7 segment display ve 4 adette 74hc595 var pic16f877 kullanıcam. 0-9999 sayıcı kısmını yapıyorum yalnız pic hafızasına yazmak ve okumada sorun yasıyorum

  Devremde  yukarı -  asağı ve kaydet tusu var  yukarı asagı tusları ıle 0 - 9999 arasında sayıcak ve istedigim bir sayıda kaydet tusuna basınca o anki sayıyı pic hafızada tutmalı devrenin enerjisini kesip tekrar verdiğimde ise kaydettiğim sayı displayde gozukecek. o sayıdan saymaya baslıyacam yukarı asagı   saymaya yani pic hafısanız kayıt yapıp okumak istiyorum

 bu konuda bilgisi olan arkadasların yardımlarını bekliyorum ornek bir sema yada kod
Başlık: 0 - 9999 Sayıcı Problemi
Gönderen: Logan - 07 Mayıs 2007, 20:38:09
@protech06, aramıza hoşgeldin.Aşağıdaki kodlarda eprom belleğe yazma ve okuma mevcuttur.Kopyala ve direk programına yapıştır.Benim yaklaşık 4 sene önce yazdığım bir programdan alıntıdır çalıştığından şüphen olmasın :) Kolay gelsin.

Eprom okuma;

read
bsf STATUS,6
movlw h'33'         ; okunan adres
movwf EEADR
BSF STATUS,5
BSF EECON1, 0
wait
BTFSC EECON1, 0
GOTO wait
BCF STATUS,5
MOVF EEDATA,W
bcf STATUS,6
MOVWF zaman1      ;  okunan register


Eprom yazma;

YAZ
MOVF zaman1,w      ; yazılan register
movwf zamans
BANKSEL EEADR
MOVLW 0X33     ; yazılan adres
MOVWF EEADR
BANKSEL TMR0
movf zamans,w
BANKSEL EEADR
movwf EEDATA
BANKSEL EECON1
BSF EECON1,2
MOVLW 0X55
MOVWF EECON2
MOVLW 0XAA
MOVWF EECON2
BSF EECON1,1
YAZ1
BTFSC EECON1,1
GOTO YAZ
BANKSEL TMR0
RETURN

Umarım işine yarar.kolay gelsin...
Başlık: YAZMA
Gönderen: protech06 - 07 Mayıs 2007, 20:51:34
hocam ilgine teşekkurler birde ben 74hc595 entegresine bilginin nasıl gonderileğini anlayamadım bunun baglantısı nasıl bir ornekle acıklayabılırmıyiz ?
Başlık: 0 - 9999 Sayıcı Problemi
Gönderen: Logan - 07 Mayıs 2007, 21:04:00
@protech06, 74595 entegresinin en büyük özelliği, içerisinde LATCH bulunmasıdır.Mantık olarak 74164 entegresi ile aynı temeller üzerine oturtulmuştur.Data ucundan verilen bilgiyi, clock ucundan verilen kare dalga ile çıkışa aktarır.Yani Data ucuna "0" verirsek, clock ucunuda "1" ve hemen arkasından "0" a çekersek, "0" bilgisi çıkışa aktarılmış olur.Bu işlemi arka arkaya 8 kere yaparsak 1 byte lık bilgiyi çıkışa aktarmış oluruz.Fakat 74595 entegresinde bu yöntemin yanı sıra, 8 bitlik bilgiyi kaydırarak gönderdikten sonra 12 ve 13 nolu bacaklara da kare dalga göndermeliyiz ki içeride bulunan bilgi çıkışa aktarılabilsin.Yukarıda da bahsettiğimiz gibi entegre içerisinde bulunan latch, kaydırılan bilgiyi tutarak, kare dalga geldiği taktirde bir kerede yansıtır.Bu özelliği sayesinde 74595 entegresi, 74164 e nazaran daha çok tercih edilir. Umarım açıklayıcı olmuştur.  :)
Başlık: Display
Gönderen: protech06 - 07 Mayıs 2007, 21:13:29
yapmak istedigim sema bu sekilde olacak  ,
pic877 , 20 mhz osc , 4 digit display ve  4 adet 74hc595 kullanılacak.
Başlık: 0 - 9999 Sayıcı Problemi
Gönderen: Logan - 07 Mayıs 2007, 21:17:41
Evet sistem gayet mantıklı görünüyor herhangi bir sorun olacağını zannetmiyorum.74595 entegresinin iç yapısını veya datasheetini incelediysen içerisinde bulunan buffer ları görmüş olmalısın.Bu sebeple araya direnç atmasanda olur.
Başlık: 0 - 9999 Sayıcı Problemi
Gönderen: Logan - 07 Mayıs 2007, 21:42:34
@protech06, anladığım kadarıyla ASM konusunda oldukça yenisin. Doğrusunu söylemek gerekirse senin gibi yeni bir programcıya göre biraz ağır bir program :) 74595 entegresini kontrol eden ve bilgi gönderen ufak bir program yazdım.İyice incelemeni tavsiye ediyorum.

;************************************************
;  74595'e gönderen program            
;************************************************
; SAYAC isimli register bizim 74595'e göndereceğimiz bilgiyi içeriyor.
GONDER
BTFSS SAYAC,7    ;Bu kısımlarda bitler tek tek kontrol ediliyor.                                   GOTO EKSI          ;Burada ise "0" ve "1" ihtimalleri yer alıyor.
GOTO ARTI
DON
BTFSS SAYAC,6
GOTO EKSI1
GOTO ARTI1
DON1
BTFSS SAYAC,5
GOTO EKSI2
GOTO ARTI2
DON2
BTFSS SAYAC,4
GOTO EKSI3
GOTO ARTI3
DON3
BTFSS SAYAC,3
GOTO EKSI4
GOTO ARTI4
DON4
BTFSS SAYAC,2
GOTO EKSI5
GOTO ARTI5
DON5
BTFSS SAYAC,1
GOTO EKSI6
GOTO ARTI6
DON6
BTFSS SAYAC,0
GOTO EKSI7
GOTO ARTI7
EKSI
BCF data   ;Kontrol edilen bitin değeri "0" ise data "0" oluyor.
BSF clock
NOP
BCF clock
GOTO DON
ARTI
BSF data  ;Burada ise "1".
BSF clock  ; Bu datanın gönderilmesini sağlayan clock palsi
NOP
BCF clock
GOTO DON
EKSI1
BCF data
BSF clock
NOP
BCF clock
GOTO DON1
ARTI1
BSF data
BSF clock
NOP
BCF clock
GOTO DON1
EKSI2
BCF data
BSF clock
NOP
BCF clock
GOTO DON2
ARTI2
BSF data
BSF clock
NOP
BCF clock
GOTO DON2
EKSI3
BCF data
BSF clock
NOP
BCF clock
GOTO DON3
ARTI3
BSF data
BSF clock
NOP
BCF clock
GOTO DON3
EKSI4
BCF data
BSF clock  
NOP
BCF clock  
GOTO DON4
ARTI4
BSF data
BSF clock
NOP
BCF clock
GOTO DON4
EKSI5
BCF data
BSF clock  
NOP
BCF clock  
GOTO DON5
ARTI5
BSF data
BSF clock  
NOP
BCF clock  
GOTO DON5
EKSI6
BCF data
BSF clock  
NOP
BCF clock  
GOTO DON6
ARTI6
BSF data
BSF clock  
NOP
BCF clock  
GOTO DON6
EKSI7
BCF data
BSF clock  
NOP
BCF clock  
GOTO BITIR
ARTI7
BSF data
BSF clock  
NOP
BCF clock  
GOTO BITIR
               
BITIR
               BSF enable   ;Bu kısımda ise latch aktif edilip bilgi çıkışa
               NOP              ;   aktarılıyor.
               BCF enable
               RETURN        ;Programın sonu  :)


Programı bu kadar uzun yazmamın sebebi anlamanı sağlamaktı.Umarım işine yarar.Kolay gelsin.
Başlık: Display
Gönderen: protech06 - 07 Mayıs 2007, 21:47:45
Teşekkurler hocam deniyecem  bunu  bitince foruma gondercem diger arkadaslarada yardımı olur.