Вторник, Май 26, 2020

Бегущие огни AVR C

//При включении питания контроллера светодиод двигается в одну сторону.Если нажать кнопку,светодиод будет двигаться в другую сторону.
#include <avr/io.h>
#include "util/delay_basic.h"
int main(void)
{
    unsigned char rab;           //Переменная беззнаковая 1байт
    ACSR|=(1<<ACD);
    DDRD&=(~(1<<DDD0));
    DDRB=0xFF;
    PORTB=0xFF;
    PORTD|=(1<<PD0);
    while(1)
    {
        if (PIND&(1<<PIND0))    //Кнопка нажата?
        {                       //Нет.
            rab=0b10000000;     //Запись начального значения.
            while(rab!=0)       //Пока не ноль.
            {
                PORTB=rab^0xFF; //Запись в порт с инверсией xor.
                rab=rab>>1;     //Сдвиг вправо 1-бит
                _delay_loop_2(10000);
            }
        }
        else
        {                       //Да.
            rab=0b00000001;     //Запись начального значения.
            while(rab!=0)       //Пока не ноль.
            {
                PORTB=rab^0xFF; //Запись в порт с инверсией xor.
                rab<<=1;        //Сдвиг влево 1-бит
                _delay_loop_2(10000);
            }
        }
    }
}




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


 


Back to Top