//В этом листинге будем использовать Таймер1-TIMER_COUNTER_1.Схема и задача как и в прошлом листинге.
#include <avr/io.h>
void delay(unsigned int kdel)
{
    TCNT1=0;                  //сбос два счетных байта на 0.
    while(TCNT1<kdel){}       //пока счётчик меньше параметра.
}
void main(void)
{
    unsigned char rab;
    DDRD&=(~(1<<DDD0));
    DDRB=0xff;
    PORTB=0xff;
    PORTD=0x7f;
    ACSR=0x80;
    TCCR1B=0x05;               //Таймер1 включен.Предделитель 1\1024
    while(1)
    {
        if (PIND&(1<<PIND0))
        {
            rab=1;
            while(rab!=0)
            {
                PORTB=rab^0xff;
                rab=rab<<1;
                delay(50);     //Вызов функции задержки с параметром 50.
            }
        }
        else
        {
            rab=0x80;
            while(rab!=0)
            {
                PORTB=rab^0xff;
                rab=rab>>1;
                delay(50);
            }                
        }
    }
}

 

 

 

НАЗАД               Assembler AVR               Assembler PIC                 ДАЛЕЕ