Urgent!

B

balaece07

Guest
HI EVERYONE,89s52[/b] Microcontroller Using I2C..I tried So many Times....But Didnt get the output..

ΜΠΑΛΑ Here.I προσπαθώ να επικοινωνούν ΔΥΟ
89s52 [/ b] Microcontroller Χρησιμοποιώντας I2C .. Προσπάθησα τόσες φορές, όμως .... Το Didnt πάρει την έξοδο ..

Εδώ είμαι με κωδικό .. Pls μου βρει το λάθος και να με βοηθήσει ..

Tahnks in Advance

Κωδικός:

# include <AT898252.h>
# include <intrins.h>
unsigned char readI2c (bit ACK_Bit)?
void writei2c (unsigned char W_Byte)?
void writemc (unsigned char addr, unsigned char data1)?
void readmc (unsigned char addr)?
sbit SDA = P0 ^ 1? / / σύνδεση με pin SDA (Data)
sbit SCL = P0 ^ 0? / / σύνδεση με SCL pin (Ρολόι)
καθυστέρηση ()?
void main ()
(
writemc (0x24, 0x55)?
readmc (0x24)?
)
//-------------------------------
/ / Έναρξη I2C
//-------------------------------
void Start (void)
(
SDA = 1?
SCL = 1?
_nop_ ()? _nop_ ()?
SDA = 0?
_nop_ ()? _nop_ ()?
SCL = 0?
_nop_ ()? _nop_ ()?
)

//-------------------------------
/ / Stop I2C
//-------------------------------
void Stop (void)
(
SDA = 0?
_nop_ ()? _nop_ ()?
SCL = 1?
_nop_ ()? _nop_ ()?
SDA = 1?
)
//-------------------------------
/ / Γράψτε I2C
//-------------------------------
void writei2c (unsigned char Data)
(
unsigned char i?
for (i = 0? i <8? i )
(
SDA = (Data & 0x80)?1:0?
SCL = 1?

SCL = 0?
Δεδομένα <<= 1?
καθυστέρηση ()?
)

SCL = 1?
_nop_ ()? _nop_ ()?
SCL = 0?

)

//-------------------------------
/ / Διαβάστε I2C
//-------------------------------
unsigned char readI2c (bit ACK_Bit)
(

unsigned char δεδομένων = 0?
unsigned char i?
SDA = 1?
for (i = 0? i <8? i )
(
SCL = 1?
Δεδομένα <<= 1?
Δεδομένα = (Data | SDA)?

SCL = 0?
_nop_ ()?
καθυστέρηση ()?)

εάν (ACK_Bit == 1)
SDA = 0? / / Αποστολή ACK
άλλος
SDA = 1? / / Αποστολή ΟΧΙ ACK

_nop_ ()? _nop_ ()?
SCL = 1?
_nop_ ()? _nop_ ()?
SCL = 0?

επιστροφή δεδομένων?
)

void writemc (unsigned char addr, unsigned char data1)
(
Ξεκινήστε ()?
writei2c (0xC0)?
writei2c (addr)?
writei2c (data1)?
Stop ()?
)
void readmc (unsigned char addr1)

(
unsigned char rdata?

Ξεκινήστε ()?
writei2c (0xC0)?
writei2c (addr1)?
Ξεκινήστε ()?
writei2c (0xC1)?
rdata = readI2c ()?
Stop ()?
P2 = rdata?

)
καθυστέρηση () / * Μία δεύτερη καθυστέρηση * /
(

T2MOD = 0x03?
TL2 = 0xFC?
ΤΗ2 = 0xFE?
TR2 = 1?
ενώ (TF2! = 1)?
TR2 = 0?
TF2 = 0?

)

 
HI

Σε ό, τι θυμάμαι το 8952 δεν έχει το υλικό περιβάλλον σκλάβος IC.
I2C interface due to complicated trimming requirement for the slave

Για αυτό θα είναι πιο δύσκολο ή σχεδόν imposable υπάρχει για να γράψετε ένα σκλάβο
I2C λογισμικού διασύνδεσης λόγω των περίπλοκων κόψιμο απαίτηση για την σκλάβος

Μόνο ελεγκτή γρήγορα (όπως η STM32 ή PIC24 ή PIC32 ή AVR) μπορεί να μιμηθεί το λογισμικό I2C σκλάβος

Όλα τα καλύτερα

Bobi
Ο ειδικός μικροελεγκτή
 
καλά, θα μπορούσε να γίνει με διακόπτουν ...χρησιμοποιούν και τα δύο ...
έτσι θα πρέπει να επιλέξει ποιο θα είναι το κύριο, και ποια θα είναι η σκλάβα ...

έχουν και τα δύο ως master / slave θα μπορούσε να είναι πολύ δύσκολο (το υλικό διαιτησίας και έτσι ...)

 
Γεια σου,

Αν έχετε SPI ενσωματωμένο στο πρωτόκολλο μικροϋπολογιστικά σας από ό, τι αυτό θα λειτουργήσει ως Master και Slave.
Ακριβώς για τον έλεγχο.

Χαιρετισμοί
Chanchal

 

Welcome to EDABoard.com

Sponsor

Back
Top