- Регистрация
- 13 Апр 2009
- Сообщения
- 16,556
- Реакции
- 289
- Баллы
- 0
Компилирование в HEX
Ребята, кто умеет компилировать, скомпилируйте пожалуйста в hex
:
Я не умею и вин-авр не знаю как скачать, и вообще ........


Ребята, кто умеет компилировать, скомпилируйте пожалуйста в hex
Код:
This program was produced by the
CodeWizardAVR V2.03.4 Standard
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date : 06.08.2009
Author :
Company :
Comments:
Chip type : ATtiny2313
Clock frequency : 8,000000 MHz
Memory model : Tiny
External RAM size : 0
Data Stack size : 32
*****************************************************/
#include <tiny2313.h>
#include <stdlib.h>
#include <math.h>
#include <delay.h>
unsigned char sred, sgreen, sblue; //showing colors
int red, green, blue; //now colors
unsigned int tred, tgreen, tblue; //tagert colors
int delta_red, delta_green, delta_blue; //величина прибавки за шаг
unsigned int time = 1; //длительность шага
void delay(unsigned int delayt) //задержка delay_ms() на вход принимает только константу(
{
while (delayt != 0)
{
delay_ms(1);
delayt--;
};
};
void main(void)
{
unsigned int temp1, temp2, temp3, temp4;
// Crystal Oscillator division factor: 1
//#pragma optsize-
//CLKPR=0x80;
//CLKPR=0x00;
//#ifdef _OPTIMIZE_SIZE_
//#pragma optsize+
//#endif
// Input/Output Ports initialization
// Port A initialization
// Func2=In Func1=In Func0=In
// State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=Out Func3=Out Func2=Out Func1=In Func0=In
// State7=T State6=T State5=T State4=0 State3=0 State2=0 State1=T State0=T
PORTB=0x00;
DDRB=0x1C;
// Port D initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 8000,000 kHz
// Mode: Fast PWM top=FFh
// OC0A output: Non-Inverted PWM
// OC0B output: Disconnected
TCCR0A=0x83;
TCCR0B=0x01;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 8000,000 kHz
// Mode: Fast PWM top=00FFh
// OC1A output: Non-Inv.
// OC1B output: Non-Inv.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0xA1;
TCCR1B=0x09;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// Interrupt on any change on pins PCINT0-7: Off
//GIMSK=0x00;
//MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01;
srand(1); //инициализируем рандомайзер этим значением
while (1)
{
do
{
tred = rand()&0xFF;
tgreen = rand()&0xFF;
tblue = rand()& 0xFF;
temp1 = (abs(tred - tgreen));
temp2 = (abs(tred - tblue));
temp3 = (abs(tgreen - tblue));
}
while (( temp1 < 150 ) && (temp2 < 150) && (temp3 < 150)); //если все цвета будут примерно равные то будет белый что не интересно
if (rand() < 13100) //c вероятностью 0,4 (32767) вышибаем один цвет
{
do
{
temp4 = rand() & 0x000F ;
}
while ((temp4 == 0) || (temp4 > 3));
if (temp4 == 1) //не повезло красному
{ //гасим до 0 - 20% от исходного
do
{
temp4 = rand() & 0x0FFF;
}
while ((temp4 == 0) || (temp4 > 3276));
tred = ceil ((float) (temp4 / 32767) * tred);
};
if (temp4 == 2)
{
do
{
temp4 = rand() & 0x0FFF;
}
while ((temp4 == 0) || (temp4 > 3276));
tgreen = ceil ((float) (temp4 / 32767) * tgreen);
};
if (temp4 == 3)
{
do
{
temp4 = rand() & 0x0FFF;
}
while ((temp4 == 0) || (temp4 > 3276));
tblue = ceil ((float) (temp4 / 32767) * tblue);
};
};
delta_red = (tred - sred);
delta_green = (tgreen - sgreen);
delta_blue = (tblue - sblue);
do
{
sred=((red&0xFF00)/256);
sgreen=((green&0xFF00)/256);
sblue=((blue&0xFF00)/256);
if ((tred) != (sred))
red = red + delta_red;
if ((tgreen) != (sgreen))
green = green + delta_green;
if ((tblue) != (sblue))
blue = blue + delta_blue;
OCR1B = sred;
OCR1A = sgreen;
OCR0A = sblue;
delay(time);
}
while ((tred != (sred)) || (tgreen != (sgreen)) || (tblue != (sblue)));
delay(time * 255); //стремились к этому цвету, задержим его
time = 1 + rand()&0x0F; // 1 до 16 варьируется задержка, числа подобраны экспериментально
//делаем после что бы включалось плавно и быстро
};
}