Ich muss mit dem Programm MPLAB eine Software schreiben, die 35 Assembler Befehle sind mir bekannt und ich benutze den PIC16F887. Meine Aufgabe ist, mit zwei Taster (up & down) Auf und Abwärts-Zählen erstmal mit 8 Led´s RB0-RB7. Bei einmaligem kurzem Tastendruck erfolgt nur ein Aufwärts-Zählschritt, bei Taste gedrückt halten soll schnell gezählt werden. Die Taster sind an RA0 und RA1, bin totaler Neuling und weiß nicht wie ich die Software schreiben muss. Auf der Seite spruts.de bin ich nicht weiter gekommen, hoffe IHR könnt mir helfen.
schreib dir halt einfach mal deinen Algorithmus in Pseudosprache hin, und dann überlegst du dir welches Register du wofür nehmen könntest
Jan Owczarek schrieb: > die 35 > Assembler Befehle sind mir bekannt Du mußt wirklich in PIC-Assembler schreiben? Mein herzliches Beileid. Ansonsten, Programmieren heißt, man schalte den PC aus, nehme sich Papier und Bleistift und erstelle erstmal den Programmablaufplan. Hat man den fertig und überprüft, daß er logisch korrekt ist, kann man den PC wieder anschalten und den Code einhacken.
Jan Owczarek schrieb: > weiß nicht wie ich die Software schreiben muss. Was hast du denn schon mit dem PIC gemacht? Blinkende LED? Lauflicht? Taster einlesen? Uhr? Wenn nicht: dann fang damit an. Das dabei gelernte wirst du für die gestellte (und relativ einfache) Aufgabe brauchen. Dieser Lernprozess kann dauern. Es ist möglich, dass man für sowas simples wie ein Uhr ein ganzes Wochenende vergräbt. Ich habe z.B. schon einige Male nach durchgemachter Nacht dem Zeitungsboten morgens die Zeitung aus der Hand genommen... Jan Owczarek schrieb: > Meine Aufgabe ist, mit zwei Taster (up & down) Auf und Abwärts-Zählen > erstmal mit 8 Led´s RB0-RB7. Bei einmaligem kurzem Tastendruck erfolgt > nur ein Aufwärts-Zählschritt, bei Taste gedrückt halten soll schnell > gezählt werden. Dann musst du auf jeden Fall 2 Aufgaben bewältigen: 1. einen Zähler mit Up und Down-Eingang machen und den auf LEDs ausgeben 2. eine Tastenauswertung schreiben, die dem Zähler die Zählimpulse liefert Die Aufgabe 2 kannst du nochmal unterteilen: a) erstmal einfach bei einem Tastendruck einmal zählen b) die Wiederholfunktion mit einbauen
hab bis jetzt das bei einmaligem kurzem Tastendruck ein Aufwärts oder Abwärts-Zählt aber versteh nicht wie ich jetzt weiter mach das bei längerem Taste gedrückt so lange gezählt wird bis ich wieder los lasse???
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | |
76 | |
77 | |
78 | |
79 | |
80 | |
81 | |
82 | |
83 | |
84 | |
85 | |
86 | |
87 | |
88 | |
89 | |
90 | |
91 | |
92 | |
hier ....
1 | |
2 | |
... in dieser Schleife wartet das Programm, bis der Benutzer die Taste wieder loslässt. Da würde ich mal einen Aufruf in die delay_2.5ms (um dem ganzen eine Zeitbasis zu geben) mit einbauen und dann ganz einfach einen Zähler bei jedem Durchlauf um 1 hochzählen. Ist ein gewisser Zählerstand erreicht, dann war die Taste 'lang' gedrückt und es wird 1 zum count dazugezählt, die Ausgabe auf den Port erledigt und weiter durch die Schleife gelaufen, bis eben der Benutzer irgendwann mal loslässt.
Danke für die schnelle Antwort. Kannst du mir zeigen wo und wie ich das da zufügen oder verändern muss, bin gerade ein wenig überfordert
Jan Owczarek schrieb: > Danke für die schnelle Antwort. > > Kannst du mir zeigen wo und wie ich das da zufügen oder verändern muss, > bin gerade ein wenig überfordert Das merk ich. Da ich kein einziges Wort PIC-Assembler spreche, kann ich dir da nicht helfen. Um ehrlich zu sein. Ich glaub dir auch nicht, dass du das selber geschrieben hast. Denn sonst hättest du gewusst, welche Befehle das Programm abarbeitet, wenn eine Taste gedrückt ist und dann müsste das Stichwort 'mitzählen wie oft die Schleife durchlaufen wird' eigentlich schon völlig ausreichen um zu wissen, was zu tun ist. Das heißt: geschrieben hast du es vielleicht sogar, indem du anderen Code zusammengestoppelt hast. Aber du hast keinen blassen Schimmer davon, wie die Codestellen funktionieren.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
Ja stimmt, wie schon geschrieben, bin totaler Neuling. Hab ein Beispiel genommen, ein wenig verändert und ausprobiert. Unser Ausbilder will das ich es mit MPLAB mach, nervt mich total weil ich echt Schwierigkeiten hab Assembler zu verstehen. Hoffe aber DU oder Ihr könnt mir weiterhin helfen. Danke schon mal im voraus.
Gast
#3334958
Wir werden Dir keine fertige Lösung liefern, denn das wäre unfair. Wenn Du die Sprache oder den Ablauf des Programmes nach diesen Hinweisen nicht verstehst, kannst und sollst Du auch keine gute Arbeit abliefern. Wir helfen gerne, die Gedanken in die richtige Richtung zu lenken. Aber die Leistung muss schon von Dir selbst kommen.
Gast
#3334965
Das geht ja noch, Ich habe 1 Jahr von meinem Vorgesetzten "frei" bekommen um Asambler zu lernen. und dieses "frei" war harte arbeit! Mittlerweile kann ich auch "blind" den 16F1939 Programmieren. Aber vorab vergiss alle Hochsprachen die du bisher hattest und denke "Binär" also nur ja nein und dann schaue dir noch mal die Seite vom sprut an.
Gast
#3334979
Hallo Jan, Nur aus Interresse was machst du für eine Ausbildung ?
Gast
#3335025
Hallo Jan, natürlich kann man alle 2 Tage dieselbe Frage neu einstellen unter Nutzung eines neuen Betreffs Beitrag "Re: Programm schreiben mit MPLAB 8.70" aber ob dann zufällig mehr Hilfestellung kommt ist fraglich. Es kann auch Verärgerung kommen. HALLO LEUTE, das ist ein DOPPELPOST und der Fragesteller ist ZU FAUL selbst was zu tun und was ZU LERNEN. Gruss
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.