PICC DE PORT CHANGE INTERRUPT UYGULAMASI????

Başlatan XX_CİHAN_XX, 14 Kasım 2005, 20:04:08

XX_CİHAN_XX

Degerli arkadaşlar benim bu konuda yardıma ihtiyacım olucak.Ben  pıcc de port change uygulamasıyla ilgili sorun yaşıyorum.Ana programda kullandıgım bir değiskeni her interrupt geldiğinde artırmak istiyorum fakat derleyici hata veriyor.Daha dogrusu yapmaya çalıştıgım uygulama tam olarak su;
portb normalde clear konumda. portb,7 set olunca ınterrupt geldıyse ana programda kullandıgım verı degıskenıne 1 yuklemem gerek.Portb,6 set olunca ınterrupt geldı ıse verı regısterıne 2 yuklemem gerek.(ıkısının aynı anda 1 olama durumu yok)Bu tarz bır uygulama yapmam gerek yardımcı olursanız cok sevınırım.Şimdiden teşekkürler.Saygılarımla,
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

XX_CİHAN_XX

Arkadaşlar yardım edersenız çok sevınecem.Sadece şunu öğrenmek istiyorum;


//INTERRUPT DENEMESI ICIN YAZILMIS BIR PROGRAM
#include <16F877.h>
#int_RB
void RB_ISR()
{
  cihan=1;             //BUNU YAZINCA HATA VERIYOR
 
  bit_clear(INTCON,0);  //RBIF=0
}

void main()
{
  unsigned int cihan;
  TRISB=0xFF;
 
  enable_interrupts(RB_CHANGE);
  enable_interrupts(GLOBAL);
  for(;;)
  {
  cihan=0;
  }
}

Programdanda anlaşıldıgı gıbı ana programda cihan isminde bir degişken acıyorum.İnterrupt gelıncede bu degıskene 1 yukluyorum.Ama derledıgımde hata verıyor.İnterrupt alt programındakı cihan=1; satırını kaldırdıgımda ıse derleyınce hata olusmuyor bunun sebebını ve dogrusunu anlatırsanız çok sevınıcem.Şimdiden Teşekkürler.

mod notu: lütfen code tagını kullanalım.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

Erol YILMAZ

cihan degiskenini bir cok farkli fonksiyon altinda kullanmak istiyorsan cihan degiskenini GLOBAL olarak tanimlayabilirsin. Yani unsigned int cihan; olan kismi,  main  fonksiyonundan alip #include <16F877.h>
yazan yerin bir alt satirina tasimak.

HEXF2

Evet hata bu cihan değişkeni global olarak tanımlanmamış yani yerel değişken bunu tüm fonksiyonlarda kullanmak istiyorsan GLOBAL olarak deklare etmen gerek

XX_CİHAN_XX

Dediğiniz gibi yaptım oldu çok teşekkür ediyorum.Birde pıcc ye yeni basladımda kusra bakmayın pek iyi bilmiyorum henüz pıc c yı.O yuzden bısı daha sorucam.Pekı yukarda yazdıgım ınterrupt uygulaması dogru mu çalısır mı yanı.Onu sorucam bırde
#int_RB
void RB_ISR()
komutunda ordakı ISR nin anlamı ne onu sorucaktım.İlginizden dolayı teşekkürler.Saygılarımla,
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

Petek

Alıntı yapılan: "XX_CİHAN_XX"Dediğiniz gibi yaptım oldu çok teşekkür ediyorum.Birde pıcc ye yeni basladımda kusra bakmayın pek iyi bilmiyorum henüz pıc c yı.O yuzden bısı daha sorucam.Pekı yukarda yazdıgım ınterrupt uygulaması dogru mu çalısır mı yanı.Onu sorucam bırde
#int_RB
void RB_ISR()
komutunda ordakı ISR nin anlamı ne onu sorucaktım.İlginizden dolayı teşekkürler.Saygılarımla,

ISR: interupt service routine demek. Yani interrupt oluşunca o adrese git demek. Anladığım kadarıyla CCS kullanıyorsun. CCS de klasik assemblerdaki mantığı interrupt için düşünme. İstediğin interrupt için ayrı alt program yazabilirsin. Derleyici kendisi onları tek bir rutin haline getiriyor. İnterrupta göre ilgili kod bölümüne etlama yapıyor. Alt program adı içerisinde ISR yazmak gibi bir zorunluluğunda yok. Zira bir öncesinde #int_RB tanımlamışsın. "void bosver()" de aynı işi görür.

Yazdığın program çalışır fakat sen algılayamazsın. Döngü içerisinde hemen eski haline geliyor. Proteus isis kullan, cof dosyasını işlemciye tanıt. adım adım çalıştır ve register değerlerine bak. bit tanımlı değişkenin değerini göremeyebilirsin. Onun yerine cihanı byte tanımla ve öyle bak.
“Önyargıları yıkmak atomu parçalamaktan zordur” A.Einstein

XX_CİHAN_XX

Verdiğiniz bilgiler için teşekkürler.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

Erol YILMAZ

Alıntı yapılan: "XX_CİHAN_XX"Dediğiniz gibi yaptım oldu çok teşekkür ediyorum.Birde pıcc ye yeni basladımda kusra bakmayın pek iyi bilmiyorum henüz pıc c yı.

Cihan PICC den once C yi ogrenmeni tavsiye ederim.
Basit problemlerle ugrasmazsin o zaman.