U23 2007/Evil Solutions/schiebe.c
< U23 2007 | Evil Solutions
#include <avr/io.h> int main(void) { DDRA = 0xFF; PORTA = 0x00; // Set OE @ PORTA3 PORTA |= (1 << 3); uint16_t i; uint16_t a; uint16_t b; for (i = 0 ; i < 16 ; i ++) { // Clock @ PORTA2 every 2× // on->off->on->off->… if ( i % 2 ) { PORTA |= (1 << 2 ); } else { PORTA &= ~ (1 << 2 ); } PORTA &= ~ (1<<2); } // Set Strobe @ PORTA0 PORTA |= (1 << 0 ) ; // Delay for (b = 0; b < 0xffff; b++) { PORTB &= (1 << 1); } // Unset Strobe @ PORTA0 PORTA &= ~ (1 << 0 ) ; // Delay for (a = 0; a < 5; a++) { for (b = 0; b < 0xffff; b++) { /* nix */ } } for ( i = 0; i < 16 ; i ++) { /* // Set Data if ( ((int) (i/2)) >= 2 && ((int) (i/2)) <= 5) { PORTA &= ~ (1 << 1); } else { PORTA |= (1 << 1); } */ // set Data @ PORTA1 every 4× if ( ((int) i/2) % 2 ) { PORTA |= (1 << 1); }else { PORTA &= ~ (1 << 1); } // set Clock @ PORTA2 every 2× if ( i % 2 ) { PORTA |= (1 << 2 ); } else { PORTA &= ~ (1 << 2 ); } // Set and unset Strobe @ PORTA0 PORTA |= (1 << 0 ) ; PORTA &= ~ (1 << 0 ) ; // Set OE @ PORTA3 PORTA |= (1 << 3); // Delay for (a = 0; a < 5; a++) { for (b = 0; b < 0xffff; b++) { /* nix */ } } } return 0; }