Forum: Mikrocontroller und Digitale Elektronik PIC Programm


von Eclipse (Gast)


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

von Schoasch (Gast)


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.

von Chief Brady (Gast)


Lesenswert?

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

Wie kann das sein?

von Eclipse (Gast)


Lesenswert?

also ich muss es in ASM schreiben.

danke schonmal

von Hauke Radtki (Gast)


Lesenswert?

Du musst und hast 0 Ahnung ... = Hausaufgabe?

von Punktrichter (Gast)


Lesenswert?

>>also ich muss es in ASM schreiben.
>>danke schonmal

es fehlt noch: "macht mal hinne"

von Eclipse (Gast)


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.

von Chief Brady (Gast)


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.

von Eclipse (Gast)


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.

von Peter D. (peda)


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

von rammler (Gast)


Lesenswert?

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

von Εrnst B. (ernst)


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

von Eclipse (Gast)


Lesenswert?

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

von Εrnst B. (ernst)


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

von Dieter Werner (Gast)


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.

von Eclipse (Gast)


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

von rammler (Gast)


Lesenswert?

@ Eclipse - e1pccg.de

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

von Εrnst B. (ernst)


Angehängte Dateien:

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

von Schoasch (Gast)


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

von Εrnst B. (ernst)


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

von Peter D. (peda)


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

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.