www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frunktioniert das Programm?


Autor: Thom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

da leider mein testboard kaputt ist wollte ich euch fragen ob das 
programm so funktioniert

    list p=16f84A
    #include <p16f84a.inc>
    __config  _PWRTE_ON & _WDT_OFF & _XT_OSC

ZAEHL1  equ 0c        ;Erster Zaehler für Warteschleife
ZAEHL2  equ 0d        ;Zweiter Zaehler für Warteschleife

;******************************************Initialisierung************** 
*************
Org 0

init
    bsf      STATUS, RP0
    movwf    B'00000000'
    movwf    TRISB
    bcf      STATUS, RP0
    clrf    PORTB

;*****************************************Programm********************** 
*************
loop
    bsf      PORTB, 0
    call    Loop1
    bcf      PORTB, 0
    call    Loop1
    goto     loop

Loop1
      decfsz ZAEHL1,1    ;Ziehe 1 ab von 255
    goto Loop1          ;wenn nicht 0, springe zu Loop1
    decfsz ZAEHL2,1   ;Ziehe 1 ab von 255
    goto Loop1
    return

    end

Danke im vorraus

Autor: Teplotaxl X. (t3plot4x1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dafür gibt es doch Simulatoren.

Autor: Thom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab noch nie was mim pic sim gemacht war immer auf atmel

Autor: taugenichts (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>da leider mein testboard kaputt ist wollte ich euch fragen ob das
>programm so funktioniert

Da du nicht schreibst, was das Programm machen soll, kann dir keiner 
sagen, ob es das macht, was du willst. Ich vermute aber, du willst Pin 
B0 toggeln. Das müsste so funktionieren.

Und - wer lehrt eigentlich immer soetwas:

>Org 0

>init
>    bsf      STATUS, RP0
>    movwf    B'00000000'
>    :


Beim PIC16*84* liegen bei

  0x0000 der Reset Vector und bei
  0x0004 der Peripheral Interrupt Vector

Da sollte man aus stiltechnischen Gründen nicht mit dem eigentlichen 
Code beginnen. Besser wäre generell eine Struktur wie:
 org  0x00              ; Reset Vector
 goto  Reset            ; -> zur Reset Routine

 org  0x04              ; Peripheral Interrupt Vector
 goto  ISR              ; -> zur Interrupt Service Routine


Reset:
  abc.....              ; hier irgendwelche initialisierungen
  xyz.....              ; hier irgendwelche initialisierungen
  :
  goto  main            ; und Programm starten

ISR:
  aaa.....              ; Hier die Interrupt Service Routine 
  :                     ; (falls Interrupts verwendet werden
  retfie                ; und ISR verlassen

main:
  ; hier das Programm beginnen

Autor: taugenichts (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... was übrigens fehlt, ist das Initialisieren der Zählervariablen 
ZAEHL1 und ZAEHL2. Du gehst einfach davon aus, dass der Wert beim 
Programmstart 255(dez) ist - aber ist das denn sichergestellt? Ich 
glaube nicht. Das ist zwar hier, bei diesem Programm nicht besonders 
wichtig, aber du solltest dir angewöhnen, auch bei kleinsten Programmen 
auf solche Sachen zu achten.

Autor: Thom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sowas lernt man in der Berufsschule :)

Die LED soll blinken am RB0

Danke für eure Tips

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.