Hi, Nerb,

Zitat Zitat von Nerb
... war mir nur nicht ganz sicher, mit den 16 bit...
Nur damit es keinerlei Mißverständnis gibt:
Der mega8 ist ein "• High-performance, Low-power AVR® 8-bit Microcontroller" - so stehts im Datenblatt. Was heißt das?

Der mega8 hat Register mit 8 bit Datenbreite, also mit 1 Byte. Er kann (von vernachlässigbaren Ausnahmen abgesehen) mit einem einzigen Maschinenbefehl nur Daten mit einer Größe von 1 Byte = 8 bit zur gleichen Zeit verarbeiten. Beispielsweise kann er mit einem einzigen Befehl zwei 8-Bit-Integer addieren. Was macht man aber bei 16-bit-Integer oder gar 4-Byte(=32bit)-Integer)? Durch geschickte Programmierung gehts. Beim Addieren einer 16 bit-Integer werden zuerst die zwei niederwertigen Bytes addiert und mit dem Überlauf (Carrybit) danach die beiden höherwertigen Bytes addiert. Damit erhalte ich eine 16-Bit-Addition. Die anderen Rechnungen gehen - sagen wir mal - sinngemäß. Für solche Rechnungen benötigst Du dann deutlich mehr Rechenschritte.

Fazit: Du kannst mit einer geeigneten Programmiersprache auch Integerwerte mit 16 Bit, 32 Bit und höher für Deine Rechnungen benutzen. In Assembler geht das ja auch, aber da musst Du wie im obigen Beispiel den genauen Ablauf der Rechnung eben selber programmieren. Bei einer "Hochsprache" wie z.B. C erledigt der Compiler solche Aufgaben für Dich - sprich, der hat bereits fertige Routinen für Rechnungen mit größeren Integerwerten verfügbar, die dann beim compilieren zu Deinem Code dazugebunden werden.

Fazit: Der mega8 ist ein 8-bit-Controller. Er kann auch Integerwerte mit zwei, vier oder mehr Bytes verarbeiten.