Gracias LordLafebre por tan inmediata contestación
. Me ha venido muy bien la referencia.
Parece ser que el comando shiftout no funciona con el 74hc164, sino que hay que implementar la comunicación manualmente, mediante pulsos.
He desarrollado un sencillo secuenciador de 8 leds basado en el 74hc164 cuyo esquema y código PBP dejo a continuación, por si a alguien pudiera servirle. Está verificado en una placa de proyectos (breadboard).
(Es mi primer esquema con Eagle; sean críticos; podría contener errores).
RESETEAR var PORTB.3
SERIE2 var PORTB.4
CLOCK2 var PORTB.5
contador var byte
'Configurar todos los pines de puerto B como salidas
TRISB = %00000000
'Poner todas las salidas del 74hc164 a 0
pause 1000
high resetear
pulsout resetear, 10
'Insertar en el 74hc164 el valor 1
high serie2
pulsout clock2,1
pause 1000
'Desplazar secuencialmente el valor 1 del 74hc164
'6 posiciones
low serie2
for contador=0 to 5
pulsout clock2,1
pause 1000
next
'Antes de realizar el séptimo desplazamiento, configuro
'portb.4 (SERIE2) como entrada porque, si no, el pin del
'PIC estaría en 0 y por la conexión con el 74hc164 le
'llegaría un 1
trisb = %00010000
pulsout clock2,1
pause 1000
'Inicio del bucle
bucle:
pulsout clock2,1
pause 1000
goto bucle