mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC Programm


Autor: Eclipse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich muss für einen Pic16f84A folgendes Programm schreiben leider habe
ich davon 0 ahnung.

Mein Progamm soll folgenderweise Funktionieren.

Durch ein High Signal an dem Pin "RB1" soll das Programm des Pic
starten, sobald das High signal weg ist soll das Programm abbrechen.
Sobald das Programm aktiv ist soll der Ausgang "RB2" High sein.
Ich habe an PIN "RA1" ein 2 HZ Signal.
Jedesmal wenn ich ein High an "RA1" habe soll ein Interner Zähler um
1 hoch zählen.
Sobald der Zählerstand den wert 7200 (nach 1 Stunde) erreicht hat, soll
der Ausgang "RB2" Low werden und der Ausgang "RB3" High werden.
Sobald der Zählerstand den wert 14400 (nach 2 Stunde) erreicht hat,
soll der Ausgang "RB3" Low werden und der Ausgang "RB4" High
werden.
Sobald der Zählerstand den wert 21600 (nach 3 Stunde) erreicht hat,
soll der Ausgang "RB4" Low werden und der Ausgang "RB5" High
werden.
Sobald der Zählerstand den wert 28800 (nach 4 Stunde) erreicht hat,
soll der Ausgang "RB5" Low werden und der Ausgang "RB6" High
werden.
Der Ausgang "RB6" Soll dann auch dauerhaft High bleiben solange bis
das Programm durch ein Low an "RB1" resettet wird.

ich hoffe ihr könnt mir helfen, ich hab echt null plan wie ich das
lösen sollte.

mfg

jörg..

Autor: Schoasch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Willst du das in C oder in ASM programmieren? Ansich sollte es kein
Problem sein.

Weder ASM noch C.

Wo liegt denn das Problem?

Ich würds vl mal so in der Art probieren
if(RB1==1)
{
RB2=1;
if(RA==1 & flag==0)
{
  zaehlwert++;
  flag=1;
}
if(RA==0)
  flag=0;

if(zaehlwert<7200)
 {
 RB2=0;
 RB3=1;
 }
if(zaehlwert=14400)
 {
 RB2=1;
 RB3=0;
 }
if(zaehlwert=21600)
 {
 RB2=0;
 RB3=1;
 }
if(RB1==0)
 {
  return; oder break; /*je nach dem ob du das ganze als Funktion machst
oder  direkt im main*/
 }
}
So... Kannst du dir das ungefähr vorstellen? Das ganze hab ich mal nur
so aus dem Kopf probiert... also ich hab die funktionsfähigkeit nicht
überprüft.. aber vl hilfts ja.

Autor: Chief Brady (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ich muss für einen Pic16f84A folgendes Programm schreiben leider habe
> ich davon 0 ahnung.

Wie kann das sein?

Autor: Eclipse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also ich muss es in ASM schreiben.

danke schonmal

Autor: Hauke Radtki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst und hast 0 Ahnung ... = Hausaufgabe?

Autor: Punktrichter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>also ich muss es in ASM schreiben.
>>danke schonmal

es fehlt noch: "macht mal hinne"

Autor: Eclipse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich denke, es wird bei jedem mal situationen geben, in denen man sich
nicht so leicht helfen kann da man etwas noch nie gemacht hat. da freut
man sich doch gerne wenn jemand anderes einen hilft.

ich hab halt einfach noch nie ein programmm für einen pic geschrieben.

Autor: Chief Brady (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay, dann rück mal raus mit der Sprache.

- Warum musst du das programm schreiben? (Schule?)
- Warum hast du keine Ahnung?
- Was hast du bisher versucht?

Erst wenn du hier schreibst, was du für einen Ansatz hast, bzw. wo
genau deine Schwierigkeiten stecken, wird die geholfen werden. Wenn du
tatsächlich (von irgendjemanden gewollt) keine Ahnung haben solltest,
gehört vielleicht das Beschaffen von Ahnung zur Aufgabe. Das du für den
(veralteten) 16F84A programmieren sollst, legt nun mal den Verdacht auf
"Hausaufgaben" nahe.

Autor: Eclipse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das programm ist für mein projekt in der arbeit.
da ich auf www.sprut.de nur programme gefunden haben die sich auf den
takt beziehen der durch ein quarz an OSC1 und OSC2 genereriert wird,
weis ich nicht wie ich das handhaben soll wenn ich das signal auf einen
eingang bekomme z.b. RA1 und ich soll das signal welches am RA1 ist für
den timer verwenden verstehe zwar auch nicht genau warum da es mir
einfach scheint ein quarz an osc1 und osc2 zu hängen und das signal von
dort so oft zu teilen... nun hab ich die platine aba schon so gemacht da
mir das mein ausbilder vorgeschlagen hat.

Wie gesagt hab ich noch nie einen Pic programmiert.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sehe ich auch so.

Es ist Blödsinn, extern 2Hz einzuspeisen, statt gleich den Takt des
angeschlossenen Quarzes zu nehmen.

Aber da mußt Du Deinen Ausbilder fragen, was und überhaupt ob er sich
dabei was gedacht hat. Scheint so, als hätte er einen ähnlichen
Kenntnisstand wie Du.



"Wie gesagt hab ich noch nie einen Pic programmiert."

Ich auch nicht.

Bezüglich Programmierhilfe, würdest Du hier mehr Erfolg haben, wenn Du
nen AVR genommen hättest.
Besonders, da es für den AVR einen guten kostenlosen C-Compiler gibt,
findet man auch sehr viele gute C-Beispiele.

Vielleicht gibts ja bei Sprut auch einige PIC-Foren-Links.


Peter

Autor: rammler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
statt zu helfen wird hier nur blöd geredet hier geht es zu wie im
kindergarten !!!!!!!!!!!!!!!!!!!!!!!

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nur so als Randnotiz: Es gibt auch für die PICs einen guten,
kostenlosen, freien (GPL) C-Compiler, "sdcc" (sdcc.sf.net)

Kann mit 14- und 16bit PICs.

Nur obs nen fertigen windows-build gibt, oder ob man erst cygwin
auspacken muss, weiss ich jetzt nicht...

/Ernst

Autor: Eclipse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jo, ich merk das hier in dem forum nur "intelligent" geredet wird doch
hier sind anscheinend nur leute die keine ahnung haben.

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Eclipse: Die meisten hier würden dein Problem lösen können, wollen aber
nicht.

Haus/Übungsaufgaben haben schliesslich den Zweck, dass DU was dabei
lernst, nicht das WIR als Fingerübung ein paar Codezeilen
runtertippen.

Wenn du keinen Assembler lernen magst, schreib das doch einfach in C,
jag es durch einen Compiler und gib den genrierten ASM-Code ab.

Und wenn es wirklich ein Notfall ist (morgen 8:00 Abgabe, sonst
Arbeitslos), dann findet sich hier sicher auch jemand der dir hilft.

/Ernst

Autor: Dieter Werner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es ist immer wieder erfrischend, wenn hier die Leute, die nach Hilfe
fragen und keiner postet eine fertige Lösung, dann festellen dass
keiner eine Ahnung hat - aber sie selbst offenbar genug um das
beurteilen zu können.

Wenn jemand Defizite hat und diese hier offenlegt findet sich fast
immer eine Hilfe.
Ein Lehrgang für "Null-Ahnung-Leute" ist aber einfach zu umfangreich
für ein Forum.
Eine Aussicht auf Hilfe ist immer gegeben, ein Anspruch dagegen
bestimmt nicht.

Autor: Eclipse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
habe mittlerweile schon in einem anderen forum einen antwort bekommen,
nur kurz es sind keine hausaufgaben, wer lesen kann is klar im vorteil.
um beurteilen zu können das hier keiner ahnung hat muss man nicht
besonders intelligent sein, das sieht man ja an den antworten, die
keineswegs das thema treffen.

mfg

PS: forum in Chat4free umbenennen

Autor: rammler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Eclipse - e1pccg.de

bravo, gib ihnen was sie brauchen diesen möchtegern programmierern sie
haben es nicht anders verdient.

Autor: Εrnst B✶ (ernst)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Und als "Bonus", sozusagen als Belohnung für unfreundliches Verhalten,
gibts hier noch ein ZIP-File mit Beispiel-Code, der evtl sogar ungefähr
das machen könnte, was verlangt war.

/Ernst

Autor: Schoasch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Ich möchte dir das Forum von Fernando Heitor ans herz legen. dort sind
zwar nicht so viele Leute, aber dafür auch nicht so viele unwissenden
Leute. Ausserdem kennen sich die Leute hier wenn eher mit AVRs aus.

Nun der langen rede kurzer sinn. Schau mal auf www.fernando-heitor.de.

Ich fange gerade selbst erst mit ASM an, daher kann ich dir leider
nicht genau ein Programm zimmern. Aber was ich dir Empfehlen kann ist,
dass du dir so eine Art pseudocode erstellst. Also wo du festhältst,
was das Programm machen muss. Dabei überlege gleich ob du nicht noch
irgendwelche Hilfsvariablen brauchst und welche Zustände anstehen
können und wie sie einfluss haben.. Also so wie bei meinem Code vorher.


Achja... der PIC16F84A ist zwar nicht gerade der jüngste.. aber sehr
weit verbreitet... und auch eigentlich gar nicht schlecht.

Ah.. und fange einmal mit der Initialisierung an.. also alle Ports
richtig setzen.. also ob eingang oder Ausgang und deren funktion (ADC
Comperator usw) so einstellen, dass du sie als normale IOs verwenden
kannst.
Hast du dir auch schon das Datenblatt angesehen?
Kannst du etwas ASM oder musst du erst komplett neu Einsteigen?
Schau dir diese Seite genau durch
http://www.sprut.de/electronic/pic/assemble/befehle.html .Die ist sehr
sehr Hilfreich. Da werden alle Befehle sehr gut beschrieben.

so viel fürs erste. Ich hoffe wir sehen uns im anderen Forum.
mfg schoasch

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach ja, noch ein Tip:

Wem ASM/C/Basic zu kompliziert ist, der sollte sich mal KTechLab
anschauen (http://ktechlab.org/)

Da kann man einfach ein Program-Ablauf-Diagram zeichnen, und der
erstellt automagisch ASM code daraus, den man sogar noch simulieren
kann (Incl. externer Beschaltung, sind ein paar nette Screenshots auf
der Seite)

/Ernst

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"... doch hier sind anscheinend nur leute die keine ahnung haben."


Jo, dat stimmt.

Hier sind wirklich ne Menge Leute, die von PIC keine Ahnung haben
(wollen) und schon jahrelang perfekt Flash-MCs programmieren.

Auch wenn hier nicht direkt AVR drüber steht, haben sich zufällig viele
AVR-ler zusammengefunden.

Bei AVRfreaks oder 8052.com ist das eindeutiger, da wirste als PIC-er
gnadenlos abgekanzelt.


Deshalb ja mein Tip, es in einem PIC-Forum zu versuchen.


Peter

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.