Noto co jest tu źle ? :
//LEDMulti drugi projekt
#include <avr\io.h>
#include <inttypes.h>
#include <avr\signal.h>
#include <avr\interrupt.h>
#include <avr\pgmspace.h>
#include <avr\delay.h>
#define LED_A 0
#define LED_B 1
#define LED_C 2
#define LED_D 3
#define LED_E 4
#define LED_F 5
#define LED_G 6
#define LED_DP 7
#define LEDPORT PORTB
#define LEDDDR DDRB
#define COM1 6
#define COM2 5
#define COM3 4
#define COM4 3
#define COMPORT PORTD
#define COMDDR DDRD
uint16_t g_Licznik = 0;
uint8_t g_AktWyswietlacz = 0;
uint8_t g_DaneWyswietlacza [4];
uint8_t g_DaneCom[4] PROGMEM =
{~(1<<COM1) , ~(1<<COM2) , ~(1<<COM3) , ~(1<<COM4) };
void WyswietlHex(uint16_t var);
{
g_DaneWyswietlacza[0] = pgm_read_byte(&g_WzorCyfr[var>>(3*4)]);
g_DaneWyswietlacza[1] = pgm_read_byte(&g_WzorCyfr[(var>>(2*4))&0xf]);
g_DaneWyswietlacza[2] = pgm_read_byte(&g_WzorCyfr[(var>>(1*4))&0xf]);
g_DaneWyswietlacza[3] = pgm_read_byte(&g_WzorCyfr[var>>&0xf]);
}
int main(void)
{
//INICJACJA
LEDDDR = 0XFF;
COMDDR = 1<<COM1 | 1<<COM2 | 1<<COM3 | 1<<COM4;
//Timer0
TCCR0 = 1<<CS01;
TIMSK = 1<<TOIE0;
//Globalne zezwolenie na przewania
sei();
//koniec inicjaci
////////////////
//WPISANIE DO TABLICY PRUBNYCH WARTOŚCI
g_DaneWyswietlacza[0] = ~(1<<LED_B | 1<<LED_C);
g_DaneWyswietlacza[1] = ~(1<<LED_A | 1<<LED_B | 1<<LED_D | 1<<LED_E | 1<<LED_G );
g_DaneWyswietlacza[2] = ~(1<<LED_A | 1<<LED_B | 1<<LED_C | 1<<LED_D | 1<<LED_G );
g_DaneWyswietlacza[3] = ~(1<<LED_B | 1<<LED_C | 1<<LED_F | 1<<LED_G );
for(;
{
WyswietlHex(g_Licznik);
_delay_loop_2(0xffff);
g_Licznik++;
}
return 0;
}
//_________________________________________________________
//obsługa przerwań
SIGNAL(SIG_OVERFLOW0)
{
//Wygaszenie wyswietlaczy
COMPORT |= 1<<COM1 | 1<<COM2 | 1<<COM3 | 1<<COM4;
//WYSŁANIE ODPOWIEDNEJ DANEJ
LEDPORT = g_DaneWyswietlacza[g_AktWyswietlacz];
//wlonczenie odpowiedniego wyswietlacza
COMPORT &= pgm_read_byte (&g_DaneCom[g_AktWyswietlacz]);
//zwienkszenie stanu zmiennej wskazujoncvej na obsługiwany wyswietlacz
++g_AktWyswietlacz;
if(g_AktWyswietlacz > 3)
g_AktWyswietlacz = 0;
prog_uint8_t g_WzorCyfr[16] =
}
{
~(1<<LED_A | 1<<LED_B | 1<<LED_C | 1<<LED_D | 1<<LED_E | 1<<LED_F), //0
~(1<<LED_B | 1<<LED_C), //1
~(1<<LED_A | 1<<LED_B | 1<<LED_D | 1<<LED_E | 1<<LED_G), //2
~(1<<LED_A | 1<<LED_B | 1<<LED_C | 1<<LED_D | 1<<LED_G), //3
~(1<<LED_B | 1<<LED_C | 1<<LED_F | 1<<LED_G), //4
~(1<<LED_A | 1<<LED_C | 1<<LED_D | 1<<LED_F | 1<<LED_G), //5
~(1<<LED_A | 1<<LED_C | 1<<LED_D | 1<<LED_E | 1<<LED_F | 1<<LED_G), //6
~(1<<LED_A | 1<<LED_B | 1<<LED_C), //7
~(1<<LED_A | 1<<LED_B | 1<<LED_C | 1<<LED_D | 1<<LED_E | 1<<LED_F | 1<<LED_G), //8
~(1<<LED_A | 1<<LED_B | 1<<LED_C | 1<<LED_f | 1<<LED_G), //9
~(1<<LED_A | 1<<LED_B | 1<<LED_c | 1<<LED_E | 1<<LED_F | 1<<LED_G), //A
~(1<<LED_C | 1<<LED_D | 1<<LED_F | 1<<LED_G), //B
~(1<<LED_A | 1<<LED_D | 1<<LED_E | 1<<LED_F), //C
~(1<<LED_B | 1<<LED_C | 1<<LED_D | 1<<LED_E | 1<<LED_G), //D
~(1<<LED_A | 1<<LED_E | 1<<LED_F | 1<<LED_G), //F
}