Last active
November 1, 2015 15:19
-
-
Save vega0/dcb2688ddaac5d391524 to your computer and use it in GitHub Desktop.
Демонстрация работы M74HC59581
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Демонстрационная схема работы 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