Interrupt Hangisi Doğru?

Başlatan oki, 29 Temmuz 2003, 14:24:49

oki

Merhaba,
Picbasic de interrupt rutinlerinden hangisi doğru ve aralarında ne gibi bir
fark var?


Program1:
...
...
...
Main:
       oninterrupt goto Kesme
       pause 100
       goto Main

   Disable
Kesme:
   ...
   ...
   Resume
   Enable



Program2:
...
...
...
Main:
       oninterrupt goto Kesme
       pause 100
       goto Main

Kesme:
   Disable
   ...
   ...
   Enable
   Resume

james

program1 doğru.örnek bi kesme programı istiyosan burda  "timer kullanımı" başlığına bak
ARAMIYORUM , BULUYORUM

mhk

Bence interrupt tanımlamasını başta yapman daha doğru olur. Ayrıca resumeden sonra enable yazmanada gerek yok.
ÖRNEK.....

oninterrupt goto Kesme

Main:
pause 100
goto Main

Disable
Kesme:
...
...
Resume

end


Zamanlayıcı kesmesi ile bir saat örneği.(Kristal olarak 3.2768MHZ kullanıldı)


Define  LCD_DREG        PORTD   ' LCD bağlantılarını tanımla
Define  LCD_DBIT      4
Define  LCD_RSREG      PORTE
Define  LCD_RSBIT       0
Define  LCD_EREG        PORTE
Define  LCD_EBIT            1


TRISB = %11111111  
TRISC = %00000000   
       ADCON1 = 7    ' PORTA ve  E dijital giriş çıkış olarak ayarla
       Low PORTE.2    ' LCD R/W low = yazma modu
       Pause 100         ' LCD başlamak için bekle


kesmedeger var byte
saniye var byte
dakika var byte
saat var byte
gun var byte

kesmedeger=0:saniye=0:dakika=0:saat=0:gun=0


OPTION_REG = %00000110  'Pull uplar etkin ve tmr0 konfigirasyon bitleri set edildi.
INTCON = %10100100            ' Enable TMR0 interrupts

   On Interrupt Goto kesme
LCDOUT $FE,1
anadongu:
LCDOUT $FE,2,"Saat ",dec2 saat,":",dec2 dakika,":",dec2 saniye

goto anadongu
'*********** KESME ALT PROGRAMI ***********
disable                                 
kesme:
kesmedeger = kesmedeger + 1                              
      If kesmedeger < 35 Then kesmebitir        
    kesmedeger=10
       saniye = saniye + 1
       If saniye >59 Then
               saniye = 0
                               dakika = dakika + 1
               If dakika >59 Then
                       dakika = 0
                                saat = saat + 1
                       If saat > 23 Then
                                    saat=0
                       Endif
               Endif
       Endif
kesmebitir:
INTCON.2 = 0       ' Zamanlayıcı kesmesini sıfırla
         
Resume   ' Ana programa geri dön

end



Umarım yararlı olmuştur.
"Ya olduğun gibi görün, Ya da göründüğün gibi ol..." Mevlana