Ich hab die Bascom Feinheiten jetzt nicht im Kopf, aber wenn du einen Eingang abfragen willst, musst du das über PIN.X machen.
Werbung
Ich hab die Bascom Feinheiten jetzt nicht im Kopf, aber wenn du einen Eingang abfragen willst, musst du das über PIN.X machen.
Hallo!
Also du hast ein paar Fehler in deinem Programm. Zunächst musst du lernen die If Abfrage richtig anzuwenden. Das Grundkonstrukt sieht folgendermaßen aus:
Bei dir kommt das Wort "then" mehrfach vor. Das ist nicht notwendig, da alles was zwischen If und End If steht ausgeführt wird. Korrigiert würde dein Code so aussehen:Code:If BEDINGUNG then Hier der code der ausgeführt werden soll wenn If zutrifft End If
Unter das letzte Loop gehört zusätzlich noch das Wort END. Was du auch noch beachten musst ist die richtige Schreibweise der eingebundenen Bibliothek.Code:if PINB.1 = 1 Then Portb.2 = 1 Portb.3 = 1 Waitms 300000 Portb.4 = 1 Portb.2 = 0 Portb.3 = 0 Waitms 1000 Portb.4 = 0
Du hast attiny13.dat geschrieben aber die Datei heißt glaube ich ATtiny13.dat. Also groß und kleinschreibung beachten!
Das Confic Timer0 in deinem Quellcode ist überflüssig da du keinen Timer in deinem Programm benutztund wie schon erwähnt wurde: Bei Inputs nimmt man
PinX.X anstelle von PortX.X auch wenn viele sagen das es auch anders geht.
Hoffe ich konnte helfen!
nicht vergessen, den Summer wieder auszuschalten.
Hallo,
ich habe den Quellcode nun folgendermaßen Programmiert:
Dieser funktioniert nun auch schon sehr gut. Deshalb schon einmal ein großes Danke für die Hilfe.Code:'10 Minuten Timer mit 2 Schaltausgängen PB2 und PB3 / Buzzer an PB4 'Taktfrequenz 1200 KHz '------------------------------------------------------------------------------- 'Grundeinstellungen '------------------------------------------------------------------------------- $regfile = "attiny13.dat" $crystal = 1200000 'Standard- Takt 9,6 MHz / 8 $hwstack = 0 $swstack = 0 $framesize = 0 Baud = 9600 Config Pinb.1 = Input 'Taster(S1) Config Portb.2 = Output 'Schaltausgang1 Config Portb.3 = Output 'Schaltausgang2 Config Portb.4 = Output 'Buzzer '------------------------------------------------------------------------------- 'Hauptprogramm '------------------------------------------------------------------------------- Do 'Beginn der Schleife If Pinb.1 = 1 Then 'Anfang Der If Bedingung Portb.2 = 1 'Schaltausgang1 wird gesetzt Portb.3 = 1 'Schaltausgang2 wird gesetzt Wait 600 '10 Minuten warten Portb.2 = 0 'Schaltausgang1 wird resetet Portb.3 = 0 'Schaltausgang2 wird resetet Portb.4 = 1 'Buzzer wird gesetzt Wait 2 '2 Sekunden warten Portb.4 = 0 'Buzzer wird resetet End If 'Ende der If Bedingung Loop 'Ende der Schleife End 'Programm Ende
Mich würde aber auch noch einmal interessieren, wie man das mit dem Ton für den Buzzer programmiert? Und was müsste ich ändern wenn ich zwei Zeiten haben möchte ( 5 Minuten über einen Taster S1 einschaltbar und 10 Minuten über einen Taster S2 einschaltbar ). Den Taster S2 würde ich dann an PB0 anschließen.
Gruß
John13
Hallo,
es ist nicht einfach auf Deine Fragen zu antworten, weil sie sehr allgemein sind.
Ton für Buzzer: es gibt so viele Töne... Wie funktioniert Dein Buzzer (wie muß der angesteuert werden)? Anscheinend, nach Deinem Programm (Gratuliere übrigends), hast Du den ja schon in Betrieb.
Zwei Zeiten: ???
Müßtest genau, Schritt für Schritt beschreiben, was genau passieren soll wenn Du was machst.
Danach kannst Du das Programm schon fast selbst schreiben. Konkrete Fragen zu einem geposteten Programm lassen sich viel einfacher beantworten.
Gruß
Searcher
Hoffentlich liegt das Ziel auch am Weg
..................................................................Der Wegzu einigen meiner Konstruktionen
Hallo Searcher,
ich habe mal das Datenblatt von meinem verwendeten Piezo Signalgeber angehängt. Dann werde ich jetzt mal die gewünschte Funktion beschreiben:
Wenn ich den Taster (S1) kurz betätige, soll eine Zeit von 5 Minuten ablaufen. Wird anstatt dem Taster (S1) der Taster (S2) betätigt sollen 10 Minuten ablaufen. Wärend dieser Zeit sollen die Schaltausgänge 1 und 2 geschaltet werden. Nachdem die Zeit Abgelaufen ist, sollen die Schaltausgänge 1 und 2 wieder abgeschaltet werden. Sobalt die Schaltausgänge 1 und 2 abgeschaltet wurden soll am Schaltausgang 3 ein Piezo Signalgeber / Summer für 2 Sekunden angesteuert werden. Den Port ( PB5) habe ich mir als Reset Option überlegt.
Taster (S1) --> PB0
Taster (S2) --> PB1
Taster (S3) (Reset) --> PB5
Schaltausgang 1 --> PB2
Schaltausgang 2 --> PB4
Schaltausgang 3 (Piezo Signalgeber / Summer) --> PB3
Gruß
John13
Geändert von John13 (12.04.2011 um 16:35 Uhr)
Lesezeichen