Как правильно составить код для управления сдвиговым регистром с помощью ардуино?
Вообще сдвиговые регистры отлично управляются при помощи функции shiftOut.
А ваш код непонятен совсем, особенно первый - сдвиговый регистр подключается к трем портам, а у вас там 6 портов.
Для обычных сдвиговых регистров, например тут, через ShiftOut: http://wiki.amperka.ru/конспект-arduino:счетчик-нажатий
Если важен сам принцип, то смотрите временные диаграммы, либо расковыряйте данную функцию.
Могу ошибаться, но вроде: выставить уровень на data, по фронту clock забить его в регистр, выставить следующее, снова фронтом clock его задвинуть в регистр, после забивания всех 8ми значений подать необходимый уровень на защелку latch, которая одновременно выставит все забитые значения на выходе регистра.