Programmliste. Listing - was ist das in einfachen Worten: eine vollständige Analyse des Konzepts Was ist ein Programmlisting?

Bevor Wertpapiere oder Kryptowährungsmünzen den Händlern auf den Börsenparketts zur Verfügung stehen, müssen sie einen komplexen Auswahlprozess durchlaufen und in die Notierung aufgenommen werden. Parsing in einfachen Worten, was ist die Notierung an der Börse - sowohl an der Börse als auch in der Kryptowährung, was sind die Hauptphasen, die Sie durchlaufen müssen, um auf der Liste zu stehen, die wichtigsten Vorteile, die das Unternehmen erhält, was ist das Wesentliche des Delistings.

Was ist eine Auflistung

Das Konzept des Listings findet sich in verschiedenen Bereichen unseres Lebens wieder:

  • Aktien- und Kryptowährungsbörsen- sie werden das Thema dieses Artikels sein. Hier wir redenüber das Hinzufügen von Wertpapieren oder Kryptomünzen zu den Listen von Handelsplattformen.
  • Im Handel- Dies impliziert die Aufnahme von Produkten des einen oder anderen Herstellers in das Sortiment des Geschäfts.
  • Beim Programmieren- Das Quelle(Text) des Programms, der vom Compiler in ausführbaren Code übersetzt wird.
  • Bei Immobilien- Hier werden Listungsverträge zwischen dem Eigentümer der Immobilie und dem Makler unterzeichnet, der sie gegen eine Provision verkauft.

Wir werden die letzten beiden Zweige nicht berücksichtigen. Wir sind an der Notierung auf sowie an der Kryptowährung interessiert.

Notierung und Delisting von Wertpapieren

Die Auflistung erschien in unserem Lexikon aus der Wortliste, die aus dem Englischen als „Liste“ übersetzt wird. Die Notierung von Wertpapieren an der Börse ist das Verfahren zum Hinzufügen von Aktien, Anleihen von Unternehmen zur Liste der auf der Plattform notierten Instrumente. Danach stehen sie für den Kauf und Verkauf zur Verfügung.

Nach Bestehen des Listingverfahrens werden die Wertpapiere in die Handelsliste der Börse aufgenommen

Häufig bezeichnen Marktteilnehmer die Liste selbst als Listing. Zur gleichen Zeit, jede Seite diese Liste Mine.

Die Notierung wird meistens vom emittierenden Unternehmen initiiert, in seltenen Fällen kann die Börse jedoch selbst den Wunsch äußern, bestimmte Wertpapiere in ihre Liste aufzunehmen, wenn sie bei Händlern bereits auf informellem Weg sehr gefragt sind.

Für Unternehmen hat die Notierung an der Börse eine Vielzahl von Vorteilen, und daher ist es nicht verwunderlich, dass Unternehmen große Anstrengungen unternehmen, um dieses Verfahren zu durchlaufen.

Eine Börsennotierung darf nicht mit einem Börsengang verwechselt werden. Im ersten Fall versucht das Unternehmen, in die Kursliste einer bestimmten Handelsplattform zu gelangen. Und ein Börsengang impliziert, dass das Unternehmen an die Börse geht und seine Wertpapiere den Anlegern nicht nur über, sondern auch über andere Kanäle, beispielsweise über seine Filialen, zur Verfügung stehen.

Phasen auflisten

Das Kotierungsverfahren sieht mehrere Phasen vor, die das emittierende Unternehmen durchlaufen muss, bevor seine Wertpapiere den Anlegern zur Verfügung stehen.

  1. Alles beginnt mit einer Bewerbung. Dies kann sowohl durch den Emittenten selbst als auch durch eine Person erfolgen, die die Interessen der Gesellschaft vertritt.
  2. Als nächstes kommt die Prüfungsphase. Vertreter der Börse analysieren sowohl Wertpapiere als auch alle verfügbaren Daten über das Unternehmen. Die Rentabilität des Unternehmens, die Liquidität seiner Vermögenswerte werden untersucht. Das Unternehmen ist verpflichtet, alle in den letzten Jahren gesammelten Jahresabschlüsse vorzulegen.
  3. Eine Sonderkommission prüft die Ergebnisse der Prüfungen und entscheidet über die Aufnahme von Wertpapieren in die Notierung oder die Ablehnung des Antrags.
  4. Fällt die Entscheidung positiv aus, schließen beide Parteien – das Unternehmen und die Börse – eine Vereinbarung.

Das Verfahren dauert im Durchschnitt etwa 1-2 Monate. Um auf der Liste zu bleiben, muss der Emittent in der Regel einmal im Quartal die erforderlichen Daten an die Börse übermitteln.

Die Listungsregeln, die von Handelsplattformen für Unternehmen auferlegt werden, variieren. Einige können nur Unternehmen mit einer Kapitalisierung von mindestens 50 Millionen US-Dollar und einer Marktpräsenz von mindestens 3 Jahren auflisten. Andere können die Messlatte für diese und andere Anforderungen höher oder niedriger legen.

Wenn nicht alle Bedingungen erfüllt sind, die Wertpapiere aber für die Börse interessant sind, fallen sie in die vorläufige Wertpapierliste – so wird es auch genannt Vorlistung. Anleger können diese Aktien auch handeln, aber außerhalb der Börsenmauern und des Parketts sind sie nicht dafür verantwortlich.

Auflistungsebenen

Meist gibt es an den Börsen mehrere Listungsstufen. Anfangs Prämie die liquidesten Wertpapiere mit hoher Zuverlässigkeit werden aufgenommen.

An Unternehmen zweites Level Die Anforderungen sind nicht mehr so ​​hoch. Und das niedrigste für Unternehmen, die sich für das dritte bewerben, das sogenannte nicht zitierte Liste. Anleger, die Wertpapiere von Unternehmen dieses Niveaus kaufen, sollten deren Zuverlässigkeit selbst sorgfältig prüfen.

Beispielsweise sind die Haupt- und Alternativplattformen nicht gültig. Die erste ist in zwei Stufen unterteilt: „Standard“ und „Premium“. Der alternative Markt ist für kleine und mittlere Entwicklungsunternehmen gedacht, die hier nach einem vereinfachten Verfahren zugelassen werden.

Von Zeit zu Zeit können Websites die Notierungsniveaus von Anleihen oder Aktien erhöhen oder umgekehrt verringern oder sie sogar ganz von der Liste nehmen.

Auflistungstypen

Unterscheiden Sie zwischen Primär- und Sekundärlistung.

Primärer Eintrag impliziert, dass die Aktien den Anlegern auf dem Börsenparkett in dem Land zur Verfügung stehen, in dem das Unternehmen registriert ist.

Bei sekundäre Auflistung Wertpapiere werden auf internationale Märkte gebracht und gelangen in die Listen ausländischer Plattformen. Dies ist nur möglich, wenn die Phase der Erstnotiz bestanden ist.

Es gibt noch Doppelte Auflistung, in denen das Unternehmen konsequent versucht, in die Angebotslisten mehrerer zu gelangen Handelsböden Heimatland.

Und auch Querauflistung– In diesem Fall sendet das Unternehmen Anträge auf Aufnahme in die Listen mehrerer Börsenplattformen ein verschiedene Länder. Wenn einer von ihnen die Beimischung von Wertpapieren genehmigt, erhält das Unternehmen außerdem die Möglichkeit, das Kotierungsverfahren des anderen unter einem vereinfachten System abzuschließen. Dies reduziert nicht nur die Materialkosten, sondern auch die Zeit für die Prüfung des Antrags.

Was sind die Vorteile des Emittenten

Nicht umsonst bemühen sich Unternehmen, an der Börse notiert zu werden, denn dies verspricht ihnen eine Reihe von Vorteilen. Erstens steigt ihre Investitionsattraktivität, wodurch es leichter wird, Mittel für die Weiterentwicklung zu mobilisieren. Zu den Pluspunkten zählen außerdem:

  • Wachstum der Kapitalisierung des Unternehmens bei steigender Nachfrage nach ausgegebenen Wertpapieren;
  • Steigerung des Bewusstseins und des Vertrauens in Geschäftskreisen;
  • Erhöhung der Liquidität von Aktien, Anleihen;
  • die Möglichkeit, die Devisenlisten zu ergänzen;
  • In einigen Fällen können Sie sich für Steuervorteile qualifizieren.

Vergessen Sie jedoch nicht, dass von nun an den Aktivitäten des Unternehmens erhöhte Aufmerksamkeit geschenkt wird und alle Maßnahmen sich sofort auf den Wert der Aktien auswirken. Zudem ist das Listungsverfahren nicht kostenlos. Alle durchgeführten Untersuchungen kosten Geld.

Was gibt es Investoren

Die Hauptsache ist Vertrauen. Investoren, die in die Aktien des Unternehmens investieren, wissen, dass seine Vertrauenswürdigkeit von Fachleuten überprüft wurde. Die Präsenz in der Börsennotierung erspart ihnen unabhängige Prüfungen der Vertrauenswürdigkeit des Unternehmens.

Was ist Delisting

Auch wenn Wertpapiere an der Börse notiert sind, gibt es keine Garantie dafür, dass sie dort für immer bleiben. Unter bestimmten Bedingungen kann die Website sie aus dem Angebot streichen. Dies geschieht beispielsweise, wenn der Emittent die Bedingungen des Umtauschs nicht mehr einhält, seine Verpflichtungen nicht erfüllt hat, sich für insolvent erklärt usw.

Auch der im Laufe der Zeit nicht steigende Aktienkurs kann zu einem Delisting führen, was auf eine geringe Nachfrage hindeutet. Es kommt vor, dass das Delisting von der Gesellschaft selbst initiiert wird, beispielsweise im Falle einer Unternehmensfusion.

Auflistung der Kryptowährung

Listing wird auch oft im Umfeld von Kryptowährungen diskutiert. Hier tauchen digitale Coins oder Token eher in der Handelsliste von Börsenplattformen auf.

Kryptowährungsprojekte streben danach, an beliebten Börsen gelistet zu werden

Die Listing-Anforderungen an Krypto-Börsen variieren. Es ist viel schwieriger, zu großen bekannten Sites zu gelangen als zu kleinen. Deshalb beginnen die meisten Projekte mit kleinen Handelsplattformen.

Ausgabepreis

Eines der Hauptprobleme sind die Kosten. . Wenig bekannte Börsen können Kryptowährungen kostenlos auflisten. Der Einstieg in die Listen bekannter Plattformen kann Tausende oder sogar Zehntausende von Dollar kosten - sie nehmen Geld für die Analyse einer Münze vor der Auflistung. Obwohl es Ausnahmen gibt.

Binance beispielsweise kündigte diesen Herbst an, dass Listungsgebühren zur Finanzierung wohltätiger Zwecke verwendet werden. Dabei gibt es keine festen Preise – die Entwickler bestimmen selbst, wie viel sie für das Listing zahlen wollen. Das Management von Poloniex behauptet, dass es kein Geld für die Notierung nehme.

Anfang des Jahres veröffentlichten Journalisten von Business Insider einen Artikel, wonach die Mindestschwelle für die Auflistung von Krypto-Börsen für ICO-Projekte 50.000 US-Dollar beträgt und in einigen Fällen 1 Million US-Dollar erreichen kann.

Es gab auch Fälle, in denen das Management der Börsen Bestechungsgelder für die Aufnahme von Coins in die Notierung annahm. Ein Beispiel ist die Coinnest-Börse – ihr COO und CTO erhielten etwa 890.000 US-Dollar, um die Kryptowährung S-Coin in die Handelsliste aufzunehmen.

Wie es funktioniert

Damit der Token in die Auflistung aufgenommen wird, ist es meistens erforderlich, einen Antrag zu stellen und einen Fragebogen auf der ausgewählten Website auszufüllen. Beliebte Exchange Coins können jedoch eigenständig in das Listing aufgenommen werden, ohne auf das Angebot des Projektteams warten zu müssen. So ist beispielsweise Bitcoin (BTC) an jeder Börse Pflicht, Ethereum (ETH) in der Regel.

Was sind die häufigsten Fragen in der Umfrage?

  • Name und Beschreibung der Münze;
  • Datum des Starts des Hauptnetzwerks sowie der Plattform selbst;
  • Link zu Github;
  • Link zum Whitepaper des Projekts;
  • Links zu sozialen Netzwerken;
  • ob im Netzwerk Mining betrieben wird und ob Pre-Mining stattfand;
  • maximale Ausgabe von Münzen usw.

Häufig veranstalten Börsen auch Wettbewerbe unter ihren Benutzern – sie stimmen für die vorgeschlagenen Kryptowährungen ab, und die Gewinnermünze wird der Angebotsliste hinzugefügt.

Huobi Global startete Ende Sommer 2018 eine automatische Listing-Plattform für Kryptowährungen. Mit ihrer Hilfe will die Börse den Prozess des Hinzufügens von Token zur Handelsliste beschleunigen und transparent machen.

Wichtige Nuancen

Das erste, worauf Börsen achten, ist der Wert einer Münze, ihre Nützlichkeit für die Gemeinschaft. An zweiter Stelle steht die Sicherheit des Projekts, denn wenn das Krypto-Netzwerk gehackt wird, leidet auch die Börse. Stellen Sie sicher, dass Sie an Professionalität und dem Ruf des Teams interessiert sind.

Zum Beispiel gibt es auf Bittrex eine Vorphase der Prüfung des Antrags und eine eingehende Prüfung. Wenn die Spezialisten des Unternehmens im Vorfeld der Meinung sind, dass der Coin es wert ist, an der Börse notiert zu werden, beginnt eine gründliche Untersuchung. Spezifikationen, innovative Funktionen, die den Anforderungen der Plattform entsprechen.

Coins, die als Wertpapiere erkennbar sind, versuchen Börsen nicht hinzuzufügen. Beispielsweise lädt Poloniex Entwickler sofort ein, sich mit dem Howey-Test vertraut zu machen, um festzustellen, ob ein Token unter diese Kriterien fallen kann oder nicht.

Eine Ausnahme unter den großen Plattformen bildet die Börse Coinbase, die die entsprechende Genehmigung der Aufsichtsbehörden erhalten hat und offiziell mit Token operieren kann, die die Eigenschaften von Wertpapieren haben.

Interessanterweise steht der Vermögenswert, wenn er gegen die Gesetze eines bestimmten Landes verstoßen würde, Benutzern aus bestimmten Gerichtsbarkeiten möglicherweise nicht zur Verfügung.

"Wirkung der Börsen"

Nach dem Hinzufügen beliebter Krypto-Börsen zu den Listen steigen die Kosten für Münzen in der Regel stark an - um durchschnittlich 25-30%. Dieses Muster wird sogar als „Börseneffekt“ bezeichnet. Dies geschieht aufgrund der Tatsache, dass mehr Benutzer von der Münze erfahren, sie erkennbar wird und die Nachfrage danach steigt. Meistens ist dieser Anstieg jedoch nur von kurzer Dauer und bald beginnen die Kosten zu sinken.

Es gibt auch Situationen, in denen der Preis von Token im Gegenteil fällt, nachdem sie in die Handelslisten von Börsen aufgenommen wurden. Dies geschieht meistens, wenn das Projekt unmittelbar danach gelistet wird und Investoren, die während des Token-Verkaufs investiert haben, versuchen, schneller zusätzliches Geld mit der Münze zu verdienen, indem sie es aktiv an der Börse abschöpfen.

Das Delisting von Kryptocoins wird aus mehreren Gründen durchgeführt:

  • geringes Interesse von Händlern;
  • Gesetzesänderungen;
  • Hacken der Blockchain des Kryptonets;
  • Weigerung der Entwickler, die Münze weiter zu unterstützen;
  • Benutzerbeschwerden.

Token werden in der Regel nicht sofort entfernt - die Börse gibt Händlern mehrere Wochen Zeit, um Positionen zu schließen und Gelder auf ihre eigenen Brieftaschen abzuheben.

Listung im Handel

Das Konzept des Listings ist auch im Handelsbereich präsent. Wenn ein Lieferant möchte, dass seine Produkte beispielsweise in den Regalen einer großen Einzelhandelskette verkauft werden, muss er sich zunächst mit der Unternehmensleitung über die Aufnahme seines Produkts in die Liste einigen.

Wird das Produkt von den Käufern nicht nachgefragt, kann es auch das Delisting-Verfahren durchlaufen und verschwindet dann aus den Verkaufsregalen.

Das Listing des Programms demol.c ist in Abb. 6.7. Der Name des Programms wird vom Programmierer angezeigt. Die Erweiterung „.c“ ist erforderlich. Der Text wird im Editor "Programmer's Notepad 2" (abgekürzt als PN2) eingegeben, der anstelle einer grafischen Shell im WinAVR-Paket enthalten ist. Darüber werden auch die Erstellung des Projekts, die Fehlerkorrektur, die Kompilierung des Programms und sogar die Programmierung des MK durchgeführt.

Reis. 6.7. Auflistung des Programms demol.c.

Reis. 6.8. Aussehen PN2-Programme.

Der PN2-Editor ist ein eigenständiges Projekt mit eigener Website. Das Aussehen des PN2-Hauptmenüs ist in Abb. 6.8.

Verfahren.

1.3 Führen Sie die Datei "WlnAVR-20100110-install.exe" (29 MB) aus, die sich auf der beigefügten CD befindet. Diese Datei kann bei Bedarf kostenlos aus dem Internet heruntergeladen werden. Installieren Sie WlnAVR standardmäßig im Ordner C:\WinAVR-20100110\.

2. Öffnen Sie den PN2-Editor: „Start – Programme – WinAVR-20100110 – Programmers Notepad“. Zeilennummerierung aktivieren: "Extras - Optionen - Allgemein - Standard -<поставить «галочку» возле «Show Line Numbers»>- OK".

3. Erstellen Sie im PN2-Editor eine neue C-Datei: "Datei - Neu - С/С++". Geben Sie den Text des Programms über die Tastatur gemäß Abb. 6.7 und speichern Sie es auf Ihrer Festplatte: „Datei - Speichern unter… -<ввести путь и имя файла, например, для однозначности C:\1001\demol.c>- OK".

Nachfolgend werden aus Platzgründen nur an den wichtigsten Stellen des Geschehens Screenshots (Screenshots) gezeigt. Die restlichen Screenshots können Schritt für Schritt in den Video-Tutorials auf der mitgelieferten CD angeschaut werden.

Auflistung Erläuterungen.

Zeile 1 beginnt mit Kommentaren, die links durch zwei Schrägstriche begrenzt sind. Alle Texte nach den Zeichen „//“ können sich auf alles Mögliche beziehen, in jeder Sprache, mit beliebigen Freiheiten und Abkürzungen. Dies sind willkürliche Informationen, die der Programmierer für sich selbst, seine Geliebte, schreibt, um sich in ein oder zwei Monaten daran zu erinnern, was tatsächlich besprochen wurde. Üblicherweise werden der Kurzname des Programms und die Urheberschaft angegeben.

Zeile 2 enthält ebenfalls Kommentare, jedoch technischer Natur. Hier ist der Schaltplan für den Anschluss der HL1-Anzeige und der SB1-Taste an bestimmte Leitungen der MK-Ports. Die Namen der Signale entsprechen dem Strich-Layout auf dem MHKpocxeMyATmega48A (Abb. 6.9) .

Reis. 6.9. MKATmega48A Signallayout.

Die Praxis der Textbeschreibung einfacher Schemata im "Header" des Programms ist in der Gemeinschaft der Programmierer weit verbreitet, die zu faul sind, grafische Schemata zu zeichnen und anzuwenden, weil sie glauben, dass "sowieso alles klar ist".

Zeile 3 spezifiziert die "makefile"-Optionen. Als Referenz, normale Arbeit Compiler AVR-GCC ist mit zwei erforderlichen Dateien möglich. Die erste ist eine Listing-Datei mit der Erweiterung ".c", die zweite ist eine "Makefile"-Systemanweisungsdatei ohne Erweiterung. Das „Makefile“ wird durch das in WinAVR enthaltene „MFile“-Dienstprogramm (Abbildung 6.10, von Jörg Wunsch, Deutschland) erstellt.

Reis. 6.10. Aussehen des MFile-Programms.

Verfahren.

1. Führen Sie das Dienstprogramm „MFile“ zur Ausführung aus: „Start – Programme – WinAVR-2010010 – MFile“.

2. Füllen Sie die Vorlagenfelder wie folgt aus (Abb. 6.11):

Geben Sie im Punkt "Makefile - Hauptdateiname ... - Hauptdatei" den Namen des zu entwickelnden Projekts "demol" ein und klicken Sie auf OK;

Wählen Sie im Element "Makefile - MCU-Typ - ATmega" MK "atmega48a" aus;

Stellen Sie im Punkt "Makefile - Optimierungsstufe" die Optimierungsstufe auf "2". Andere Möglichkeiten: "0" - keine Optimierung, "s" - die Mindestlänge der Codes, die Zahlen "1" ... "3" sind drei verschiedene Optimierungsmethoden, und die Zahl "3" bedeutet nicht die beste Option, es hängt alles vom jeweiligen C-Programm ab.

Die restlichen Punkte des "Makefile"-Templates müssen nicht angepasst werden, lassen Sie sie standardmäßig bestehen.

Reis. 6.11. Ausfüllen der Felder im MFile-Programm.

Für jedes neue Projekt und jeden neuen Typ von MK müssen Sie Ihr eigenes „Makefile“ erstellen, das den Namen des Projekts und den Typ von MK ändert.

Zeile 4 enthält Kommentare, die die Hexadezimalzahlen der niedrigen (Low), hohen (High) und erweiterten (Ext) Bytes der Konfiguration definieren. Diese Werte werden später beim Programmieren von MK-Sicherungen benötigt.

С« ktg5 ist informativ leer. Es trennt den Kommentartext optisch vom Rest des Programms. Anstatt einer können Sie zwei Leerzeilen einfügen, was nicht wichtig ist. Der Hauptpunkt ist die Verbesserung der Sichtbarkeit. Dies hat keinen Einfluss auf die Länge der MK-Firmware-Codes.

Das äußere Design der Auflistung wird vom Programmierer selbst erfunden, basierend auf seinen eigenen Vorstellungen von der Schönheit des Bildes und der Bequemlichkeit der Informationsdarstellung. Oft können Sie anhand des Stils der Kopfzeile, der Zeilen und Kommentare den Autor des Programms identifizieren oder sein psychologisches Porträt erstellen. Interessante Hinweise zu diesem Thema finden sich in der Monographie von Alain Golub.

Zeile 6 wird vom Compiler-Präprozessor bedient. Es ist keine C-Anweisung oder ein Kommentar. Der Name ist komplex, aber die Bedeutung ist einfach. Der Präprozessor (pre-PROCESSOR) sucht im Programm nach Zeilen, die mit dem Zeichen „#“ beginnen. Außerdem führt es je nach Schlüsselwort eine bestimmte Aktion aus, z. B. „define“ – weist Konstanten Werte zu, „falls definiert“ – prüft die Bedingung, „inC1ude“ – verbindet die Funktionsbibliothek usw.

Für die erste Bekanntschaft genügt es zu wissen, dass die Funktionsbibliothek eine Reihe von Dateien ist, in denen die Texte von Standard- oder häufig wiederholten Prozeduren abgelegt sind. In diesem Fall aktiviert die Direktive „#inC1ude“ (übersetzt aus dem Englischen „include“) die Systembibliothek „avr/io.h“, die für den Betrieb der Input/Output-Ports zuständig ist. Diese Bibliothek hat in verschiedenen Compilern einen anderen Namen, aber die Essenz ist dieselbe, ohne sie ist es unmöglich, eine Reihe von MK-Ports zu steuern. Daher ist die Anbindung der I/O-Bibliothek für alle Mikrocontroller-C-Programme zwingend erforderlich.

Zeile 7 wird auch vom Compiler-Präprozessor verarbeitet, hat es aber Stichwort"definieren" (übersetzt aus dem Englischen. "definieren"). Daher deklariert sie eine INI-Konstante und weist ihr den konstanten Wert 255. Die Kommentare zeigen die Umwandlung der Zahl 255 in hexadezimal 0xFF und binär 0bl 1111111. Der Unterschied zwischen ihnen liegt in den Buchstaben „x“ und „b“ nach der obligatorischen Ziffer „0“. Nummerngleich ein verschiedene Systeme ist in der Tabelle angegeben. 6.3.

Tabelle 6.3. Konvertieren von Zahlen von Hexadezimal in Binär und umgekehrt

Wenn irgendwo im „Body“ des Programms eine INI-Konstante steht, dann ersetzt der Compiler ohne nachzudenken den in Zeile 7 angegebenen Zahlenwert, d.h. 255. Dies ist sehr praktisch für Programmierer, wenn sie große Auflistungen korrigieren, wenn Konstanten über den Text verstreut sind. Darüber hinaus kann der Name der Konstante selbst eine semantische Last tragen und als verbaler Hinweis dienen. Insbesondere ist INI eine Abkürzung für das englische Wort „initialization“ (Initialisierung), was einen Anfangswert bedeutet.

Die Wichtigkeit, eine Konstante in den "Header" des Programms zu platzieren, liegt in der Einfachheit seiner Suche und der Geschwindigkeit, mit der Änderungen vorgenommen werden können. Korrigieren Sie zum Beispiel einmal die Zahl „255“, können Sie sicher sein, dass sie überall im Text automatisch (und fehlerfrei!) durch die lNI-Konstante angebracht wird.

Der Name für die Konstante kommt dem Programmierer, basierend auf gesundem Menschenverstand und menschlichen Vorlieben. Nach alter Tradition werden die Namen von Konstanten in Großbuchstaben geschrieben. Der erste Buchstabe im Namen muss ein Buchstabe sein, z. B. I2CBUS, T34. Die Verwendung von Kyrillisch ist nicht erlaubt.

Die Deklaration der INI-Konstante könnte auf zwei weitere äquivalente Arten geschrieben werden: "#define INI OxFF" oder "#define INI Obl 1111111".

Zeile 8 enthält den Variablendeklarationsoperator "a". Die Variable kann bildlich als Kiste (Box, Box, Mäppchen) dargestellt werden, in der eine bestimmte Anzahl von Gegenständen (Perlen, Körner, Streichhölzer) aufbewahrt werden. Damit sich die "Särge" voneinander unterscheiden, sind sie mit unterschiedlichen Inschriften auf dem Körper gekennzeichnet, in diesem Fall mit dem Buchstaben "a". Wenn die Anfangsnummer nicht in der Variablenbeschreibung angegeben ist, wird davon ausgegangen, dass die "Box" leer ist, und sie wird mit Null (a = 0) initialisiert. Im Laufe der Arbeit des Programms können der "Box" Objekte hinzugefügt und Objekte daraus entfernt werden, d.h. den Wert einer Variablen erhöhen und verringern.

Die Lautstärke der "Box" richtet sich nach ihrer ursprünglichen Ansage. In Tabelle. 6.4 zeigt die im AVR-GCC-Compiler angenommenen Grenzen. Wie Sie sehen, können Sie mit der "unsigned char"-Deklaration 255 Elemente in die "Box" legen. Zusammen mit dem Nullwert (dem leeren "Kästchen") ergeben sich insgesamt 256 Zustände oder 256 Bytes. Die Variable mit der Deklaration „unsigned long“ sieht nicht mehr wie eine Kiste aus, sondern wie ein ganzer Zug, der auf 4,2 Milliarden Items ausgelegt ist.

Tabelle 6.4. Dimensionen von Variablen, die in AUK-vSS übernommen wurden

Da MK keine Tools zum Arbeiten mit negativen Zahlen entwickelt hat, ist es zunächst besser, in Programmen nur positive Zahlen zu verwenden, um nicht verwirrt zu werden, d. H. enthält eine "unsignierte" Deklaration.

Die „Väter-Kommandanten“ der Sprache Seit der Antike haben sie eine unausgesprochene Ordnung aufgestellt, nach der der Name einer Variablen nicht mehr als 8 Zeichen umfassen sollte. Im AVR-GCC-Compiler wird diese Regel ignoriert und die Variable kann beliebig viele Zeichen enthalten, aber ohne Fanatismus. Das einzige ist, dass der erste Buchstabe im Namen der Buchstabe des lateinischen Alphabets sein muss, ihm können Buchstaben, Zahlen und Symbole folgen. Kyrillisch ist nicht erlaubt.

Eine Variable enthält im Gegensatz zu einer Konstanten eine variable (und keine konstante) Zahl. Um Variablen von Konstanten zu unterscheiden, werden sie klein geschrieben. Normalerweise versuchen sie, den Namen der Bedeutung entsprechend zu machen, zum Beispiel "count" für den Zähler, "data" für die Daten, "delay" für die Verzögerung. Obwohl manchmal Ein-Buchstaben-Variablen, die aus der Schulalgebra bekannt sind, einfacher, vertrauter und kompakter aussehen - a, b, c, d, i, j, k, x, y, z.

Welche Dimension für eine bestimmte Variable anzugeben ist, wird vom Programmierer bestimmt. Da die Variable "a" in dieser Auflistung ein Speicher zum Sammeln von Informationen vom digitalen 8-Bit-Port "C" ist, bedeutet dies, dass sie "zwei hoch acht" Bytes passen muss, d.h. von 0 bis 255.

Interessanterweise wirft der Compiler keinen Fehler, wenn Sie auf Nummer sicher gehen und eine Variable mit Rand als "unsigned long a;" deklarieren. Dies führt zwar zu einer unnötigen Erhöhung der Codemenge von 114 auf 126 Byte und dementsprechend zu einer leichten Verringerung der Programmausführungsgeschwindigkeit.

Das andere Extrem ist die Unterschätzung der Dimensionalität, wenn beispielsweise statt der Deklaration „unsigned int“ „unsigned char“ verwendet wird. Wird in eine solche Variable eine Zahl größer als 255 eingetragen, bleibt nur der Rest der Division durch 256 erhalten, der ältere Teil geht unwiederbringlich verloren. Bildlich gesprochen fallen Gegenstände aus der „Kiste“ nach außen. Der Compiler reagiert nicht auf solche Fehler, vorausgesetzt, der Programmierer ist in einem angemessenen Zustand und versteht, was er tut. Die richtige und eindeutige Bestimmung der Dimension von Variablen geht meist mit Erfahrung einher.

Zeile 9 ist informativ leer, ähnlich wie Zeile 5. Ob sie in das Listing eingefügt wird, hängt vom Willen des Programmierers ab.

Zeile 10 ist mit Kommentaren gefüllt, die jedoch zur Abwechslung in einem anderen Format dargestellt werden. Der Text wird nämlich auf der linken Seite mit den Symbolen "/*" und auf der rechten Seite mit den Symbolen "*/" unterstrichen. Dieser Stil stammt aus den ältesten Versionen der Sprache C. Später wurden die Zeichen „//“ in Kommentaren verwendet, was typisch für die Sprache C ++ ist. In WinAVR haben beide Möglichkeiten die gleiche Daseinsberechtigung. Die „neue“ Schreibweise ist einfacher und klarer, und die „alte“ Schreibweise ist an manchen Stellen die einzig mögliche, wenn man den Anfang des Operators kommentieren möchte.

Zeile 11 enthält einen typischen Aufruf der "main"-Funktion nach den Regeln des American National Standards Institute ANSI (American National Standards Institute). Abkürzungen sind erlaubt, aber nicht empfohlen: "int main ()", "main ()", "main (void)". Manchmal schreiben sie sogar „void main (void)“ und betonen das völlige Fehlen von empfangenen und gesendeten Parametern. Für einfache MKs, die nicht unterstützt werden Betriebssysteme Echtzeit, es wird keine negativen Folgen geben. Wenn Sie jedoch an die Zukunft denken, ist es besser, sich die vollständige Schreibweise gleich einzuprägen, was es in Zukunft einfacher macht, C-Programme auf modernere Mikrocontroller-Plattformen zu portieren.

Zeile 12 geht vollständig unter die erste öffnende geschweifte Klammer. Diese Ehre wurde ihr nicht zufällig zuteil. Beim Ausführen von Zeile 12 führt der C-Sprach-Compiler die anfängliche Initialisierung der MK-Register, die Installation des Stacks und die Zuweisung des Adressraums durch. Die Mechanik dieses Schmuckprozesses muss nicht studiert werden (im Gegensatz zu Programmen in Assembler!).

Für einen Programmierer geht es vor allem darum, zwei Dinge richtig zu lernen, die der in WinAVR enthaltene Compiler automatisch produziert:

Wenn das Programm startet, werden alle Interrupts deaktiviert;

Die Leitungen aller MK-Ports sind als Eingänge ohne „Pull-up“-Widerstände konfiguriert.

Zeile 13. Schließlich erschien der erste ausführbare Befehl des Programms in Form eines Zuweisungsoperators. Zeicheninterpretation:

„DDRB“ – herkömmlicher Name des Acht-Bit-DDR-Registers von Port „B“;

"=" - ein Zeichen der Datenaufzeichnung im DDRB-Register;

"OB" - ein Hinweis darauf, dass die nächsten 8 Ziffern eingegeben werden Binärcode;

"11111111" - die in das DDRB-Register geschriebenen Bits der Binärzahl, angeordnet in der Reihenfolge 7, 6, 5, 4, 3, 2, 1, 0 (hohes Bit links, niedriges Bit rechts).

Als Ergebnis der Hinrichtung angegebenen Betreiber alle Leitungen von Port "B" werden auf Ausgangsmodus gesetzt, da alle Bits Einsen sind.

Die Anweisung in Zeile 13 ist von links um zwei Leerzeichen eingerückt. Dies ist eine Textformatierungskonvention, an die sich viele Programmierer halten. Der Compiler „schweigt“, wenn Sie den Text wahlweise in der ersten oder in der siebten Spalte von links beginnen. Es gibt nur eine Empfehlung: "Ein C-Programmlisting sollte einfach zu sehen sein." Danach werden künftig alle Texte so formatiert, dass geschweifte Klammern in ungeraden Spalten senkrecht stehen (1, 3, 5, etc.), und in jeder Spalte nur eine öffnende geschweifte Klammer oben und eine ist schließende geschweifte Klammer unten.

Die vorgegebene Reihenfolge ist kein Dogma, sondern eine Möglichkeit, das Listing in Breite und Länge zu reduzieren, ohne Informationen zu verlieren. Der Programmierer "zu Hause" hat in seinen Listen das Recht, beliebig viele Leerzeichen, Leerzeilen etc.

Zeile /4 arbeitet in Verbindung mit Zeile 13, da der spezifische Zustand der Portleitung in AVR-Controllern durch ein Bündel von zwei Registern DDRx und PORTx bestimmt wird, wobei "x" der Ordnungsbuchstabe des Ports ist, z. B. B, C oder D. Wenn man bedenkt, dass jedes Register 8 Bits mit Zahlen von 0 bis 7 (bedingt "z") hat, dann ist das allgemeine Layout der Portleitungen wie folgt:

DDRx.z = 1, PORTx.z = 1 - Ausgang mit HIGH-Pegel;

DDRx.z = 1, PORTx.z = 0 - LOW-Ausgang;

DDRx.z = 0, PORTx.z = 1 - Eingang mit "Pull-Up"-Widerstand;

DDRx.z = 0, PORTx.z = 0 - Eingang ohne "Pull-Up"-Widerstand.

Zusammenfassung der Zeilen 13 und 14: DDRB.0…DDRB.7 = 1, PORTB.O = 0, PORTB.l = 1, PORTB.2…PORTB.7 = 0, also Zeilen 0, 2…7 von Port „B “ werden als Ausgänge mit konfiguriert NIEDRIGE LEVEL und Leitung 1 als HIGH-Pegel-Ausgang. Da die HL1-Anzeige mit der PB1-Leitung (Pin 15 des DD1-Chips in Abb. 6.3) verbunden ist, erlischt sie. Es stellt sich heraus, dass der erste Teil der technischen Aufgabe erfolgreich abgeschlossen wurde.

Die Zeilen 15, 16 sind ähnlich wie die Zeilen 13, 14, aber für Port "C". Für eine Änderung wird die Substitution der lNI-Konstante verwendet. Nach Ausführung der Zeilen 15 und 16 werden alle Leitungen des Ports „C“, auch die, die nicht direkt an der Arbeit beteiligt sind, als Eingänge mit „Pull-up“-Widerständen konfiguriert. Dies ist eine Standard-Port-Initialisierungstechnik, um die internen Pull-up-Widerstände zu aktivieren, die verhindern, dass die CMOS-Eingänge der MCU-Leitungen „in der Luft hängen“ und alle möglichen Rausch- und Interferenzpfade eliminieren.

Linie 17 ist ähnlich wie die Linien 13, 14 und 15, 16, aber für Port "D". Er ist in Schaltplan spielt überhaupt keine Rolle, aber Sie sollten es sich zur Regel machen, alle Ports ausnahmslos zu Beginn des Programms zu initialisieren. Ihre freien Leitungen müssen als Eingänge mit "Pull-up"-Widerständen oder als Ausgänge mit HIGH/LOW konfiguriert werden. Ein solcher Automatismus hilft künftig, Kollisionen und Missverständnisse zu vermeiden.

Eine Besonderheit ist die Zuweisung des PORTD-Registers an den zuvor in Zeile 13 dem DDRB-Register zugewiesenen Wert, d.h. Binärzahl Obl 1111111. Dies wurde zu Bildungszwecken gemacht, weil es einfacher hätte sein können: "PORTD = OxFF;".

Ein weiteres Detail ist das Fehlen eines DDRD-Registereintrags. Dies ist kein Tippfehler, sondern eine bewusste Kürzung der Auflistung um eine Zeile, da beim Einschalten laut Datenblatt automatisch „Nullen“ in alle Register DDRx, PORTx eingetragen werden, d.h. ein zusätzliches Zurücksetzen des DDRD-Registers ist nicht erforderlich.

Zeile 18 enthält die Schleifenanweisung „while“. Für die erste Bekanntschaft genügt es, sich daran zu erinnern, dass der Ausdruck "while (1)" die sequentielle Ausführung der Anweisungen in den Zeilen 19 ... 21 in einer Endlosschleife bedeutet.

Zeile 19 enthält eine öffnende geschweifte Klammer und einen Zuweisungsoperator. Diese Kombination wird von den Regeln der C-Sprache zugelassen, wodurch Sie die Auflistung in der Höhe kompakter gestalten können.

Nach der Ausführung von Zeile 19 speichert die Variable "a" das Statusbyte der acht Zeilen von Port "C", das aus dem PINC-Register gelesen wurde. Wenn die SB1-Taste nicht gedrückt wird, dann "a = OxFF", und wenn gedrückt, dann "a = OxFE".

Zeile 20 verschiebt den Inhalt der Variablen "a" um ein Bit nach links. Es gibt zwei Möglichkeiten: Wenn "a" früher OxFF war, wird es OxFE, und wenn es OxFE war, wird es OxFD. Warum das so ist, erfahren Sie in der nächsten Zeile des Programms.

Zeile 21 enthält eine Zuweisungsanweisung, aber im Vergleich zu Zeile 19 sind die Variable "a" und das Portregister vertauscht. In der C-Sprache führt eine solche Rochade zum Ersetzen einer Leseoperation von dem Port durch eine Schreiboperation zu dem Port. Insgesamt wird an Port „B“ der Code 0xFE (bei nicht gedrückter SB1-Taste) bzw. der Code 0xFD (bei gedrückter SB1-Taste) ausgegeben. Im ersten Fall erlischt die HL1-Anzeige, im zweiten leuchtet sie, was laut Aufgabenstellung zu erreichen war.

Die Zeilen 22, 23 enthalten schließende geschweifte Klammern. Wenn Sie im Geiste zwei ziehen Vertikale Linien"von unten nach oben" zeigen sie direkt auf die öffnenden Klammern in den Zeilen 19 und 12. Die Klammer in Zeile 22 zeigt die Wiederholung des Zyklus in den Zeilen 19 ... 21 an. Die Klammer in Zeile 23 beginnt an der ersten Stelle von links, das Ende der „main“-Funktion ist also erreicht und damit das Ende des Hauptprogramms.

Zeile 24 enthält Kommentare über die WinAVR-Versionsnummer und die Länge der Firmware-Codes, was beim Kompilieren des Programms durch andere Benutzer sehr nützlich ist. Es ist bekannt, dass WinAVR-Versionen nicht 100% kompatibel zueinander sind, und dafür gibt es gute Beispiele. Daher kann die Länge des kompilierten Codes derselben Auflistung von Version zu Version unterschiedlich sein. Die praktische Schlussfolgerung ist, dass Sie das Programm zuerst mit dem in Zeile 24 angegebenen WinAVR-Paket kompilieren müssen und erst dann auf einem älteren oder mehr neue Version, die sich auf die empfangene Codelänge als Prüfsumme bezieht.

Der aufmerksame Leser hat das Recht zu bemerken, dass es beim Kompilieren der Auflistung des C-Programms unmöglich war, im Voraus zu berechnen, wie viel Platz die Codes im MK-Speicher belegen. Um ehrlich zu sein, wurde die Aufschrift "114 Bytes (2,8%)" später hinzugefügt, nachdem das Programm kompiliert wurde. Es gibt ein klares Beispiel dafür Rückmeldung, was im Blockschaltbild in Abb. 6.1 wurde durch eine gepunktete Linie zwischen den Blöcken „K“ und „L“ angezeigt.

Zeile 25 ist komplett leer, markiert aber im Gegensatz zu den Zeilen 5 und 9 das physikalische Ende des Listings. Ohne diese abschließende Zeile gibt der Compiler eine milde, aber dennoch Warnung aus: "Warnung: kein Zeilenumbruch am Ende der Datei". Neue Zeile am Ende der Datei).

Var n1, n2: Lange Ganzzahl;

Funktion Menge (x: Lange Ganzzahl): Byte;

Var k: Byte;

Während x<>0 tun

Start

Ende;

Menge:=k;

Start

Writeln("Geben Sie zwei Zahlen ein");

k1:= Menge (n1);

(Anzahl der Stellen der ersten Zahl)

k2:= Menge (n2);

(Anzahl der Stellen der zweiten Zahl)

Writeln("Gleiche Stellenzahl")

Wenn k1 > k2 Dann

Writeln("Es gibt mehr Ziffern in der ersten Zahl")

Writeln("Die zweite Zahl enthält mehr Ziffern");

Vorlesung Nr. 17. Nicht-traditionelle Verwendung von benutzerdefinierten Routinen. Rekursion

Eine Reihe von Problemlösungsalgorithmen erfordert den Aufruf einer Subroutine aus dem Anweisungsabschnitt derselben Subroutine.

Rekursion ist eine Möglichkeit, einen Rechenprozess zu organisieren, bei dem eine Prozedur oder Funktion während der Ausführung ihrer konstituierenden Anweisungen auf sich selbst verweist. Verwenden Rekursion sollten besonders darauf achten um das Unterprogramm rechtzeitig zu verlassen. Rekursion ist nützlich, wenn eine Aufgabe in Unteraufgaben aufgeteilt werden muss. Wenn Sie eine rekursive Prozedur und Funktion verwenden, müssen Sie die Zeile an den Anfang stellen

wenn gedrückt dann halt; - um den Hang zu brechen, wenn er auftritt. Taste gedrückt ist eine Funktion, die ein Ergebnis zurückgibt Stimmt, wenn eine Taste auf der Tastatur gedrückt wurde, und FALSCH- sonst.

Beispiel 1 Stellen Sie sich ein Programm zur Berechnung der Elemente der Fibonacci-Reihe vor rekursiv Verfahren.

Prozedur fibon(n,fn1,fn:Ganzzahl);(rekursives Verfahren)

wenn n > 0 dann

schreiben(fn1+fn);

fibon(n-1,fn,fn1+fn);

varn,a,b: Ganzzahl;

write("Geben Sie die Anzahl der Elemente der Fibonacci-Reihe ein: ");

write("...nach zwei gegebenen Zahlen: ");

Fibon(n,a,b);

Beispiel 2 Ein Programm, das die Ziffern einer positiven ganzen Zahl in umgekehrter Reihenfolge anzeigt.

Programm wiederholt sich2;

Prozedur reverse(n:integer);(rekursives Verfahren)

Wenn gedrückt, dann halt;

Schreiben (n mod 10);

wenn (n div 10)<>0 dann

Umkehren (n div 10);

writeln("Zahlen eingeben<= : ", maxint);

Umkehrung (n);

Vortrag Nummer 18. Eingabe - Ausgabe von Daten. Dateien

Eine Datei ist ein Satz von Daten, die im externen Speicher eines Computers unter einem bestimmten Namen gespeichert sind.

Jede Datei hat drei charakteristische Merkmale:

1. Die Datei hat einen Namen, der es dem Programm ermöglicht, mit mehreren Dateien gleichzeitig zu arbeiten.

2. Die Datei enthält Komponenten des gleichen Typs. Der Komponententyp einer Datei kann ein beliebiger Typ sein.

3. Die Länge der neu erstellten Datei wird bei der Deklaration in keiner Weise festgelegt und ist nur durch die Kapazität externer Speichergeräte begrenzt.

Damit das Programm die gewünschte Datei findet, müssen Sie den Pfad oder die Route zur Datei kennen.

Ein Pfad ist eine Liste von Unterverzeichnisnamen, die durch einen umgekehrten Schrägstrich voneinander getrennt sind, gefolgt vom Dateinamen selbst.

Zum Beispiel:

c:\katalog1\katalog2\datei1.txt.

Jeder Verzeichnisname entspricht einem Eintrag in einem Unterverzeichnis mit diesem Namen. Das Zeichen „..“ entspricht einem Eintrag im Superdirectory. Die maximal zulässige Pfadlänge beträgt 79 Zeichen.

In einem TR-Programm wird der Dateiname als in Apostrophe eingeschlossene Textkonstante angegeben, die der Wert einer String-Variablen sein kann:

"\turbo\pas\table.txt".

Geräte. Die Verwendung von Dateien in TR wurde durch die Notwendigkeit verursacht, Daten mit der Computerumgebung und ihrer Hardware auszutauschen: Anzeige, Tastatur, Drucker, Eingabe-Ausgabe-Kanäle. Sie alle werden im TR als Dateien betrachtet, die wie normale Dateien behandelt werden können. Häufig werden Dateien auf externen Geräten aufgerufen physische oder externe Dateien . Geräte werden mit speziellen Namen angesprochen, die für gewöhnliche Dateien nicht erlaubt sind - den sogenannten Logische Gerätenamen von Computern.

­ CON- Konsole . Mit Hilfe der Konsole werden die Ausgabeinformationen an den Bildschirm gesendet und die Eingabeinformationen von der Tastatur wahrgenommen;

­ PRN- dieser Name Drucker . Sind mehrere Drucker an den Rechner angeschlossen, erfolgt der Zugriff über logische Namen: LPT1, LPT2, LPT3.

­ COM1, COM2, COM3 - Dies sind Geräte zum Verbinden serielle Ports . Wird verwendet, um mit anderen Computern zu kommunizieren und eine Maus anzuschließen.

­ NUL- Null oder leer Gerät. Wird oft von Programmierern verwendet, um ein Programm zu debuggen. Ermöglicht das Erstellen einer separaten Datei. Bei der Verwendung zur Anzeige von Informationen werden die Informationen nirgendwo angezeigt, aber es wird gemeldet, dass die Ausgabe erfolgreich war.

Dateizugriff. Das Programm ist jederzeit nur verfügbar ein Dateielement, auf das der aktuelle Positionszeiger der Datei verweist. Es definiert den Ort in der Datei, an dem Daten gelesen oder geschrieben werden. Beim Öffnen oder Erstellen einer Datei der Zeiger wird an seinen Anfang gesetzt. Der Mauszeiger verhält sich wie ein Cursor, der sich bewegt, während Sie Text bearbeiten, um ständig die aktuelle Position anzuzeigen. Beim Lesen von Daten aus einer Datei erreicht der Zeiger schließlich das Ende der Datei. Je nach Art des Zugriffs auf Elemente unterscheiden sie sich Dateien mit sequentiellem oder direktem Zugriff.