EWRİTE-EREAD EPROOM YAZMA SORUNU

Başlatan forumsad, 21 Ocak 2011, 23:51:40

forumsad

AŞAGIDAKİ uygulamada ewrite ile kesme anında 1 kaydedip  sonra okuyarak değerlendirmek istiyorum ama

okuma esnasında 6325 gibi bir rakam geliyor 1 kaydedip 1 okuyamıyorum hatam nerde acaba

teşekkürler...

Device 16F877A ;ENTEGRE TANIMLAMA
Xtal 4 ;KRISTAL FREKANSI 
'------------------------------------------------------------------------
TRISA=%11111111
TRISB=%00000001  'PORTB0 GIRIS DIGERLERI ÇIKIS OLSUN
TRISC=%10000000
TRISD=%00000000
TRISE=%00000000




'LCD TANITMA BOLÜMÜ.....................................................................................
'.................................................................................
Declare LCD_DTPIN PORTD.4		'DATA girişi PORTC'nin 4. ucundan başlayacak
Declare LCD_ENPIN PORTD.3
Declare LCD_RSPIN PORTD.2
Declare LCD_INTERFACE 4
Declare LCD_LINES 4			'LCD 4 satırdan oluşuyor
'-----------------------------------------------------------------------


'kesme ayarları------------------------------------------------------
On_Interrupt GoTo KESME
OPTION_REG = %00000000 'INTERRUPT KÖSE DURUMU
INTCON  =%10010000     'global kesme aktif,portb.0 kesmesi aktif
'-----------------------------------------------------------------------


'degiskenler
DIM kesmeD AS WORD
DIM kesmeV1 AS WORD



'//////////////////////////////////////////////////////////////////////////
'çikislari temizle 
PORTA=0 
PORTB=0 
PORTC=0 
PORTD=0
PORTE=0


'------------------------------------------------------------------------
'........lcd açilis yazisi.........................................................
Print at 1,1,"PROJE" 


'delayms 2000 ': Print $fe,1
'---------------------------------------------------------------------------------
kesmeV1=0
kesmeD=0
BASLA:
'*****************************************
ENABLE             'kesme devrede 
INTCON.7=1         'global kesme aktif
'*****************************************
PORTC.0=1


kesmeV1 = EREAD 0

Print at 2,1,DEC kesmeD
Print at 3,1,DEC kesmeV1

if kesmeD=0 and kesmeV1=0 then PORTC.1=1
'if kesmeD=1 and kesmeV1=1 then PORTC.1=1


goto BASLA

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



'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
KESME:
Disable            'kesmeyi pasif

kesmeD=1
EWRITE 0,[1]

INTCON.1=0       	'RB0/INT Bayrağı (flag) silindi.
Resume

goto basla
'-------------------------------------------------------------------------------------------------------------




End

Maxim

her yazma işleminden sonra 15ms kadar bir bekleme yapmalısın ondandır

forumsad

DELAYMS 100

koydum değişme olmadı

Maxim

ayrı bir değişken tanımlayıp ewrite komutunda onu kullanın
bu şekilde tamamdır

Dim Maxim As Word
Maxim = 155

EWrite 0,[Maxim]

omereliusuk

EWrite $0,[maxim.HighByte]
EWrite $1,[maxim.LowByte]
MAXIM.HighByte    =ERead $0                'MAXim EEPROMDAN OKUNACAK*******
MAXIM.LowByte     =ERead $1                ' MAXİM EEPROMDAN OKUNACAK*******

forumsad

kod aşagıdaki şekilde çalışıyor teşekkürler arkadaşlar
Device 16F877A ;ENTEGRE TANIMLAMA
Xtal 4 ;KRISTAL FREKANSI 
'------------------------------------------------------------------------

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



'LCD TANITMA BOLÜMÜ.....................................................................................
'.................................................................................
Declare LCD_DTPIN PORTD.4		'DATA girişi PORTC'nin 4. ucundan başlayacak
Declare LCD_ENPIN PORTD.3
Declare LCD_RSPIN PORTD.2
Declare LCD_INTERFACE 4
Declare LCD_LINES 4			'LCD 4 satırdan oluşuyor
'-----------------------------------------------------------------------


'kesme ayarları------------------------------------------------------
On_Interrupt GoTo KESME
OPTION_REG = %00000000 'INTERRUPT KÖSE DURUMU
INTCON  =%10010000     'global kesme aktif,portb.0 kesmesi aktif
'-----------------------------------------------------------------------


'degiskenler
DIM kesmeD AS WORD
DIM kesmeV1 AS WORD

Dim Maxim As Word

Dim DENEME1 As Word



'//////////////////////////////////////////////////////////////////////////
'çikislari temizle 
PORTA=0 
PORTB=0 
PORTC=0 
PORTD=0
PORTE=0


'----------------------------------
'........lcd açilis yazisi........
Print at 1,1,"PROJE" 


'delayms 2000 ': Print $fe,1
'-------------------------------




kesmeV1=0
EWrite 0 ,[kesmeV1]  'YAZMA
DELAYMS 50

kesmeD=0
'__________________________________________________________________________________________________
BASLA:
'*****************************************
ENABLE             'kesme devrede 
INTCON.7=1         'global kesme aktif
'*****************************************
PORTC.0=1


kesmeV1 = ERead 0  'OKUMA
DELAYMS 20

Print at 2,1,DEC kesmeD
Print at 3,1,DEC kesmeV1


if kesmeD=1 and kesmeV1=1 then goto yak


goto BASLA

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



'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
KESME:
Disable            'kesmeyi pasif


kesmeV1=1
EWrite 0 ,[kesmeV1]  'YAZMA
DELAYMS 50
kesmeD=1

INTCON.1=0       	'RB0/INT Bayrağı (flag) silindi.
Resume

goto basla
'-------------------------------------------------------------------------------------------------------------


yak:
PORTC.1=1
kesmeV1=0
goto BASLA

End