mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wait oder counter funktion für at89s52


Autor: Oliver D. (smasher)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe mal eine blöde frage ;)

Ich habe mir für den at89s52 die befehlssätze als pdf geladen und dort 
steht alles in asm. Da ich allerdings in c programmieren möchte bräuchte 
ich einen Befehlssatz der für den Keil uVision 3 Kompatibel ist und den 
Internationalen standards von c entspricht. Ich weiß nicht warum, aber 
unsere Lehrer verwenden in den Beispielprogrammen nur komische Befehle 
dir mein uVision nicht versteht und deshalb bin ich an den extras 
notiert in C interessiert.
Vielleicht verstehe ich die Befehle auch nicht so, weil ich mit dem 
Datenblatt nicht zu recht komme...denn da steht ja ne menge drinne.

Und direkt noch ne andere Frage, gehört der at89s52 zur 8051er 
familie?(bzw, ist er ein 8051er)
Im datenblatt steht ja nur das er kompatibel zu MC81 ist und die 82 im 
namen verwirrt mich ein bischen.

Autor: Thomas B. (detritus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du in C programmierst, kann dir der asm-Befehlssatz erstmal egal 
sein. Du musst halt das Standard C können(for, while, if, funktionen, 
zeiger, ...).
Den µC musst du dem µVision dann einstellen und der kompiliert dir das 
dann passend zum Controller und seinem Befehlssatz.

Und der at89s52 gehört zu den 8051ern, bzw ist eine der vielen 
kompatiblen Erweiterungen dazu.

Autor: Oliver D. (smasher)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also mir ist es wichtig zu wissen, wie ich die sonderfunktionen in c 
nutzen kann.

wenn ich einen Zähler baue, der bis 4 milliarden zählt (weil das ding ja 
eine operation pro takt macht) belege ich damit natürlich ne menge 
speicher und rechenleistung.

Interessanter währs da einen timer zu nutzen der integriert ist.

Autor: Thomas B. (detritus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok...

Du bindest die header-datei für deinen Controller ein, sollte irgendwie 
so aussehen:
#include <AT89S82.H>

Die Header-Datei muss dabei im gleichen Ordner wie dein C-Programm sein, 
ansonsten musst du den Pfad angeben.

Und dann kannst du die SFR beschreiben wie in Assembler auch:
void config(void)                 
{
  TMOD|=0x02;
  TH0=0xCE;                
  WDTCON=0x69;                
  CLKREG=0x01;                  
  ET0=1;
  TR0=1;
  EA=1;
}

Autor: Oliver D. (smasher)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist das nun C oder asm code?

Autor: Thomas B. (detritus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
C.

Autor: Oliver D. (smasher)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Darf ich fragen woher du die Befehle hast?

Ich suche nämlich vergeblich ein datenblatt in dem alle befehle für den 
at89s52 in keil beschrieben sind. Natürlich in C.

Autor: Thomas B. (detritus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Son Datenblatt gibt es nicht.

Alle asm-Befehle sind im '51 Instruction Set, das du dir runterladen 
kannst, und alles, was deinen Controller vom Standard 8051 
unterscheidet, findest du in dessen Datenblatt.

Mit diesen Infos und den eingebundenen Headerfiles kannst du die SFR mit 
den Namen aus dem Datenblatt ansprechen.
Es gibt keine extra Befehle, um z.B. den Timer anzusprechen. Du wirfst 
nen Blick ins Datenblatt und findest raus, in welches SFR du welchen 
Wert schreiben musst, damit der Timer ne bestimmte Überlauffrequenz 
erreicht und schaltest die entsprechenden Interrupts ein.

Willst du nicht lieber mal in Assembler anfangen und ne LED zum Blinken 
bringen? Das könntest du dann in C "nachbauen", dann siehst du wohl am 
besten, wo es Unterschiede gibt.

Autor: Oliver D. (smasher)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
asm ist blöde.

Ich brauche für mein Zentral abi in NRW in Elektrotechnik 8051er 
Programmierung in C.
Asm ist da nicht hilfreich.

Autor: Oliver D. (smasher)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achja, wo finde ich das 51 instruction set?
Ich habe hier den 8051 befehlssatz pdf in deutsch. Dort sind deine 
befehle aber nicht enthalten.

Autor: Thomas B. (detritus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber auch für C musst du verstanden haben, wie der Controller 
funktioniert. Ohne Grundlagen brauchst du jedenfalls nicht mit ner 
Hochsprache anfangen...

Kauf dir den Controller, ne Lochrasterplatine und bisschen Kleinkram, 
lad dir für C den Keil und für Assembler den AS51V4 und probier mal rum. 
Schaltpläne gibts reichlich im Netz.

Edit:

"Meine" Befehle findest du im Datenblatt natürlich nicht. Ich weise 
lediglich in C  Registern einen Wert zu, und der Controller reagiert 
darauf damit, dass der Timer läuft und Interrupts liefert. Ausserdem 
wird auch noch ne Watchdog eingerichtet.

Und wie gesagt, die Befehle aus dem Instruction Set sind ASM und kein C!

Autor: Oliver D. (smasher)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe hier schon ein board liegen.

Ich suche einfach nur mal ne website mit nem tutorial das in c ist für 
den prozi den ich habe.

Autor: Oliver D. (smasher)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder mal andersherum,

wo find ich denn eine Tabelle, in der steht welche Pins welche hex 
adresse haben?

an P3.2 ist bei mir z.b. ein Taser angeschlossen der auf Masse gelegt 
ist.
Dann könnte ich ja eine 1 reinschreiben und diese dann mit dem Taster 
runterziehen und dann eine LED leuchten lassen.

Ich müsste halt nur wissen wie die Adresse des Pins ist...

Autor: Thomas B. (detritus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du die entsprechende .h einbindest:
#include <AT89S82.H>
braucht dich die hex-Adresse nicht zu interessieren. Dann heist dein 
P3.2 auch im Programm genau so. Die .h-Datei ist quasi ne 
Übersetzungstabelle für die Registernamen aus dem Datenblatt auf ihre 
HEX-Adressen.

Ansonsten gibts die Hex-Adresse natürlich auch im Datenblatt. Damit 
arbeitet aber wohl niemand, auch im Assembler kann man mit dem Namen 
arbeiten, wenn man die entprechende Übersetzungstabelle einbindet.

Autor: Oliver D. (smasher)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm, also der Keil kennt die datei leider nicht....

Autor: Thomas B. (detritus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klar...
#include <AT89S52.H>

Das Ding heisst so wie der Prozessor, Verschreiber meinerseits.

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.