C
choi_new
Guest
Dragi prijatelju,
Žao nam je, me opet.
Imam pismeni 8.051 kôd za pristup podacima AT24C512.
BTW, našao sam moj program može samo čitati iz FFH EPROM kad sam koristeći EMU odbora, ali sam već spalio bmp u EEPROM-u.
Dakle, mislim da moj program ima bug.
Ispod je moj broj.
može netko pomoć mene to saznati plan?
Puno hvala milijun!!Petar
;;==== KodSDA BIT P2.2
SCL BIT P2.3
; SDA BIT P2.3
; SCL BIT P2.2
ADD0 BIT P2.0
ADD1 BIT P2.1
FADDR EQU 0A0H
ADDR_HI1 EQU 30 sati reprodukcije
ADDR_LO1 EQU 31H
ADDR_HI2 EQU 32h
ADDR_LO2 EQU 33H
RAM_DATA EQU 34H
ORG 00h
MOV ADDR_HI1, # 00h
MOV ADDR_LO1, # 00h
MOV ADDR_HI2, # 00h
MOV ADDR_LO2, # 00h
MOV RAM_DATA, # 00h
I2C:
INC DPTR
MOV ADDR_HI2, DPH
MOV ADDR_LO2, DPL
LCALL READ_RANDOM
NOP
MOV, RAM_DATA
MOV, RAM_DATA
MOV, RAM_DATA
MOV, RAM_DATA
SJMP I2C
READ_CURRENT:
; AT24Cxx Trenutni Adresa Pročitajte funkciju.
; Called programirati s adresom u A. povrat podataka u A.
; Vraća CY skup ukazuje da autobus nije dostupna
, Ili da je uputio uređaj nije priznati.
LCALL START
JC X_45; prekid programa ako se autobus nije dostupna
, RL; programirati adresu bita 3:1
; ORL, # FADDR; dodaj fiksne adrese
; SETB ACC.0; odrediti operacija čitanja
MOV A, # 0A0H
LCALL Shout; poslati adresa uređaja
JC X_44; prekid programa ako se ne priznaju
LCALL SHIN; primiti podatke bajt
MOV RAM_DATA,
LCALL nak; ne priznajem bajt
CLR C; vedro greška flag
X_44:
LCALL STOP
RET
X_45:
RETREAD_RANDOM:
; AT24Cxx Random Pročitajte funkciju.
; Called programirati s adresom u, bajt adrese u
; Registrirati par ADDR_HI: ADDR_LO.Vraća podatke u A.
; Vraća CY skup ukazuje da autobus nije dostupna
, Ili da je uputio uređaj nije priznati.
PUSH B
MOV B, A; spremiti kopiju programabilni adresa
; Pošalji lažan napisati naredbu za postavljanje interne adresu.
LCALL START
JC X_47; prekid programa ako se autobus nije dostupna
, RL; programirati adresu bita 3:1
; ORL, # FADDR; dodaj fiksne adrese
; CLR ACC.0; odrediti write operation
MOV A, # 0A0H
LCALL Shout; poslati adresa uređaja
JC X_46; prekid programa ako se ne priznaju
MOV, ADDR_HI1;; poslati visoku bajt adrese
LCALL Shout;
JC X_46; prekid programa ako se ne priznaju
MOV, ADDR_LO1; poslati niske bajt adrese
LCALL Shout;
JC X_46; prekid programa ako se ne priznaju
MOV, ADDR_HI2;; poslati visoku bajt adrese
LCALL Shout;
JC X_46; prekid programa ako se ne priznaju
MOV, ADDR_LO2; poslati niske bajt adrese
LCALL Shout;
JC X_46; prekid programa ako se ne priznaju
; Call Trenutni Adresa Pročitajte funkciju.
MOV A, B; dobiti programibilno adresa
LCALL READ_CURRENT
LJMP X_47; izlaz
X_46:
LCALL STOPX_47: POP B
RETSTART:
; Pošalji START, definiran kao visoko-to-nisko SDA sa SCL visoka.
; Povratak s SCL, SDA nisko.
; Vraća CY skup ako autobus nije dostupan.
SETB SDA
SETB SCL
; Provjerite autobus na raspolaganju.
JNB SDA, X_40; skok, ako ne i visok
JNB SCL, X_40; skok, ako ne i visok
NOP; prisiliti postava kašnjenja i odgode ciklus
CLR SDA
NOP; prisiliti držite kašnjenje
NOP;
NOP;
NOP;
NOP;
CLR SCL
CLR C; vedro greška flag
SJMP X_41
X_40:
SETB C; set pogreška flag
X_41:
RET
STOP:
; Pošalji STOP, definiran kao nisko-to-visoka SDA sa SCL visoka.
; SCL očekuje nisko na ulaz.Povratak sa SCL, SDA visoka.
CLR SDA
NOP; prisiliti SCL nisko i podataka postava
NOP
SETB SCL
NOP; prisiliti postava kašnjenje
NOP;
NOP;
NOP;
NOP;
SETB SDA
RETShout:
; Shift out bajtova za AT24Cxx, najznačajniji bit prvi.
, SCL, SDA očekuje nisko na ulaz.Povratak sa SCL niska.
; Pozvana sa podacima za slanje u A.
; Vraća CY postavljen za označavanje neuspjeh rob priznati.
; Unistava A.
PUSH B
MOV B, # 8; malo counter
X_42:
RLC; pomaknuti malo u CY
MOV SDA, C; bitni izlaz
NOP; prisiliti SCL nisko i podataka postava
SETB SCL; podizanje takta
NOP; prisiliti SCL visok
NOP;
NOP;
NOP;
CLR SCL; kap sat
DJNZ B, X_42; sljedeći zalogaj
SETB SDA, SDA za puštanje ACK
NOP; prisiliti SCL nisko i taa
NOP;
SETB SCL; podići ACK sat
NOP; prisiliti SCL visok
NOP;
NOP;
NOP;
MOV C, SDA; dobiti ACK bit
CLR SCL; kap ACK sat
; LCALL ACK
POP B
RET
SHIN:
; Pomak u bajt iz AT24Cxx, najznačajniji bit prvi.
; SCL očekuje nisko na ulaz.Povratak sa SCL niska.
; Povrat primljenih podataka bajt u A.
; SETB SDA, SDA čine ulazni
; PUSH B
; MOV B, # 8; malo računati
; X_43:
; NOP; prisiliti SCL nisko i podataka postava
; NOP;
; NOP;
; SETB SCL, podizanje takta
; NOP; prisiliti SCL visok
; NOP;
; MOV C, SDA, bitni ulaz
, RLC, premjestiti na malo bajt
; CLR SCL, kap sat
; DJNZ B, X_43; sljedeći zalogaj
; POP B
; RET
SETB SDA;; čine SDA ulaz,使SDA为高,准备读
PUSH B;
MOV B, # 08D ;;;;; malo računati,设置位计数器
L2: NOP;; prisiliti SCL nisko i podataka postava,保持SCL为低且使数据稳定
NOP
SETB SCL;, podići sat,升高时钟
NOP;; provoditi SCL visoka,保持SCL为高
NOP
MOV C, SDA,, ulazni bit,输入位
RLC;; potez bit u byte,将位移入
CLR SCL;, kap sat,降低时钟
DJNZ B, L2;, sljedeći zalogaj,传送下一位
POP B
RET
Nak:
; Clock se negativni priznati zalogaj (visokog).
; SCL očekuje nisko na ulaz.Povratak sa SCL niski, visoki SDA.
SETB SDA; nak malo
NOP; prisiliti SCL nisko i podataka postava
NOP;
SETB SCL; podizanje takta
NOP; prisiliti SCL visok
NOP;
NOP;
NOP;
CLR SCL; kap sat
RET
ACK:
; Clock se priznati zalogaj (niska).
; SCL očekuje nisko na ulaz.Povratak sa SCL, SDA nisko.
CLR SDA; ACK bit
NOP; prisiliti SCL nisko i podataka postava
NOP;
setb SCL; podizanje takta
NOP; prisiliti SCL visok
NOP;
NOP;Added after 1 minute:samo podsjetiti, nisam aurthor ovog Kodeksa.
Ja samo promijeniti kod za moj zahtjev nakon što sam ga pročitao.
Dakle, ja sam ne copy nositelj prava
Žao nam je, me opet.
Imam pismeni 8.051 kôd za pristup podacima AT24C512.
BTW, našao sam moj program može samo čitati iz FFH EPROM kad sam koristeći EMU odbora, ali sam već spalio bmp u EEPROM-u.
Dakle, mislim da moj program ima bug.
Ispod je moj broj.
može netko pomoć mene to saznati plan?
Puno hvala milijun!!Petar
;;==== KodSDA BIT P2.2
SCL BIT P2.3
; SDA BIT P2.3
; SCL BIT P2.2
ADD0 BIT P2.0
ADD1 BIT P2.1
FADDR EQU 0A0H
ADDR_HI1 EQU 30 sati reprodukcije
ADDR_LO1 EQU 31H
ADDR_HI2 EQU 32h
ADDR_LO2 EQU 33H
RAM_DATA EQU 34H
ORG 00h
MOV ADDR_HI1, # 00h
MOV ADDR_LO1, # 00h
MOV ADDR_HI2, # 00h
MOV ADDR_LO2, # 00h
MOV RAM_DATA, # 00h
I2C:
INC DPTR
MOV ADDR_HI2, DPH
MOV ADDR_LO2, DPL
LCALL READ_RANDOM
NOP
MOV, RAM_DATA
MOV, RAM_DATA
MOV, RAM_DATA
MOV, RAM_DATA
SJMP I2C
READ_CURRENT:
; AT24Cxx Trenutni Adresa Pročitajte funkciju.
; Called programirati s adresom u A. povrat podataka u A.
; Vraća CY skup ukazuje da autobus nije dostupna
, Ili da je uputio uređaj nije priznati.
LCALL START
JC X_45; prekid programa ako se autobus nije dostupna
, RL; programirati adresu bita 3:1
; ORL, # FADDR; dodaj fiksne adrese
; SETB ACC.0; odrediti operacija čitanja
MOV A, # 0A0H
LCALL Shout; poslati adresa uređaja
JC X_44; prekid programa ako se ne priznaju
LCALL SHIN; primiti podatke bajt
MOV RAM_DATA,
LCALL nak; ne priznajem bajt
CLR C; vedro greška flag
X_44:
LCALL STOP
RET
X_45:
RETREAD_RANDOM:
; AT24Cxx Random Pročitajte funkciju.
; Called programirati s adresom u, bajt adrese u
; Registrirati par ADDR_HI: ADDR_LO.Vraća podatke u A.
; Vraća CY skup ukazuje da autobus nije dostupna
, Ili da je uputio uređaj nije priznati.
PUSH B
MOV B, A; spremiti kopiju programabilni adresa
; Pošalji lažan napisati naredbu za postavljanje interne adresu.
LCALL START
JC X_47; prekid programa ako se autobus nije dostupna
, RL; programirati adresu bita 3:1
; ORL, # FADDR; dodaj fiksne adrese
; CLR ACC.0; odrediti write operation
MOV A, # 0A0H
LCALL Shout; poslati adresa uređaja
JC X_46; prekid programa ako se ne priznaju
MOV, ADDR_HI1;; poslati visoku bajt adrese
LCALL Shout;
JC X_46; prekid programa ako se ne priznaju
MOV, ADDR_LO1; poslati niske bajt adrese
LCALL Shout;
JC X_46; prekid programa ako se ne priznaju
MOV, ADDR_HI2;; poslati visoku bajt adrese
LCALL Shout;
JC X_46; prekid programa ako se ne priznaju
MOV, ADDR_LO2; poslati niske bajt adrese
LCALL Shout;
JC X_46; prekid programa ako se ne priznaju
; Call Trenutni Adresa Pročitajte funkciju.
MOV A, B; dobiti programibilno adresa
LCALL READ_CURRENT
LJMP X_47; izlaz
X_46:
LCALL STOPX_47: POP B
RETSTART:
; Pošalji START, definiran kao visoko-to-nisko SDA sa SCL visoka.
; Povratak s SCL, SDA nisko.
; Vraća CY skup ako autobus nije dostupan.
SETB SDA
SETB SCL
; Provjerite autobus na raspolaganju.
JNB SDA, X_40; skok, ako ne i visok
JNB SCL, X_40; skok, ako ne i visok
NOP; prisiliti postava kašnjenja i odgode ciklus
CLR SDA
NOP; prisiliti držite kašnjenje
NOP;
NOP;
NOP;
NOP;
CLR SCL
CLR C; vedro greška flag
SJMP X_41
X_40:
SETB C; set pogreška flag
X_41:
RET
STOP:
; Pošalji STOP, definiran kao nisko-to-visoka SDA sa SCL visoka.
; SCL očekuje nisko na ulaz.Povratak sa SCL, SDA visoka.
CLR SDA
NOP; prisiliti SCL nisko i podataka postava
NOP
SETB SCL
NOP; prisiliti postava kašnjenje
NOP;
NOP;
NOP;
NOP;
SETB SDA
RETShout:
; Shift out bajtova za AT24Cxx, najznačajniji bit prvi.
, SCL, SDA očekuje nisko na ulaz.Povratak sa SCL niska.
; Pozvana sa podacima za slanje u A.
; Vraća CY postavljen za označavanje neuspjeh rob priznati.
; Unistava A.
PUSH B
MOV B, # 8; malo counter
X_42:
RLC; pomaknuti malo u CY
MOV SDA, C; bitni izlaz
NOP; prisiliti SCL nisko i podataka postava
SETB SCL; podizanje takta
NOP; prisiliti SCL visok
NOP;
NOP;
NOP;
CLR SCL; kap sat
DJNZ B, X_42; sljedeći zalogaj
SETB SDA, SDA za puštanje ACK
NOP; prisiliti SCL nisko i taa
NOP;
SETB SCL; podići ACK sat
NOP; prisiliti SCL visok
NOP;
NOP;
NOP;
MOV C, SDA; dobiti ACK bit
CLR SCL; kap ACK sat
; LCALL ACK
POP B
RET
SHIN:
; Pomak u bajt iz AT24Cxx, najznačajniji bit prvi.
; SCL očekuje nisko na ulaz.Povratak sa SCL niska.
; Povrat primljenih podataka bajt u A.
; SETB SDA, SDA čine ulazni
; PUSH B
; MOV B, # 8; malo računati
; X_43:
; NOP; prisiliti SCL nisko i podataka postava
; NOP;
; NOP;
; SETB SCL, podizanje takta
; NOP; prisiliti SCL visok
; NOP;
; MOV C, SDA, bitni ulaz
, RLC, premjestiti na malo bajt
; CLR SCL, kap sat
; DJNZ B, X_43; sljedeći zalogaj
; POP B
; RET
SETB SDA;; čine SDA ulaz,使SDA为高,准备读
PUSH B;
MOV B, # 08D ;;;;; malo računati,设置位计数器
L2: NOP;; prisiliti SCL nisko i podataka postava,保持SCL为低且使数据稳定
NOP
SETB SCL;, podići sat,升高时钟
NOP;; provoditi SCL visoka,保持SCL为高
NOP
MOV C, SDA,, ulazni bit,输入位
RLC;; potez bit u byte,将位移入
CLR SCL;, kap sat,降低时钟
DJNZ B, L2;, sljedeći zalogaj,传送下一位
POP B
RET
Nak:
; Clock se negativni priznati zalogaj (visokog).
; SCL očekuje nisko na ulaz.Povratak sa SCL niski, visoki SDA.
SETB SDA; nak malo
NOP; prisiliti SCL nisko i podataka postava
NOP;
SETB SCL; podizanje takta
NOP; prisiliti SCL visok
NOP;
NOP;
NOP;
CLR SCL; kap sat
RET
ACK:
; Clock se priznati zalogaj (niska).
; SCL očekuje nisko na ulaz.Povratak sa SCL, SDA nisko.
CLR SDA; ACK bit
NOP; prisiliti SCL nisko i podataka postava
NOP;
setb SCL; podizanje takta
NOP; prisiliti SCL visok
NOP;
NOP;Added after 1 minute:samo podsjetiti, nisam aurthor ovog Kodeksa.
Ja samo promijeniti kod za moj zahtjev nakon što sam ga pročitao.
Dakle, ja sam ne copy nositelj prava