Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

LCD ye yazarken

Başlatan cuneytsezmis1, 27 Kasım 2006, 22:20:26

cuneytsezmis1

iyi akşamlar arkadaşlar.LCD ye yazarken kesme olursa program hemen kesme programına mı dallanır yoksa LCD ye yazma işlemi bittikten sonra mı kesme programına sapılır.

ibrsel

Öncelik senin tanımlamış olduğun kesmededir..Kesme anında işlemcin tüm işlerini bırakıp kesme alt programına dallanır..

cuneytsezmis1

arkadaşım ibrsel kesme ile deniyorum olmuyor.kodu eklesem bi bakarmısın.uygulamada başarısız oldum.teşekkürler

DEVICE 16F84A
     
      
      DECLARE LCD_INTERFACE 4   ;4 HAT İLE LCD BAĞLANTISI SEÇME
       DECLARE LCD_DTPIN PORTB.0 ;DATA'LAR PORTB.0 DAN BAŞLIYOR PORTB.3(DAHİL)E KADAR
       DECLARE LCD_ENPIN PORTB.5 ;LCD ENABLE ÇIKIŞI
       DECLARE LCD_RSPIN PORTB.4 ;LCD RS ÇIKIŞI
       PORTB_PULLUPS = OFF ;PORTB PULLUP DİRENÇLERİ ETKİN DEĞİL
      ON INTERRUPT GOTO KESME
      
      INTCON.7=1
      INTCON.3=1
      INTCON.0=1
      SAYAC VAR WORD
      
       TRISA=%11111111
       TRISB=%11000000
      PORTA=0
      PORTB=0
      SAYAC=0
      TMR0=0
      
      PRINT AT 1,1,"PICPROJE.COM"
      PAUSE 500
      CLS
      
BASLA:
      PRINT AT 1,1,#SAYAC
      GOTO BASLA
      DISABLE
      
KESME:
      IF PORTB.7=0 THEN
      INTCON.0=0
      SAYAC=SAYAC+1
      ENDIF   
      RESUME
      ENABLE

Veli B.

Kullandığınız dil; PBP değil. Pic basic plus yada proton. Başlığınız yanlış bölümde.
PBP dilinde kesmeler donanımsal olarak desteklenmemektedir.O anda yürütülmekte olan komutun icrası bittiğinde kesme var mı yokmu kontrol edilir. Dolayısı ile PBP da öncelik komut yürütümündedir.
Proton veya Pic Basic Plus ta ise; her iki tip kontrolde(donanımsal ve yazılımsal) vardır.Bu ISR ye dallanmak için vereceğiniz direktife göre belirlenir.

ON INTERRUPT GOTO MY_INT
 Şeklinde bir direktif verirseniz; bu,  komut icra edildikten sonra kesme kontrolü yapılsın demektir.

ON_INTERRUPT GOTO MY_INT

Şeklinde bir direktif verirseniz; bu,  ASSEMBLY de olduğu gibi yapılan iş bırakılsın ve  kesme kontrolü yapılsın demektir. Kesme rutiniden çıkılırken ilgili REGISTER lara eski değerler yüklenir, program kaldığı yere yada sizin yönlendirdiğiniz yere dallanır

Detay bilgi Proton Help te mevcuttur.

ibrsel

Sevgili dostum,Katana hocam Proton konusuda benden çok daha tecrübelidir..Öncelikle kendisinin uyarılarını dikkate almanı tavsiye ederim..

Programında İlk dikkatimi çekenler;
INTCON.7=1    (genel kesmeyi aktif yap)
INTCON.3=1    (PORTB değişiklik kesmesini aktif yap)
INTCON.0=1    (PORTB değişiklik kesmesi oluştuğunda bu bit 1 olur)

Öncelikle PortB değişilkik kesmesi kullanmışsın.Bu; PortB4-PortB7 pinlerinin konumunda bir değişiklik olursa kesme oluştur demek..Ama sen PortB4 pinini LCD nin RS pinine bağlamışsın..LCD ile bilgi transferin olduğunda bu pin konum değiştirecek ve senin istemediğin bir anda kesme oluşacaktır..

Ayrıca INTCON.0 registeri kesme olduğunu bildirmek amacı ile kullanılır,dolayısı ile kesme oluştuğunda bu register "1" değerini alır..Programının başında bu registeri sıfırlaman daha doğru olur kanısındayım..

Veli B.

INTCON.0 biti sıfırlanmaz yada program başlangıcında sıfır değil ise RB Port Change kesmesi oluşmaz.

ibrsel

Sevgili hocam İntcon.0 registeri sifirlanmaz derken programın başında sıfırlanamayacağını kastettin herhalde..

Kesme alt programında çıkarken İntcon.0 içeriğini sıfırlayıp yeni kesme gelmesine olanak tanımalıyız..

cuneytsezmis1

katana ve ibrsel hocam dediğini hemen deniyorum.hepinize teşekkür ederim çok sağolun.