I2C mikro c kodiranje

A

ammmmu

Guest
Dragi prijatelji,

Moram PIC 16F877A v I2C mikro C kodiranje prosim pomagaj moji prijatelji .....

 
Tukaj je koda za I2C komunikacijo, kar imam!
Ali je za 8051 mikrokontrolerji, pa ca je zlahka sprejmejo nobeni mikro.

Je napisana v Keil C!

Če želite v sestavljavcu jih lahko najdete na net!
Oprosti, ampak, kar potrebujete za prijavo v to prilogo, da si ogledate

 
24XX512.h
# vključujejo "i2c.h" / * Potrebujete i2c bus * /

# define EEPROMS_ID 0xA0 / * mikročip 24xx512 * /

nepotpisani char EEPROM_get (nepodpisanih int naslov)
(
nepotpisani char dat;

I2C_start () / * Start i2c bus * /

I2C_write (EEPROMS_ID) / * Povezovanje z EEPROM * /
I2C_write (naslov & 0xF0) / * Request RAM naslov (višina byte) * /
I2C_write (naslov & 0x0F); / * Request RAM naslov (Low byte) * /

I2C_start () / * Start i2c bus * /

I2C_write (EEPROMS_ID 1) / * Povezovanje z EEPROM za branje * /
dat = I2C_read () / * Prejemanje podatkov * /

I2C_noack ();

I2C_stop () / * Stop i2c bus * /

vrnitev dat;
)

neveljaven EEPROM_set (nepodpisanih int naslov, nepotpisani char val)
(
I2C_start ();

I2C_write (EEPROMS_ID) / * Povezovanje z EEPROM * /
I2C_write (naslov & 0xF0) / * Request RAM naslov (višina byte) * /
I2C_write (naslov & 0x0F); / * Request RAM naslov (Low byte) * /

I2C_write (Val); / * Napišite sec RAM na določen naslov * /

I2C_stop () / * Stop i2c bus * /
)Doda po 46 sekund:

i2c.h# define SDA P2_2 / * Set P2.7 = SDA * /
# define SCL P2_3 / * Set P2.6 = SCL * /
# define I2C_DELAY 0x0F / * Za zamudo i2c bus * /

I2C_delay neveljaven (ničen)
(
nepotpisani char i;

for (i = 0; i <I2C_DELAY; i );
)

I2C_clock neveljaven (ničen)
(
I2C_delay ();

SCL = 1 / * Start clock * /

I2C_delay ();

SCL = 0; / * Clear SCL * /
)

I2C_start neveljaven (ničen)
(
if (SCL)
SCL = 0; / * Clear SCL * /

SDA = 1 / * Nastavi SDA * /
SCL = 1 / * Nastavi SCL * /

I2C_delay ();

SDA = 0; / * Clear SDA * /

I2C_delay ();

SCL = 0; / * Clear SCL * /
)

I2C_stop neveljaven (ničen)
(
if (SCL)
SCL = 0; / * Clear SCL * /

SDA = 0; / * Clear SDA * /
I2C_delay ();

SCL = 1 / * Nastavi SCL * /

I2C_delay ();

SDA = 1 / * Nastavi SDA * /
)

bit I2C_write (nepodpisanih char dat)
(
bit data_bit;
nepotpisani char i;

for (i = 0; i <8; i ) / * Za zanko 8 časa (pošiljanje podatkov 1 bajt) * /
(
data_bit = dat & 0x80 / * Filter MSB bit vodijo k data_bit * /
SDA = data_bit / * Pošlji data_bit za SDA * /

I2C_clock () / * Pokliči za pošiljanje podatkov na i2c bus * /

dat = dat <<1;
)

SDA = 1 / * Nastavi SDA * /

I2C_delay ();

SCL = 1 / * Nastavi SCL * /

I2C_delay ();

data_bit = SDA; / * Preverite potrditi * /
SCL = 0; / * Clear SCL * /

I2C_delay ();

vrnitev data_bit; / * Če send_bit = 0 i2c je veljavna * /
)

nepotpisani char I2C_read (ničen)
(
bit rd_bit;
nepotpisani char i dat;

dat = 0x00;

for (i = 0; i <8; i ) / * V zanki bere podatke 1 bajt * /
(
I2C_delay ();

SCL = 1 / * Nastavi SCL * /

I2C_delay ();

rd_bit = SDA; / * Skrbite za preverjanje potrditi * /
dat = dat <<1;
dat dat = | rd_bit / * shranjujte bitni podatki v dat * /

SCL = 0; / * Clear SCL * /
)

vrnitev dat;
)

neveljaven I2C_ack ()
(
SDA = 0; / * Clear SDA * /

I2C_delay ();

I2C_clock () / * Pokliči za pošiljanje podatkov na i2c bus * /

SDA = 1 / * Nastavi SDA * /
)

neveljaven I2C_noack ()
(
SDA = 1 / * Nastavi SDA * /

I2C_delay ();

I2C_clock () / * Pokliči za pošiljanje podatkov na i2c bus * /

SCL = 1 / * Nastavi SCL * /
)Dodano po 1 minuti:

glavni# vključujejo <AT89X51.H>
# vključujejo <24xx512.h>

nepotpisani int del, i, x, temp;

char getCharacter (ničen)
(
char CHR; / / spremenljivka, da imajo nove značaja
medtem ko (RI! = 1) (;)
CHR = SBUF;
RI = 0;
vrnitev (CHR);
)
neveljaven poslati (char a)
(
SBUF = a;
medtem ko (TI! = 1);
TI = 0;
)

neveljaven glavne (ničen) (
char CHR;
int i = 0, j = 0, count = 0, inc = 47; / / inc = 47
int indeks = 0;
P1 = 0X00;
P2 = 0X00;

SCON = 0x50; / / mode 1, 8-bit uart, omogočite sprejemnik
TMOD = 0x20; / / časovnik 1, način 2, 8-bit Pretovariti
TH1 = 0XE6; / / 1200
TL1 = 0XE6;
TR1 = 1;
TI = 0;
SBUF = 0;

medtem ko (1) (
kodo) / / end of hkrati

) / / konec glavne

 
Jaz sem še napako za obe lib,
Oprosti, ampak, kar potrebujete za prijavo v to prilogo, da si ogledate

 
prevajalnik, ki ste tekoč v uporabi?
odvisno od tega, da moraš preveriti, če je baza knjižnic so na voljo ...

 
im uporabo microvission Keil & & proteous te kode je povsem workin fineDodano po 1 minuti:je le eno opozorilo spor bcaz of ack funkcijo bcaz m ne uporabljate ack med brati
in pisati v mojem koda

 

Welcome to EDABoard.com

Sponsor

Back
Top