hey hab mal n kleinen code geschrieben müsste eig relativ selbst erklärend sein wen was unklar ist einfach frage bitte fersuch mal ob es so funktioniertmüsste so eig funktionierenCode:$regfile = "M16def.dat" $crystal = 8000000 Config Timer1 = Timer , Prescale = 1024 'hier wird der timer configuriert Timer1 = 57722 On Timer1 Ontimer1 'bei einem timerüberlauf springt der controller zu ontimer0 Config Portd = Input Config Portc = Output Dim Zeit As Byte Taster1 Alias Pind.1 Taster2 Alias Pind.0 Hauptprogramm: Do If Taster1 = 0 Then Gosub Relais1 If Taster2 = 0 Then Gosub Relais2 Loop Relais1: Enable Timer1 'der timer wird eingeschaltet Enable Interrupts 'die interrupts werden eingeschaltet (hier nur der timer interrupt ist nötig dass der AVR interrupts zulässt) Portc.0 = 1 Do If Zeit < 1 Then ' wen die zeit Über 1 sekunde ist werden der timer und die interrupts wieder deaktiviert Disable Timer0 Disable Interrupts Portc.0 = 0 'das relai fällt ab Goto Hauptprogramm 'der controller verlässt die do loop schleife und kommt weider zum hauptprogramm zurück End If Loop Return Relais2: Enable Timer1 Enable Interrupts Portc.1 = 1 Do If Zeit < 2 Then Portc.1 = 0 Goto Hauptprogramm End If Loop Return Ontimer1: ' hier der timer interrupt Zeit = Zeit + 1 ' zeit wird um eins erhöht Timer1 = 57722 Return ' der timer bekommt einen wert dass er nicht die vollen 65535 takte zählen muss das würde länger als eine sekunde dauern ' der controller kehrt zum programm zurück
einfach für die anderen relais erweitern
wen etwas unklar ist einfach fragen
Lesezeichen