/* EasyCODE V8 */ /* EasyCODE ( 0 EasyCODE - */ /* EasyCODE ( 0 Sytem-Definitionen */ // Sytem-Definitionen (in Vorlage vorgegeben) #pragma SMALL #include #include "iMAP.h" #include #define INPUT P0 // Definition Eingabe Modul-Port #define OUTPUT P2 // Definition Ausgabe (LED) Modul-Port #define TRUE 1 #define FALSE 0 #define Fosc 12 // Quarzfrequenz in [MHz] #define Mach_cyc_divider 12 // Maschinenzyklus Divisor #define T0_divider 12 // Timer0 Divisor #define T0_stopped 6 // Anzahl Maschinenzyklen während Timer0 steht beim Vorladen #define T0_interval 10000 // Timer0 Intervall in [us] // Timer0-Vorladewert, min 0 max 65535 !!! #define T0_reload_value (65536-((T0_interval)+(T0_stopped))) #define T0_M0_ 0x01 // Timer 0 Mode Bit 0 #define T0_MASK_ 0x0F // Timer 1 Mask //char code reserve_UART[3] _at_ 0x23; // for Monitor-51 serial interrupt vector /* EasyCODE ) */ /* EasyCODE ( 0 * Globale Variable und Funktionen */ /* EasyCODE < */ // Globale Variablen-Definition enum {Menu, Einstellungen, Musik, Sound, Lautstaerke, Spielmodi1, Auswahl, Spielmodi2, Sieg, zeit_auswahl, Spielmodi3} State; // Funktions-Deklarationen void Timer0_Init (void); // Timer0 Initialisierung (Mode1, Timer) void Timer0_Reload (void); // Timer0 laden + starten extern void delayms(unsigned int); //pause extern void Init_LCD(); //LCD Initialisieren extern void LCD_write(char Mode, char c); //schreiben extern char putchar(char c); extern void LCD_clear(); //LCD löschen void uart_init (void); //uart initialisieren void taster_funktion (void); //funktion des Tasters void musik_ein (void); //Musik ein void sound_ein (void); //Soundeffekte ein void taster_loeschen (void); //taster löschen void vl (void); //volumen void RGB_spiel (void); //RGB Regenbogenfarben void timer (void); //Timer für Spielmodi 3 //char code reserve_UART[3] _at_ 0x23; // for Monitor-51 serial interrupt UART vector //char code reserve_SPI[3] _at_ 0x53; // for Monitor-51 serial interrupt SPI vector /* EasyCODE > */ /* EasyCODE ) */ /* EasyCODE ( 0 Initialisierung */ //Initialisierungen unsigned char i, rot, blau, gruen, l_taster, k_taster, zaehler, zeit, z_sound, z_musik, wert; unsigned char speicher, zahl, z_wert, z_zeit, z_pause,i; int wert_links, wert_rechts, minuten, sekunden, tore; //Taster Initialisieren sbit sensor_links = P1^2; //Sensor sbit luft = P1^1; //Lüfter sbit taster = P1^0; //Kommmunikation zwischen den MCU sbit Sieg1 = P2^0; sbit Sieg2 = P2^1; sbit tor_links = P2^2; sbit tor_rechts = P2^3; sbit spielm_3 = P2^4; /* EasyCODE ) */ /* EasyCODE [ Hauptprogramm */ /* EasyCODE F */ void main (void) { /* EasyCODE ( 0 * Initialisierung */ // Initialisierung State = Menu; // Init State nach Reset / PowerUp // Timer0 initialisieren, stoppen, laden, starten Timer0_Init(); // Vorgegebene Funktion in Vorlage // Weitere Initialisierungen uart_init(); //Uart initialisieren Init_LCD(); //LCD initialisieren //PWM initialisieren CCAPM0 = 0x42; //Enable Compare Mode Module x bit & Pulse Width Modulation Module x Mode bit CCAPM1 = 0x42; //Enable Compare Mode Module x bit & Pulse Width Modulation Module x Mode bit CCAPM2 = 0x42; //Enable Compare Mode Module x bit & Pulse Width Modulation Module x Mode bit CR = 1; //Lüfter aus luft = 0; zahl = 100; //zähler für Taster laden //Musik wert = 15; //Lautstärke z_musik = 1; //Musik ein z_sound = 1; //Soundeffekte ein //RGB Blau rot = 0; gruen = 0; blau = 255; //PWM ausgeben CCAP0H = ~rot; CCAP1H = ~gruen; CCAP2H = ~blau; //Das Programm des MCU2 starten Sieg1 = 0; Sieg2 = 0; tor_links = 0; spielm_3 = 0; tor_rechts = 1; //Anzeigen Menu LCD_clear(); //LCD löschen LCD_write(LCD_Instr, Zeile1); //Zeile wählen printf("Menu"); //Anzeigen /* EasyCODE ) */ /* EasyCODE [ * Endlosschleife */ while ( 1 // Endlosschleife ) { if ( TF0 // TIC 10ms Systemtakt ) { /* EasyCODE ( 0 Timer0 neu laden */ // Vorgegebene System-Funktion in Vorlage // Timer0 stoppen, neu laden und erneut starten Timer0_Reload (); /* EasyCODE ) */ /* EasyCODE ( 0 * Zeit-Zähler dekrementieren (Timer0-Takt) */ // alle geladenen Zeit-Zähler dekrementieren, (TIC) /* EasyCODE ) */ /* EasyCODE [ * StateMachine */ // StateMachine switch ( State ) { case Menu : taster_funktion();//Taster abrufen if ( k_taster == 1 & zaehler == 0 //taster kurz gedrückt und zähler gleich 0 ) { //Anzeigen Spielmodus 1 LCD_clear(); //LCD löschen LCD_write(LCD_Instr, Zeile1); //Zeile wählen printf("Spielmodus 1"); //Anzeigen zaehler++;//zähler plus 1 taster_loeschen(); //taster löschen } if ( k_taster == 1 & zaehler == 1//taster kurz gedrückt und zähler gleich 1 ) { //Anzeigen Spielmodus 2 LCD_clear(); //LCD löschen LCD_write(LCD_Instr, Zeile1); //Zeile wählen printf("Spielmodus 2"); //Anzeigen zaehler++; //zähler plus 1 taster_loeschen(); //taster löschen } if ( k_taster == 1 & zaehler == 2//taster kurz gedrückt und zähler gleich 2 ) { //Anzeigen Einstellungen LCD_clear(); //LCD löschen LCD_write(LCD_Instr, Zeile1); //Zeile wählen printf("Spielmodus 3"); //Anzeigen zaehler++;//zähler plus 1 taster_loeschen(); //taster löschen } if ( k_taster == 1 & zaehler == 3 //taster kurz gedrückt und zähler gleich 3 ) { //Anzeigen Einstellungen LCD_clear(); //LCD löschen LCD_write(LCD_Instr, Zeile1); //Zeile wählen printf("Einstellungen"); //Anzeigen zaehler++;//zähler plus 1 taster_loeschen(); //taster löschen } if ( l_taster == 1 & zaehler == 1 //taster lang gedrückt und zähler gleich 1 ) { zaehler = 0;//zähler löschen luft = 1;//Lüfter ein taster_loeschen(); //taster löschen //RGB rot rot = 255; CCAP0H = ~rot; //PWM einstellen gruen = 0; CCAP1H = ~gruen; //PWM einstellen blau = 0; CCAP2H = ~blau; //PWM einstellen State = Spielmodi1;//geht ins State Spielmodi1 spielm_3 = 1; //spiel starten } if ( l_taster == 1 & zaehler == 2 //taster lang gedrückt und zähler gleich 2 ) { zaehler = 0;//zähler löschen //RGB rot rot = 255; CCAP0H = ~rot; //PWM einstellen gruen = 0; CCAP1H = ~gruen; //PWM einstellen blau = 0; CCAP2H = ~blau; //PWM einstellen taster_loeschen(); //taster löschen spielm_3 = 1; //spiel starten State = Auswahl;//geht ins State Auswahl } if ( l_taster == 1 & zaehler == 3//Taster lang gedrückt und zähler gleich 3 ) { //Zeit anzeigen LCD_clear(); //LCD löschen LCD_write(LCD_Instr, Zeile1); //Zeile wählen printf("Zeit auswählen"); //Anzeigen taster_loeschen(); //taster löschen //RGB rot rot = 255; CCAP0H = ~rot; //PWM einstellen gruen = 0; CCAP1H = ~gruen; //PWM einstellen blau = 0; CCAP2H = ~blau; //PWM einstellen State = zeit_auswahl;//geht ins State zeit_auswahl spielm_3 = 1; //spiel starten } if ( l_taster == 1 & zaehler == 4 //taster lang gedrückt und zähler gleich 3 ) { //Anzeigen Einstellungen LCD_clear(); //LCD löschen LCD_write(LCD_Instr, Zeile0); //Zeile wählen printf("Musik"); //Anzeigen zaehler = 0; //zähler löschen State = Musik;//geht ins State Musik taster_loeschen(); //taster löschen } if ( k_taster == 1 & zaehler == 4 //zähler gleich 4 ) { zaehler = 0;//zähler löschen } break; case Musik : taster_funktion();//Taster abrufen if ( k_taster == 1//taster lang gedrückt ) { z_musik++;//zähler plus 1 taster_loeschen(); //taster löschen } if ( z_musik == 2//zähler gleich 2 ) { z_musik = 0;//zähler löschen } if ( z_musik == 0 //zähler gleich 0 ) { //Anzeigen Aus LCD_write(LCD_Instr, Zeile2); //Zeile wählen printf("Aus"); //Anzeigen } if ( z_musik == 1 //zähler gleich 1 ) { //Anzeigen Ein LCD_write(LCD_Instr, Zeile2); //Zeile wählen printf("Ein"); //Anzeigen } if ( l_taster == 1//taster kurz gedrückt ) { //Anzeigen Soundeffekte LCD_clear(); //LCD löschen LCD_write(LCD_Instr, Zeile0); //Zeile wählen printf("Soundeffekte"); //Anzeigen taster_loeschen(); //taster löschen State = Sound;//geht ins State Sound } break; case Sound : taster_funktion();//Taster abrufen if ( k_taster == 1 //taster lang gedrückt ) { z_sound++;//zähler plus 1 taster_loeschen(); //taster löschen } if ( z_sound == 2 //zähler gleich 2 ) { z_sound = 0;//zähler löschen } if ( z_sound == 0 //zähler gleich 0 ) { //Anzeigen Aus LCD_write(LCD_Instr, Zeile2); //Zeile wählen printf("Aus"); //Anzeigen } if ( z_sound == 1//zähler gleich 1 ) { //Anzeigen Ein LCD_write(LCD_Instr, Zeile2); //Zeile wählen printf("Ein"); //Anzeigen } if ( l_taster == 1 //taster kurz gedrückt ) { //Anzeigen Lautstärke LCD_clear(); //LCD löschen LCD_write(LCD_Instr, Zeile0); //Zeile wählen printf("Lautstärke"); //Anzeigen //Anzeigen wert LCD_write(LCD_Instr, Zeile2); //Zeile wählen printf("%d",wert); //Anzeigen taster_loeschen(); //taster löschen //musik_ein(); //musik ein State = Lautstaerke;//geht ins State Lautstärke } break; case Lautstaerke : taster_funktion();//Taster abrufen //vl();//Lautstärke Funktion if ( l_taster == 1//taster lang gedrückt ) { //Anzeigen Einstellungen LCD_clear(); //LCD löschen LCD_write(LCD_Instr, Zeile1); //Zeile wählen printf("Menu"); //Anzeigen taster_loeschen(); //taster löschen //reset(); //musik aus State = Menu;//geht ins State Menu } break; case Spielmodi1 : taster_funktion();//Taster abrufen spielm_3 = 0; //löschen if ( zeit == 0 //zeit gleich 0 ) { //Anzeigen Spielstand LCD_clear(); //LCD löschen LCD_write(LCD_Instr, Zeile1); //Zeile wählen printf("%d:%d",wert_links,wert_rechts); //Anzeigen //musik_ein();//Musik ein RGB_spiel();//RGB spiel ein } if ( tor_rechts == 1 //Tor rechts ) { zeit = 200; //zeit laden wert_rechts++;//wert plus 1 //RGB rot ein rot = 255; CCAP0H = ~rot; //PWM einstellen gruen = 0; CCAP1H = ~gruen; //PWM einstellen blau = 0; CCAP2H = ~blau; //PWM einstellen //sound_ein();//Sound ein } if ( sensor_links == 0 //Sensor links aktiv ) { zeit = 200; //zeit laden //sound_ein();//Sound ein wert_links++;//wert plus 1 tor_links = 1;//tor links //RGB grün ein rot = 0; CCAP0H = ~rot; //PWM einstellen gruen = 255; CCAP1H = ~gruen; //PWM einstellen blau = 0; CCAP2H = ~blau; //PWM einstellen } while ( zeit > 0 //zeit grösser als 0 ) { zeit--;//zähler minus 1 LCD_clear(); //LCD löschen LCD_write(LCD_Instr, Zeile1); //Zeile wählen printf("TOR"); //Anzeigen if ( zeit == 180 ) { tor_links = 0; //Tor löschen } if ( zeit == 0 ) { //RGB rot ein rot = 255; CCAP0H = ~rot; //PWM einstellen gruen = 0; CCAP1H = ~gruen; //PWM einstellen blau = 0; } } if ( l_taster == 1//taster lang gedrückt ) { taster_loeschen(); //taster löschen State = Sieg;//geht ins State Sieg luft = 0; //Lüfter auschalten } break; case Auswahl : RGB_spiel(); //RGB spiel ein taster_funktion();//Taster abrufen spielm_3 = 0; //löschen //Anzeigen Spielen bis: LCD_clear(); //LCD löschen LCD_write(LCD_Instr, Zeile0); //Zeile wählen printf("Spielen bis:"); //Anzeigen //Tore anzeigen LCD_write(LCD_Instr, Zeile2); //Zeile wählen printf("%d",tore); //Anzeigen if ( k_taster == 1 //taster kurz gedrückt ) { taster_loeschen(); //taster löschen tore++;//zähler plus 1 } if ( tore == 51 //zähler über 50 ) { tore = 0; //zähler löschen } if ( l_taster == 1 //taster lang gedrückt ) { luft = 1;//Lüfter ein taster_loeschen(); //taster löschen State = Spielmodi2;//geht ins State Spielmodi2 } break; case Spielmodi2 : if ( zeit == 0//zeit gleich 0 ) { //Anzeigen Spielstand LCD_clear(); //LCD löschen LCD_write(LCD_Instr, Zeile1); //Zeile wählen printf("%d:%d",wert_links,wert_rechts); //Anzeigen //musik_ein();//Musik ein RGB_spiel();//RGB spiel ein } if ( tor_rechts == 1 //Tor rechts ) { zeit = 200;//zeit laden wert_rechts++;//wert plus 1 //RGB rot ein rot = 255; CCAP0H = ~rot; //PWM einstellen gruen = 0; CCAP1H = ~gruen; //PWM einstellen blau = 0; CCAP2H = ~blau; //PWM einstellen //sound_ein();//Sound ein } if ( sensor_links == 0 //Sensor links aktiv ) { zeit = 200;//zeit laden wert_links++;//wert plus 1 //RGB grün ein rot = 0; CCAP0H = ~rot; //PWM einstellen gruen = 255; CCAP1H = ~gruen; //PWM einstellen blau = 0; CCAP2H = ~blau; //PWM einstellen //sound_ein();//Sound ein tor_links = 1;//tor links } while ( zeit > 0 //zeit grösser als 0 ) { zeit--;//zähler minus 1 LCD_clear(); //LCD löschen LCD_write(LCD_Instr, Zeile1); //Zeile wählen printf("TOR"); //Anzeigen if ( zeit == 180 ) { tor_links = 0; //Tor löschen } if ( zeit == 0 ) { //RGB rot ein rot = 255; CCAP0H = ~rot; //PWM einstellen gruen = 0; CCAP1H = ~gruen; //PWM einstellen blau = 0; } } if ( wert_links == tore | wert_rechts == tore //Werte gleich tore ) { State = Sieg;//geht ins State Sieg luft = 0; //Lüfter auschalten } break; case Sieg : taster_funktion();//Taster abrufen //playback_folder2();//Musik sieg ein tore = 0; //zähler löschen //RGB blau ein rot = 0; CCAP0H = ~rot; //PWM einstellen gruen = 0; CCAP1H = ~gruen; //PWM einstellen blau = 255; CCAP2H = ~blau; //PWM einstellen if ( wert_links > wert_rechts //wert links grösser als der rechte wert ) { Sieg1 = 1;//Spieler1 gewinnt Sieg2 = 0;//Spieler2 verliert //anzeigen Spieler 1 gewonnen LCD_clear(); //LCD löschen LCD_write(LCD_Instr, Zeile1); //Zeile wählen printf("Spieler1 Gewinnt"); //Anzeigen } if ( wert_rechts > wert_links //wert rechts grösser als der linke wert ) { Sieg2 = 1;//Spieler 2 gewinnt Sieg1 = 0; //Spieler 1 verliert //Anzeigen Spieler 2 gewinnt LCD_clear(); //LCD löschen LCD_write(LCD_Instr, Zeile1); //Zeile wählen printf("Spieler2 Gewinnt"); //Anzeigen } if ( wert_rechts == wert_links //Werte gleich gross ) { Sieg1 = 1;//unentschieden Sieg2 = 1; //unentschieden //Anzeigen Unentschieden LCD_clear(); //LCD löschen LCD_write(LCD_Instr, Zeile1); //Zeile wählen printf("Unentschieden"); //Anzeigen } if ( l_taster == 1 //Taster lang gedrückt ) { //Anzeigen Menu LCD_clear(); //LCD löschen LCD_write(LCD_Instr, Zeile1); //Zeile wählen printf("Menu"); //Anzeigen taster_loeschen(); //taster löschen //reset();//Musik aus //Siege löschen Sieg1 = 0; Sieg2 = 0; spielm_3 = 0;//unentschieden wert_links = 0; wert_rechts = 0; //RGB blau ein rot = 0; CCAP0H = ~rot; //PWM einstellen gruen = 0; CCAP1H = ~gruen; //PWM einstellen blau = 255; CCAP2H = ~blau; //PWM einstellen State = Menu;//geht ins State Menu } break; case zeit_auswahl : RGB_spiel(); //RGB spiel ein spielm_3 = 1; //Dem anderen uC sagen das spielmodus 3 gespielt wird taster_funktion();//Taster abrufen if ( k_taster ==1//taster kurz gedrückt ) { minuten = minuten + 5; //zähler (minuten) plus 5 z_wert++; if ( minuten >20//zähler grösser 20 ) { minuten = 0;//zähler zurücksetzen z_wert = 0; //zähler löschen } //Anzeigen LCD_clear(); //LCD löschen LCD_write(LCD_Instr, Zeile1); //Zeile wählen printf("%dmin",minuten); //Anzeigen taster_loeschen(); //taster löschen } if ( l_taster == 1 //taster lang gedrückt ) { //Alles löschen switch ( z_wert //Minuten übertragen ) { case 1 : Sieg1 = 1; break; case 2 : Sieg2 = 1; break; case 3 : tor_links = 1; break; case 4 : Sieg1 = 1; Sieg2 = 1; break; } z_pause = 100; //Warten bis gesendet while ( z_pause > 0 ) { z_pause--; } spielm_3 = 0; //zurücksetzen z_wert = 0; //zähler zurücksetzen sekunden = 0; //zähler löschen z_zeit = 0; //zähler löschen taster_loeschen(); //taster löschen luft = 1; //lüfter eingeschalten LCD_clear(); //LCD löschen //RGB rot ein rot = 255; CCAP0H = ~rot; //PWM einstellen gruen = 0; CCAP1H = ~gruen; //PWM einstellen blau = 0; CCAP2H = ~blau; //PWM einstellen State = Spielmodi3;//geht ins State Spielmodi3 } if ( tor_links == 1 ) { //Ist Tor_links eins /* EasyCODE - */ tor_links = 0; //Tor löschen } if ( Sieg1 == 1 ) { //Sieg ist eins /* EasyCODE - */ Sieg1 = 0; //Sieg löschen } break; case Spielmodi3 : timer();//Funktion des Timers if ( tor_rechts == 1 //Tor rechts ) { zeit = 200;//zeit laden wert_rechts++;//wert plus 1 //RGB rot ein rot = 255; CCAP0H = ~rot; //PWM einstellen gruen = 0; CCAP1H = ~gruen; //PWM einstellen blau = 0; CCAP2H = ~blau; //PWM einstellen //sound_ein();//Sound ein } if ( sensor_links == 0 //Sensor links aktiv ) { zeit = 200;//zeit laden wert_links++;//wert plus 1 //RGB grün ein rot = 0; CCAP0H = ~rot; //PWM einstellen gruen = 255; CCAP1H = ~gruen; //PWM einstellen blau = 0; CCAP2H = ~blau; //PWM einstellen //sound_ein();//Sound ein tor_links = 1;//tor links } if ( minuten == 0 & sekunden == 0//Zeit abgelaufen ) { State = Sieg; //geht ins State Sieg luft = 0; //Lüfter auschalten } if ( zeit == 0//zeit gleich 0 ) { //Anzeigen Spielstand und Zeit LCD_write(LCD_Instr, Zeile1); //Zeile wählen printf("%d:%d",wert_links,wert_rechts); //Anzeigen //musik_ein();//Musik ein RGB_spiel();//RGB spiel ein } while ( zeit > 0 //zeit grösser als 0 ) { zeit--;//zähler minus 1 LCD_clear(); //LCD löschen LCD_write(LCD_Instr, Zeile1); //Zeile wählen printf("TOR"); //Anzeigen if ( zeit == 180 ) { tor_links = 0; //Tor löschen } if ( zeit == 0 ) { //RGB rot ein rot = 255; CCAP0H = ~rot; //PWM einstellen gruen = 0; CCAP1H = ~gruen; //PWM einstellen blau = 0; } } break; } /* EasyCODE ] */ } else { ; } } /* EasyCODE ] */ } /* EasyCODE ] */ /* EasyCODE ( 0 Timer0_Init */ /* EasyCODE F */ void Timer0_Init (void) { // Vorgegebene System-Funktion in Vorlage TR0 = TF0 = 0; // Timer0 stoppen TMOD = TMOD & (~T0_MASK_) ; // Timer0 (Bit0-3) löschen TMOD = TMOD | T0_M0_ ; // Timer0 Mode=1 / 16Bit Up Timer TL0 = 0xFE; // Zeit LowByte (1us) TH0 = 0xFF; // Zeit HighByte TR0 = 1; // Timer0 starten, läuft sofort ab und setzt TF0 } /* EasyCODE ) */ /* EasyCODE ( 0 Timer0_Reload */ /* EasyCODE F */ void Timer0_Reload (void) { // Vorgegebene System-Funktion in Vorlage TR0 = TF0 = 0; // Timer0 stoppen, Overflow löschen TL0 = T0_reload_value % 256; // Zeit LowByte TH0 = T0_reload_value / 256; // Zeit HighByte TR0 = 1; // Timer starten } /* EasyCODE ) */ /* EasyCODE ( 0 RGB_spiel */ /* EasyCODE F */ void RGB_spiel (void) { if ( rot == 255 & gruen == 0 ) { //rot ein /* EasyCODE - */ blau++; //blau plus 1 CCAP0H = ~rot; //PWM einstellen CCAP1H = ~gruen; //PWM einstellen CCAP2H = ~blau; //PWM einstellen } if ( blau == 255 & gruen == 0 ) { //blau ein /* EasyCODE - */ rot--; //rot minus 1 CCAP0H = ~rot; //PWM einstellen CCAP1H = ~gruen; //PWM einstellen CCAP2H = ~blau; //PWM einstellen } if ( rot == 0 & blau == 255 ) { //blau ein /* EasyCODE - */ gruen++; //grün plus 1 CCAP0H = ~rot; //PWM einstellen CCAP1H = ~gruen; //PWM einstellen CCAP2H = ~blau; //PWM einstellen } if ( gruen ==255 & rot == 0 ) { //grün ein /* EasyCODE - */ blau--; //blau minus 1 CCAP0H = ~rot; //PWM einstellen CCAP1H = ~gruen; //PWM einstellen CCAP2H = ~blau; //PWM einstellen } if ( blau == 0 & gruen == 255 ) { //grün ein /* EasyCODE - */ rot++; //rot plus 1 CCAP0H = ~rot; //PWM einstellen CCAP1H = ~gruen; //PWM einstellen CCAP2H = ~blau; //PWM einstellen } if ( rot == 255 & blau == 0 ) { gruen--; //grün minus 1 CCAP0H = ~rot; //PWM einstellen CCAP1H = ~gruen; //PWM einstellen CCAP2H = ~blau; //PWM einstellen } } /* EasyCODE ) */ /* EasyCODE ( 0 Uart_Init */ /* EasyCODE F */ void uart_init(void) { SCON = 0x40; //Mode 1 8Bit T2CON = 0x34; //RCLK = 1 | TCLK = 1 //Baudrate 9600 RCAP2H= 0x0FF; RCAP2L= 0x0D9; T2MOD = 0x02; //Timer2 Enable TR2 = 1; //Timer2 starten } /* EasyCODE ) */ /* EasyCODE ( 0 volume */ /* EasyCODE F */ void vl(void) { speicher = wert; //speichert den Wert if ( k_taster == 1 ) { //Taster gedrückt /* EasyCODE - */ wert++; //wert +1 taster_loeschen();//Taster löschen //wert anzeigen } if ( wert == 31 ) { //ist der Wert 31 /* EasyCODE - */ wert = 0; //Wert = 0 //wert anzeigen } if ( speicher != wert ) { //der gespeicherte Wert ist nicht gleich der neue Wert /* EasyCODE - */ volume(wert); //Wert wird ausgegeben } } /* EasyCODE ) */ /* EasyCODE ( 0 Taster */ /* EasyCODE F */ void taster_funktion (void) { if ( taster == 0 ) { //Taster gedrückt /* EasyCODE - */ zahl--; //zähler minus 1 } //taster lang gedrückt if ( zahl == 0// zähler ist null ) { if ( taster == 0 // Taster gedrückt ) { l_taster = 1; //taster lang gedrückt zahl = 100; //zähler aufladen } } //taster kurz gedrückt if ( taster == 1 & zahl > 0 & zahl < 99//taster nicht gedrückt und der zähler ist zwischen 0 und 99 ) { k_taster = 1; //taster kurz gedrückt zahl = 100; //zähler laden } } /* EasyCODE ) */ /* EasyCODE ( 0 Taster_löschen */ /* EasyCODE F */ void taster_loeschen(void) { k_taster = 0; //taster off l_taster = 0; //taster off } /* EasyCODE ) */ /* EasyCODE ( 0 Musik_ein */ /* EasyCODE F */ void musik_ein (void) { if ( z_musik == 1 ) { //Musik abspielen /* EasyCODE - */ random(); } } /* EasyCODE ) */ /* EasyCODE ( 0 Sound_ein */ /* EasyCODE F */ void sound_ein (void) { if ( z_sound == 1 ) { //Effekte abspielen /* EasyCODE - */ playback_folder(); } } /* EasyCODE ) */ /* EasyCODE ( 0 Timer */ /* EasyCODE F */ void timer (void) { if ( z_zeit == 0 ) { if ( sekunden == 0 ) { minuten--; //Minus zählen sekunden = 60; //zähler laden //LCD_clear(); //LCD löschen //LCD_write(LCD_Instr, Zeile1); //Zeile wählen //printf("%02d:%02d",minuten,sekunden); //Anzeigen } sekunden--; //Minus zählen //Anzeigen //LCD_clear(); //LCD löschen LCD_write(LCD_Instr, Zeile0); //Zeile wählen printf("%02d:%02d",minuten,sekunden); //Anzeigen z_zeit = 100; //zähler laden } z_zeit--; //zähler minus zählen } /* EasyCODE ) */ /* EasyCODE ) */