aşagıdaki kodu bir denermisiniz sanırım benim isis versiyonunda sorun var 7.7sp2

Başlatan forumsad, 21 Temmuz 2011, 14:40:59

forumsad

arkadaşlar herşeyi denedim change kesmesi istediğim gibi çalışmıyor acaba sorun isis programında mı kafayı yiyeceğim artık??
'****************************************************************
'****************************************************************
Device 16F877A ;ENTEGRE TANIMLAMA
Xtal 4 ;KRISTAL FREKANSI 
'------------------------------------------------------------------------

TRISA=%11111111
TRISB=%11111111  'PORTB0 GIRIS DIGERLERI ÇIKIS OLSUN
TRISC=%00000000
TRISD=%00000000
TRISE=%00000000

'LCD TANITMA BOLÜMÜ.....................................................................................
Declare LCD_DTPin PORTC.4		'DATA girişi PORTC'nin 4. ucundan başlayacak
Declare LCD_ENPin PORTC.3
Declare LCD_RSPin PORTC.2
Declare LCD_Interface 4
Declare LCD_Lines 4			'LCD 4 satırdan oluşuyor


'PB4-7 change kesme ayarlari------------------------------------------------------
'On_Hardware_Interrupt GoTo KESME     'Hardware interrupt Olusunca INT ye git
On Interrupt GoTo KESME 'kesme oluşursa KESME adlı etikete git.
OPTION_REG = %00000000 'INTERRUPT KÖSE DURUMU düşen kenar
INTCON  =%10001000     'global kesme aktif,portb4-7 change kesmesi aktif





'//////////////////////////////////////////////////////////////////////////


Symbol RBIF = INTCON.0   ' RB Port Interrupt Flag					
Symbol INT0IF = INTCON.1 ' INT0 External Interrupt Flag					
Symbol TMR0IF = INTCON.2 ' TMR0 Overflow Interrupt Flag					
Symbol RBIE = INTCON.3   ' RB Port Change Interrupt Enable					
Symbol INT0IE = INTCON.4 ' INT0 External Interrupt Enable					
Symbol T0IE = INTCON.5   ' TMR0 Overflow Interrupt Enable					
Symbol PEIE = INTCON.6   ' Peripheral Interrupt Enable					
Symbol GIEL = INTCON.6   ' Low priority peripheral interrupt					
Symbol GIE = INTCON.7    ' Global Interrupt Enable					
Symbol GIEH = INTCON.7   ' Enable all high priority interrupts	

'çikislari temizle 
PORTA=0 
PORTB=0 
PORTC=0 
PORTD=0
PORTE=0
'__________________________________________________________________________________________________
BASLA: 
DelayMS 100
PORTE.2=1
LCDOUT $FE,1,"merhaba"                     'Dec3 TMR0

PORTE.1=1
DelayMS 200
PORTD.1=0


DelayMS 100





GoTo BASLA

'/////////////////////////////////////////////////
'/////////////////////////////////////////////////
'/////////////////////////////////////////////////



'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Disable            'kesmeyi pasif
KESME: 
'Context Save                'kaldığı yeri sakla 
PORTE.1=1
LCDOUT $FE,2,"kesme"                     'Dec3 TMR0





INTCON.0=0
'Context Restore             'tüm kyıtlı reg. tekrar yüklenip keseden çıkılıyor      	
Resume
Enable
GoTo BASLA
'-------------------------------------------------------------------------------------------------------------


End


forumsad


fryrmnd

Ya kusura bakma hocam kod proton muş ben pbp kullanıyom :o hatta çizdim bile hex verebilirsen gene denerim

forumsad

:10000000000000308A00EC280800A101A117AF0011
:10001000FE308B202F088B28A501AA00AB01A01170
:1000200025080319A0150530A4002730A9001030B9
:1000300025200330A900E8302520A90164302520BF
:10004000A9010A3025202A082C28A8002B08A7007F
:100050002A08A600CC202608A600A4030319A01194
:10006000250803193628240203183D282608031DF5
:10007000A011A0193D28303E8B280800AD00871143
:1000800007118316871107110F30870583122D087A
:10009000A01868283E30A7008030B8203330AC006C
:1000A0007C201330A7008830B8207C206430B72033
:1000B0007C206430B7202230AC007C2028306720C0
:1000C0000C30672006306720A0142D086828201403
:1000D000AC00201C76280711033C031C7B287B20E6
:1000E0000730A700D030B820031408002014FE3CCD
:1000F000031989280715201C201087150F30870544
:100100002C08F03987048711AC0E20187C28323077
:10011000B7202D08E828A11B3E280800A400A20152
:10012000240803178D000313250803178F00A1204F
:100130000319E8288B20A40A0319A50AA20F902806
:10014000E828831603178C170C1400000000831294
:100150000C08E828A901A800FF30A807031CA9077C
:10016000031CE8280330A700DF30B820AC28A70123
:10017000E83EA600A709FC30031CC128A607031807
:10018000BE28A6070000A70FBE282618C728A61C51
:10019000CB280000CB280800AB01AA011030AC002E
:1001A000270DAA0DAB0D2808AA022908031C290F48
:1001B000AB020318E2282808AA0729080318290F08
:1001C000AB070310A60DA70DAC0BD0282608E82816
:1001D0008313831203130800A0018316FF308500E8
:1001E000FF3086008701880189018B1783128A11ED
:1001F0000A12FF288B1B08008A110A1265298A013E
:10020000FA208A01FA208316810183128A01FA20DA
:100210008A01FA2088308B008A01FA208A01FA20AC
:1002200085018A01FA208A01FA2086018A01FA20D2
:100230008A01FA2087018A01FA208A01FA208801BE
:100240008A01FA208A01FA2089018A01FA206430A1
:100250008A01AA208A01FA208A01FA2009158A0156
:10026000FA208030A100C0308A0105200130A500AD
:1002700080308A018E200230A50030088A010D20CE
:100280008A01FA208A01FA2089148A01FA20C830EA
:100290008A01AA208A01FA208A01FA2088108A019C
:1002A000FA20013030028A110A12031D5C298A01EA
:1002B000FA208A01FA2009148A01FA2064308A019E
:1002C000AA208A01FA208A01252989148030A100F8
:1002D000C1308A0105200130A50088308A018E20B6
:1002E000B00A0B1009008A01FA208A0125298A0127
:1002F000FA2063008A0177298A01FA208A017C2981
:100300006D0065007200680061006200610000001D
:100310006D0065007200680061006200610000000D
:02400E00323F3F
:00000001FF

fryrmnd

hocam denedim. b6 ya basınca tek sayıları saymaya basladı.tam ne yapması gerekiyodu

forumsad

o zaman kod hatalı portb change kesmesi gelince porte.1 deki led 1 kere yanıp sönecek

877 ile aynı olayı pbp de yapabiliğrmisin

portb4-7 change kesmelerini kullanacaksın kesme nin düzgün çalıştıgını simüle et yeter

rica edeceğim

fryrmnd

hocam sadece 877 mi koy diyosunuz isiste yoksa kodu pbp de 877 ye göre mi yaz diyosunuz.Çok kısa sürde yazamam da ondan dedim

forumsad

vaktin olduğunda 877 ye göre portb change olayına bir örnek yapabilirmisin bakalım çalıştırabilecekmisin

fryrmnd


fryrmnd

hocam şöyle bir kod yazdım çalıştı.
PORTA=0
PORTC=0
PORTD=0
PORTE=0
TRISA=0
TRISB=%11110000
TRISC=0
TRISD=0
TRISE=0
ON INTERRUPT GOTO KESME


DEFINE OSC 4
OPTION_REG.7=1 
INTCON=%10001000
ADCON1=7

SYMBOL RBIF=INTCON.0
SYMBOL LED=PORTD.0
SYMBOL TUS=PORTB.7


BASLA:


HIGH LED







GOTO BASLA

DISABLE
KESME:
LOW LED

RBIF=0

RESUME
ENABLE



sanırım sizin kodunuzda kesme içinde e1 i gene 1 yapıyorsunuz.zaten ana döngüde de 1 gibi geldi bana.
EDIT:sanırım bu da çalışmıyor.Ya da benim evdeki isiste sorun var. birde siz deneyin

EDIT2: hocam verdiğim kodda "LOW LED"  ifadesinden sonra portb yi okursanız çalışıyo(unutmuşum datasheete de düzgün bakmamışım,ete hocanının notlarda var .RBIF silinmesi için portb yi de okumak gerekiyo)
"durum=PORTB"

forumsad

'****************************************************************
'****************************************************************
Device 16F877A ;ENTEGRE TANIMLAMA
Xtal 4 ;KRISTAL FREKANSI 
'DEFINE OSC 4
'------------------------------------------------------------------------
PORTA=0
PORTC=0
PORTD=0
PORTE=0
TRISA=0
TRISB=%11110000
TRISC=0
TRISD=0
TRISE=0
On Interrupt GoTo KESME



OPTION_REG.7=1 
INTCON=%10001000
ADCON1=7

Symbol RBIF=INTCON.0
Symbol LED=PORTD.0
Symbol TUS=PORTB.7


'***************************************
BASLA:


High LED
GoTo BASLA
'***************************************



'***************************************
Disable
KESME:
Low LED

RBIF=0
Resume
Enable
'***************************************
End



hocam yazşindığınız koda göre portd.0 ledi sürekli yanacak kesme gerçekleşince kısa bir süre sönecek sonra yanmaya devam edecek
isisi çalıştırdığımda portd.0 ledi sürekli yanıyor portb.7 tuşuna bastıgımda led sönüyor sonra karışıyor yanıp sönmeye devam ediyor

yani bit tutarsızlık var nedinini anlayamıyorum ögrendiğim herşeyi uyguluyorum ama kod sağlıklı çalışmıyor
sizin kod da aynı şeyi yaptı

bu kod sizde düzğün çalışıyorsa isis versiyonumu değiştireceğim artık

saygılarımla

fryrmnd

hocam son mesajın altında düzeltme yollamıştım. 'LOW LED' ifadesinden sonra portb yi okumanız gerekiyor
'Durum=PORTB' gibi .  yoksa RBIF bayrağı sıfırlanmıyor. Dediğiniz durum bende de oluştu. İsis versiyonunuzda sorun yok yani

forumsad

acil bir iş nedeniyle bu denemelere pazartesi itibariyle devam edeceğim zaman ayırıp ilğilenen arkadaşlara teşekkürler