'Den verwendeten µC nennen $regfile = "attiny2313.dat" 'Angeben mit welcher Frequenz der µC arbeitet $crystal = 1000000 'IO Pins von PortB einstellen Ddrb = &B00011100 'Pullup's von PortB, bis auf die PWM Ausgänge, einschalten Portb = &B11100011 'Pullup's von PortD einschalten Portd = &B11111111 'Pullup einschalten Porta.0 = 1 'Pullup einschalten Porta.1 = 1 'Die Timer auf PWM-Modus stellen 'Diese PWM-Register haben eine Breite von 8 Bit - also Werte von 0 bis 255 'Wobei 0 = 0% Helligkeit und 255 = 100% Helligkeit bedeuten Config Timer0 = Pwm , Pwm = On , Prescale = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Config Timer1 = Pwm , Pwm = 8 , Prescale = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down 'Timerinterruptroutine zuweisen On Timer0 Timer0_isp 'Die Timer freigeben Enable Timer1 Enable Timer0 'Die Timer starten Start Timer1 Start Timer0 'Die PWM-Register zuweisen Led3 Alias Pwm0a Led2 Alias Pwm1a Led1 Alias Pwm1b 'Tastervariablen den Pins zuweisen S5 Alias Pind.6 S3 Alias Pinb.0 S4 Alias Pinb.1 S2 Alias Pina.0 S1 Alias Pina.1 S6 Alias Pind.3 S8 Alias Pind.2 'Interrupts global freigeben Enable Interrupts 'ein Paar Variablen Deklarieren 'damit wird die Schrittgröße im Fader-Mode festgelegt mit welcher die Fadinggeschwindigkeit eingestellt wird Dim Color_delay_step As Byte 'damit wird im Fading-Mode die zu verstellende Funktion, Fadinggeschwindigkeit oder Verweilzeit, ausgewählt Dim Function_select As Bit 'damit wird in beiden Modies die Schrittgröße, mit denen die Werte verändert werden, von kleinen auf große Schritte ausgewählt. Dim Speed_select As Bit 'Variable für den LED1 Helligkeitswert im Fading-Mode Dim Led1_0 As Byte 'Variable für den LED2 Helligkeitswert im Fading-Mode Dim Led2_0 As Byte 'Variable für den LED3 Helligkeitswert im Fading-Mode Dim Led3_0 As Byte 'Damit wird der zu verwendende Mode ausgewählt Dim Fader_mode As Byte 'damit wird im Fading-Mode die Fadinggeschwindigkeit eingestellt, in 2ms oder 50ms Schritten. Dim Color_delay As Word 'damit wird im Fading-Mode die Verweilzeit definiert. In 500ms Schritten. Dim Color_stop As Word 'damit wird im Fading-Mode die Farbreihenfolge festgelegt. Dim Rgb As Byte 'hilfe variabele Dim Help As Bit Dim Led_max As Byte Dim Led_max_2 As Byte Dim Led_max_3 As Byte Dim Coun As Byte 'diese Werte werden beim flashen ins EEPROM geschrieben. Im Betrieb werden manche Werte beim speichern überschrieben. 'diese Werte brauchen normal nicht angepasst zu werden. Dies betrifft nur die erste Einstellung nach dem flashen. $eeprom $eepromhex Dummi: 'Pseudo Wert, das erste Byte im EEPROM sollte nie benutzt werden. Data 0 ' Wert 0 Color_delay_eeprom: 'hier wird der Wert für die Fadinggeschwindigkeit im Fader-Mode gespeichert Data 16% 'default = 16ms Fader_mode_eeprom: 'hier wird der verwendete Mode zum Speicherzeitpunkt gespeichert Data 0 'default = 0 (Fading-Mode) Color_stop_eeprom: 'hier wird der Wert für die Verweilzeit im Fader-Mode gespeichert Data 1000% 'default = 1000ms Rgb_eeprom: Data 0 Led1_0_eeprom: Data 0 Led2_0_eeprom: Data 0 Led3_0_eeprom: Data 0 $data 'Nach dem einschalten die Werte aus dem EEPROM lesen Readeeprom Color_delay , Color_delay_eeprom Readeeprom Fader_mode , Fader_mode_eeprom Readeeprom Color_stop , Color_stop_eeprom Readeeprom Rgb , Rgb_eeprom Readeeprom Led1_0 , Led1_0_eeprom Readeeprom Led2_0 , Led2_0_eeprom Readeeprom Led3_0 , Led3_0_eeprom 'Defaultwert für die Schrittgröße der Fadinggeschwindigkeit. Bitte nicht verstellen, ansonsten müssen andere Codeteile auch noch angepasst werden. Color_delay_step = 2 Do If Fader_mode = 0 Then If Rgb = 0 Then Incr Led1_0 Decr Led3_0 If Led3_0 = 255 Then Led3_0 = Led_max End If Led1 = Led1_0 Led3 = Led3_0 If Led1_0 = Led_max_2 Then Waitms Color_stop Else Waitms Color_delay End If End If If Rgb = 1 Then Decr Led1_0 Incr Led2_0 Led1 = Led1_0 Led2 = Led2_0 Waitms Color_delay If Led2_0 = Led_max_2 Then Waitms Color_stop Led1_0 = Led1_0 + 1 Rgb = 3 End If Waitms Color_delay End If If Rgb = 2 Then Decr Led2_0 Incr Led3_0 If Led2_0 = 255 Then Led2_0 = Led_max End If Led2 = Led2_0 Led3 = Led3_0 Waitms Color_delay If Led3_0 = Led_max_2 Then Waitms Color_stop Else Waitms Color_delay End If End If If Rgb = 3 Then If Help = 1 Then Decr Led1_0 Decr Led2_0 End If Incr Led3_0 Led1 = Led1_0 Led2 = Led2_0 Led3 = Led3_0 Waitms Color_delay Toggle Help If Led3_0 = Led_max_3 Then Rgb = 4 Waitms Color_stop End If End If If Rgb = 4 Then If Help = 1 Then Incr Led1_0 Incr Led2_0 End If Decr Led3_0 Led1 = Led1_0 Led2 = Led2_0 Led3 = Led3_0 Waitms Color_delay Toggle Help If Led2_0 = Led_max_2 Then Rgb = 1 Led3_0 = 0 Led3 = Led3_0 End If End If If Led1_0 = Led_max Then Rgb = 1 Led3_0 = 0 Led3 = Led3_0 Waitms Color_stop End If If Led2_0 = Led_max Then Rgb = 2 Led1_0 = 0 Led1 = Led1_0 Waitms Color_stop End If If Led3_0 = Led_max Then Rgb = 0 Led2_0 = 0 Led2 = Led2_0 Waitms Color_stop End If End If Loop End Timer0_isp: If S8 = 0 Then Bitwait S8 , Set Incr Fader_mode If Fader_mode > 1 Then Fader_mode = 0 Color_delay_step = 2 Speed_select = 0 End If If S4 = 0 Then Bitwait S4 , Set If Function_select = 0 Then If Color_delay < 65000 Then Color_delay = Color_delay + Color_delay_step Else If Color_stop < 65000 Then Color_stop = Color_stop + 500 End If End If If S5 = 0 Then Bitwait S5 , Set If Function_select = 0 Then If Color_delay_step = 2 Then If Color_delay > 1 Then Color_delay = Color_delay - Color_delay_step Else Color_delay = 0 End If End If If Color_delay_step = 50 Then If Color_delay > 49 Then Color_delay = Color_delay - Color_delay_step Else Color_delay = 0 End If End If Else If Color_stop > 499 Then Color_stop = Color_stop - 500 End If End If If S6 = 0 Then Bitwait S6 , Set Toggle Speed_select If Speed_select = 0 Then Color_delay_step = 2 Else Color_delay_step = 50 End If End If If S3 = 0 Then Bitwait S3 , Set Toggle Function_select End If If S1 = 0 Then Bitwait S1 , Set Writeeeprom Color_delay , Color_delay_eeprom Writeeeprom Color_stop , Color_stop_eeprom Writeeeprom Fader_mode , Fader_mode_eeprom Writeeeprom Rgb , Rgb_eeprom Writeeeprom Led1_0 , Led1_0_eeprom Writeeeprom Led2_0 , Led2_0_eeprom Writeeeprom Led3_0 , Led3_0_eeprom End If If S2 = 0 Then Bitwait S2 , Set Select Case Coun Case 0: Led_max = 255 Led_max_2 = 128 Led_max_3 = 86 Case 1: Led_max = 191 Led_max_2 = 96 Led_max_3 = 64 Case 2: Led_max = 127 Led_max_2 = 64 Led_max_3 = 42 Case 3: Led_max = 63 Led_max_2 = 32 Led_max_3 = 21 Case 4 Fader_mode = 1 End Select If Coun <= 4 Then Incr Coun Else Coun = 0 End If End If Return