Y

Pic16f877 ile timer0 kesmesinde serin kullanımı

Başlatan YasarGunaydin, 24 Ocak 2014, 14:16:27

YasarGunaydin

Arkadaşlar Merhaba;
Pic16f877 ile timer0 kesmesi yapmaya çalıştım.Serin komutunu koymadığım zaman problem yok ama koyduğum zaman duruyor ve dinlemeye geçiyor.Serinde bunu yaptığını biliyorum ama dinleme yaparken biryandanda başka işlem yaptırmalıyım.Yardımcı olabilirmisiniz.
Kesmeye ve ana proğrama şimdilik rastgele komutlar verdim.


TRISA=%11111111     'portA giriş yapıldı
TRISB=%00000000     'portB giriş yapıldı
TRISC=%10000000
TRISD=%11111111
'-------------------------------------------------------------------------------
@ DEVICE pic16F877
@ DEVICE pic16F877, WDT_on
@ DEVICE pic16F877, PWRT_ON               
@ DEVICE pic16F877, PROTECT_OFF
@ DEVICE pic16F877, XT_OSC




DEFINE OSC 4
ADCON1=7 '7. bit 1 yapıldı 10 bit sonuç almak için.
OPTION_REG.7=0 'pull-up dirençleri aktif
'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------
ON INTERRUPT GoTo KESME   'kesme oluşursa KESME adlı etikete git.
OPTION_REG=%10000101   'Pull up dirençleri İPTAL- Bölme oranı 1/64.
INTCON=%10100000  'Kesmeler aktif ve TMR0 kesmesi aktif
TMR0=0


DEFINE LCD_DREG     PORTB
DEFINE LCD_DBIT     0
DEFINE LCD_EREG     PORTB
DEFINE LCD_EBIT     5
DEFINE LCD_RSREG    PORTB
DEFINE LCD_RSBIT    4
DEFINE LCD_BITS     4
DEFINE LCD_LINES    2




SYMBOL ARTIR=PORTD.0   'ART
SYMBOL NPN=PORTD.1   'NPN
SYMBOL GERI=PORTD.2   'GERİ
B0 VAR WORD
SAYI VAR WORD

SAYI=0
'------------------------------------------------------------------------------
A VAR BYTE
A=0

SO VAR PORTC.6
SI VAR PortC.7

BASLA:

LCDOUT $FE,$84,DEC SAYI,"  ",DEC A
LCDOUT $fe,$C0,"PAN:",DEC B0

IF ARTIR=0  THEN
PAUSE 100
While PORTD.0=0 : Wend
LCDOUT $FE,1
A=A+1
ENDIF

IF A=4 THEN A=0

PAUSE 50

GOTO BASLA

DISABLE
KESME:
SERIN SI,2400,B0
SAYI=SAYI+1
IF NPN=0 THEN PORTC=%00010000
IF NPN=1 THEN PORTC=%00000000
INTCON.1=0        'TMR0 Kesme bayrağı sıfırlanıyor
LCDOUT $FE,$84,DEC SAYI,"  ",DEC A
LCDOUT $fe,$C0,"PAN:",DEC B0
RESUME
ENABLE 
       
END

efsanepoldem

usart kesmesi kullanacaksın. hserin komutunu bir araştır. ayrıca timeout kullanmayı unutma

Powered by EzPortal