Hallo
Wenn du microcontroller programmierst musst du ab und zu einzelne Bits in den Steuerregistern, die meißt ein Byte lang sind, verändern. Da aber ein Byte das kleinste ist was sich addressieren lässt kann man die Bits nicht einzeln verändern, man muss sich 'Tricks' einfallen lassen.
Das zum einen bitweise Boolsche Operationen (&, |, !,...) soll heißen (und, oder, nicht,...). Diese vergleichen jeweils ein Bit miteinander. zb:
01010000 | 00001010 = 01011010
Zum anderen sind hexadezimale Zahlen ganz praktisch:
Die Ziffern 0-9 werden einfach mit Buchstaben A-F fortgesetzt. Man kann so mit einer Stelle 16 verschiedene Zustände angeben. (statt 10 wie bei dezimalen Zahlen, daher der Name) Zur Kennzeichnung einer hex Zahl schreibt man in C ein 0x davor. Mit zwei Ziffern kann man jetzt schon 16*16 Zustände darstellen (vergleiche 10*10) und das entspricht... hopsala 256, also genau ein Byte. Wenn man also schreibt:
(0b heißt natürlich binär)
0x03 heist dass eigentlich 0b00000011
0x00 natürlich 0b00000000 und
0xFF heißt 0b11111111
Auf diese Weise kann man sich Zuweisungen und Abfragen zusammenbasteln, will man zb. Bit 0 (TOV0) des Registers TIFR (Timer Interrupt Flag Register) setzen ohne die anderen Bits zu verändern so schreibt man:
TIFR |= 0x01
was nichts anderes heißt als:
TIFR = TIFR | 0b00000001
Die Schreibweise mit 0b ist aber nicht in jeder C Version genormt und sollte daher nicht verwendet werden.
Will man überprüfen ob ein Bit in einem Register gesetzt wurde so schreibt man:
TIFR & 0x01
Und will man solange an einer Stelle warten bis das das Bit gesetzt wurde so schreibt man:
while(!(TIFR & 0x01));
Ja, auch dafür kann man eine while Schleife missbrauchen
Tja, das war erstmal alles nur C, und welche Register man wie, wann und warum setzten muss, das ist es was eigentlich das Programmieren von Microcontrollern ausmacht.
Deshalb, wenn du die oben beschriebenen Basics verstanden hast (mehr davon im C Tutorial), ist es Zeit sich mal ein Datenblatt durchzulesen. Wie der alte Meister schon wusste: Datenblattleser wissen mehr.
http://www.atmel.com/dyn/resources/prod_documents/doc8154.pdf
Achja, die Entwicklungsumgebung:
Für Windows: WIN-AVR:
http://www.mikrocontroller.net/articles/WinAVR
Der Editor ist bereits dabei: Programmers Notepad.
mfg Fritz
_________________