Zitat :
|
| Wofür brauch denn der uP include? |
Das ist eine Textdatei in der numerischen Werten sprechende Namen zugewiesen werden.
Auch bestimmte Tests und Verarbeitungsanweisungen für den Assembler können darin enthalten sein.
Der Assembler liest die darin enthaltenen Anweisungen in dem Moment, in dem er über die $include-Anweisung stolpert.
Schau einfach mal mit dem Editor in die Datei hinein.
Du kannst dort auch selbst Eintragungen machen, wenn Du beim Programmieren häufig bestimmte Namen verwenden willst.
Besser ist es allerdings, wenn Du dafür eine eigene Include-Datei anlegst, und dann auch ein eigenes $include -Statement verwendest.
Zitat :
|
| der nächste fehler war $NOMOD51 ich weis uach nciht, was der befehl bewirkt ... nehm mal an, das er die assemblerversion darstellt! |
Schlecht wenn Du's nicht weißt. Ich kann das wirklich nicht nachsehen.
Das findest Du im Handbuch des Assemblers. Generell sehen so Anweisungen aus, die dem Assembler Hinweise geben, wie er Dein Programm zu verarbeiten hat. Beispielsweise mit welchem Prozessor er es zu tun hat, wie das Listing auszusehen hat, der Titel des Programms, die Ausführlichkeit der Fehlermeldungen. Auch Anweisungen, die den Assembler garnicht interessieren, sondern die er z.B. einfach an das Programmiergerät weitergibt, können so aussehen.
Zitat :
|
| Wie soll man dann einen Ausgang auf 1 bzw. 0 setzten können??? |
Das wäre nicht der einzige µP bei dem das nicht ginge.
Dann baut man sich, beispielsweise mit AND oder OR, in einem Register das richtige Bitmuster zusammen und beschreibt dann eben alle Bits des Ports gleichzeitig, mit den richtigen Werten.
Dein µP hat aber beispielsweise den SETB-Befehl.
Zitat :
|
| Kannst du mir irgendwie helfen da einen besseren einstieg zu bekommen? Oder meinst du, das ich mich so weiter durchkämpfen sollte und das der Weg der richtige ist?! |
Wenn Du englisch kannst, kann ich Dir nur wärmstens die Manuals und Beispiele des Herstellers empfehlen.
Daß Du so kämpfen mußt, liegt zum Teil daran, daß Du Dir einen Chip ausgesucht hast, der seine Blütezeit schon etwas hinter sich hat. Es gibt populärere Chips, zu denen auch sehr komfortable Entwicklungssysteme verfügbar sind.
Kämpfen ist aber nicht grundsätzlich schlecht. Dabei lernt man viel. Vielleicht hast Du ja auch einen Grund warum es ein 8051-Derivat sein muß. Beispielsweise Du hast zwei Schuhkartons voll mit diesen Chips.
Auch wenn das Design alt ist, so ist es noch längst nicht tot. Es gibt durchaus Firmen, die auch jetzt noch neue Derivate, auch sehr viel schnellere auf den Markt bringen.
Hier noch eine Skizze, wie ich die Grundversion des Lauflichts programmieren würde:
; npn-Transistoren als LED-Treiber an PORT1.0...PORT1.7 bis PORT2.0 und PORT2.1
MainLoop:
MOV R1,#00000001b ; Die 1 wird gleich die LED an P1.0 anzünden
MOV R2,#0 ; das geht gleich an P2
MOV R3,#10; NextLed-Schleife 10 mal ausführen
NextLed:
MOV A,R1
MOV PORT1,A
MOV A,R2
ORL A,#11111100b ; damit Port2 Bit 2...7 als Eingänge verfügbar bleiben mit 1 beschreiben.
MOV PORT2,A
MOV A,R1
CLR C ; Übertrag löschen, sonst rutscht er gleich in Bit 0
RLC A ; bit 7 steht jetzt im C
MOV R1,A
MOV A,R2
RLC A ; jetzt ist das alte R1.7 ins R2.0 gekommen
MOV R2,A ; neues Muster fertig
TwiddleThumbs:
DJNZ R4,TwiddleThumbs
DJNZ R5,TwiddleThumbs ; ein bischen warten
DJNZ R3,NextLed ; neuberechnetes Muster an LED ausgeben.
SJMP MainLoop ; alle LEDs waren dran, dat janze von vorn
Man könnte das noch etwas kürzer programmieren, aber dann leidet die Transparenz.
[ Diese Nachricht wurde geändert von: perl am 18 Okt 2003 3:24 ]