Forum: Mikrocontroller und Digitale Elektronik PIC16F84A-04 Programm anhand PAP schreiben


von Sven A. (dj-skydriver)


Angehängte Dateien:

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.?

von Tino N. (tino)


Lesenswert?

Muss es unbedingt Assembler sein ?

von Sven A. (dj-skydriver)


Lesenswert?

Ja. Mein Ausbilder hat es so vorgesehen. Assembler und mit MP/LAB 
Programmieren.

von Guest (Gast)


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'

von 16F84A (Gast)


Lesenswert?

Hallo,
das Grundgerüst findest Du in der Datei 16F84ATEMP.ASM irgendwo im 
Ordner Microchip - suchen und öffnen!

von chris (Gast)


Lesenswert?

http://www.sprut.de/electronic/pic/assemble/assembler.html
Das minimale Template reicht völlig.
und schau dir noch das button-debounce an, 
http://www.rentron.com/Myke6.htm

von Sergey (Gast)


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

von Sergey (Gast)


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.

von Sven A. (dj-skydriver)


Lesenswert?

Ich verwende Pull-Down Widerstände für die Taster. Somit könnte ich die 
Pull Option des PIC´s ja deaktivieren

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.