EEPROM'a yazma ve okuma sorunu Pic16f84a

Başlatan Hiram, 02 Kasım 2007, 10:51:28

Hiram

Pic16f84a'da EEpROM'a veri yazıp okumayı denemek için program yazdım.Fakat program çalışırken yarı doğru yarı yanlış çalışıyor,sorunu bulamadım.2 adet led'i PortB 5 ve 6'ya bağlı ,PortB 4'e bağlı switchle değiştirerek yakıyorum.Devrede enerjiyi kesip açtığımda en son hangi led yanıksa onunla başlamasını istiyorum.

Kodlar aşağıda mevcuttur:


   
list      p=16F84A            ; list directive to define processor
	#include <p16F84A.inc>        ; processor specific variable definitions

	__CONFIG   _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

; '__CONFIG' directive is used to embed configuration data within .asm file.
; The lables following the directive are located in the respective .inc file.
; See respective data sheet for additional information on configuration word.
cblock H'0C'
S1 
S2 
S3 
S4 
S5
endc		
		ORG H'00'
		GOTO BASLA

	
BASLA	               CLRF 	PORTB
		BSF  	STATUS,5
		MOVLW   B'00010000'
		MOVWF   TRISB
		MOVLW   B'00000000'
		MOVWF   TRISA
		BCF  	STATUS,5
		
		CALL RELAY
		MOVLW	H'03'
		MOVWF 	EEADR
		BSF		STATUS,5
		BSF		EECON1,RD
		BCF		STATUS,5
		MOVF	EEDATA,W
		MOVWF	S5
		DECFSZ	S5,F
		GOTO	BIR
		GOTO	IKI[/align]

BIR		[align=right]BCF			PORTB,6
		BSF			PORTB,5	
		CALL		RELAY
		MOVLW	  	H'03' 
      	MOVWF      	EEADR 
     	MOVLW	  	H'01' 
     	MOVWF     	EEDATA 
    	BSF       	STATUS,RP0  
     	BSF       	EECON1,WREN 
     	MOVLW     	H'55' 
     	MOVWF     	EECON2 
     	MOVLW     	H'AA'
     	MOVWF     	EECON2 
     	BSF        	EECON1,WR [/align]MM 	
      	BTFSC       EECON1,WR 
     	GOTO        MM 
      	BCF         EECON1,WREN 
		BCF         STATUS,RP0 
		GOTO		KONTROL		

IKI		BCF			PORTB,5
		BSF			PORTB,6
		CALL		RELAY
		MOVLW	   	H'03' 
      	MOVWF      	EEADR 
     	MOVLW	   	H'02' 
     	MOVWF      	EEDATA 
    	BSF        	STATUS,RP0  
     	BSF        	EECON1,WREN 
     	MOVLW      	H'55' 
     	MOVWF      	EECON2 
     	MOVLW      	H'AA'
     	MOVWF      	EECON2 
     	BSF        	EECON1,WR 
MM1 
      	BTFSC       EECON1,WR 
     	GOTO        MM1 
      	BCF         EECON1,WREN 
		BCF         STATUS,RP0 		


KONTROL	BTFSC	PORTB,4
		GOTO	KONTROL
		BTFSS	PORTB,5
		GOTO	BIR
		GOTO	IKI
RELAY	
		MOVLW 	H'0A'
		MOVWF 	S1
DONGU1		
		MOVLW 	H'1A'
		MOVWF 	S2		
DONGU2		
		MOVLW 	H'FF'
		MOVWF	S3	
DONGU3			
		DECFSZ	S3,F
		GOTO 	DONGU3
		DECFSZ 	S2,F
		GOTO 	DONGU2
		DECFSZ 	S1,F
		GOTO 	DONGU1
		RETURN	
end

Hiram

Hallettim arkadaşlar okuma işleminden sonra yaptığım kontrol döngüsünde hata yapmışım.

Hiram

Güç kaynağını çok hızlı açıp kapattığımda kapattığım andaki konumdan değil de diğerinden başlıyor.
1 sn kadar süre ile açıp kapama yaptığımda doğru çalışıyor.

Neden yapıyor olabailir?Güç kaynağında bulunan kondansatörün deşarj süresi mi etkiliyor?
Anlayamadım.Yorumlarınızı ve yardımlarınızı bekliyorum.

yalnayak

Alıntı yapılan: "Hiram"Güç kaynağını çok hızlı açıp kapattığımda kapattığım andaki konumdan değil de diğerinden başlıyor.
1 sn kadar süre ile açıp kapama yaptığımda doğru çalışıyor.

Neden yapıyor olabailir?Güç kaynağında bulunan kondansatörün deşarj süresi mi etkiliyor?
Anlayamadım.Yorumlarınızı ve yardımlarınızı bekliyorum.

cok hizli voltaji acip kapadiginda yazma islemi yarim kaliyo olabilir..yazma islemi yaparken araya zaman varsa onlari kisalt.birde picin besleme kondansetorunu yuksek tutki ani acip kapamalarda kondansotor bosalana kadar yazma islemi tamamlansin..
Kızımın iffeti batmakta rezîlin gözüne... Acırım tükürüğe billâhi, tükürsem yüzüne..! MEHMED AKİF ERSOY  Kardan Adaminla,GUNES'e calim mi satiyorsun?

stlg

Pici besleyen kondansatoru buyuk tutmakla birlikte gerilim regulatorunden once ayrı bir diyot ve dusuk kapasiteli bir kondansator bir direnc ve bir zener ile yapacagın bir devreyi picin bos bir portuna gir, ister surekli bu ucu kontrol et ister kesme kullan ,elektrigin olup olmadıgını buradan kontrol et ,yuksek kapasiteli kondansator bosalmadan kayıt işlemlerini tamamla kolay gelsin
ALLAHA EMANET OLUNUZ Hoştur bana senden gelen,  Ya gonca gül yahut diken,  Ya kaftandır yahut kefen,  Kereminde hoş lütfunda hoş.