/* * SimCube.cpp * * Created: 08.02.2014 18:06:26 * Author: Wd45 * Для куба 5x5x5 */ #include #include #include #define lavel1 PC0 // Вывод МК активирующий 1 уровень куба #define lavel2 PC1 #define lavel3 PC2 #define lavel4 PC3 #define lavel5 PC4 #define MR PA0 // Сигнал общий для всех регистров, clear сигнал #define data_line PA1 // Сигнал общий для всех регистров, вывод МК для передачи данных в регистр #define clock1 PA2 // Вывод МК для передачи сигнала Clock к регистру #define clock2 PA3 #define clock3 PA4 #define clock4 PA5 #define clock5 PA6 enum memory_signal {low , tact}; void MemoryWrite() { //Q7 PORTA |=_BV(data_line);// Пишим 1 PORTA &=~_BV(clock5); PORTA |=_BV(clock5); //Q6 PORTA &=~_BV(data_line);// Пишим 0 PORTA &=~_BV(clock5); PORTA |=_BV(clock5); //Q5 PORTA &=~_BV(data_line);// Пишим 0 PORTA &=~_BV(clock5); PORTA |=_BV(clock5); //Q4 PORTA &=~_BV(data_line);// Пишим 0 PORTA &=~_BV(clock5); PORTA |=_BV(clock5); //Q3 PORTA |=_BV(data_line);// Пишим 1 PORTA &=~_BV(clock5); PORTA |=_BV(clock5); //Q2 PORTA &=~_BV(data_line);// Пишим 0 PORTA &=~_BV(clock5); PORTA |=_BV(clock5); //Q1 PORTA &=~_BV(data_line);// Пишим 0 PORTA &=~_BV(clock5); PORTA |=_BV(clock5); //Q0 PORTA |=_BV(data_line);// Пишим 1 PORTA &=~_BV(clock5); PORTA |=_BV(clock5); } int main(void) { DDRA= 0xff;// выводы порта a как выхады DDRC = 0xff;// выводы порта c как выхады PORTA=0x00; // на все выходы уровень low PORTC=0x00; // на все выходы уровень low PORTA |=_BV(MR);// На вывод Clear подаём HIGH уровень, общий для всех регистров MemoryWrite(); PORTC |=_BV(lavel1); while(1) { } }