16f84 EPROMA VERI YAZMADA YARDIM EDER MISINIZ

Başlatan sertkan, 06 Temmuz 2006, 23:34:42

sertkan

arkadaslar pic 16f84 eproma verılerı nasıl yazarım bana bı yardımcı olur musunuz?

stlg

Sevgili sertkan

Arkadasım sorun tam olarak anlaşılamamakla beraber eger eeproma veri yazmadan bahsediyorsan 16f84 un datasheetinde eeprom bolumunde bu konu anlatılmış ve basit orneklerde var oradan bakabilirsin
ALLAHA EMANET OLUNUZ Hoştur bana senden gelen,  Ya gonca gül yahut diken,  Ya kaftandır yahut kefen,  Kereminde hoş lütfunda hoş.

CoşkuN

Sitemizi araştırırsan biraz istediğini bulacaksın:

EEProm Yazma ve Okuma

Programı

;****************************************************************************;
; PROGRAM ADI : EEProm Yazma ve Okuma

Programı
; DOSYA ADI : eeprom.asm
; YAZAN :
; TARİH : 01 Ocak 2004
; TARİH : 04:33
; İŞLEMCİ : PIC

16F84
; SAAT HIZI (XTAL) : 3.2768 MHz
;****************************************************************************;
; NOT : Buradaki şablon benim genelde kullandığım formatı

gösterir,
; ve ağırlıkla programlarımı TMR0 kesmesi kullanarak yazarim.
; Bu dosya yeni başlayacak arkadaşlara fikir vermesi amacıyla

hazırlanmıştır.
;****************************************************************************;

LIST P=

16F84A, R=HEX, C=80
ERRORLEVEL -302
#INCLUDE "f84.inc"
LIST

__CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF &

_XT_OSC

;****************************************************************************;
; RAM

tanımlamaları
;****************************************************************************;
CBLOCK 0x0C
e_data1 ;
e_data2 ;



ENDC

;*****************************************************************************;
; Ana Program

Başlangıcı
;*****************************************************************************;
org 0x00
clrw ;
movwf porta ;
movwf portb ;


goto BASLA ; Başlangıç Etiketine git.

;*****************************************************************************;
BASLA call TANIM ; Port

tanimlamalari.

;*****************************************************************************;
; 1.EPROM datamız = 0x33 Adresimiz = 0x00
; Eprom Adresi 0x00 ile 0x3F

dahil arası olabilir.
;*****************************************************************************;
movlw 0x33 ; W'ye 0x33 değerini al.
movwf eedata ; eedata1

yazmacına kopyala. (1. EEPROM datası)
movlw 0x00 ; W'ye 0x00 değerini al.
movwf eeadr ; eeadr yazmacına kopyala. (1. EEPROM adresi)
call E_YAZ ;

Eproma yazdir.

;*****************************************************************************;
; 2.EPROM datamız = 0xDC Adresimiz = 0x2F
; Eprom Adresi 0x00 ile

0x3F dahil arası olabilir.
;*****************************************************************************;
movlw 0xDC ; W'ye 0xDC değerini al.
movwf eedata ; eedata

yazmacına kopyala. (2. EEPROM datası)
movlw 0x2F ; W'ye 0x2F değerini al.
movwf eeadr ; eeadr yazmacına kopyala. (2. EEPROM adresi)
call E_YAZ ;

Eproma yazdir.

;*****************************************************************************;
; Şimdide 0x00 Eeprom adresindeki datayı
; e_data1 yazmacına

kopyalayalım.
; Eprom Adresi 0x00 ile 0x3F dahil arası olabilir.
;*****************************************************************************;
movlw 0x00 ; W'ye 0x00

değerini al.
movwf eeadr ; eeadr yazmacına kopyala. (1. EEPROM adresi)
call E_OKU ; Epromu

oku.
movwf e_data1

;*****************************************************************************;
; Şimdide 0x2F Eeprom adresindeki datayı
; e_data2 yazmacına

kopyalayalım.
; Eprom Adresi 0x00 ile 0x3F dahil arası olabilir.
;*****************************************************************************;
movlw 0x2F ; W'ye 0x00

değerini al.
movwf eeadr ; eeadr yazmacına kopyala. (1. EEPROM adresi)
call E_OKU ; Epromu oku.
movwf e_data2

SON goto SON ;



;*****************************************************************************;
; Micro Kontrolor icin tanimlamalar
; Port tanımlarken, çıkış olacak bitleri 0, giriş olacaklari 1

yap.
;*****************************************************************************;
TANIM bsf _rp0 ; BANK 1'e geç.
movlw b'00000000' ; RA0-4

Cikis
movwf trisa ; TRISA'ya kopyala
movlw b'11110001' ; RB1-3 Giris, RB0,4-7 Cikis
movwf trisb ; TRISB'ya kopyala
bcf _rp0 ; BANK

0'e geç.
return ;

;*****************************************************************************;
; Data EEPROM'una Degisen veri

yazilir.
;*****************************************************************************;
E_YAZ bsf _rp0 ;
bsf _wren ;
movlw 0x55 ;
movwf eecon2

;
movlw 0xAA ;
movwf eecon2 ;
bsf _wr ;
bcf _wren ;
btfsc _wr ;
goto $-1 ;
bcf _eeif ;
bcf _rp0

;
return ;

;*****************************************************************************;
; Data EEPROM'undan veri

okunur.
;*****************************************************************************;
E_OKU bsf _rp0 ;
bsf _rd ;
bcf _rp0 ;
movf eedata,w ;


return ;

;*****************************************************************************;
; Data EEPROM iceriklerinin set edilmesi
; Bu bölümde Programınızda

EEPROM içeriğine bazı değerler vermek isterseniz
; kullanabilirsiniz..
; En son satirda, Programın en son yazildiği tarihi saklamak için kullandım.
; de 1, 1, 20, 4, 0,

0, 4, 33 ;
; Gün Ay Yıl Saat Dakika
;*****************************************************************************;
org h'2100'
de 0, 0,

0, 0, 0, 0, 0, 0 ;
de 0, 0, 0, 0, 0, 0, 0, 0 ;
de 0, 0, 0, 0, 0, 0, 0, 0 ;
de 0, 0, 0, 0, 0, 0, 0, 0 ;
de 0, 0, 0, 0, 0,

0, 0, 0 ;
de 0, 0, 0, 0, 0, 0, 0, 0 ;
de 0, 0, 0, 0, 0, 0, 0, 0 ;
de 1, 1, 20, 4, 0, 0, 4, 33 ;



;*****************************************************************************;
end

ibrsel

Eger 16F84 ün dahili eepromuna bilgi yazmak istiyorsan Write komutunu kullanarak veri kaydedebilirsin

WRİTE adres,deger

Örnek :
   WRİTE 10,22

10 nolu eprom adresine 22 değerini yaz..

READ 10,a
  10 nolu eprom adresinden okudugun değeri a değişkenine aktar
      gibi....