M
mak_goel
Guest
Pozdrav Everbody.
I m vlasništvo Skupštine kodiranje kao ispod 24C08 da radi sa 8051.Ali opet, im se suočava s problemom izvoditi 24C1024 sa istim kodiranja & hardver.Pl javite mi vaša valueble prijedloge za rješavanje problema.;--------------- EERPROM MODUL START ------------------------------- ---------------------------------------
Write_L_C:
MOV EEAddr, # 00h; WR adresu ..
MOV R0, # 3Ch
; MOV ByteCnt, # 04h; Pošaljite 4 bytes ..
EE_W_Loop:
MOV EEData, @ R0
LCALL EE_Write
INC R0
INC EEAddr
LCALL Delay_20ms
; DJNZ ByteCnt, EE_W_Loop
Močiti
EE ;--------------- PROČITATI ----------------------------
Read_L_C:
MOV EEAddr, # 00h; RD adresu ..
MOV R0, # 3Ch
; MOV ByteCnt, # 04h; Get 4 bytes ..
EE_R_Loop:
LCALL EE_READ
@ MOV R0, EEData
INC R0
INC EEAddr
LCALL Delay_20ms
; DJNZ ByteCnt, EE_R_Loop
Močiti
;--------------- Rutine ZA EEPROM 24C02, sa A1 = A2 = A0 = 0 -------------------
Jedan bajt ..
EE_WRITE:
LCALL EE_START; Pošalji ZASTAVE NA POČETAK EEPROM ..
MOV A, # 0A0H; navesti WRITE EEPROM @ 0H ADRESA ..
LCALL SH_OUT; SHIFT OUT Uređaj ADRESA ..
JC WR_ABORT; pobaciti ako ne ack OD EEPROM ..
MOV A, EEAddr; DOBITI EEPROM memorijske adrese ..
LCALL SH_OUT; SHIFT OUT Memory ADRESA ..
JC WR_ABORT; pobaciti ako ne ack OD EEPROM ..
MOV A, EEData; dobiti podatke biti napisan ..
LCALL SH_OUT; SHIFT OUT PODATAKA ..
JC WR_ABORT
CLR C
WR_ABORT:
LCALL EE_STOP; POŠALJI STOP STANJE NA EEPROM ..
; Pričekate WRITE TIME OF THE 24C02 () 10ms ..
; THE EEPROM I TO 10ms interno Store podataka.Možete ..
; Stavite mikro U DRŽAVNOJ Čekaj, ILI nastaviti sa izvršenju
, Imajući na umu da EEPROM podaci nisu pohranjeni u 10ms!..
Močiti; GO BACK TO GLAVNI PROGRAM ..
;--------------- Pročitali EEPROM PODACI - prvo izvršite 'Dummy WRITE' ---------------
Jedan bajt ..
EE_READ:
MOV EEData, # 00H; vedro STARO PODACI ..
LCALL EE_START; Pošalji ZASTAVE NA POČETAK EEPROM ..
MOV A, # 0A0H; navesti pisati EEPROM @ 0H ADRESA ..
LCALL SH_OUT; izvesti 'Dummy WRITE' ..
JC RD_ABORT; pobaciti ako ne ack ..
MOV A, EEAddr; Load EEPROM memoriji iz kojeg možeš pročitati ..
LCALL SH_OUT; WRITE EEPROM memoriji ..
JC RD_ABORT; pobaciti ako ne ack ..
; ODMAH PROČITATI PODATAKA!..
LCALL EE_START; Pošalji START ZASTAVE ..
MOV A, # 0A1H; navesti iščitati iz EEPROM-a ..
LCALL SH_OUT; SHIFT OUT EEPROM ADRESA ..
JC RD_ABORT; pobaciti ako ne ack ..
LCALL SH_IN; promjenu u podacima iz EEPROM-a ..
MOV EEData, A; pohraniti PODACI ..
LCALL NAK; Pošalji NAK (NO PRIHVAĆATE) u EEPROM-u ..
CLR C; vedro ERROR ZASTAVE ..
RD_ABORT:
LCALL EE_STOP sve učinio ..
Močiti
;--------------- EE_START BIT-BANGS početni slijed NA EEPROM (HI-to-NISKE SDA PRIJELAZ SA VISOKA SCL) ..
EE_START:
SETB SDAPin
SETB SCLPin; SET OBOJE BITS ..
NOP; kašnjenje ..
CLR SDAPin; START USLOV - HI SDA na niske TRANZICIJE ..
NOP
NOP; EEPROM PRISTUP kašnjenje ..
CLR SCLPin
CLR C; vedro ERROR ZASTAVE ..
Močiti sve učinio ..
;--------------- EE_STOP šalje STOP slijed NA EEPROM (nizak-to-VISOKA SDA PRIJELAZ SA VISOKA SCL) ..
EE_STOP:
CLR SDAPin
NOP
NOP
SETB SCLPin
NOP
NOP; Setup kašnjenje ..
SETB SDAPin; Pošalji STOP USLOV ..
Močiti
;--------------- SH_OUT smjenama PODACI do EEPROM ---------------------
SH_OUT:
Push B
MOV B, # 8,
spasi B i opterećenja BIT TAČKA ..
EE_OUT:
RLC A; SHIFT BIT lijevo (RLC = Zakreni ulijevo KROZ nositi) ..
MOV SDAPin, C; GET DATA BIT OD nositi ..
NOP
SETB SCLPin; sata u 1-bitni ..
NOP; SAT krajnje vrijeme ..
CLR SCLPIN; sat ODMAH NISKE ..
DJNZ B, EE_OUT; to učiniti 8 puta ..
SETB SDAPin; RELEASE SDA ZA ack ..
NOP
NOP
SETB SCLPin; ack SAT ..
NOP
MOV C, SDAPin; dobiti ack ..
CLR SCLPin; brisanje SAT BIT ..
POP B; Restore Whatever B BILA ..
Močiti
;--------------- SH_IN SHIFT DATA iz EEPROM-a -----------------------
SH_IN:
SETB SDAPin; NAPRAVITE SDA AN ULAZ ..
Push B
MOV B, # 8,
spasi B I BIT SET Counter ..
EE_IN:
NOP
SETB SCLPin; SET SAT ..
NOP
NOP; EEPROM vrijeme pristupa ..
SETB SDAPin; SET = 1 SO USED AS ULAZ ..
MOV C, SDAPin; PROČITATI 1-bitni ..
RLC A; SHIFT BIT LIJEVO ..
CLR SCLPin; vedro SAT BIT ..
DJNZ B, EE_IN; DOBITI SLJEDEĆA BIT AKO manje od 8 BITS PROČITATI ..
POP B
Močiti
;--------------- Ack šalje EEPROM ACKNOWLDEGE ----------------------
Ack:
CLR SDAPin
NOP
NOP
SETB SCLPin; SAT THE ack ..
NOP
CLR SCLPin; Dozovi SAT NISKE ..
Močiti
;--------------- Šalje NAK NE PRIHVAĆATE ----------------------------
NAK:
SETB SDAPin
NOP
NOP
SETB SCLPin; SAT THE NAK ..
NOP
CLR SCLPin; Dozovi SAT NISKE ..
Močiti
I m vlasništvo Skupštine kodiranje kao ispod 24C08 da radi sa 8051.Ali opet, im se suočava s problemom izvoditi 24C1024 sa istim kodiranja & hardver.Pl javite mi vaša valueble prijedloge za rješavanje problema.;--------------- EERPROM MODUL START ------------------------------- ---------------------------------------
Write_L_C:
MOV EEAddr, # 00h; WR adresu ..
MOV R0, # 3Ch
; MOV ByteCnt, # 04h; Pošaljite 4 bytes ..
EE_W_Loop:
MOV EEData, @ R0
LCALL EE_Write
INC R0
INC EEAddr
LCALL Delay_20ms
; DJNZ ByteCnt, EE_W_Loop
Močiti
EE ;--------------- PROČITATI ----------------------------
Read_L_C:
MOV EEAddr, # 00h; RD adresu ..
MOV R0, # 3Ch
; MOV ByteCnt, # 04h; Get 4 bytes ..
EE_R_Loop:
LCALL EE_READ
@ MOV R0, EEData
INC R0
INC EEAddr
LCALL Delay_20ms
; DJNZ ByteCnt, EE_R_Loop
Močiti
;--------------- Rutine ZA EEPROM 24C02, sa A1 = A2 = A0 = 0 -------------------
Jedan bajt ..
EE_WRITE:
LCALL EE_START; Pošalji ZASTAVE NA POČETAK EEPROM ..
MOV A, # 0A0H; navesti WRITE EEPROM @ 0H ADRESA ..
LCALL SH_OUT; SHIFT OUT Uređaj ADRESA ..
JC WR_ABORT; pobaciti ako ne ack OD EEPROM ..
MOV A, EEAddr; DOBITI EEPROM memorijske adrese ..
LCALL SH_OUT; SHIFT OUT Memory ADRESA ..
JC WR_ABORT; pobaciti ako ne ack OD EEPROM ..
MOV A, EEData; dobiti podatke biti napisan ..
LCALL SH_OUT; SHIFT OUT PODATAKA ..
JC WR_ABORT
CLR C
WR_ABORT:
LCALL EE_STOP; POŠALJI STOP STANJE NA EEPROM ..
; Pričekate WRITE TIME OF THE 24C02 () 10ms ..
; THE EEPROM I TO 10ms interno Store podataka.Možete ..
; Stavite mikro U DRŽAVNOJ Čekaj, ILI nastaviti sa izvršenju
, Imajući na umu da EEPROM podaci nisu pohranjeni u 10ms!..
Močiti; GO BACK TO GLAVNI PROGRAM ..
;--------------- Pročitali EEPROM PODACI - prvo izvršite 'Dummy WRITE' ---------------
Jedan bajt ..
EE_READ:
MOV EEData, # 00H; vedro STARO PODACI ..
LCALL EE_START; Pošalji ZASTAVE NA POČETAK EEPROM ..
MOV A, # 0A0H; navesti pisati EEPROM @ 0H ADRESA ..
LCALL SH_OUT; izvesti 'Dummy WRITE' ..
JC RD_ABORT; pobaciti ako ne ack ..
MOV A, EEAddr; Load EEPROM memoriji iz kojeg možeš pročitati ..
LCALL SH_OUT; WRITE EEPROM memoriji ..
JC RD_ABORT; pobaciti ako ne ack ..
; ODMAH PROČITATI PODATAKA!..
LCALL EE_START; Pošalji START ZASTAVE ..
MOV A, # 0A1H; navesti iščitati iz EEPROM-a ..
LCALL SH_OUT; SHIFT OUT EEPROM ADRESA ..
JC RD_ABORT; pobaciti ako ne ack ..
LCALL SH_IN; promjenu u podacima iz EEPROM-a ..
MOV EEData, A; pohraniti PODACI ..
LCALL NAK; Pošalji NAK (NO PRIHVAĆATE) u EEPROM-u ..
CLR C; vedro ERROR ZASTAVE ..
RD_ABORT:
LCALL EE_STOP sve učinio ..
Močiti
;--------------- EE_START BIT-BANGS početni slijed NA EEPROM (HI-to-NISKE SDA PRIJELAZ SA VISOKA SCL) ..
EE_START:
SETB SDAPin
SETB SCLPin; SET OBOJE BITS ..
NOP; kašnjenje ..
CLR SDAPin; START USLOV - HI SDA na niske TRANZICIJE ..
NOP
NOP; EEPROM PRISTUP kašnjenje ..
CLR SCLPin
CLR C; vedro ERROR ZASTAVE ..
Močiti sve učinio ..
;--------------- EE_STOP šalje STOP slijed NA EEPROM (nizak-to-VISOKA SDA PRIJELAZ SA VISOKA SCL) ..
EE_STOP:
CLR SDAPin
NOP
NOP
SETB SCLPin
NOP
NOP; Setup kašnjenje ..
SETB SDAPin; Pošalji STOP USLOV ..
Močiti
;--------------- SH_OUT smjenama PODACI do EEPROM ---------------------
SH_OUT:
Push B
MOV B, # 8,
spasi B i opterećenja BIT TAČKA ..
EE_OUT:
RLC A; SHIFT BIT lijevo (RLC = Zakreni ulijevo KROZ nositi) ..
MOV SDAPin, C; GET DATA BIT OD nositi ..
NOP
SETB SCLPin; sata u 1-bitni ..
NOP; SAT krajnje vrijeme ..
CLR SCLPIN; sat ODMAH NISKE ..
DJNZ B, EE_OUT; to učiniti 8 puta ..
SETB SDAPin; RELEASE SDA ZA ack ..
NOP
NOP
SETB SCLPin; ack SAT ..
NOP
MOV C, SDAPin; dobiti ack ..
CLR SCLPin; brisanje SAT BIT ..
POP B; Restore Whatever B BILA ..
Močiti
;--------------- SH_IN SHIFT DATA iz EEPROM-a -----------------------
SH_IN:
SETB SDAPin; NAPRAVITE SDA AN ULAZ ..
Push B
MOV B, # 8,
spasi B I BIT SET Counter ..
EE_IN:
NOP
SETB SCLPin; SET SAT ..
NOP
NOP; EEPROM vrijeme pristupa ..
SETB SDAPin; SET = 1 SO USED AS ULAZ ..
MOV C, SDAPin; PROČITATI 1-bitni ..
RLC A; SHIFT BIT LIJEVO ..
CLR SCLPin; vedro SAT BIT ..
DJNZ B, EE_IN; DOBITI SLJEDEĆA BIT AKO manje od 8 BITS PROČITATI ..
POP B
Močiti
;--------------- Ack šalje EEPROM ACKNOWLDEGE ----------------------
Ack:
CLR SDAPin
NOP
NOP
SETB SCLPin; SAT THE ack ..
NOP
CLR SCLPin; Dozovi SAT NISKE ..
Močiti
;--------------- Šalje NAK NE PRIHVAĆATE ----------------------------
NAK:
SETB SDAPin
NOP
NOP
SETB SCLPin; SAT THE NAK ..
NOP
CLR SCLPin; Dozovi SAT NISKE ..
Močiti