Подскажите В Чем Скомпелировать

27-11-2014, 15:12 От: admin Посмотрели: 596

/*

Chapter - 3
Project - 7 VU meter
*/


#include<avr/io.h>
#include<avr/pgmspace.h>
#include<avr/interrupt.h>
#define F_CPU 8000000UL
#include<util/delay.h>


//This function read the value of ADC from ADC0 channel
unsigned char read_adc(void);


//Global Variables
volatile unsigned char count=0,statusonoff[20],i,adcreading[10],level;
volatile unsigned int adcsum;


//Values of cathode and anode --They represent the pin number of PORTB to which corresponding
//LED has been connected
const unsigned char anode[20]PROGMEM = {0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4};
const unsigned char cathode[20]PROGMEM ={1,2,3,4,0,2,3,4,0,1,3,4,0,1,2,4,0,1,2,3};



int main(void)
{

//Timer Init
TCCR0A = 0x00;
TCCR0B = 0x02;
TIMSK = 0x02;

//ADC init
ADMUX = 0b00100000;//ADC0,VCC reference,Left shift
ADCSRA = 0b10000111;//Prescaled by 128;

//Neglect first reading
ADCSRA |= 1<<ADSC;
while(ADCSRA&(1<<ADSC));//wait
count=ADCH;

count=0;//To be used in timer overflow interrupt

sei();

//Take 10 initial readings to fill the buffer
for(i=0;i<=9;i++)
{
adcreading[i]=read_adc();
}

while(1)
{

//shift the values
for(i=0;i<9;i++)
{
adcreading[i]=adcreading[i+1];
}

//take new reading
adcreading[9] = read_adc();

//Find the sum and perform quantization
adcsum = 0;
for(i=0;i<10;i++)
{
adcsum = adcsum + adcreading[i];
}

//Divide sum of 10 ADC reading from 0 to 2550 into 21 levels(0 to 20)
adcsum = adcsum/122;

if(level>adcsum)
{
for(i=adcsum;i<level;i++)
{
statusonoff[i]=0;
}
}
else if(level<adcsum)
{
for(i=level;i<adcsum;i++)
{
statusonoff[i]=1;
}
}
level=adcsum;




}



}


//Overflow routine for timer0
ISR(TIM0_OVF_vect)
{
DDRB = 0;

PORTB = (statusonoff[count])<<pgm_read_byte(&anode[count])|0<<pgm_read_byte(&cathode[count]);
DDRB = 1<<pgm_read_byte(&anode[count])|1<<pgm_read_byte(&cathode[count]);
count++;
if(count==20)
count=0;



}

//This function read the value of ADC from ADC0 channel
unsigned char read_adc(void)
{
ADCSRA |= 1<<ADSC;
while(ADCSRA&(1<<ADSC));//Wait

//measurement taken

return ADCH;

}



может у кого скомпелируется

желательно скинуть фото результата
Раздел: Школьникам и студентам

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться, либо войти на сайт под своим именем.

Обсудить на форуме


На момент добавления Подскажите В Чем Скомпелировать все ссылки были рабочие.
Все публикации статей, книг и журналов, представлены на этом сайте, исключительно для ознакомления,
авторские права на эти публикации принадлежат авторам статей, книг и издательствам журналов!
Подробно тут | Жалоба

Добавление комментария

Ваше имя:*
E-Mail:*
Текст:
Вопрос:
Решите уравнения x+2x=789
Ответ:*
Введите два слова, показанных на изображении:



Опрос

Ваши предпочтения в TRX


Одинарное преобразование
Двойное преобразование
Прямое преобразование
SDR
Другое
Мне всё равно

Календарь новостей
«    Апрель 2024    »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930