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?
)
ΜΠΑΛΑ 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?
)