Pilne!

B

balaece07

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

BALA Here.I staram się przekazać Dwa
89s52 [/ b] Microcontroller Korzystanie I2C .. próbowałem tyle razy .... Ale nie zrobił dostać wyjścia ..

Oto jestem w tym mój kod .. Pls znaleźć błąd i Pomóż mi ..

Tahnks w Advance

Kod:

# 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 / / móc przypiąć SDA (Data)
sbit SCL = P0 ^ 0 / / połączyć się SCL pin (zegar)
opóźnienia ();
void main ()
(
writemc (0x24, 0x55);
readmc (0x24);
)
//-------------------------------
/ / Start 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;
)
//-------------------------------
/ / Write I2C
//-------------------------------
void writei2c (unsigned char Data)
(
unsigned char i;
for (i = 0; i <8; i )
(
SDA = (Data & 0x80)?1:0;
SCL = 1;

SCL = 0;
Dane <<= 1;
opóźnienia ();
)

SCL = 1;
_nop_ (); _nop_ ();
SCL = 0;

)

//-------------------------------
/ / Read I2C
//-------------------------------
unsigned char readI2c (bit ACK_Bit)
(

unsigned char data = 0;
unsigned char i;
SDA = 1;
for (i = 0; i <8; i )
(
SCL = 1;
Dane <<= 1;
Dane = (danych | SDA);

SCL = 0;
_nop_ ();
opóźnienia ();)

if (ACK_Bit == 1)
SDA = 0 / / Wyślij ACK
w przeciwnym razie
SDA = 1; / / Wyślij NO ACK

_nop_ (); _nop_ ();
SCL = 1;
_nop_ (); _nop_ ();
SCL = 0;

Data powrotu;
)

void writemc (unsigned char addr, unsigned char data1)
(
Start ();
writei2c (0xC0);
writei2c (addr);
writei2c (data1);
Stop ();
)
void readmc (unsigned char addr1)

(
unsigned char rdata;

Start ();
writei2c (0xC0);
writei2c (addr1);
Start ();
writei2c (0xC1);
rdata = readI2c ();
Stop ();
P2 = rdata;

)
opóźnienia () / * One Second Delay * /
(

T2MOD = 0x03;
TL2 = 0xFC;
TH2 = 0xFE;
TR2 = 1;
while (TF2! = 1);
TR2 = 0;
TF2 = 0;

)

 
HI

O ile pamiętam 8952 nie ma sprzętu slave interfejsu IC.
I2C interface due to complicated trimming requirement for the slave

Nie bo to będzie najtrudniejsze lub w pobliżu orzekane do pisania oprogramowania I2C slave
interfejsu ze względu na skomplikowane przycinania wymóg slave

Tylko szybki kontroler (jak STM32 lub PIC24 i PIC32 lub AVR) może emulować oprogramowania I2C slave

All the best

Bobi
Specjalista mikrokontrolera
 
Cóż, można to zrobić z przerywa ...używając dwóch z nich ...
dlatego należy wybrać, który będzie mistrzem, i które jeden będzie niewolnikiem ...

uwzględniając zarówno jako master / slave może być bardzo trudne (stuff arbitraż i tak ...)

 
Cześć,

Jeśli masz wbudowana w protokół SPI mikrokontrolera nie będzie pracować jako Master i Slave.
Just check for that.

Pozdrowienia
Chanchal

 

Welcome to EDABoard.com

Sponsor

Back
Top