Elektrotekno.com Ana Sayfa || Programlanabilir Cihaz ve Elemanlar || Microchip Pic Serisi


kesmeler ?

Kayıt: 14 Ksm 2011
Mesajlar: 30

Offline
ferdi0435
Tarih: 06 12 2011 16:29

iyi günler arkdaşlar
kesmlerede kesme programı uygulandıktan sonra ana döngüde kaldığı yerden devam ediyor peki bunun yerine kesme oluştuktan sonra kaldığı yerden değilde ana döngünün en başına gelmesini nasıl sağlayabiliriz ???


Reklamlar
Kayıt: 02 Ksm 2005
Mesajlar: 306

Offline
schlen
Tarih: 06 12 2011 17:05

Kesme içine yazacağın bir goto ile bunu yapabilirsin sanırım. Ana döngü öncesinde de bir label kullanırsan istediğin olur sanırım. Tabi hangi dili kullandığına göre ufak değişiklikler olabilir. Ancak mantıkta sorun olmaz sanırım.


main(){
Basla:
.
.
.

}

kesme_alt_programı{
goto Basla;
}
Başa dön
Kayıt: 02 Ksm 2009
Mesajlar: 764
Konum: Kocaeli
Offline
senoleker
Tarih: 06 12 2011 18:40

schlen yazmış
Ancak mantıkta sorun olmaz sanırım.


Sanırım mantıkta ciddi bir sorun var Smile

Stack anında dolar böyle yaparsanız.

Label ile gitmeden önce stack'ı da ayarlamak gerek.
Yoksa yaptığınız alet neden istediğim gibi çalışmıyor diye saç baş yolarsınız.

Kesmede örneğin reset edebilirsiniz sistemi. Böylece yeniden başlayabilir. Bu işinize yarar mı?
Başa dön
Kayıt: 02 Ksm 2005
Mesajlar: 306

Offline
schlen
Tarih: 06 12 2011 21:16

senoleker yazmış
schlen yazmış
Ancak mantıkta sorun olmaz sanırım.


Sanırım mantıkta ciddi bir sorun var Smile

Stack anında dolar böyle yaparsanız.

Label ile gitmeden önce stack'ı da ayarlamak gerek.
Yoksa yaptığınız alet neden istediğim gibi çalışmıyor diye saç baş yolarsınız.


Çok haklısınız, yalnız bu durum C tabanlı dillerde sorun olur(ki bende main() yazmıştım). Basic tabanlı dillerde durum biraz daha farklı olmalı. Çünkü proton kullanırken program sonunda hep goto kullanıyordum. Yanlış mı biliyorum acaba?
Başa dön
Kayıt: 14 Ksm 2011
Mesajlar: 30

Offline
ferdi0435
Tarih: 06 12 2011 23:14

(pic basic te yazacagım )istediğim şey tam olarak şu bir bant sistemi var sisteme start butonu ile tetiklendiğinde aniden istenmeyen bir durum olduğunda sistemi kesme butonu (acil butonu) ile durduracak start butonuna basılmasını bekleyecek yani en başa dönecek.....
Başa dön
Kayıt: 22 May 2011
Mesajlar: 310

Offline
matrak
Tarih: 07 12 2011 00:15

on ınterrupt goto kesme
optıon_reg=%10000000
ıntcon=%10010000
trısb=%00000001
trısa=%00000010
cmcon=7

basla:
ıf porta.1=1 then
-------
else
goto basla
endıf

dısable
goto basla

kesme:
goto basla
ıntcon.1=0
resume
enable
end
Başa dön
Kayıt: 02 Ksm 2009
Mesajlar: 764
Konum: Kocaeli
Offline
senoleker
Tarih: 07 12 2011 00:24

Acil butonunu resete bağlasan daha kolay olmaz mı?
Başa dön
Kayıt: 02 Ksm 2005
Mesajlar: 306

Offline
schlen
Tarih: 07 12 2011 00:43

Bunu bir değişkenle halletmek resetlemeden şu şekilde yapılabilir sanırım.

Programın başında 1 yapılsın, daha sonra interrupt içinde bu değer 0 yapılsın.

Döngü ise bu değişkenin 1 olma durumuna göre dönsün aksi halde sonsuz döngüye girsin.

Start butonuna basılması ise değişkenin değerini tekrar 1 yapsın.

Bu sayede resetleme işlemi olmaksızın istenilen yapılabilir.
Başa dön
Kayıt: 14 Ksm 2011
Mesajlar: 30

Offline
ferdi0435
Tarih: 07 12 2011 04:24

değişken kontrolü ile yaparsam şöyle bir sorun çıkar ana döngüde uzun bir işlem varsa her satırda o değişkeni kontrol ettirmem lazım bunu ortadan kaldıracak bir yöntem arıyorum zaten ........ @senoleker reset derken mclr den mi bahsediyorsun ???*
Başa dön
Kayıt: 11 Nis 2006
Mesajlar: 1

Offline
MMUHAD
Tarih: 07 12 2011 09:14

Merhaba;
Reset derken MCLR ucundan bahsediyor.
Bir başka Resetleme yöntemi ise pic in besleme volatajını keserek yapabılır. Yalnız reset butonu
normal butonun tersi çalışan olması lazım. Butona basınca pic e besleme gitmeyecek elınızı cekınce gıdecek.

Kolay gelsin.
Başa dön


Sayfaya git 1, 2  Sonraki

kesmeler ?


Benzer Konular

Sitemize üyelik ve içeriğin indirilmesi tamamen ücretsizdir. Sitemizde paylaşılan tüm dokümanlar (Tezler, makaleler, ders notları, sınav soru cevaplar, projeler) paylaşımcıların bireysel çalışmaları olup telif hakları kendilerine aittir ya da açık bir şekilde kamusal alana yerleştirilmiş dokümanların birer kopyalarıdır. Kişilerin bireysel çalışmalarını sitemizde yüklemesinde, sitemizde paylaşıma teşvik eden puanlama sisteminin de etkisi büyüktür. Bunlara rağmen hala size ait olan ve burada bulunmasına izin vermediğiniz dokümanlar varsa iletişim bölümünden yöneticilere bildirmeniz durumunda derhal silineceklerdir.
Powered by phpBB | Translated by phpBB Turkiye | Ads by Google Adsense | Design by Crazy Bat based