PIC16F84A-04 Programm anhand PAP schreiben

OP #1603295
Lesenswert?

Ich soll bis Morgen ein PIC-Programm anhand des Programmablaufplanes mit 
Assembler entwerfen. PIC 16F84A-04 wird in der Schaltung verwendet.

Kann mir da mal jemand helfen, wie ich dabei vorgehe? Grundgerüst ect.?
Angehängte Dateien:
Gast #1603364
Lesenswert?

Na wenn dir dein Ausbilder diese Aufgabe gegeben hat, dann wirst du ja 
schon mal in Assembler programmiert haben bzw. dein Ausbilder wird davon 
ausgehen, dass du diese Aufgabe lösen kannst.
Und da du ja schon Assembler kennst, dann kennst du auch ein Grundgerüst 
für diesen PIC.
Hausaufgaben werden hier eigentlich generell nicht beantwortet. Wenn du 
eine konkrete Frage zu einem Unterproblem hast, gerne her damit.

Grundgerüst:
1
    list  p=pic16f84,f=inhx8m,n=85,st=off
2
        ;gültiger prozessor = PIC16F84
3
    include <ip16f84.inc>
4
    __config _xt_osc&_pwrte_on&_cp_off&_wdt_off
5
        ;xt-oscillator 4MHz, power-on-timer aktiv
6
        ;watchdog und codeprotection inaktiv
7

8
;-------konstanten definition------------------------------------------------
9
;
10
xy  equ  H'00'
11
;
12
;-------variablen definition-------------------------------------------------
13
;
14
  cblock  H'0020'
15

16
  endc
17
;
18
  cblock  H'0030'
19
    temp1, temp2
20
    temp3, temp4
21
  endc
22
;
23
;
24
;-------bit definition-------------------------------------------------------
25
;
26
#define blah  porta, 3    ;datenleitung
27
;
28
;-------startvektoren--------------------------------------------------------
29
;
30
  org  H'0000'
31
  goto  anfang
32
  org  H'0004'
33
  goto  anfang
34
  org  H'0010'    ;starte mit programmcode ab adresse H'0010'
Gast #1603394
Lesenswert?

Grundgerüst findest du bei Sprut, er hat einige Lernbeispiele mit 16F84.
http://www.sprut.de/electronic/pic/programm/lauflicht/lauflich.htm

Da es sich beim 16F84 um einen PIC mit rein digitalen I/Os handelt, 
musst du auch keine Ports initalisieren (bis auf die I/O Richtung, also 
ob es ein Eingang oder Ausgang sein soll, das machst du im Register 
TRISA/TRISB)

Dazu musst du dir besonders die Bank-Umschaltung ansehen, denn 
TRIS-Register liegen in Bank 1, PORT-Register in Bank 0. Normalerweise 
musst du bei so einfachen Aufgaben
nur am Anfang deine Ports  einstellen, danach bleibst du in Bank 0, da 
dieser PIC auch nicht
soviel RAM hat, dass du es über andere Banks adressieren musst.

Schau dir besonders diese  Befehle an:
BTFSS = Bit test file, skip if set = Teste ein Bit in einem Register, 
überspringe den nachfolgenden Befehl falls gesetzt (falls es 1 ist)
BTFSC = Bit test file, skip if clear = Teste ein Bit in einem Register, 
überspringe den nachfolgenden Befehl falls leer (falls es 0 ist)

BSF = Bit set file = Setze ein Bit (schreib eine 1 in das Bit) in einem 
Register
BCF = Bit clear file = Lösche ein Bit (schreib eine 0 in das Bit) in 
einem Register

Diese Befehle wendest du jetzt ganz einfach auf die Port-Register an:
BTFSS/BTFSC => Damit schaust du, ob ein bestimmter Pegel anliegt
BSF/BCF => Damit gibst du einen bestimmten Pegel aus
Gast #1603397
Lesenswert?

PS: nochwas vergessen... je nachdem ob du externe Pullups hast 
(Hochzieh-Widerstände)
an Leitungen mit Tastern verwendest kannst du diese im PIC 
aktivieren/deaktivieren.
Wenn du keine verwendest, empfiehlt es sich, die im PIC zu aktivieren.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren