//Если нажать на кнопку-светодиод начинает мигать,отпустить-гаснет.Сдесь мы напишем функцию задержки.
#include <avr/io.h>
#include "util/delay_basic.h"
int main(void)
{
ACSR&=(~(1<<ACD)); //Отключаем компаратор
DDRD&=(~(1<<PIND0)); //Порт Д,бит 0-на вход
DDRB|=(1<<PINB0); //Порт Б,бит 0-на выход
PORTD|=(1<<PD0); //Порт Д,бит 0-pullup
while(1)
{
PORTB|=(1<<PB0);
while(PIND&(1<<PIND0))//Если Порт Д,бит 0-+5В
{ //Бесконечный цикл
}
_delay_loop_2(20000); //Задержка
PORTB&=(~(1<<PB0)); //Порт Б,бит 0=0В
_delay_loop_2(20000); //Задержка
PORTB|=(1<<PB0); //Порт Б,бит 0=5В
}
}
//Другой вариант
#include <avr/io.h>
#include "util/delay_basic.h"
int main(void)
{
ACSR&=(~(1<<ACD)); //Отключаем компаратор
DDRD&=(~(1<<PIND0)); //Порт Д,бит 0-на вход
DDRB|=(1<<PINB0); //Порт Б,бит 0-на выход
PORTD|=(1<<PD0); //Порт Д,бит 0-pullup
while(1)
{
if (PIND&(1<<PIND0)) //Кнопка нажата?
{ //Нет.
PORTB|=(1<<PB0); //Тушим светодиод.
}
else //Да.
{
_delay_loop_2(20000); //Задержка
PORTB&=(~(1<<PB0)); //Порт Б,бит 0=0В
_delay_loop_2(20000); //Задержка
PORTB|=(1<<PB0); //Порт Б,бит 0=5В
}
}
}
НАЗАД Assembler AVR Assembler PIC ДАЛЕЕ