Einsteigerproblem mit PIC16F627

Gast #903724
Lesenswert?
• ▲
▼
Hallo,

hab mal eine Frage zum programmieren eines PIC Controllers.

Ich habe mir das Programmier- und Experimentierboard von Velleman (P8048 
/ VM111) bei Conrad besorgt.
Jetzt bin ich dran, ein paar Spielereien mit den LED und Tastern 
vorzunehmen, aber irgendwie will das gar nicht so recht funktionieren.
Ich benutze die Entwicklungsumgebung PIKLAB und die GPUtils unter 
debian.
Wenn ich die Bespielprogramme von der beigelegten CD reinschiebe 
funktioniert das alles wunderbar.
Probiere ich aus, irgendetwas selbst zu schreiben, dann scheint das 
blöde Ding gar nicht zu reagieren. Entweder sind nach einem Reset alle 
LEDs an oder aus.
Dabei wollte ich lediglich eine LED zum blinken bewegen, oder, solange 
eine Taste gedrückt ist, eine LED zum leuchten bringen.

Was mache ich falsch?
Sind irgendwelche Config Einstellungen zu beachten? Im Anschluss 
befindet sich das Prog, welches eine LED bei Tastendruck leuchten lassen 
soll.
PORTB<0:5> sind die LEDS und PORTA<0:3> die Taster.

Ich weiß echt nicht weiter, selbst das Umsetzen der Beispiele bei 
sprut.de laufen irgendwie nicht. Wird hängt der sich in irgendeiner 
Schleife auf? Springt evtl. ein Interrupt an?
WDT ist aus, somit sollte die Fehlerquelle nicht in Betracht kommen.


Schon einmal vielen Dank im voraus für Eure Hilfe.

Gruß,
Thomas

; 
-----------------------------------------------------------------------
; Template source file generated by piklab
    #include <p16f627.inc>

; 
-----------------------------------------------------------------------
; Configuration bits: adapt to your setup and needs
    __CONFIG _WDT_OFF & _PWRTE_ON & _XT_OSC & _MCLRE_ON & _BODEN_ON & 
_LVP_OFF & _DATA_CP_OFF & _CP_OFF

; 
-----------------------------------------------------------------------
; Variables declaration
INT_VAR UDATA_SHR
w_saved      RES 1 ; variable used for context saving
status_saved RES 1 ; variable used for context saving

var1         RES 1 ; Beispiel-Variable


; 
-----------------------------------------------------------------------
; reset vector
STARTUP CODE 0x000
    nop                    ; Benötigt für ICD2-Debugging
    movlw   high Reset     ; load upper byte of 'start' label
    movwf   PCLATH         ; initialize PCLATH
    goto    Reset          ; go to start of main code

; interrupt vector
INT_VECTOR CODE 0x004
    goto    interrupt      ; go to start of interrupt code

; relocatable code
PROG CODE
interrupt
    movwf   w_saved        ; save context
    swapf   STATUS,w
    movwf   status_saved
    ; << insert interrupt code >>
    swapf   status_saved,w ; restore context
    movwf   STATUS
    swapf   w_saved,f
    swapf   w_saved,w
    retfie

Reset  bsf  STATUS,RP0
  movlw  b'00001111'
  movwf  TRISA
  movlw  b'00111111'
  movwf  TRISB
  bcf  STATUS,RP0
  bcf  INTCON,GIE
  bcf  INTCON,INTF
  bcf  CMCON,CM2
  bcf  CMCON,CM1
  bcf  CMCON,CM0
;  clrf  PORTB

start  movf  PORTA,W
  movwf  PORTB,F
  goto    start              ; loop forever


END
Gast #903824
Lesenswert?
• ▲
▼
Hallo Thomas,

zuerst mal:
    movlw   high Reset     ; load upper byte of 'start' label
    movwf   PCLATH         ; initialize PCLATH
 kannst du dir sparen

  bcf  INTCON,GIE
es wird kein Interrupt ausgeführt (wobei bei dir eh nichts drinsteht)

  movlw  b'00111111'
  movwf  TRISB

wenn bei dir an PORTB,0:5 die LED´s dran sind, musst du

  movlw  b'00000000'
  movwf  TRISB

schreiben und die PORTB,0:5 als Ausgänge definieren (0 = OUTPUT, 
1=INPUT)

Pull-Up-Widerstände an den Tastern nicht vergessen, falls nicht schon 
vorhanden!

MfG

Erhard

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.