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