Forum: Mikrocontroller und Digitale Elektronik PIC Port B Spinnt


von Jens H. (huette)


Lesenswert?

Hi,

ich hab da mal wieder ein Problem. 16F84A
Ich möchte gerne ein ganz einfaches Lauflicht haben, aber leider macht 
mir der Port B zu schaffen.

Port B0/1 wollen einfach nicht mit machen. Der rest arbeitet 
einwandfrei.

Muss ich irgend wo noch was mit dem Interrupt umstellen.
ich find einfach keine Lösung.

Habe das Programm auf 2 PIC´s laufen lassen und es ist auf beiden das 
selbe problem.

Sollte jemand einen 16F84A rumliegen haben kann er ja mal probieren ob 
bei ihm das selbe passiert.

schon mal danke für eure Hilfe.



;**********************************************************************
;   This file is a basic code template for assembly code generation   *
;   on the PIC16F84A. This file contains the basic code               *
;   building blocks to build upon.                                    *
;                                                                     *
;   If interrupts are not used all code presented between the ORG     *
;   0x004 directive and the label main can be removed. In addition    *
;   the variable assignments for 'w_temp' and 'status_temp' can       *
;   be removed.                                                       *
;                                                                     *
;   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.                               *
;                                                                     *
;   Template file built using MPLAB V4.00 with MPASM V2.20 and        *
;   MPLINK 1.20 as the language tools.                                *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Filename:      Lauflicht-BK.asm                                  *
;    Date:          07.03.2007                                        *
;    File Version:  1.0                                               *
;                                                                     *
;    Author:        Jens Huettenrauch                                 *
;    Company:       Selfmade                                          *
;                                                                     *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Files required:                                                  *
;                                                                     *
;                                                                     *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Notes:                                                           *
;                                                                     *
;                                                                     *
;                                                                     *
;                                                                     *
;**********************************************************************


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

  __CONFIG   _CP_OFF & _WDT_OFF & _PWRTE_OFF & _HS_OSC

; '__CONFIG' directive is used to embed configuration data within .asm 
file.
; The lables following the directive are located in the respective .inc 
file.
; See respective data sheet for additional information on configuration 
word.




;***** VARIABLE DEFINITIONS (examples)

zeit250  Equ  0x22    ; Zähler für Warteschleife
zeit1  Equ  0x23    ; Zähler für Warteschleife
lauf  Equ 0x24    ; Speicherzelle fuer Lauflicht

;**************************************************************
; Organiesirung

  org    0x00    ; Hier startet der Prozessor
  goto  Main    ; Springe zum Hauptprogramm

  org    0x04    ; Hier startet der Interupt wenn aktiv

;**********************************************************************
; Hauptprogramm
  org    0x10
Main          ; los gehts mit dem Programm

; Port B auf Ausgabe stellen

Init
  bsf     STATUS, RP0  ; auf Bank 1 umschalten
  movlw  B'00000000'  ; W mit 0 Fuettern
  movwf  TRISB    ; Lade in Initregister B Bank 1
  bcf     STATUS, RP0  ; auf Bank 0 zurückschalten
  clrf  PORTB    ; alle LEDs ausschalten
  clrf  lauf    ; Speicherzelle auf def. Zustand bringen
;  clrz
;  clrc

; 1. LED einschalten
Init1
  movlw  B'00000001'
  movwf  lauf
  clrz
  clrc
Lauf1
  movfw  lauf
  movwf  PORTB
  call  Wait250
  bz    Init2
  rlf    lauf
  goto  Lauf1
Init2
  movlw  B'10000000'
  movwf  lauf
  clrz
  clrc
Lauf2
  movfw  lauf
  movwf  PORTB
  call  Wait250
  bz    Init1
  rrf    lauf
  goto  Lauf2



;**********************************************************
; Warteschleife 250 ms

Wait250          ; 250 ms Pause
  movlw  D'250'    ; Zeitkonstante für 250ms
  movwf  zeit250    ; Speicherzelle für 1 ms Multiplikator
;**********************************************************
; Warteschleife 1 ms
Wait1          ; 1 ms Pause
    movlw   .249    ; Zeitkonstante für 1ms
        movwf   zeit1  ; Speicherzelle für Warteschleife
Wai2    nop        ; Warte einen Takt ab
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    decfsz  zeit1,F  ; verringere um eins
    goto   Wai2  ; Ist 1ms vorbei
    decfsz   zeit250,F; erringere um eins
    goto   Wait1  ; Ist 250ms vorbei
    retlw 0      ; Springe zurück zum Call

  end
;*********************************************************************

von Jens H. (huette)


Lesenswert?

Hi,

ich bin ja sowas von sau blöd das tut schon weh!!!


Port b0 und b1 waren mit einer Lötbrücke verbunden, deshalb war immer
PB0=PB1 klar das das nicht geht.

>> ich IDIOT <<

trotz dem danke
bis zum nächsten mal

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.