www.mikrocontroller.net

Forum: Compiler & IDEs outp(0xff, DDRB);


Autor: udo scharnitzki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

gibt es eine Möglichkeit, Programme mit den alten Befehlen

      outp(0xff, DDRB);  ....

auf dem aktuellen Compiler laufen zu lassen?

Ich habe das Buch von G.Schmitt "Mikrocomputertechnik mit ATMEL
Familie". Alle C-Programme sind für den alten Compiler aus dem Jahr
2004 oder so. Ich habe versucht mit

       #include <compat/deprecated.h>

die Befehle einzubinden. Mein copiler hat nur noch gemeckert. Wie geht
man vor, um alte Befehle einzubinden?

Gruß

Udo

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
compat/deprecated.h sollte helfen.  Was geht denn damit nicht?

Ansonsten sind die doch trivial:

#define outp(p, v) (p) = (v)
#define inp(p) (p)

Autor: udo scharnitzki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jörg,

hier ist das kleine Programm. Im Anschluß sind die Fehlermeldungen. Ich
weiß noch nicht, was ich im Quellcode ändern muß, damit das Programm
läuft.

Udo

/* p3.c Bild 3-20: Verzoegerter Dezimlazaehler mod 100 gemessen 13 sek
   B-Port: Ausgabe zweistellig dezimal acht Leuchtdioden und
BCD-Anzeige
*/
#include <avr/io.h>                       // Deklarationen

#include <compat/deprecated.h>

// Benutzerdefinierte Ausgabe-Funktion vor main
void outdez(unsigned char wert, unsigned char port)
{
 unsigned char einer, zehner;         // lokale Hilfsvariablen
 zehner = wert / 10;                  // Zehnerstelle
 einer  = wert % 10;                  // Einerstelle
 outp( (zehner << 4) | einer, port);  // Ausgabe
}
// Hauptfunktion main
void main (void)                      // Hauptfunktion
{
 unsigned char x = 0;                 // Ausgabezaehler
 unsigned int i;                      // Wartezaehler
 outp(0xff, DDRB);                    // B-Port ist Ausgang
 while(1)                             // Arbeitsschleife Abbruch mit
Reset
 {
  outdez(x, PORTB);                   // Zaehler dezimal ausgeben
  x++; if (x >= 100) x = 0;           // Begrenzung auf modulo 100
  for (i=0; i<65535; i++);            // warten mit leerer
for-Schleife
 }  // Ende while
}  // Ende main

Build started 9.2.2006 at 13:09:38
avr-gcc  -mmcu=at90s2313 -Wall -gdwarf-2 -O0
-Wp,-M,-MP,-MT,p3altcompiler.o,-MF,dep/p3altcompiler.o.d  -c
../p3altcompiler.c
../p3altcompiler.c: In function `outdez':
../p3altcompiler.c:14: error: invalid lvalue in assignment
../p3altcompiler.c: At top level:
../p3altcompiler.c:18: warning: return type of 'main' is not `int'
../p3altcompiler.c: In function `main':
../p3altcompiler.c:21: error: invalid lvalue in assignment
make: *** [p3altcompiler.o] Error 1
Build failed with 2 errors and 1 warnings...

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach du Sch...

Das ist ja noch die uralte Version, bei der die Argumente von
outp() vertauscht waren.

Tu dir und allen anderen einen Gefallen und werf diese Makros
einfach raus aus dem Code.  Er wird einfacher davon.

Autor: udo scharnitzki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

kann ich parallel zu meinem aktuellen compiler in AVRSTUDIO4 einen
älteren compiler einsetzen? Ich möchte die Programme aus dem Buch von
G.Schmitt laufen lassen, ohne alle Befehle umzustricken. Das kann ich
zu diesem Zeitpunkt noch nicht. Kann man als Einsteiger nicht wissen,
daß die Befehle veraltet sind.
Kann mir jemand sagen, bis zu welcher Compiler Version diese Befehle

outp(0xff,PORTB;

verwendet wurden? Es gibt bestimmt in Deutschland viele Anfänger, die
ebenfalls diese Programme aus dem Buch nicht nutzen können.

Gruß

Udo

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das gehört zu einer mehr als 5 Jahre alten Version von Compiler
und Library.

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.