S
shankardy
Guest
γεια
Έχω προσπαθήσει να διεπαφής 24c512 (eeprom σειριακό) με 89s52 χρησιμοποιώντας i2c υπορουτίνες, αλλά δεν έχουν ακόμη επιτυχία.Είμαι απλώς προσπαθεί να στείλει επιστολή S σε αυτό και στη συνέχεια να read.but η οθόνη δείχνει κάποια άλλη χαρακτήρα.
εδώ είναι ο κώδικαςrg 00h
sda equ P1.1
SCL P1.0 EQU
γράψτε EQU 10100000b? byte ελέγχου για τη γραφή
διαβάστε EQU 10100001b? byte ελέγχου για την ανάγνωση
? init
CLR sda
CLR SCL
NOP
setb sda
setb SCL
ret
startc:
setb SCL
CLR sda
CLR SCL
NOP
NOP
lcall writenow
stop:
CLR SCL
CLR sda
setb SCL
setb sda
retwritenow: CLR sda
CLR SCL
mov a, # γράψτε
lcall στείλετε
setb sda
setb SCL
JB sda, writenow
CLR SCL
mov a, # 00000000b
lcall στείλετε
setb sda
setb SCL
JB sda, writenow
CLR SCL
mov a, # 00000000b
lcall στείλετε
setb sda
setb SCL
JB sda, writenow
CLR SCL
mov a, # 33η? ισοδύναμο hex για «S»
lcall στείλετε
setb sda
setb SCL
JB sda, writenow
CLR SCL
setb sda
CLR SCL
setb SCL
setb sda
ret
readnow: CLR sda
CLR SCL
mov a, # γράψτε
lcall στείλετε
setb sda
setb SCL
JB sda, readnow
CLR SCL
mov a, # 00000000b
lcall στείλετε
setb sda
setb SCL
JB sda, readnow
CLR SCL
mov a, # 00000000b
lcall στείλετε
setb sda
setb SCL
JB sda, readnow
CLR SCL
mov a, # διαβάστε
lcall στείλετε
setb sda
setb SCL
JB sda, readnow
CLR SCL
lcall recv
setb sda
setb SCL
CLR SCL
setb sda
acall οθόνη
lcall στάση
απεικόνιση: mov r0, # 38H? LCD υπορουτίνα initialization
acall εντολή
acall καθυστέρηση
mov r0, # 0ch
acall εντολή
acall καθυστέρηση
mov r0, # 01h
acall εντολή
acall καθυστέρηση
mov r0, # 06h
acall εντολή
acall καθυστέρηση
mov r0, # 0c5h
acall εντολή
acall καθυστέρηση
mov r0, ένα
acall δεδομένα
acall καθυστέρηση
εντολή:
mov p2, r0
acall καθυστέρηση
CLR p1.2
setb p1.4
acall καθυστέρηση
CLR p1.4
ret
στοιχεία:
mov p2, r0
acall καθυστέρηση
setb p1.2
setb p1.4
acall καθυστέρηση
CLR p1.4
retκαθυστέρηση: mov R6, # 60
here4: mov R7, # 50
here1: djnz R7, here1
djnz R6, here4αποστολή:
mov R7, # 08
πίσω:
CLR SCL
RLC ένα
mov sda, γ
setb SCL
djnz R7, πίσω
CLR SCL
setb sda
ret
recv:
mov R7, # 08
back2:
CLR SCL
setb SCL
mov c, sda
RLC ένα
djnz R7, back2
CLR SCL
setb sda
ret
τέλος
Έχω προσπαθήσει να διεπαφής 24c512 (eeprom σειριακό) με 89s52 χρησιμοποιώντας i2c υπορουτίνες, αλλά δεν έχουν ακόμη επιτυχία.Είμαι απλώς προσπαθεί να στείλει επιστολή S σε αυτό και στη συνέχεια να read.but η οθόνη δείχνει κάποια άλλη χαρακτήρα.
εδώ είναι ο κώδικαςrg 00h
sda equ P1.1
SCL P1.0 EQU
γράψτε EQU 10100000b? byte ελέγχου για τη γραφή
διαβάστε EQU 10100001b? byte ελέγχου για την ανάγνωση
? init
CLR sda
CLR SCL
NOP
setb sda
setb SCL
ret
startc:
setb SCL
CLR sda
CLR SCL
NOP
NOP
lcall writenow
stop:
CLR SCL
CLR sda
setb SCL
setb sda
retwritenow: CLR sda
CLR SCL
mov a, # γράψτε
lcall στείλετε
setb sda
setb SCL
JB sda, writenow
CLR SCL
mov a, # 00000000b
lcall στείλετε
setb sda
setb SCL
JB sda, writenow
CLR SCL
mov a, # 00000000b
lcall στείλετε
setb sda
setb SCL
JB sda, writenow
CLR SCL
mov a, # 33η? ισοδύναμο hex για «S»
lcall στείλετε
setb sda
setb SCL
JB sda, writenow
CLR SCL
setb sda
CLR SCL
setb SCL
setb sda
ret
readnow: CLR sda
CLR SCL
mov a, # γράψτε
lcall στείλετε
setb sda
setb SCL
JB sda, readnow
CLR SCL
mov a, # 00000000b
lcall στείλετε
setb sda
setb SCL
JB sda, readnow
CLR SCL
mov a, # 00000000b
lcall στείλετε
setb sda
setb SCL
JB sda, readnow
CLR SCL
mov a, # διαβάστε
lcall στείλετε
setb sda
setb SCL
JB sda, readnow
CLR SCL
lcall recv
setb sda
setb SCL
CLR SCL
setb sda
acall οθόνη
lcall στάση
απεικόνιση: mov r0, # 38H? LCD υπορουτίνα initialization
acall εντολή
acall καθυστέρηση
mov r0, # 0ch
acall εντολή
acall καθυστέρηση
mov r0, # 01h
acall εντολή
acall καθυστέρηση
mov r0, # 06h
acall εντολή
acall καθυστέρηση
mov r0, # 0c5h
acall εντολή
acall καθυστέρηση
mov r0, ένα
acall δεδομένα
acall καθυστέρηση
εντολή:
mov p2, r0
acall καθυστέρηση
CLR p1.2
setb p1.4
acall καθυστέρηση
CLR p1.4
ret
στοιχεία:
mov p2, r0
acall καθυστέρηση
setb p1.2
setb p1.4
acall καθυστέρηση
CLR p1.4
retκαθυστέρηση: mov R6, # 60
here4: mov R7, # 50
here1: djnz R7, here1
djnz R6, here4αποστολή:
mov R7, # 08
πίσω:
CLR SCL
RLC ένα
mov sda, γ
setb SCL
djnz R7, πίσω
CLR SCL
setb sda
ret
recv:
mov R7, # 08
back2:
CLR SCL
setb SCL
mov c, sda
RLC ένα
djnz R7, back2
CLR SCL
setb sda
ret
τέλος