EEPROM 24c08 sąsajos su 89C51

M

mak_goel

Guest
Dear All,
Aš susiduria su problema, kad sąsaja su 24c08 89c51 Micro.Iš tikrųjų aš rašau surenkant kodą.gali bet kuri įstaiga siųsti Asamblėja koduoja pats.

Kidly padėti ..........

Linkėjimai
Mak

 
Kodas

;--------------- EE RAŠYTI ---------------------------Write_L_C: mov EEAddr, # 00h; WR adresas ..

MOV R0, # 3CH

MOV ByteCnt, # 04H; Siųsti 4 baitų ..EE_W_Loop: mov EEData, @ R0

LCALL EE_Write

INC R0

INC EEAddr

LCALL Delay_20msDJNZ ByteCnt, EE_W_Loop

RET;--------------- EE SKAITYTI ----------------------------Read_L_C: mov EEAddr, # 00h; RD adresas ..

MOV R0, # 3CH

MOV ByteCnt, # 04H; Gauk 4 baitų ..EE_R_Loop: LCALL EE_READ

MOV @ R0, EEData

INC R0

INC EEAddr

LCALL Delay_20msDJNZ ByteCnt, EE_R_Loop

RET;--------------- EEPROM MĖNESĮ UŽ 24c02, su A2 = A1 = A0 = 0 -------------------

, Vienas baitas ..

EE_WRITE:

LCALL EE_START; SIŲSTI START vėliava EEPROM ..

MOV A, # 0A0H; NURODAU WRITE EEPROM @ ADRESAS 0H ..

LCALL SH_OUT; SHIFT OUT PRIETAISAS ADRESAS ..

JC WR_ABORT; ABORT JEI NE IŠ ACK EEPROM ..

MOV, EEAddr; Gaukite EEPROM atminties adresas ..

LCALL SH_OUT; SHIFT OUT adresas atmintyje ..

JC WR_ABORT; ABORT JEI NE IŠ ACK EEPROM ..

MOV, EEData; GET DUOMENŲ rašyti ..

LCALL SH_OUT; SHIFT OUT DUOMENŲ ..

JC WR_ABORT

CLR C

WR_ABORT:

LCALL EE_STOP; SIŲSTI STOP sąlyga EEPROM ..

; PALAUKITE įrašymo LAIKAS 24c02 () 10ms ..

; EEPROM ATKREIPIA 10ms šalies viduje saugoti duomenis.
Jūs galite ..

; Įdėkite wait state, ar tęsti VYKDYMAS MICROCONTROLLER,

; Nepamiršti, kad EEPROM duomenų nėra saugomi 10ms!
..

RET; BACK TO MAIN PROGRAM ..;--------------- READ EEPROM DUOMENŲ - pirmiausia atlikti "Dummy RAŠYKITE" ---------------

, Vienas baitas ..

EE_READ:

MOV EEData, # 00h; clear old DUOMENŲ ..

LCALL EE_START; SIŲSTI START vėliava EEPROM ..

MOV A, # 0A0H; NURODAU RAŠYTI Į EEPROM @ ADRESAS 0H ..

LCALL SH_OUT; įvykdyti "Dummy RAŠYTI '..

JC RD_ABORT; ABORT JEI NE ACK ..

MOV, EEAddr; KROVININIAI EEPROM atminties, iš kurio READ ..

LCALL SH_OUT; WRITE EEPROM atminties ..

JC RD_ABORT; ABORT JEI NE ACK ..

; Dabar skaityti duomenis!
..

LCALL EE_START; SIŲSTI START VĖLIAVOS ..

MOV A, # 0A1H; NURODAU skaityti EEPROM ..

LCALL SH_OUT; SHIFT OUT EEPROM ADRESAS ..

JC RD_ABORT; ABORT JEI NE ACK ..

LCALL SH_IN; pokytis duomenis iš EEPROM ..

MOV EEData,; saugoti duomenis ..

LCALL NAK; SIŲSTI NAK (NE PATS) Į EEPROM ..

CLR C; bledzie VĖLIAVOS ..

RD_ABORT:

LCALL EE_STOP; Baigta ..

RET;--------------- EE_START BIT-Bangs START seka EEPROM (HI-iki žemo SDA pereinamosios SCL aukštas) ..

EE_START:

SETB SDAPin

SETB SCLPin; nustatyti abu BITS ..

NOP; DELAY ..

CLR SDAPin; START sąlyga - SDA HI mažai PERĖJIMAS ..

NOP

NOP; EEPROM NAUDOTIS Time Delay ..

CLR SCLPin

CLR C; bledzie VĖLIAVOS ..

RET; Baigta ..

;--------------- EE_STOP siunčia STOP seka EEPROM (nuo žemo prie aukšto SDA pereinamosios SCL aukštas) ..

EE_STOP:

CLR SDAPin

NOP

NOP

SETB SCLPin

NOP

NOP paveikslu Time Delay ..

SETB SDAPin; SIŲSTI stabdymo sąlyga ..

RET;--------------- SH_OUT perkelia duomenis iš JEI EEPROM ---------------------

SH_OUT:

PUSH B

MOV B, # 8; SAVE B IR Load bit COUNT ..

EE_OUT:

RLC; BIT SHIFT LEFT (RLC = Pasukti į kairę PER CARRY) ..

MOV SDAPin, C; gauti duomenis tiek iš CARRY ..

NOP

SETB SCLPin; Laikrodis, 1-BIT ..

NOP; clock High Time ..

CLR SCLPIN; laikrodis dabar LOW ..

DJNZ B EE_OUT; DO IT 8 kartus ..

SETB SDAPin; SPAUDAI SDA DĖL ACK ..

NOP

NOP

SETB SCLPin; ACK clock ..

NOP

MOV C, SDAPin; Gaukite ACK ..

CLR SCLPin; CLEAR CLOCK BIT ..

POP B; Restore kokiam B buvo ..

RET;--------------- SH_IN SHIFT DUOMENŲ IŠ EEPROM -----------------------

SH_IN:

SETB SDAPin; MAKE SDA INPUT ..

PUSH B

MOV B, # 8; SAVE B ir SET BIT COUNTER ..

EE_IN:

NOP

SETB SCLPin; Nustatyti laikrodį ..

NOP

NOP; EEPROM NAUDOTIS LAIKO ..

SETB SDAPin; SET = 1 PK naudojami kaip lauko ..

MOV C, SDAPin, skaityti 1-BIT ..

RLC; BIT SHIFT LEFT ..

CLR SCLPin; CLEAR CLOCK BIT ..

DJNZ B EE_IN; Get Next BIT jeigu jis trumpesnis nei 8 bitų READ ..POP B

RET;--------------- ACK siunčia EEPROM ACKNOWLDEGE ----------------------

Ack:

CLR SDAPin

NOP

NOP

SETB SCLPin; clock ACK ..

NOP

CLR SCLPin; CLOCK lygį žemu ..

RET;--------------- NAK siunčia NE PATS ----------------------------

NAK:

SETB SDAPin

NOP

NOP

SETB SCLPin; clock NAK ..

NOP

CLR SCLPin; CLOCK lygį žemu ..

RET;---------------- END -----------------
 
Ačiū p. IAN suteikti kodavimas.Bet vėl reikia jūsų pagalbos, kaip nurodyta toliau:

1) Parlamento scmematic U4 yra EEPROM.Tai parašyti coonection informacija apie tą patį.Pin aprašymas yra klaidingas maloniai ignoruoti.

2) Nors ir turi pateikti visą kodavimo, bet nepavyko uderstand nes esu naujas šioje srityje.Can U pl man visiškai examp.rašyti tą patį baitas rašymo formatas.

3) Pridedamas 24c08 PDF.Į 3 / 16 psl prietaisas pasirinkite kodas buvo.Kimdly paaiškinti patį.

4) Prašau paaiškinti ACK & Noack.

Aš tikrai labai difficut Darbo vietos ir stažuotės.Prašau man padėti.

Linkėjimai
Mak

 
Prašau padėti ...............................Linkėjimai
Mak

 
Duomenų lape paaiškina šių bitų ir vienetų detalių - ką dar galiu pridėti?

Turite kodą, kurį skaito / rašo 4 baitų ..pakeisti baitų skaičių 1 ir jis bus skaityti ir rašyti tik vieną baitą ..

Linkėjimai,
IanP

 
Labas,
Aš pridėti failus su SCH už 89c2051 ir 24cxx ir ASM failą, naudojamas vadovaujama masažas kalbomis,
gali jums padėti,
linkėjimai
Atsiprašome, bet jums reikia prisijungęs, kad galėtumėte peržiūrėti šį priedą

 
P. mak_goel jūs pirmojo tyrimo duomenų lape EEPROM attentionally ir suprasti, kad žingsnis po žingsnio, kaip jums suteikti visą kodą į surinkimo jums neturėtų klausimą furtherly.kode yra suteikti puslapyje nėra.4 duomenų lapas su pilna explaination skaityti ir jeigu dar klausimas tada prašyti dėl forumo.

linkėjimai

 
hi i am Dewan nuo Chennai ..gali kas nors man sąnaudų 24c04 ..Noriu nežinau jo kainos skubiai

 
Jūs neturite paminėti, kad Kokia valiuta norite, kad lusto kaina?
Pakistane ją Lt.80 tik.

linkėjimai

 
Ačiū everbody ir specialiai dėka J. IanP ir Atsiprašome už pavėluotą atsakymą.

Naudodami IanP's kodavimas, dabar jiems galėtų rašyti arba skaityti EEPROM 24c08.Bet vis tiek jiems spręsti problemas žemiau:

1) Jūs suteikiant 20ms vėlavimo po kiekvieno ciklo (skaityti, nei rašyti).Bet aš turiu rašyti 96 baitų EEPROM į konkrečias sąlygas, važiuodamas programe.
Saugomus duomenis (6 baitai), kuris bus rodomas LCD pasirinkdami klavišą.Tai vėl problema kaip aš, atsižvelgiant 6x20ms = 120ms skaityti 6 baitų o mano timer0 intrupt yra setted ne 10ms, kad cant būti pakeista.

2) Manau, kad jūsų kodavimo palaiko iki baitas rašyti būdas taip pat aišku, kad PL Mode / WC (Pin-7 EEPROM) turi būti prijungtas prie žemės arba į kairę plūduriuoja.Thanks & Regards
Mak

 
mak_goel rašė:1) Jūs suteikiant 20ms vėlavimo po kiekvieno ciklo (skaityti, nei rašyti).
Bet aš turiu rašyti 96 baitų EEPROM į konkrečias sąlygas, važiuodamas programe.

Saugomus duomenis (6 baitai), kuris bus rodomas LCD pasirinkdami klavišą.
Tai vėl problema kaip aš, atsižvelgiant 6x20ms = 120ms skaityti 6 baitų o mano timer0 intrupt yra setted ne 10ms, kad cant būti pakeista.

Mak
 
Ačiū Katesuda,
Pl vėl clearify žemiau:

1) Manau, kad jums sako, kad 1,5 Microsec.nedelsiant reikia po kiekvieno skaityti ir rašyti ciklą iš 20 ms & 5 ms vėlavimas vieta yra kiekvieno baito Apdorojimo laikas.Am I right?

2) aš bandžiau skaityti EEPROM.Kai jis nuskaito teisę bet othertime neteisinga.Aš negalėjau suprasti.Pl clearify.Ačiū

Mak

 

Welcome to EDABoard.com

Sponsor

Back
Top