Erstmal danke für eure Mühe!
Es funktioniert alles bestens in dem oben genannten Beispiel.
=D>
Doch bei meiner Weiterentwicklung gibt es so einige Probleme.
Ich verwende den PIC16F84A und habe an PortB LEDs mit Widerständen angeschlossen. An PortA.3 (Pin 2) ist ein Taster mit einem 2.7kOhm-Widerstand angeschlossen, der bei Knopfdruck zu PortA.2 (Pin 1) schließt.
Die LEDs sollen leuchten, wenn der Taster gedrückt ist.
Mein Quelltext:
Code:
list p=16f84
; Includedatei für den 16F84 einbinden
#include <P16F84A.INC>
; Configuration festlegen
; bis 4 MHz: Power on Timer, kein Watchdog, XT-Oscillator
__CONFIG _PWRTE_ON & _WDT_OFF & _XT_OSC
;**************************************************************
; Variablen festlegen
;**********************************************************
; los gehts mit der Initialisierung
Init
bsf STATUS, RP0 ; auf Bank 1 umschalten
movlw B'00000000' ; PortB alle output
movwf TRISB
bcf STATUS, RP0 ; auf Bank 0 zurückschalten
clrf PORTB ; alle LEDs ausschalten
movwf PORTB
BCF TRISA,3; PortA,3 wird auf output geschaltet
BSF TRISA,2 ; PortA,2 wird auf input geschaltet
BSF PORTA,3 ; PortA,3 wird auf high gesetzt
; das Folgende ist die Hauptschleife, die endlos durchlaufen wird
Main
call Tastaturbehandlung ; Tastatur abfragen
goto Main2 ; keine Taste gedrückt
Main2
goto Main
Tastaturbehandlung
btfsc PORTA, 2 ; ist RA2 nicht high?
movlw B'00000000' ;dann werden alle LEDs ausgeschaltet
btfss PORTA, 2 ; ist RA2 high?
movlw B'11111111' ;dann werden alle LEDs eingeschaltet
movwf PORTB
return
end
Seltsamerweise gehen die LEDs schon an, wenn ich mein Experimentboard mit der Hand berühre.
Ist da vielleicht ein Wackelkontakt drin? (Das Board ist nagelneu!)
Gruß,
Sebastian
Lesezeichen