Un registre de desplaçament és un circuit integrat que ens permet controlar vuit sortides reals a partir de només tres potes del microcontrolador. Podem enviar els vuit bits un darrera l'altre fent servir dues potes del microcontrolador, una per enviar els bits (DS) i una com a rellotge o sincronisme (SH_CP). Primer enviem el valor que correspon al bit 7, després el del bit 6 i així successivament fins arribar al bit 0. Quan ja hem enviat tots els bits, podem copiar simultàniament els valors dels vuit bits sobre les sortides activant una altra pota (ST_CP).
A continuació es descriuen les diferents potes del registre de desplaçament 74HC595:

| Número pota | Nom | Funció | Número pota | Nom | Funció | ||
| 1 | Q1 | Sortida 1 | 9 | Q7' | Sortida del registre per entrar al registre següent | ||
| 2 | Q2 | Sortida 2 | 10 | MR | Reset | Quan el posem a zero, posa a zero tots els bits del registre | |
| 3 | Q3 | Sortida 3 | 11 | SH_CP | Clock | Quan s'activa, fa córrer el registre i copia DS sobre la posició 0 | |
| 4 | Q4 | Sortida 4 | 12 | ST_CP | Latch | Quan s'activa, copia el registre sobre les sortides | |
| 5 | Q5 | Sortida 5 | 13 | OE | Output enable | Quan es posa a 1, desconnecta les sortides | |
| 6 | Q6 | Sortida 6 | 14 | DS | Data | Entrada de dades | |
| 7 | Q7 | Sortida 7 | 15 | Q0 | Sortida 0 | ||
| 8 | GND | Alimentació 0 V | 16 | VCC | Alimentació +5 V | ||
En el següent diagrama es mostra com connectar el registre per controlar vuit LED.

A continuació hi ha una funció que envia el contingut de l'adreça Sortida a un registre de desplaçament.
cblock 0x20 ... Port ; Bits a enviar al port B Sortida ; Valors a enviar al registre de desplaçament Compta ; Variable per comptar els bits ... endc
... ; ; Envia 8 bits a un registre de desplaçament ; Els bits estan a la variable Sortida ; Al final de la funció, el valor de Sortida queda corromput ; Si es vol conservar, cal copiar-lo a una altra variable ; EnviaR8 ; Envia 8 bits a un registre de desplaçament bcf Port,5 ; S'assegura que Clock està desactivat bcf Port,6 ; S'assegura que Latch està desactivat ; En cas contrari, els bits enviats es copiarien immediatament a les sortides movf Port,w ; Agafa el valor de Port movwf PORTB ; I el posa al port B movlw .8 ; Número de bits a enviar movwf Compta ; Variable per comptar els bits BucleR8 bcf Port,4 ; Desactiva Data. Si toca activar-ho, ja ho farem rlf Sortida,f ; Fa sortir el bit de més a l'esquerra cap a C i roda els altres a l'esquerra btfsc STATUS,C ; Mira si el bit de l'esquerra era un 1 bsf Port,4 ; Si era 1, activa Data movf Port,w ; Agafa el valor de Port. El valor que ha canviat és Data movwf PORTB ; I el posa al port B bsf Port,5 ; Activa Clock, forçant a llegir el bit movf Port,w ; Agafa el valor de Port. El valor que ha canviat és Clock movwf PORTB ; I el posa al port B bcf Port,5 ; Desactiva Clock movf Port,w ; Agafa el valor de Port. El valor que ha canviat és Clock movwf PORTB ; I el posa al port B decfsz Compta ; Decrementa Compta goto BucleR8 ; Si Compta no és zero, repeteix el bucle bsf Port,6 ; Torna a activar Latch. Els valors es copiaran a la sortida del registre movf Port,w ; Agafa el valor de Port. El valor que ha canviat és Latch movwf PORTB ; I el posa al port B return end
Els registres de desplaçament es poden posar en cadena. Així, si en posem dos podrem controlar setze sortides amb només tres potes del microcontrolador. La pota Q7' del primer registre ens dona el valor que hem d'entrar a la pota DS del segon. Per tant, el primer valor que entrem acabarà a la sortida 15 i el darrer a la sortida 0.
En el següent esquema es mostra com connectar dos registres per controlar setze LED.

Seguint el mateix criteri, podem encadenar tants registres com sigui necessari.

Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.