//чтобы всё понять нужно сначало разобраться с программой на 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                 ДАЛЕЕ