Versuch mal, Irrtum vorbehalten.
Ein paar Sachen würde ich anders machen, aber eigentlich könnte das gehen. Ist der Code von dir oder wo hast du ihn her ?
Code:$regfile = "m48def.dat" $crystal = 4000000 Config Timer1 = Timer , Prescale = 64 ' 1 sec Const Timerpreset = 3036 ' 1 sec On Timer1 Ontimer1 Config Portd.0 = Output 'A Config Portd.1 = Output 'B Config Portd.2 = Output 'C Config Portd.3 = Output 'D Config Portd.4 = Output 'E Config Portd.5 = Output 'F Config Portd.6 = Output 'G Config Portb.1 = Output 'Digi 1 Config Portb.2 = Output 'Digi 2 Config Portb.3 = Output 'Digi 3 Config Portb.4 = Output 'Digi 4 Config Portc.2 = Output 'Dezimalpunkt = Sek_blink Gegen + Config Portc.1 = Output 'Relais Config Portc.0 = Output 'Peeper Gegen - Config Portc.3 = Input ' Start/ Stop Taster Config Portc.4 = Input 'Minuten Taster Config Portc.5 = Input 'Sekunden Taster Declare Sub Zeiteinstellung Declare Sub Soundout Dim Zeit(4) As Byte Dim Kontrolle As Eram Byte ' kontrollbyte Dim Eezeit(4) As Eram Byte Dim Z As Byte Dim I As Word Dim Tmp As Byte Dim Taste1 As Bit Dim Taste2 As Bit Dim Taste3 As Bit Dim Taste4 As Bit Portd = &H7F Portb = &H1E Portc = &H3C Taste4 = 1 '--- Sekunden-Punkt darf in diesem Fall nicht in der Multiplexroutine stehen --- Dezimalpunkt Alias Portc.2 'dezimalpunkt blinkt im halbsekunden takt Dim Sek_blink As Bit 'Zeit Voreinstellung laden aus EEProm Call Zeiteinstellung Enable Timer1 Stop Timer1 Timer1 = Timerpreset Enable Interrupts '******************************************************************************* Main: Tmp = 1 For Z = 1 To 4 Dezimalpunkt = Sek_blink I = I + 1 If I = 600 Then Sek_blink = 0 I = 0 End If Portd = Lookup(zeit(z) , Led_table) 'zahl aus Variable in 7segment anzeigen Portb = Tmp If Tccr1b = 0 Then 'wenn timer gestoppt, ist Relais aus Portb.5 = 1 'einzelnen segmente ansteuern End If Shift Tmp , Left , 1 Waitms 1 '----------------- Start/Stop und wenn geändert EEPROM-werte Schreiben --------- If Pinc.3 = 0 And Taste4 = 0 Then Eezeit(1) = Zeit(1) Eezeit(2) = Zeit(2) Eezeit(3) = Zeit(3) Eezeit(4) = Zeit(4) Kontrolle = 0 ' ERAM Kontrolle Taste4 = 1 ' reset changed End If '----------------- Reine Start/Stop Routien ------------------------------------ If Pinc.3 = 0 And Taste3 = 0 Then Taste3 = 1 ' disable start/stop If Tccr1b = 0 Then Start Timer1 Call Zeiteinstellung I = 0 ' reset blink-count Portc.1 = 1 'Relais ON Else Stop Timer1 Call Zeiteinstellung I = 0 ' reset blink-count Portc.1 = 0 'Relais OFF End If End If If Pinc.3 = 1 Then Taste3 = 0 ' enable start/stop End If '----------------- Minuten um 1 erhöhen Taster --------------------------------- If Pinc.4 = 0 And Taste2 = 0 And Tccr1b = 0 Then Taste2 = 1 ' disable up/down MIN Taste4 = 0 ' set changed Incr Zeit(2) If Zeit(2) = 10 Then Zeit(2) = 0 Incr Zeit(1) If Zeit(1) = 10 Then Zeit(1) = 0 End If End If If Pinc.4 = 1 Then Taste2 = 0 ' enable up/down MIN End If '------------Sekunde und Minuten = Null setzen --------------------------------- If Pinc.4 = 0 And Tccr1b = 0 And Pinc.5 = 0 Then Taste4 = 0 ' set changed Zeit(1) = 0 Zeit(2) = 0 Zeit(3) = 0 Zeit(4) = 0 End If If Pinc.4 = 1 And Pinc.5 = 1 Then End If Next Z '****************************************************************************** '----------------- Sekunden um 1 erhöhen Taster -------------------------------- If Pinc.5 = 0 And Taste1 = 0 And Tccr1b = 0 Then Taste1 = 1 ' disable up/down SEC Taste4 = 0 ' set changed Incr Zeit(4) If Zeit(4) = 10 Then Zeit(4) = 0 Incr Zeit(3) If Zeit(3) = 6 Then Zeit(3) = 0 End If End If If Pinc.5 = 1 Then Taste1 = 0 ' enable up/down SEC End If Goto Main '****************************************************************************** Ontimer1: Timer1 = Timerpreset Decr Zeit(4) Sek_blink = 1 I = 0 'blink counter If Zeit(1) = 0 And Zeit(2) = 0 And Zeit(3) = 0 And Zeit(4) = 0 Then Stop Timer1 Call Zeiteinstellung I = 0 Portc.1 = 0 'relais OFF Call Soundout 'Peep-peep End If If Zeit(4) = 255 Then Zeit(4) = 9 Decr Zeit(3) If Zeit(3) = 255 Then Zeit(3) = 5 Decr Zeit(2) If Zeit(2) = 255 Then Zeit(2) = 9 Decr Zeit(1) End If End If End If Return '----------- gespeicherte Timerwerte aus EEPROM laden -------------------------- Sub Zeiteinstellung If Kontrolle = &HFF Then ' neu oder gelöschter ERAM Zeit(1) = 0 Zeit(2) = 0 Zeit(3) = 0 Zeit(4) = 0 Else Zeit(1) = Eezeit(1) 'Minuten Zehner Zeit(2) = Eezeit(2) 'Minuten Einer Zeit(3) = Eezeit(3) 'Sekunden zehner Zeit(4) = Eezeit(4) 'Sekunden Einer End If End Sub Sub Soundout Portb.1 = 1 Portb.2 = 1 Portb.3 = 1 Portb.4 = 1 Sound Portc.0 , 400 , 100 Portb.1 = 0 Portb.2 = 0 Portb.3 = 0 Portb.4 = 0 Waitms 100 Portb.1 = 1 Portb.2 = 1 Portb.3 = 1 Portb.4 = 1 Sound Portc.0 , 400 , 100 Waitms 100 Portb.1 = 0 Portb.2 = 0 Portb.3 = 0 Portb.4 = 0 Sound Portc.0 , 400 , 100 Portb.1 = 1 Portb.2 = 1 Portb.3 = 1 Portb.4 = 1 End Sub End 'Parameter für 7Segment um diese Zahl Anzuzeigen über die Ausgänge Led_table: ' 0 1 2 3 4 5 6 7 8 9 Data &H40 , &H79 , &H24 , &H30 , &H19 , &H12 , &H02 , &H78 , &H0 , &H10






Zitieren
Lesezeichen