Hallo zusammen,
schon hat sich das nächste Problem angebahnt:
Ich will ein Programm schreiben, dass je nach gedrückter Taste an PortA eine LED-Folge an Port B schaltet.
Hier der Code:
Code:
list p=16f870
#include <P16f870.INC>
__config _LVP_OFF & _HS_OSC & _WDT_ON & _PWRTE_ON & _CP_OFF & _CPD_OFF & _BODEN_ON & _DEBUG_OFF
ORG 0x00
NOP
goto Init
ORG 0x04 ;ein interrupt?
retfie
Init
bsf STATUS, RP0 ;auf Bank 1 umschalten
bcf STATUS, RP1 ;auf Bank 1 umschalten
MOVLW 0x06
MOVWF ADCON1
movlw B'11111111'
movwf TRISA
movlw B'00000000'
movwf TRISB
bcf STATUS, RP0 ; auf Bank 0 umschalten
clrf PORTB
start
clrf PORTB ;PortB alle LED's ausschalten, wenn keine Taste gedrückt
nop
schleife
nop
BTFSC PORTA, 0 ;Wenn Taste1 nicht gedrückt, dann überspringen
goto test1 ;ansonsten PORTB entsprechend setzen
BTFSC PORTA, 1 ;Wenn Taste2 nicht gedrückt, dann überspringen
goto test2 ;ansonsten PORTB entsprechend setzen
goto start ;Wenn nichts gedrückt, dann von vorne
test1
movlw B'00101101'
movwf PORTB
goto schleife
test2
movlw B'00010010'
movwf PORTB
goto schleife
end
Nun, wenn ich Taste1 drücke dauert es eine Weile bis PortB die Folge '00101101' zeigt. Das selbe Problem habe ich bei Taste2 auch...
Kann mir jemand sagen, was ich falsch mache?
Beschaltung an PortA mit PullDown Widerständen und Tastern. Led's und deren Vorwiderstände zwischen PortB und 0V.
mfG. Michael
Lesezeichen