- Labornetzteil AliExpress         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 28

Thema: wie programmiere ich einen Taster auf 2 befehle

  1. #11
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    19.01.2005
    Beiträge
    146
    Anzeige

    Powerstation Test
    atmega8 habe ich

  2. #12
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.04.2006
    Beiträge
    153
    Wo soll die eingabe erfolgen?? Welche PIN? PINB, PINC oder PIND?? Und welches bit soll angesprochen werden?

    mfg
    Mike

  3. #13
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.04.2006
    Beiträge
    153
    ach ja noch was! Mach es in Assembler! ist leichter!
    Wenn du es in assembler machen willst kann ich dir vielleicht helfen, weil ich sowiso öfters mit assembler arbeite!

    MFG
    Mike

  4. #14
    Neuer Benutzer Öfters hier
    Registriert seit
    20.04.2006
    Beiträge
    9
    Zitat Zitat von BiGF00T
    EDIT: 你看懂了我的名字吧? (mein Chinesisch is nicht wirklich gut aber wenn ich paar Zeichen hab, dann hab ich zumindest mal im Wörterbuch nachgeschaut was sie bedeuten. Zum überleben in China langts grad...)
    klar habe ich verstanden^^.

  5. #15
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    14.04.2006
    Ort
    Stuttgart
    Alter
    45
    Beiträge
    321
    Zitat Zitat von Exodus
    ach ja noch was! Mach es in Assembler! ist leichter!
    Wenn du es in assembler machen willst kann ich dir vielleicht helfen, weil ich sowiso öfters mit assembler arbeite!

    MFG
    Mike
    Hmm... Ob jemand gleich in Assembler loslegen will, der grad in Basic rummacht... Wobei es auch wirklich ned sooo schwer is. Wenn ich es testen könnte, würde ich schnell was zusammenschrauben aber ich habe weder Bascom, noch habe ich seit qbasic-Zeiten irgendwas in der Art gemacht...
    Glaube aber trotzdem, dass basic oder C am Anfang zumindest viel übersichtlicher und einfacher zu verstehen sind. Nachdem man das Prinzip in einer der Sprachen dann verstanden hat, kann man es meist eh in allen anwenden.

    @sephi23: 你去什么地方都有很多个中国人。(stimmt das?)
    Egal wo man hingeht, es gibt immer viele Chinesen da.
    Meist isses sogar ein ganzer Haufen
    Bist du einer davon oder kannst du nur Chinesisch oder hast du das gebabelfisht?

  6. #16
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    19.01.2005
    Beiträge
    146
    am port c währe gut und die pins 0 1 2


    könntest du es im Bascom machen da ich kein assembler kann und ich erst gerade angefangen habe mit progen und nicht die sprache wechseln möchte

  7. #17
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.04.2006
    Beiträge
    153
    Bascom kann ich leider nicht! Mach ma so! Ich probiers in Assembler und schicke dir dass Programm! OK?

    MFG
    Mike

  8. #18
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.09.2005
    Ort
    Osnabrücker Land
    Alter
    63
    Beiträge
    534
    Also mal meine Vorgehensweise als IDEE - allerdings komme ich aus der Zeh-Welt, also keine Ahung was Basic da hergibt.

    Timer Interrupt alle 2 ms - Timerfunktion:

    Wenn Taster gedrückt, dann hierbei Variable hochzählen
    danach auswerten:
    wenn Schwellwert I erreicht (z.b 200 entsp. 100 ms Tastendrücken), Flag setzen
    nach Schwellert Ia erreicht und Flag I gesetzt und kein Tastendruck mehr, dann wars ein kurzer Tastendruck - entsp. Flag setzen *)

    wenn Schwellwert II erreicht (z.b. 500 entsp. 1 s tastendrücken), dann langer Tastendruck erreicht - entsp. Flag setzen *)

    *)die Flags werden außerhalb der Timerfunktion ausgewertet und wieder gelöscht

    Hat auch den Vorteil, daß man nebenbei die Taste entprellt ...

    Wer keinen langen Tastendruck aber doppelmeldung will, muß einfach nur nach Flag Ia den Zähler zurücksetzen

    Ich nutze die lange Tastenerkennung um z.B. Einstellungen zu speichern (so wie beim Autoradio) .. das spart ja/nein gefrage

    Zähler muß auch gelöscht werden, wenn Schwellerte nicht erreicht werden. Hierzu zweiten Zähler verwenden ...

    Hoffe die Idee kommt an ...

    Die Vorgehensweise hat auch den Vorteil, daß kein Ausbremsen des uC stattfindet wie z.b. wenn man wait befehle einbaut - diese sollte man auch nie in Interruptroutinen verwenden ! Meine Meinung.

    Hop it helps,
    Vajk
    Ich kann mir keine Signatur leisten - bin selbständig!

  9. #19
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.04.2006
    Beiträge
    153
    Hi VAJK!
    Kann dass so stimmen?

    #include <m8def.inc>

    ldi R16, 0xff ;In R16 Wert 0xff laden
    ldi R17, 0x01 ;In R17 Wert 0x01 laden
    ldi R24, 0x02 ;In R24 Wert 0x02 laden
    ldi R21, 255 ;In R21 Wert 255 laden
    ldi R23, 0b00000010 ;In R23 Wert 0b0000010 laden
    ldi R24, 0b00000100 ;In R24 Wert 0b00000100 laden

    Start:
    in R18, PINC ;Schreibe in R18, PINC
    cpse R17, R18 ;Vergleiche R17 mit R18. Wenn gleich nächsten Schritt (rjmp Start) überspringen
    rjmp Start ;Springe zu Start

    Einmal:
    out PORTC, R23 ;Ausgabe an PORTC, R23
    in R18, PINC ;Schreibe in R18 PINC
    cpse R17, R18 ;Vergleiche R17 mit R18. Wenn gleich nächsten Schritt (rjmp Einmal) übersrpingen
    rjmp Einmal ;Springe zu Einmal
    cbi PINC, 0x00 ;Alle Bit´s in PINC löschen
    rjmp Zeitschleife ;Springe zu Zeitschleife

    Zweimal:

    out PORTC, R24 ;Ausgabe an PORTC, R24
    in R18, PINC ;Schreibe in R18, PINC
    cpse R17, R18 ;Vergleiche R17 mit R18. Wenn gleich nächsten Schritt (rjmp zweimal) überspringen
    rjmp Zweimal ;Springe zu Zweimal
    rjmp Einmal

    Zeitschleife:
    inc R20 ;erhöhe R20 um 1
    cpse R20, R21 ;Vergleiche R20 mit R21
    rjmp Zeit ;Springe zu Zeit
    inc R22 ;erhöhe R22 um 1

    Zeit:
    sbrs R22, 0x05 ;Vergleiche R22 mit 0x05. Wenn gleich nächsten Schritt (rjmp Abfrage) überspringen
    rjmp Abfrage ;Springe zu Abfrage
    cbr R22, 0x20 ;Lösche alles in R22
    rjmp Einmal ;Springe zu Einmal

    Abfrage:
    in R18, PINC ;Schreibe in R18, PINC
    cpse R17, R18 ;Vergleioche R17 mit R18. Wenn gleich nächsten Schritt (rjmp Zeitschleife) überspringen
    rjmp Zeitschleife ;Springe zu Zeitschleife
    cbi PINC, 0x00 ;In PINC alle Bit´s löschen
    cbr R18, 0x01 ;Lösche alles in R18
    rjmp Zweimal ;Springe zu Zweimal

  10. #20
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    19.01.2005
    Beiträge
    146
    danke viel mal jetzt müsste ich das nür noch irgend wie für Bascom ändern aber wie?

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress