//------------------------------------------------------------------------- // Titel : rand //------------------------------------------------------------------------- // Funktion : // Schaltung : //------------------------------------------------------------------------- // Prozessor : ATmega8 // Takt : 4000000 Hz // Sprache : C // Datum : 10.3.2012 // Version : 1.0 // Autor : // Programmer: // Port : //------------------------------------------------------------------------- // created by myAVR-CodeWizard //------------------------------------------------------------------------- // #define F_CPU 4000000 #include #include #include #include #include uint8_t isrschalt; //-------------------------------------------------------------------- // INT0_vect - INT0 Interrupt an Eingang PORTD2 bei steigender Flanke //-------------------------------------------------------------------- ISR(INT0_vect) { isrschalt=1; } //-------------------------------------------------------------------- // INT1_vect - INT1 Interrupt an Eingang PORTD3 bei steigender Flanke //-------------------------------------------------------------------- ISR(INT1_vect) { // Hier Interruptbehandlung } //------------------------------------------------------------------------ // Initialisierungen //------------------------------------------------------------------------ void init() { // Ports initialisieren DDRC |= _BV(0); // PORTC0 auf Ausgang DDRC |= _BV(1); // PORTC1 auf Ausgang DDRC |= _BV(2); // PORTC2 auf Ausgang DDRD &= ~_BV(2); // PORTD2 auf Eingang mit PullUp PORTD |= _BV(2); GICR|=0b01000000; // INT0 Interrupt an Eingang PORTD2 bei steigender Flanke MCUCR|=0b00000001; MCUCR|=0b00000010; DDRD &= ~_BV(3); // PORTD3 auf Eingang mit PullUp PORTD |= _BV(3); GICR|=0b11000000; // INT1 Interrupt an Eingang PORTD3 bei steigender Flanke MCUCR|=0b00001111; //--- Interrupts erlauben --- sei(); } void long_delay(uint16_t ms){ for(;ms>0;ms--)_delay_ms(1); } ///////////////////////////////////////////////////////////////////////////// // Main-Funktion ///////////////////////////////////////////////////////////////////////////// main() main () { init(); // Initialisierungen int zufall=rand()%7; //Zufallszahl 1-7 while (true) // Mainloop-Begin { if(zufall==1){ PORTC=0b00000001; long_delay(1000);} if(zufall==2){ PORTC=0b00000010; long_delay(1000);} if(zufall==3){ PORTC=0b000000011; long_delay(1000);} if(zufall==4){ PORTC=0b000000110; long_delay(1000);} if(zufall==5){ PORTC=0b000000101; long_delay(1000);} if(zufall==6){ PORTC=0b000000111; long_delay(1000);} if(zufall==7){ PORTC=0b000000000; long_delay(1000);} } // Mainloop-Ende } //---------------------------------------------------------------------------