Ik wil graag 4x de 74HC595 op een pic16F628a aansluiten, die chips kun je in serie plaatsen, waardoor je meerdere schuifregisters op een poort hebt, zo dus:
http://www.uploadarchief.net/files/download/schuifregistersbedienen.png

Nu is het zo dat ik ook een 74HC165 nodig heb in mijn project, deze kan ik in serie zetten met de 74HC595 op deze manier:
http://homepages.which.net/~paul.hills/Software/ShiftRegister/ShiftRegisterBlockDiagram.png

Nu weet ik alleen niet hoe ik shiftin en shiftout op de zelfde poorten kan gebruiken, kan iemand mij dat uitleggen?

http://www.circuitsonline.net/forum/view/42449

Als je een clock geeft (na storage clock) dan staat de eerste bit van de HC165 op de ingang van je microcontroller, die kun je uitlezen zonder een clock signaal mee te geven (dus i/o als ingang schakelen en dan weer als uitgang), daarna weer clock signaal voor de volgende bit in de (volgende HC595) klokken en HC165 bit door te schuiven op de i/o.

Gebruik gewoon de modules die de pic aan boord heeft. Lees de datasheet, je weet niet meer hoe het in elkaar zit en je begint vanuit de taal te denken ipv, ... de PIC.
Wat je nodig hebt is een SPI module. Heb eens gekeken naar de 16F628, die heeft een USART. Je kan die daarvoor in synchrone mode gebruiken. Je 74HC595 sluit je aan op TX, de 74HC165 op RX. Gebruik dus HSERIN/OUT zodat je niet weer software spi gaat doen.

@plantrekker, de USART module van mijn pic (de 16F628A) is al in gebruik voor seriele communicatie met een computer, het moet dus wel softwarematig.

Wat ik begrepen heb uit de link van RES is dat ik als ik de shin en shout commando's wil gebruiken, ik alleen de clock pin aan elkaar kan laten. Dan zou het onderste plaatje in combinatie met de shin en shout dus niet mogelijk zijn?

Het onderste schema is IMHO bruikbaar, als je het zo doet:


Maak "data" uitgang". Maak "strobe" laag.
Stuur 16 bits naar de 74HC595 IC's.
Geef een strobe-puls. Beide 74HC165's lezen de ingangen.
Maak "data" ingang.
Lees achtereenvolgens 16 bits in.

Telkens je de ingangen wil lezen, ben je dus verplicht om vooraf 16 bits naar de uitgangen te sturen. Nogal omslachtig, maar je spaart er een pin mee uit.
En waarschijnlijk zal je zelf de nodige routine moeten schrijven.

Oke, zelf een routine schrijven moet wel lukken, maar ik spaar er dan toch 3 pinnen mee uit? Of zie ik iets over het hoofd?