Skip to content

Instantly share code, notes, and snippets.

@vega0
Last active November 1, 2015 15:19
Show Gist options
  • Save vega0/dcb2688ddaac5d391524 to your computer and use it in GitHub Desktop.
Save vega0/dcb2688ddaac5d391524 to your computer and use it in GitHub Desktop.
Демонстрация работы M74HC59581
/*
* Демонстрационная схема работы M74HC59581
*/
//Настройка порта
#define SHIFT_REGISTER DDRD
#define SHIFT_PORT PORTD
#define DATA (1 << PD7) // 7 пин
#define CLOCK (1 << PD6) // 6 пин
#define LATCH (1 << PD5) // 5 пин
// Макрос передергивания clock :D
#define CLOCK_UPDATE(DELAY) SHIFT_PORT ^= CLOCK; \
delay(DELAY); \
SHIFT_PORT ^= CLOCK;
// Последовательный вывод информации
inline void shift_out(unsigned char code)
{
unsigned char scan = 1;
SHIFT_PORT ^= LATCH;
while(scan)
{
SHIFT_PORT |= DATA;
if(!(code & scan))
{
SHIFT_PORT |= DATA;
SHIFT_PORT &= ~DATA;
}
CLOCK_UPDATE(0.001)
scan <<= 1;
}
SHIFT_PORT |= LATCH;
}
void setup() {
//Устанавливаем DATA LATCH CLOCK выводами
SHIFT_REGISTER |= (DATA | LATCH | CLOCK);
//Устанавливаем пины в LOW
SHIFT_PORT &= ~(DATA | LATCH | CLOCK);
}
void loop() {
// Выводим байт информации инкрементально.
for(uint8_t i = 0; i < 256; i++)
{
shift_out(i);
delay(500);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment