Hallo zusammen,
Ich habe ein Programm geschrieben, welches im Prinzip aus einem Taster einen Umschalter machen soll.
Das heißt, wenn der Taster gedrückt wird, sollen zwei LEDs angeschaltet werden und das Programm in einer Abfrageschleife bleiben.
Bei erneutem drücken sollen die LEDs wieder aus gehen und das Programm in einer anderen Schleife den Taster abfragen.
Leider scheint es irgendwie Probleme bei der Abfrage zu geben und mal wird der Befehl übersprungen und mal nicht (obwohl der Taster nicht betätigt wird)
Ich habe schon an einigen Stellen des Programms andere LEDs bzw. ausgänge auf 1 gesetzt und dadurch gesehen, dass das Programm wild durchsprungen wird, ohne den Taster korrekt abzufragen.
Jetzt vermute ich, das irgendetwas mit der Initialisierung des Tasters nicht stimmt. Oder liegt es vielleicht doch an der Hardware?
Vielen Dank fürs durchschauen.
Code:;$$$$$$$$$$$$$$ -- CONFIG -- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ list p=16f84a include "p16f84a.inc" __config _XT_OSC & _PWRTE_OFF & _WDT_OFF & _CP_OFF ;CONFIG cblock 0x22 ; Variablen kenzeichnen ZAEHLER1 ZAEHLER2 endc ;$$$$$$$$$$$$$$$$ -- INIT -- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ org 0x00 bsf STATUS, RP0 ;Wechsel in Bank 1 movlw 0x00 ;PORTB OUTPUT movwf TRISB ; movlw 0x01 ;PORTA INPUT movwf TRISA ; bcf STATUS, RP0 ;Wechsel in Bank 0 clrf PORTB movlw 0x00 ;PORTB, setze alle Bits 0 movwf PORTB goto main ;$$$$$$$$$$$$$$ -- MAIN -- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ main movlw 0x00 ;PORTB, setze alle Bits 0 movwf PORTB call wait loop ;Abfrage von Taster BTFSS PORTA,0 CALL switch goto main ;$$$$$$$$$-SUBRUTINES-$$$$$$$$ switch movlw 0x03 ;PORTB, setze Bits 1 und 2 movwf PORTB call wait loop3 BTFSS PORTA,0 call main call wait goto loop3 return wait ;Warteschleife loop1 decfsz ZAEHLER1,1 goto loop1 decfsz ZAEHLER2,1 goto loop1 loop2 decfsz ZAEHLER1,1 goto loop2 decfsz ZAEHLER2,1 goto loop2 return end
http://mitglied.lycos.de/schtiewen/switchbox.bmp " rel="nofollow" target='_blank'>Bild hier







Zitieren


Lesezeichen