fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Avisos
Vaciar todo

pcf8574

4 Respuestas
3 Usuarios
0 Reactions
4,981 Visitas
siders
Respuestas: 2
Topic starter
(@siders)
New Member
Registrado: hace 14 años

Hola, soy nuevo en C y tengo el PCF8574, que es el extensor de bus I2C, y quiero implantar una función en C que me admita como parámetro un entero de 8 bits que indique que chip de los 8 voy a direccionar y como segundo parametro , el valor a escribir, de 8 bits también. Podrían alguien darme alguna ayuda orientativa de como puedo hacer, es que estoy muy perdido.

i2ca.th i2ca.th

Uploaded with ImageShack.us

aquí esta una imagen del datashhet

gracias y adios ^^

Responder
3 respuestas
fj_sanchez
Respuestas: 1083
(@fj_sanchez)
Ardero
Registrado: hace 18 años

Buenas, sería bueno que aportases más información, como el compilador que vas a usar y el micro para el que lo quieres programar. De todos modos te dejo un par de enlaces en los que hablan sobre el expansor de puertos PCF8574

http://hackaday.com/2008/12/27/parts-8bit-io-expander-pcf8574/ " onclick="window.open(this.href);return false;
http://www.circuitcellar.com/library/print/0303/millier152/5.htm " onclick="window.open(this.href);return false;

Aquí también hay una librería para CCS que maneja este integrado:
http://www.ccsinfo.com/forum/viewtopic.php?t=19526 " onclick="window.open(this.href);return false;

Suerte.

Responder
siders
Respuestas: 2
Topic starter
(@siders)
New Member
Registrado: hace 14 años

Utilizo el compilardor Pic C y es para el 16f887.

Gracias por la aportación ^^ !!

Responder
josemi
Respuestas: 19
(@josemi)
Active Member
Registrado: hace 16 años

He buscado y encontre esto no sé si te ayudará.
int16 leer_sht(int8 comando)
{
int16 resultado;
int8 i;

sht_start();
for (i = 0; i < 8; i++)
{
if (bit_test(comando, 7) == 1)
input(dato);
else
output_low(dato);
sht_clk();
comando = comando << 1;
}

if (input(dato) == 1)
return 0xFFFF;

sht_clk();

while (input(dato) == 1)
;

for (i = 0; i < 8; i++)
{
resultado = resultado << 1;
if (input(dato) == 1)
resultado++;
sht_clk();
}

output_low(dato);
sht_clk();
for (i = 0; i < 8; i++)
{
resultado = resultado << 1;
if (input(dato) == 1)
resultado++;
sht_clk();
}

input(dato);
sht_clk();

return resultado;

Responder
Compartir: