//чтобы всё понять нужно сначало разобраться с программой на assembler
#include <avr/io.h>
//объявляем массив и инициализируем его
unsigned int tabkd[7]={4748,4480,4228,3992,3768,3556,3356};
int main(void)
{
unsigned char count;
unsigned char temp;
PORTB=0x00;
DDRB=0x08;
PORTD=0x7f;
DDRD=0x00;
ACSR=0x80;
TCCR1A=0x00;
TCCR1B=0x09;
while(1)
{
m1: temp=PIND;
//count сразу равен 0,затем проверка,затем увеличение на 1
for (count=0;count<7;count++)
{
if(!(temp&1))goto m2; //проверяем кнопки
temp>>=1; //сдвиг на 1 вправо
}
//сюда попадаем когда count будет равен 7
TCCR1A=0x00; //отключение звука
goto m1; //если кнопка не нажата
m2: OCR1A=tabkd[count]; //берём число из массива,то чему равно count
TCCR1A=0x40; //включаем звук
}
}
НАЗАД Assembler AVR Assembler PIC ДАЛЕЕ