Witam.Mam problem z rozdzieleniem liczby zapisanej szesnastkowo.
Chciałbym aby wartość pobrana z tablicy,np. 0xAABBCC została rozpisana do zmiennych jako:
red=AA;
green=BB;
blue=CC;
W kodzie który jest niżej,tylko wartość w zmiennej red jest prawidłowa,pozostałe nie dają pożądanego przeze mnie efektu.Ten sam program napisałem w Dev-C++ i wszystkie zmienne miały prawidłowe wartości.Gdzie może być błąd?
Chciałbym aby wartość pobrana z tablicy,np. 0xAABBCC została rozpisana do zmiennych jako:
red=AA;
green=BB;
blue=CC;
W kodzie który jest niżej,tylko wartość w zmiennej red jest prawidłowa,pozostałe nie dają pożądanego przeze mnie efektu.Ten sam program napisałem w Dev-C++ i wszystkie zmienne miały prawidłowe wartości.Gdzie może być błąd?
#include <avr/io.h>
#include <util/delay.h>
void main()
{
DDRB |= _BV(DDB3);
DDRB |= _BV(DDB2);
DDRB |= _BV(DDB1);
TCCR2 = _BV(WGM20) | _BV(COM21) | _BV(CS20);
TCCR1A = _BV(COM1A1) | _BV(COM1B1) |_BV(WGM10);
TCCR1B = _BV(CS10);
unsigned int paleta[34]={ 0x00ffff,0xff00ff,0xffff00,0x000000,0x80002b,0x001b3b,0x75d41d,0x00bfbf,0x670a00,0x8000ff,0xba74ff,
0x0080db,0x008da9,0x9b6a12,0x23ebc3,0xff0000,0xff7474,0x0046f0,0x749af7,0x74ff74,0x35008f,
0x0073ff,0xb7c274,0xff312e,0x00eb6c,0xe16f00,0x11d3d3,0x1136ff,0x5200d0,0x00964b,0x009595,
0x000970,0x830300,0x522725,0x0f7f7f};
unsigned int red=255,green=255,blue=255,i=0;
while(1)
{
i=rand()%34;
kolor=paleta[i];
red=kolor/0x10000;
kolor=kolor-red*0x10000;
green=kolor/0x100;
blue=kolor%0x100;
OCR2=green; OCR1A=blue; OCR1B=red;
}
}