Gast
#711367
Hallo! Grüble seit langem an folgendem Problem und hoffe hier kann mir jemand helfen... Ich habe folgenden Quelltext um eine 3*3 LED Matrix anzusteuern: #include <avr/io.h> #include <stdint.h> void Pset(uint8_t x, uint8_t y); uint8_t xpos; uint8_t ypos; int main(void) { DDRD = 0xFF; ypos= 2; xpos = 2; Pset(xpos,ypos); while(1){ } return 0; } void Pset(uint8_t x, uint8_t y) { uint8_t z; z = 0b00111000; //Bei dieser Bit-Konfiguration sind alle Leds aus z |= (1<< y); z ^= (1<< (x+3)); PORTD = z; } Alledings werden die Berechnungen in der Funktion Pset komplett falsch:( z |= (1<< y); // 0<y<3 Hierdurch soll Bit0-Bit2 anktiviert werden z ^= (1<< (x+3)); Hierdurch Bit 3-5 deaktiviert. Irgenwie funktioniert das ganze aber gar nicht... wenn ich einfach PORTD = 0b00101010 schreibe (Bit 4 deaktiviert, Bit 1 aktiviert) geht das gewünscht Led an, mit meiner funktion nicht.... Danke schon einmal!