TODOPIC
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
. ¿Perdiste tu
email de activación
?
1 Hora
1 Día
1 Semana
1 Mes
Siempre
Ingresar con nombre de usuario, contraseña y duración de la sesión
Este tema
Este sub-foro
Todo el foro
Google
Inicio
Ayuda
Buscar
Ingresar
Registrarse
TODOPIC
»
Microcontroladores PIC
»
Lenguaje C para microcontroladores PIC
(Moderadores:
pikman
,
pocher
,
vszener
,
Suky
) »
Algoritmo 74HC164 Expansor I/O con MikroC
« anterior
próximo »
Imprimir
Páginas:
1
[
2
]
Ir Abajo
Autor
Tema: Algoritmo 74HC164 Expansor I/O con MikroC (Leído 5674 veces)
0 Usuarios y 1 Visitante están viendo este tema.
jonathanPIC888
Colaborador
PIC18
Mensajes: 320
Re: Algoritmo 74HC164 Expansor I/O con MikroC
«
Respuesta #15 en:
13 de Julio de 2009, 18:25:49 »
Ahi el circuito dió sus primeras señales de vida pero no hace lo que el código dice, la verdad ya no se que más modificar:
Código: C
// Pines intercambiables según necesidades del usuario.
#define ena_ser PORTA.F3 // Pin HABILITACIÓN.
#define ckl_ser PORTA.F4 // Pin RELOG.
#define dat_ser PORTA.F5 // Pin DATOS.
// Declaramos la función.
char
lee_entradas
(
)
;
char
lee_entradas
(
)
{
char
contador
,
ei
,
resultado
;
ckl_ser
=
1
;
// Pone el pin de ckl a nivel alto.
ena_ser
=
0
;
// Guarda el estado de las entradas.
ena_ser
=
1
;
// Habilita al 74165 para recibir nuevos datos.
ei
=
0
;
for
(
contador
=
1
;
contador
<=
8
;++
contador
)
{
// Genera clock para hacer el corrimiento de bits de la estructura.
if
(
dat_ser
=
1
)
{
ei
+=
1
;
}
ei
<<
1
;
ckl_ser
=
0
;
// Pone a nivel bajo el pin de ckl.
ckl_ser
=
1
;
// Pone a nivel alto el pin de ckl.
resultado
=
ei
;
}
return
(
ei
)
;
ena_ser
=
0
;
}
void
main
(
)
{
int
i
;
TRISA.
F5
=
0x01
;
TRISA.
F4
=
0x00
;
TRISA.
F3
=
0x00
;
TRISB
=
0x00
;
while
(
1
)
{
i
=
lee_entradas
(
)
;
PORTB
=
i
;
}
}
PD: Adjunto el esquemático del isis junto con el archivo para simularlo.
En línea
Suky
Moderador Local
DsPIC33
Mensajes: 6758
Re: Algoritmo 74HC164 Expansor I/O con MikroC
«
Respuesta #16 en:
13 de Julio de 2009, 23:18:07 »
Prueba de esta manera:
Código: C
// Pines intercambiables según necesidades del usuario.
#define ena_ser PORTA.F3 // Pin HABILITACIÓN.
#define ckl_ser PORTA.F4 // Pin RELOG.
#define dat_ser PORTA.F5 // Pin DATOS.
char
lee_entradas
(
)
{
char
contador
,
ei
,
resultado
;
ckl_ser
=
1
;
// Pone el pin de ckl a nivel alto.
ena_ser
=
0
;
// Guarda el estado de las entradas.
ena_ser
=
1
;
// Habilita al 74165 para recibir nuevos datos.
ei
=
0
;
for
(
contador
=
1
;
contador
<=
8
;++
contador
)
{
// Genera clock para hacer el corrimiento de bits de la estructura.
if
(
dat_ser
=
1
)
{
ei
+=
1
;
}
if
(
contador
<
8
)
{
ei
<<
1
;
}
ckl_ser
=
0
;
// Pone a nivel bajo el pin de ckl.
ckl_ser
=
1
;
// Pone a nivel alto el pin de ckl.
}
ena_ser
=
0
;
return
(
ei
)
;
}
Si no se coloca la linea
if(contador<
{ei<<1;}
el último bit leído provoca que se rote ei, perdiendo el bit7 e introduciendo un 0 en bit0, corrompiendo el byte recibido.
En línea
No contesto mensajes privados, las consultas en el foro
jonathanPIC888
Colaborador
PIC18
Mensajes: 320
Re: Algoritmo 74HC164 Expansor I/O con MikroC
«
Respuesta #17 en:
14 de Julio de 2009, 00:25:44 »
Sigue sin funcionar tanto en el simulador como en la práctica la verdad es rarísimo...........
En línea
jonathanPIC888
Colaborador
PIC18
Mensajes: 320
Re: Algoritmo 74HC164 Expansor I/O con MikroC
«
Respuesta #18 en:
14 de Julio de 2009, 00:33:21 »
Según como has detallado la función tiene que funcionar sin ningún drama , pero el tema es que no me muestra nada por el puerto B del micro no se que puede llegar a estar mal.
En línea
jonathanPIC888
Colaborador
PIC18
Mensajes: 320
Re: Algoritmo 74HC164 Expansor I/O con MikroC
«
Respuesta #19 en:
14 de Julio de 2009, 13:56:29 »
Puede ser que la función no me esté devolviendo el valor de ei ??? ya es la única que se me ocurre.
En línea
Suky
Moderador Local
DsPIC33
Mensajes: 6758
Re: Algoritmo 74HC164 Expansor I/O con MikroC
«
Respuesta #20 en:
14 de Julio de 2009, 15:55:31 »
Faltaban un
=
en el
if
El ejemplo que probé en un 16F84A:
Código: C
// Pines intercambiables según necesidades del usuario.
#define ena_ser PORTA.F2 // Pin HABILITACIÓN.
#define ckl_ser PORTA.F0 // Pin RELOG.
#define dat_ser PORTA.F1 // Pin DATOS.
char
lee_entradas
(
)
{
char
contador
,
ei
;
ckl_ser
=
1
;
// Pone el pin de ckl a nivel alto.
ena_ser
=
0
;
// Guarda el estado de las entradas.
ena_ser
=
1
;
// Habilita al 74165 para recibir nuevos datos.
ei
=
0
;
for
(
contador
=
1
;
contador
<=
8
;++
contador
)
{
// Genera clock para hacer el corrimiento de bits de la estructura.
if
(
dat_ser
==
1
)
{
ei
+=
1
;
}
if
(
contador
<
8
)
{
ei
<<=
1
;
}
ckl_ser
=
0
;
// Pone a nivel bajo el pin de ckl.
ckl_ser
=
1
;
// Pone a nivel alto el pin de ckl.
}
ena_ser
=
0
;
return
(
ei
)
;
}
void
main
(
)
{
char
lectura
;
TRISA.
F1
=
1
;
TRISA.
F0
=
0
;
TRISA.
F2
=
0
;
TRISB
=
0
;
while
(
1
)
{
delay_ms
(
100
)
;
lectura
=
lee_entradas
(
)
;
PORTB
=
lectura
;
}
}
Adjunto imagen del circuito.
Saludos!
En línea
No contesto mensajes privados, las consultas en el foro
jonathanPIC888
Colaborador
PIC18
Mensajes: 320
Re: Algoritmo 74HC164 Expansor I/O con MikroC
«
Respuesta #21 en:
14 de Julio de 2009, 16:44:05 »
Grandeeeeeeeeeeeeeeeeeeeeeeeeee Suki
Funcionó perfecto la librería !!!!!!!!!!!!!!
Ahora el tema con el PIC18F2550 no funciona y estoy seguro que es por una mala configuración de los fuses.
Gracias por tu paciencia para ayudarme te estoy muy agradecido
En línea
jonathanPIC888
Colaborador
PIC18
Mensajes: 320
Re: Algoritmo 74HC164 Expansor I/O con MikroC
«
Respuesta #22 en:
14 de Julio de 2009, 22:08:23 »
La librería no se como hacerla funcionar con el puerto A que bronca ...........funciona con los otros puertos.
Para colmo en mi entrenadora el 74HC165 está conectado al puerto A y no se como hacer.
En línea
Imprimir
Páginas:
1
[
2
]
Ir Arriba
« anterior
próximo »
TODOPIC
»
Microcontroladores PIC
»
Lenguaje C para microcontroladores PIC
(Moderadores:
pikman
,
pocher
,
vszener
,
Suky
) »
Algoritmo 74HC164 Expansor I/O con MikroC