Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

sayıcı devresi konusu

Başlatan Kaldirim_Teknikeri, 01 Aralık 2009, 21:38:38

Kaldirim_Teknikeri

Cümleten selamın aleyküm elektronikle aram hobi seviyesindedir boş zamanlarda elektronik devreler yaparım mesajımın konusuna gelirsem aşağıda 0-99 sayıcı devresi kodları yer almakta devre çalışır durumdayken elektriği kapatıyorum ve tekrar elektriği açtığımda sayıcı 0 dan devam ediyor devreye elektrik verdiğimde sayıcı kaldığı yerden devam etmesini istiyorum intereneti inceletim write ve read komutlarını kullanacağımı buldum ve bu kodları uygulamaya dahil ettim beceremedim sanırım destek görüşlerinizi bekliyorum.

TRISB=0                 'PORTB'NİN TAMAMI ÇIKIŞ

SAYI VAR BYTE
BIRLER VAR BYTE         '1.DİJİT
ONLAR VAR BYTE          '2.DİJİT

PORTB=0                 'PORTB'NİN TAMAMINI SIFIRLA
SAYI=0                  'SAYI İÇERİĞİNİ SIFIRLA

BASLA:

READ 0, BIRLER,ONLAR
SAYI=SAYI+1
PAUSE 300
IF SAYI=99 THEN SAYI=0

BIRLER=SAYI DIG 0
ONLAR=SAYI DIG 1

PORTB=240 | BIRLER
LOW PORTB.5  
PAUSE 1
HIGH PORTB.5
PAUSE 1
WRITE 0,[BIRLER]
PAUSE 10

PORTB=240 | ONLAR
LOW PORTB.4
PAUSE 1
HIGH PORTB.4
PAUSE 2
WRITE 1,[ONLAR]
PAUSE 10

GOTO BASLA
END

ete

Doğru program aşağıdaki şekilde olacaktır.
Ete

TRISB=0 'PORTB'NİN TAMAMI ÇIKIŞ

SAYI VAR BYTE
BIRLER VAR BYTE '1.DİJİT
ONLAR VAR BYTE '2.DİJİT

PORTB=0 'PORTB'NİN TAMAMINI SIFIRLA
SAYI=0 'SAYI İÇERİĞİNİ SIFIRLA
READ 0,SAYI
IF SAYI=255 then SAYI=0

BASLA:

SAYI=SAYI+1
PAUSE 300
IF SAYI=99 THEN SAYI=0

BIRLER=SAYI DIG 0
ONLAR=SAYI DIG 1

PORTB=240 | BIRLER
LOW PORTB.5
PAUSE 1
HIGH PORTB.5
PAUSE 1

PORTB=240 | ONLAR
LOW PORTB.4
PAUSE 1
HIGH PORTB.4
PAUSE 1
WRITE 0,SAYI
PAUSE 10

GOTO BASLA
END
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

POWER

değerler sayı isimli değişkende tutulduğu için sayı değişkeninin aldığı değerleri önce yazdırıp sonra okutmalısın.Birde okutma işini proğramın en başında yapmalısın.

READ 0, SAYI

BASLA:
SAYI=SAYI+1 
PAUSE 300 
WRITE 0,SAYI
IF SAYI=99 THEN SAYI=0 
...............................................
..............................
TB6BKG

Kaldirim_Teknikeri

evet arkadaşlar çok güzel anlattınız : ) şimdi sayı değişkeni byte tipinde olduğu için 16F84 ün eepromunda 1byte lık alan mı kaplamış oluyoruz. Yani 8 tane sayı  ve arkada kullanılabilecek 63byte lık alan? ve anlamadığım iki nokta daha *eepromun yazılabilecek kaç adresi var? ve *word tipi değişken olsaydı okuma işlemi nasıl olacaktı?:roll:

word tipi değişken yazılıp ve okunurken 2byte lık yer kapladığını okudum.

ete

Pic eepromları 8'er byte lıktır. En azından senin kullandıkların.
Bu nedenle bir seferde tek adrese 8 byte lık değer yazılabiliyor.
Şayet Word (16 bit ve 2 byte dan oluşuyor) tipi değişkeni eeprom'a yazmak istersen bir iki şekilde yapabilirsin.
- Birincisi; Word değişkenleri 2 byte şeklinde şöyle tanımlanır, Degisken.Byte0 ve Degisken.Byte1 . Hemen örnek vereyim ;
RAKAM VAR WORD  şeklinde bir değişken tanımladın. Bu değişkeni eeproma şöyşe yazabilirsin,
Write 0,Rakam.Byte0:pause 10
Write 1,Rakam.Byte1:Pause 10
her yazma işleminden sonra 10ms lik bir gecikme koymayı unutma bu yaklaşık yazma süresi olup bitirilmeden bir sonraki yazma işlemine geçilmemelidir.

Diğer bir yol  ise hesap yöntemidir. Değişkenler hafızada Hex formatına uygun şekilde saklanırlar. RAKAM=6845  değerini verirseniz bu hafızada 2 byte olarak şöyle saklanır. RAKAM=$1ABD şeklinde Bunu birer byte olarak ayırırsak.
RAKAM.Byte1=$1A  ve Rakam.Byte0=BD şeklindedir. Şimdi bu değerlerin desimal karılıklarına bakalım. $1A=26 , $BD=189 şeklindedir.
Şimdi bu rakamların nasıl elde edildiğine bakalım.
Rakam.Byte1=Rakam / 256 işleminin sonucunda elde edilir.
Rakam.Byte0=Rakam - (Rakam.Byte1)*256  işleminin sonucunda ortaya çıkar. Bu hesap mantığı ile word değişkeninin bileşenlerini bu şekilde hesap edip her birini byte olarakda kayıt yapabilirsin. Aslında hiç gerek yok tabiiki . Bu ikinci şıkkı değişkenlerin hesaplanma yöntemini öğrenesin diye açıkladım.

Her işlemci kapasitesine paralel miktarda eeprom hafızasına sahiptir. Kimin ne kadar hafızası olduğunu data sheetlerinden öğrenmen gerekir.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

Kaldirim_Teknikeri

Sağolun dün beyazıtdan 20tl ye orhan altınbaşak kitabınıda aldım aynen söyledikleriniz gibi yazmışlar ama sizin kadar açık değil sadece word tipi değerlere verdiğiniz örneğin birincisi gibi.