Para mi sorpresa el código no funcionó
Esta es la librería que quedó:
// 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;
char ei;
char resultado;
ckl_ser = 1; // Pone el pin de ckl a nivel bajo.
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<7){dat_ser<<1;} // Para que en el último bit no rote.-
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;
}
Y en el main:
void main() {
TRISA = 0b100000;
RISB = 0x00;
PORTB = lee_entradas();
}
Cuando le pongo simular en el proteus no me funciona, se queda sin hacer nada presiono los botones conectados al registro de dezplazamiento y no muestra nada
en el puerto B , además de que no veo actividad en el puerto A que donde está conectado el registro.
A todo esto estoy utilzando un PIC18F2550 corriendo a 4Mhz sin PLL