Forum: Mikrocontroller und Digitale Elektronik Struktogramm in Assemblersprache umsetzen (PIC16F877)


von Gregor (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich hoffe mir kann da jemand weiterhelfen. Ich habe hier zu meinem 
bestehenden und funktionierenden SPS Programm ein Struktogramm erstellt, 
welches ich als Vorlage nutzen will.

Ich habe keinerlei Probleme in der SPS Programmierung - jedoch habe ich 
nur wenig Erfahrung mir der Assembler Programmierung.

Vielleicht kann mir jemand Unterstützung geben.
Teil 1 der Anlage ist eine Ofenüberwachung. Hier soll nur ausgewertet 
werden ob der Ofen in Bewegung ist. Siehe Anhang.





von Geri (Gast)


Lesenswert?

Hallo

Solche Programme erstellt man heute mit einem C-Compiler...


sost aber wwww.sprut.de oder  bei fernando heitor vorbei schauen
Beste Grüsse

Geri

von Rahul D. (rahul)


Lesenswert?

>Solche Programme erstellt man heute mit einem C-Compiler...

Das wäre ein 10Zeiler in Asm...

Grundlegende Frage zu deinem Programm: Was soll der COntroller machen, 
wenn er den Ofen ausgeschaltet hat?

Guck dir am besten mal die Beispiele auf sprut.de und bei Fernado Heitor 
an (sofern es da welche gibt).
Dann probierst du mal aus, wie man mit einem Controller eine LED 
leuchten lässt, dann wie man einen Taster einliest und irgendwann kannst 
du dann auch Öfen steuern.

von Geri (Gast)


Lesenswert?

Hallo

Unter der Voraussetzung, dass das Programm entsprechend realisiert wird, 
liegt ein grosser Vorteil von C u.a. in der Portierbarkeit. Die 
Komplexität der Umsetzung ergibt sich nicht ausserdem nicht unmittelbar 
aus der Anzahl der Codezeilen. Erahrungsgemäss wächst ein Programmm auch 
mit der Zeit an...;)

Deshalb auch der  etwas eindeutige Hinweis zur Implementierung in C.

Dazu kommt, dass sich Gregor nur wenig Erfahrung in Assembler hat...

Beste Grüsse

Geri

von Gregor (Gast)


Lesenswert?

>Das wäre ein 10Zeiler in Asm...

>Grundlegende Frage zu deinem Programm: Was soll der COntroller machen,
>wenn er den Ofen ausgeschaltet hat?

>Guck dir am besten mal die Beispiele auf sprut.de und bei Fernado Heitor
>an (sofern es da welche gibt).
>Dann probierst du mal aus, wie man mit einem Controller eine LED
>leuchten lässt, dann wie man einen Taster einliest und irgendwann kannst
>du dann auch Öfen steuern.

Hallo,

es gibt nicht darum einen Ofen zu steuern. Sondern diesen auf seine 
Drehbewegung (Drehhochhofen) abzufragen.
Um etwas genauer dieses Projekt zu beschreiben:
es geht hier um eine Ofenlaufringinnenschmierung.
Über einen Laser wird abgetastet ob der Ofen in Bewegung ist. (Dies wäre 
auch der Teil 1 der Anlage)

Teil2: wird erkannt, dass der Ofen in Betrieb ist, werden die Pratzen 
des Ofens einzeln mit Öl besprüht. D.h. Einzig und allein dieser Laser 
in 3m Entfernung, erkennt dann die Drehbewegung und die einzelnen 
Pratzen und gibt einen Impuls ab.

Das ganze soll jedoch keine Dauerschmierung sein sondern abgestuft in 4 
Phasen:
Phase0 -> Pause (2 Ofenumläufe a 10 Pratzen (somit 10 Impulse)) == 
20Takte
Phase1 -> Mixphase ( auch einstellbar z.b. 2 Ouml.)(Ölgefäß wird gemixt)
Phase2 -> Druckphase ( auch einstellbar z.b. 2 Ouml.)(Die Pumpe baut 
einen Druck in einem Druckgefäß auf ca.40 Bar, wird der Druckschalter 
bestätigt und ist die Anzahl der Takte auch hier erreicht, ist Phase 2 
beendet.)
Phase3 -> Arbeitsphase nun wird zu jeder steigenden Taktflanke die 
Sprühdüse kurzzeitig geöffnet. Nach der Arbeitsphase ist der 
Sprühvorgang beendet und beginnt wieder von vorn.




von Dirk H. (arm-dran)


Lesenswert?

Geri wrote:
> Hallo
>
> Unter der Voraussetzung, dass das Programm entsprechend realisiert wird,
> liegt ein grosser Vorteil von C u.a. in der Portierbarkeit. Die
> Komplexität der Umsetzung ergibt sich nicht ausserdem nicht unmittelbar
> aus der Anzahl der Codezeilen. Erahrungsgemäss wächst ein Programmm auch
> mit der Zeit an...;)
>
> Deshalb auch der  etwas eindeutige Hinweis zur Implementierung in C.
>
> Dazu kommt, dass sich Gregor nur wenig Erfahrung in Assembler hat...
>
> Beste Grüsse
>
> Geri

Er redet von einer Problemlösung und Ihr redet von Portierbarkeit in C.
Für diese Anwendung reicht so gut wie jeder µC.
Welche Notwendigkeit der Portierbarkeit besteht hier, wenn noch nicht 
mal die erste Lösung in Sicht ist.

@Gregor

Wobei brauchst Du jetzt genau Unterstützung?
Gibt es schon eine Hardware, µC schon ausgesucht. Hast Du schon 
Erfahrung
mit Programmiersprachen wie Assembler und C oder steigst Du in die Hard 
und Softwarematerie ganz neu ein.

Ich sehe bei der Realisierung dieser Aufgabe absolut kein Problem, nur 
solltest Du uns mal den aktuellen Stand der vorhandenen Hardware 
rübergeben.
Sonst wird dieses Forum zum A-Z Entwicklungsbüro.

Es nützt nichts, Dir jetzt ein Beispiel in Assembler oder C zu geben,
wenn wir nicht Deinen Wissenstand kenne.

gruß

Dirk

von Gregor (Gast)


Lesenswert?

Hallo Dirk,

wir haben einen eine Controller entwickeln lassen. Dieser Controller 
wird auch schon eingesetzt. D.h. wir haben ihn bisher von einer Firma 
programmieren lassen. Nun ist es aber so, dass nun ein weiteres Programm 
integriert werden soll. Wir haben uns nun zur Aufgabe gemacht, dieses 
Projekt selbst anzugehen und auch in die assambler Programmierung 
einzusteigen.
Unsere Hardware ist sozusagen schon im Einsatz und muss nur um eine 
weitere Programmvariante erweitert werden.

µC: Pic16F877
Software zur Programmierung MPLAP bzw. MCLS-Modular

Um noch zu meinem Wissenstand zu kommen. Ich habe fundierte Kenntnisse 
in der SPS Programmierung (damit verdiene ich mein tägliches Brot).
Ich hatte vor kurzem einen 2 Tages Assamblerkurs wo grundlegendes 
abgearbeitet wurde - soviel zu meinem Stand.

Ich bräuchte jemand der mir sagen kann wie ich z.B:

Vergleiche wie <;>;==  ;
Negationen
UND, ODER,
SPEICHERNDE EIN- AUSSCHALTVERZÖGERUNGEN
programmieren muss.

von Dirk H. (arm-dran)


Lesenswert?

Noch eine Frage zuvor.

Was heisst "es soll ein weiteres Programm integriert werden" ???
Heisst das:

Programme wahlweise umschaltbar oder Integration des neuen in das 
Alte???

von tom (Gast)


Lesenswert?

was hast du denn 2 Tage in dem Assembler-Kurs gemacht?

In der Zeit hättest du sich C gelernt. Zumindest um son paar einfache 
Sachen zu machen.
Als Hinweis: So ein Programm wie in deinem Flussdiagramm angegeben kann 
man in C in 2 Stunden programmieren und Testen. Wer sowas noch in 
Assembler programmiert will nur Zeit/Geld schinden.

von Falk (Gast)


Lesenswert?

@Gregor

>Um noch zu meinem Wissenstand zu kommen. Ich habe fundierte Kenntnisse
>in der SPS Programmierung (damit verdiene ich mein tägliches Brot).

Naja, bei SPS Programmen hat man es auch bisweilen mit arg verkorksten 
Konstruktionen zu tun  . . .;-)
No offence.

>Ich hatte vor kurzem einen 2 Tages Assamblerkurs wo grundlegendes
>abgearbeitet wurde - soviel zu meinem Stand.

Nicht wirklich viel.

>Ich bräuchte jemand der mir sagen kann wie ich z.B:

>Vergleiche wie <;>;==  ;
>Negationen
>UND, ODER,
>SPEICHERNDE EIN- AUSSCHALTVERZÖGERUNGEN
>programmieren muss.

Das kann dir jedes durchschnittliche Lehrbuch zu Assembler sagen. Aber 
wenn du nur SPS Programmierkentnisse hast (kein BASIC, Pascal 
irgendwasanderes?) dann hast du noch einen langen Weg vor dir.

MfG
Falk

von Dirk H. (arm-dran)


Lesenswert?

tom wrote:
> was hast du denn 2 Tage in dem Assembler-Kurs gemacht?
>
> In der Zeit hättest du sich C gelernt. Zumindest um son paar einfache
> Sachen zu machen.
> Als Hinweis: So ein Programm wie in deinem Flussdiagramm angegeben kann
> man in C in 2 Stunden programmieren und Testen. Wer sowas noch in
> Assembler programmiert will nur Zeit/Geld schinden.

Ich will es mal so ausdrücken.

IHR SEID RICHTIGE SCHWÄTZER.

Meldet Euch zu Wort, wenn Ihr Ihm wirklich Hilfestellung leisten könnt
und labert nicht blöd umher, denn dafür ist das Forum gedacht.

Dann schreibt Ihm doch das Programm in "C".
Aber dafür müssen erst n dutzend anderer Threads geöffnet werden, wo 
nach ner Library für dies und das gefragt wird. Die einfachsten Dinge 
werden zum Problem.

Immer alles andere schlecht machen. Was meint Ihr denn woraus "C" 
besteht?
Aus ner Liste von Assembler Anweisungen, die nur so gut wie Ihre 
Programmierer und Oberprogrammierer sind.

Also gebt dem guten Mann Unterstützung.

Ich werde es tun.

von Meister E. (edson)


Lesenswert?

@ Dirk

Schön das es mal einer sagt. Warum muss man sich ständig für PIC 
und/oder Assembler Projekte rechtfertigen?

Wie Du ja über die Verwendung von C gesagt hast, kann Grundlagenwissen 
in Assembler nur hilfreich sein, wenn man sich dessen bedienen möchte.


Gruss,Edson

von Gregor (Gast)


Lesenswert?

@Dirk

Hallo Dirk,

danke zunächst, dass du dich meinem Problem gewidmet hast.

Wie du es richtig interpretiert hast, ist es eine Programmvariante, 
welches je nach Dipschalterstellung aufgerufen wird.

Aber soweit müssen wir gar nicht gehen... Mir wäre es lieber mal Step by 
Step das Programm zu schreiben.
Mit Mcls Modular habe ich die Möglichkeit dieses Programm dann auch noch 
zu simulieren.. Und das wäre schon ein riesiger Meilenstein.

Zum Glück gibt es hier auch Leute wie dich, die einem nicht eine 
Kartoffel als Banane verkaufen wollen..

Ich hab auch etwas Visual Basic und C Erfahrung dies wurde mir mal 
während meiner Technikerausbildung beigebracht. Hier muss nun mal aber 
Assembler programmiert werden. Ich kann mir es nicht raussuchen.

Im Assembler Kurs hab ich die 35 Befehle, Aufbau, Register und einfache 
Programme geschrieben. Lauflicht, Blinklicht usw. jedoch in kürzester 
Zeit..

Wie ich gemerkt hab bist du da ziemlich fit.. Geb mir auch mal ein paar 
Literaturtipps.

von Meister E. (edson)


Lesenswert?

Hallo Gregor,

hast Du eigentlich Hardware für die Programmentwicklung? Also ein Board 
oder so mit ICSP?
Die beste Literatur ist meiner Meinung nach immer noch das Datenblatt 
selbst. Hier steht was man Controller-spezifisch beim programmieren 
beachten muss, der Rest kommt dann von selbst wenn man erst mal weiss 
wie man anfängt.

Gruss,
Edson

ps. Was ist Mc1s Modular?

von Dirk H. (arm-dran)


Lesenswert?

@Gregor

> danke zunächst, dass du dich meinem Problem gewidmet hast.
>

Dafür ist dieses Forum da.
Außerdem hat mir mal jemand gesagt "Es gibt keine Probleme nur Lösungen"
:-)

> Wie du es richtig interpretiert hast, ist es eine Programmvariante,
> welches je nach Dipschalterstellung aufgerufen wird.
>

OK, kappiert ;-)

> Aber soweit müssen wir gar nicht gehen... Mir wäre es lieber mal Step by
> Step das Programm zu schreiben.
> Mit Mcls Modular habe ich die Möglichkeit dieses Programm dann auch noch
> zu simulieren.. Und das wäre schon ein riesiger Meilenstein.
>

Das setzt aber vorraus, daß Du Dich in dieses Programm einarbeitest, da 
ich etwas anderes benutze und die evtl. entstehende Problematik nur 
schwer nachvollziehen kann.
Aber gut.

> Zum Glück gibt es hier auch Leute wie dich, die einem nicht eine
> Kartoffel als Banane verkaufen wollen..
>
> Ich hab auch etwas Visual Basic und C Erfahrung dies wurde mir mal
> während meiner Technikerausbildung beigebracht. Hier muss nun mal aber
> Assembler programmiert werden. Ich kann mir es nicht raussuchen.
>

Dazu mache ich jetzt keine Bemerkungen, sonst werde ich hier im Forum 
mit den Kartoffeln und Bananen (evtl. noch Tomaten (holländische 
iiihhh)) beschossen.
Denk dran, Assembler ist keine Krankheit. Wenn Du Dich ihm widmest und 
pflegst, wird er es Dir danken.

> Im Assembler Kurs hab ich die 35 Befehle, Aufbau, Register und einfache
> Programme geschrieben. Lauflicht, Blinklicht usw. jedoch in kürzester
> Zeit..
>

Das ist natürlich absolute Sch....., 2 Tage.
Klingt wie die Bücher "Vom Baby zum Visual Studio Programmierer in 21 
Tagen"
Wenn Du schon SPS programmierst, weisst Du, daß 99% Autodidaktisch sind.
Hier ist es genau so.

> Wie ich gemerkt hab bist du da ziemlich fit.. Geb mir auch mal ein paar
> Literaturtipps.

Dann gib mit mal ne email adresse.

Gruß

Dirk

von Gregor (Gast)


Lesenswert?

Higgens-No1@gmx.de

von Gregor (Gast)


Lesenswert?

Vielleicht kannst du mir ja auch mal den Teil 1 als Beispiel 
programmieren. Ich versuche es dann umzusetzen und werde es in der 
Simulation sehen, ob ich es geschafft habe.

von F.H. (Gast)


Lesenswert?

Ich habe nix verstanden,eine Logo für ein paar Euronen sollte dieses 
Problem doch lösen,wozu Assembler,wenn man es nicht kann.
Wenn man 10000 Steuerungen dieser Art verkaufen muss,kann man dieses 
Problem auch mit einem Micro lösen,dafür gibt es ja auch alle 
Programmiersprachen,sogar SPS ähnlich :http://www.parsic.de/

Assembler ist in der Regel etwas für Leute,die regelmässig damit 
arbeiten.

Gute Hochsprachen assemblieren schon hochwertig,sonst würden die sich ja 
blamieren,wenn man deren Übersetzung ansieht.

Wer also nur ein paar Projekte im Jahr mit einem Micro hat, ist mit 
einer Hochsprache besser bedient.

Wenn eine Arbeitsstunde 50-100 E kostet,sollte , wenn das Projekt es 
zulässt auf Industrielle Lösungen zurückgreifen.

von Gregor (Gast)


Lesenswert?

Dieses Programm ist genau das was wir suchen..

Ich lass mir nun ein Angebot zukommen, was diese Vollversion kosten 
soll.
Sollte es jedoch bessere Programmiertools geben, dann gebt mir bitte 
bescheid!

Danke für diesen Tip. @F.H.

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.