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.?
Ja. Mein Ausbilder hat es so vorgesehen. Assembler und mit MP/LAB Programmieren.
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' |
Hallo, das Grundgerüst findest Du in der Datei 16F84ATEMP.ASM irgendwo im Ordner Microchip - suchen und öffnen!
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
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.