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:
Nun, wenn ich Taste1 drücke dauert es eine Weile bis PortB die Folge '00101101' zeigt. Das selbe Problem habe ich bei Taste2 auch...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
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







Zitieren

Lesezeichen