ich wollte kurz fragen ob der Code für die Tabelle so richtig ist.
Das ganze bezieht sich auf eine 7 Segment Anzeige.
Code:
#include <avr/io.h> #include <avr/interrupt.h> #define warte(Dauer)\ for(uint16_t z2=Dauer; z2>0; z2--)\ { for(uint16_t z1=65535; z1>0; z1--)\ {asm volatile("NOP");\ }\ } uint8_t Marker1 = 0; uint8_t Marker2 = 0; #define Taster_1_D PD2 #define Taster_2_D PD3 uint8_t Tab [10] [2]; #define B 0 #define D 1 int Ro = 0; int Lo = 1; int Om = 2; int M = 3; int Ru = 0; int Lu = 1; int Um = 2; int Do = 3; int main(void) { DDRD |= 0b11110000; DDRB |= 0b00111111; Tab [Ro] [D] = 64; //RechtsO Tab [Om] [D] = 32; //ObenM Tab [M] [D] = 128; //Mitte Tab [Ru] [B] = 4; //RechtsU Tab [Lu] [B] = 32; //LinksU Tab [Um] [B] = 16; //UntenM Tab [Do] [B] = 2; //Dot Tab [Lo] [B] = 128; //LinksO while(1) { //1 Tab [0][D] = (1<<Ro)|(0<<Om)|(0<<M); Tab [0][B] = (1<<Ru)|(0<<Lu)|(0<<Um)|(0<<Do)|(0<<Lo); warte(1000) //2 Tab [1][D] = (1<<Ro)|(1<<Om)|(1<<M); Tab [1][B] = (0<<Ru)|(1<<Lu)|(1<<Um)|(1<<Do)|(0<<Lo); warte(1000) //3 Tab [2][D] = (1<<Ro)|(1<<Om)|(1<<M); Tab [2][B] = (1<<Ru)|(0<<Lu)|(1<<Um)|(0<<Do)|(0<<Lo); warte(1000) //4 Tab [3][D] = (1<<Ro)|(0<<Om)|(1<<M); Tab [3][B] = (1<<Ru)|(0<<Lu)|(0<<Um)|(0<<Do)|(1<<Lo); warte(1000) //5 Tab [4][D] = (0<<Ro)|(0<<Lo)|(1<<Om)|(1<<M); Tab [4][B] = (1<<Ru)|(0<<Lu)|(1<<Um)|(1<<Do)|(1<<Lo); warte(1000) //6 Tab [5][D] = (0<<Ro)|(1<<Om)|(1<<M); Tab [5][B] = (1<<Ru)|(1<<Lu)|(1<<Um)|(1<<Do)|(1<<Lo); warte(1000) //7 Tab [6][D] = (1<<Ro)|(0<<Lo)|(1<<Om)|(0<<M); Tab [6][B] = (1<<Ru)|(0<<Lu)|(0<<Um)|(0<<Do)|(0<<Lo); warte(1000) //8 Tab [7][D] = (1<<Ro)|(1<<Om)|(1<<M); Tab [7][B] = (1<<Ru)|(1<<Lu)|(1<<Um)|(1<<Do); warte(1000) //9 Tab [8][D] = (1<<Ro)|(1<<Om)|(1<<M); Tab [8][B] = (1<<Ru)|(0<<Lu)|(1<<Um)|(1<<Do)|(1<<Lo); warte(1000) //0 Tab [9][D] = (1<<Ro)|(1<<Lo)|(1<<Om)|(0<<M); Tab [9][B] = (1<<Ru)|(1<<Lu)|(1<<Um)|(0<<Do)|(1<<Lo); warte(1000) } }