Hallo, ich beschäftige mich gerade mit dem Tutorial um das programmieren eines µC zu erlernen. http://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen Doch leider stellt sich hier für mich schon eine Frage, die sicherlich durch einen Profi leicht zu beantworten ist. Beim Tutorial wird ein Atmega8 programmiert. Der Code lautet folgendermaßen: .include "m8def.inc" ; Definitionsdatei für den Prozessortyp einbinden ldi r16, 0xFF ; lade Arbeitsregister r16 mit der Konstanten 0xFF out DDRB, r16 ; Inhalt von r16 ins IO-Register DDRB ausgeben ldi r16, 0b11111100 ; 0b11111100 in r16 laden out PORTB, r16 ; r16 ins IO-Register PORTB ausgeben ende: rjmp ende ; Sprung zur Marke "ende" -> Endlosschleife In der Beschreibung steht, dass in der Zeile "out DDRB, r16" das Datenrichtungsregister mit dem Wert von r16 geladen wird, folglich mit 0xFF oder 0b11111111, also 8 mal die binäre 1. Weiterhin steht in der Beschreibung folgendes: In diesem Fall sind also alle 6 Pins von Port B Ausgänge. Da der Atmega8 nur 6 Pins für Port B hat, ist das soweit klar, wieso nun alle Ausgänge sind. Unklar ist mir jedoch, wieso man 8 mal eine binäre 1 benötigt und nicht 6 mal, da ja nur 6 Pins vorhanden sind. Ich gehe mal davon aus, dass man das bei einem Atmega16, welcher 8 Port B Pins hat, ebenso programmieren würde. Verstehe aber nicht, wieso man bei nur 6 Pins ebenfalls 8 binären Einsen in das Datenrichtungsregister schreibt. Würde mich freuen, wenn mir das jemand kurz erklären könnte, möchte das nämlich von Grund auf verstehen und nicht mit vielen Fragezeichen weitermachen. Vielen Dank. Gruß Darius
6 würden auch reichen. Für die beiden letzten Ports fehlt einfach nur der Pin, was du mit denen machst ist deshalb egal.
Hallo, vielen Dank. Dann habe ich ja doch nicht ganz so falsch gedacht und es eigentlich verstanden. Gruß Darius
Moin, Du hast recht. Du verwendest wahrscheinlich die PDIP-Version. Das Tutorial ist aber für alle Versionen (auch MLP und TQFP) gültig. Diese haben nämlich alle Portpins für Port B. Du bist schon auf dem richtigen Weg. Viel Spass Stefan
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.