Interrupt Counter

Başlatan eseneren, 11 Aralık 2010, 23:45:28

eseneren

Selamlar,

3 butonlu sayıcı , 4 adet 7 segment ile sayıcı devresı yaptım

1. +
2. -
3. Fonksiyon tusu ( 1 kere basınca otomatık sayıyor, bır daha basınca manuel arada gecıs yapıyor,
uzun surelı basılırsade resetliyor sayıyı )

Sayıcı Auto da iken + ve - tusları sayma hızını degıstırıyor.

Benim sorum enteresan bir olay oluyor 3 gündür saç yoluyorum.
Fonksiyon tusuna basınca auto oluyor bır daha basınca manuel oluyor bır daha auto ... devam edıyor.

Ilk manuel de acılıyor auto yapıyorum hersey normal, manuel yapıyorum yıne normal sonra
yenıden auto yapınca bıraz duruyor sonra baslıyor saymaya.Kodu kurcala kurcala artık o sorunun
koddan olduguna ınanmıyorum.

Fızıksel olarak deneme sansım yok ISIS de deniyorum.En sonunda ISIS de oyle oldugunu dusunmeye basladım.
ISIS dosyasını asagı koyuyorum program kurulu bırı varsa bılgısayarında deneyıp gerı donus yapsın lütfen.

http://www.dosyaupload.net/7224547.html

Saygılar

 

Seçim yapmak için durum hakkında bilgi sahibi olmak zorunda değilsin, sonucuna hazır olmak için durum hakkında kaygılanırsın.  http://bit.ly/gixfTk

stlg

#1
 Evet bende isisde denedim gecislerde duraklamalar oluyor ,sayıları neden 16 tabanına gore saydırıyorsun birde reset yaparken sıfırlamanın ne zaman oldugu anlasılmıyor, tus basılı iken sure dolunca sıfırlandıgı gorunse sonra tus bırakılsa daha anlasılır olacak
asm ile epeydir ugrasmıyorum unutmus olabilirim ama

Bence gereksiz yerlerde org komutunu kullanmıssın
kesme oldugunda zaten otomatik kesme satırına gidecek
kesmeden cıkmak icin retfie komutu kullanılır diye biliyorum
kesme islemleri basladıgında bildigim kadarıyla gıe otomatik set reset yapılıyor
kesmelere girerken w ve diger onemli registerlerı kaydetmelisin cıkarkende yeniden bunları yerlerine koymalısın
ana programın en alt satırlarda ,kesme rutininde en ust satırlarda yer almalı
ALLAHA EMANET OLUNUZ Hoştur bana senden gelen,  Ya gonca gül yahut diken,  Ya kaftandır yahut kefen,  Kereminde hoş lütfunda hoş.

eseneren

Daha bitmedi sıkıntılar var programın lakin misal ileri geri sayarken C port ve D port  arasında iliskide yanlıslıklar var, onlarda etken olmasın bu soruna dıye ilk başta bu problemi aşmam gerekiyor.
"org" kendim için yazdım alt programlardan donerken goto label yerine pcl direk atama yaptım o sebeple nereye gideceğini kesinleştirmek için org kullandım.

Status,PC  gibi ozel degıskenleri ınterrupta gırerken kopyalamam sonra gerı yuklemem status ve PC  ıcındekı verılere ıhtıyacım oldugu zamanlarda gereklı sanıyorum
(emın de degılım).Aynı sekılde retfie komutunun ne ıse yaradıgını tam bılmıyorum (GIE aktıf) o yuzden kullanmıyorum.
Instruction sette return from interrupt dıyor acıklama yok.Tek tek satır satır su aktıf bu degıl dıye yazıyorum.
Seçim yapmak için durum hakkında bilgi sahibi olmak zorunda değilsin, sonucuna hazır olmak için durum hakkında kaygılanırsın.  http://bit.ly/gixfTk

stlg

Kesmenin ne zaman olacagını bilemedigimizden ,ozellikle w kaydedilmeli ve kesme cıkısı geri yuklenmelidir ornegin gecikme alt programında w islenirken, bir kesme gelirse , kesme icerisinde w yi kullandıgından ,geri donuste bu deger kaybedilir, diger status vs gibi registerler icinde durum aynıdır sen w yi kesme rutininde kullanıyorsun iyice bir incele
ALLAHA EMANET OLUNUZ Hoştur bana senden gelen,  Ya gonca gül yahut diken,  Ya kaftandır yahut kefen,  Kereminde hoş lütfunda hoş.

eseneren

@stlg ben umursamıyorum W de ne var PCL de ne var Status da ne var, ben onu bu projede kullanmak istemiyorum diyorum,
ama her yerde btfsc status,2 benzeri komut yazmısım interrupt oraya denk gelecegı aklıma gelmedı sagol yardımın için.
Seçim yapmak için durum hakkında bilgi sahibi olmak zorunda değilsin, sonucuna hazır olmak için durum hakkında kaygılanırsın.  http://bit.ly/gixfTk