Hallo,
da ich bemüht bin C zu lernen versuche ich gerde die ASURO -Dateien zu verstehen.
Es geht mir um die Bestimmung der Richtung - genauer um diese Zeile aus der asuro.c:
PORTD = (PORTD &~ ((1 << PD4) | (1 << PD5))) | left_dir;
mir hat schon jemand erklärt (im C-Fourm), dass aus den Klammern folgendes wird: PORTD AND 1100 1111
Dies ist also der Wert des PORTD - Bytes und die beiden Bits werden 0.
Gut nun fehlt noch: | left_dir also OR left_dir
Die Werte für left_dir sind in der asuro.h definiert:
Code:
#define FWD (1 << PB5) /* (1 << PD5) */
#define RWD (1 << PB4) /* (1 << PD4) */
#define BREAK 0x00
#define FREE (1 << PB4) | (1 << PB5) /* (1 << PD4) | (1 << PD5)*/
Also ist FWD 0010 0000 dies mit OR PORTD verknüpft ergibt also:
xx10 xxxx wobei x die alten Werte von PORTD bedeutet.
Richtig?
Habe ich jetzt die Bitmanipulation verstanden - ganz schön mühselig ...
Gruß
Stefan
Lesezeichen