1. Сбрасываем SH_CP и ST_CP
2. Выставляем очередной бит на DS
3. Дергаем SH_CP
4. Повторяем 1 - 3 до тех пор, пока не передадим байт целиком.
5. Дергаем ST_CP - байт появляется на выходе.
В чем пишете? У меня есть небольшая самописная либа-драйвер HC595 под AVR-GCC. Сама по себе писана на ассемблере, но если не надо особой оптимизации, то можно и на С:
Код: Выделить всё
#define DS (1<<[номер ножки DS])
#define SH_CP (1<<[номер ножки SH_CP])
#define ST_CP (1<<[номер ножки ST_CP])
...
PORTX&=~(SH_CP | ST_CP);
for (i=0; i<8; i++)
{
if (ByteToSend & (1<<i))
{
PORTX|=DS;
PORTX|=SH_CP;
PORTX&=~(DS | SH_CP);
}
else
{
PORTX&=~DS;
PORTX|=SH_CP;
PORTX&=~SH_CP;
}
}
PORTX|=ST_CP;
PORTX&=~ST_CP;



