Autor Thema: Pic 16F887 überspringt Tasterabfrage  (Gelesen 2570 mal)

Offline Pielo

  • Newbie
  • *
  • Beiträge: 1
    • Profil anzeigen
Pic 16F887 überspringt Tasterabfrage
« am: Oktober 10, 2013, 10:12:52 Vormittag »
Hallo,

ich, kleiner Anfänger, habe folgendes Problem.

Egal ob ich ein Lauflicht, Blinklicht oder einfach eine LED einschalten will, das Programm im 16F887 läuft sofort los, ohne auf die Taster zu achten. Wenn ich die Programme in ein anderen PIC versuche (z.b 16F627A oder 16F84A) oder über die Simulation von MPLAB funktionieren sie ohne Probleme.

Programmer: PICkit2
Versuchsplatine: http://imageshack.us/photo/my-images/32/vhkf.jpg/

Code: (asm) [Auswählen]

;**********************************************************************
;   This file is a basic code template for assembly code generation   *
;   on the PIC16F887. This file contains the basic code               *
;   building blocks to build upon.                                    *
;                                                                     *
;   Refer to the MPASM User's Guide for additional information on     *
;   features of the assembler (Document DS33014).                     *
;                                                                     *
;   Refer to the respective PIC data sheet for additional             *
;   information on the instruction set.                               *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Filename:       xxx.asm                                           *
;    Date:                                                            *
;    File Version:                                                    *
;                                                                     *
;    Author:                                                          *
;    Company:                                                         *
;                                                                     *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Files Required: P16F887.INC                                      *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Notes:                                                           *
;                                                                     *
;**********************************************************************


   list      p=16f887   ; list directive to define processor
   #include   <p16f887.inc>   ; processor specific variable definitions


   __CONFIG    _CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_OFF & _WDT_OFF & _HS_OSC
   __CONFIG    _CONFIG2, _WRT_OFF & _BOR40V


Zaehler1   equ 0x20
Zaehler2   equ 0x21
Zaehler3   equ 0x22

   ORG    0x00            ;Power On Reset Startadresse

INIT   


   BSF              STATUS,RP1          ;Bank 2
   BCF          CM1CON0,C1ON   ;Comparator 1 ist aus
        BCF          CM2CON0,C2ON   ;Comparator 2 ist aus

   BANKSEL      PORTA   
   CLRF        PORTA          ;Init PORTA
   BANKSEL      ANSEL   
   CLRF        ANSEL          ;digital I/O
   BANKSEL      TRISA   
   MOVLW        B'00000010'    ;RA1 Input setzen
        MOVWF        TRISA         

             BCF      STATUS,RP0                         ;Bank 2
             BCF      STATUS,RP1                         ;Bank 0
   
             CLRF     PORTB                               ;Init PORTB
             BSF       STATUS,RP0                       ;Bank 1
             BSF       STATUS,RP1                       ;Bank 3
             CLRF     ANSELH                             ;digital I/O
             BCF       STATUS,RP1
   
             MOVLW  B'00000000'                     ;Alle als Output
             MOVWF  TRISB           
             BCF        STATUS,RP0                      ;Bank 0


HAUPTSCHLEIFE   
   
      CALL           Pause
      CLRF           PORTB
      BTFSS   PORTA,1                  ; PRÜFEN OB SW1 GEDRÜCKT; WENN NEIN ÜBERSPRINGE NÄCHSTEN SCHRITT
      CALL           LED               ; LED aufrufen
      GOTO    HAUPTSCHLEIFE     

LED
      MOVLW    B'00000001'     
      MOVWF    PORTB                        ; Bits setzen
      CALL           Pause
      MOVLW   D'5'
      MOVWF   Zaehler3
Schleife
      BTFSC   PORTA,1                  ; PRÜFEN OB SW1 GEDRÜCKT; WENN NEIN ÜBERSPRINGE NÄCHSTEN SCHRITT
      GOTO   HAUPTSCHLEIFE     
      CALL           Pause
      RLF      PORTB            ; schiebe Bit in Port B um eins weiter
      DECFSZ   Zaehler3,1
      GOTO   Schleife                 ; springe zu Schleife
      GOTO   LED

Pause
      MOVLW   D'250'            ; Wert für Zaehler1 ins WReg
      MOVWF   Zaehler1                 ; Wert vom WReg in Zeahler1
      CALL           Pause_1     
      DECFSZ   Zaehler1,1         ; Dec Zaehler1
      GOTO   $-2               ; wenn Zaehler1 nicht 0 dann springe 2 zurück
      RETURN   
Pause_1
      MOVLW   D'250'            ; Wert für Zaehler2 ins WReg
      MOVWF   Zaehler2                 ; Wert vom WReg in Zeahler2
Dek
      NOP
      DECFSZ   Zaehler2,1         ; Dec Zaehler2
      GOTO   Dek               ; gehe zu Dek
      RETURN                  ; zurueck zum Ursprung

   END

Könnte das Problem an der Config liegen?

***lg Pielo***



[Edit] Das Problem ist gelöst. Es war der fehlende Pulldown Widerstand am Taster.
« Letzte Änderung: Oktober 10, 2013, 12:51:49 Nachmittag von Pielo »

Offline cockpit123

  • Newbie
  • *
  • Beiträge: 5
    • Profil anzeigen
Re: Pic 16F887 überspringt Tasterabfrage
« Antwort #1 am: Oktober 19, 2013, 23:47:15 Nachmittag »
Hm,

vielleicht darin das der Taster an RA0 angeschlossen ist. Laut Code aber an RA1.
Würde aber noch in einen Pull-UP-Widerstand am Eingang investieren.

 Gruß

 


* Recent Topics