Бегущие огни,кнопка прерывания.

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Andrewtar
Встал на лапы
Сообщения: 80
Зарегистрирован: Чт фев 24, 2011 09:06:09
Откуда: Новосибирск

Бегущие огни,кнопка прерывания.

Сообщение Andrewtar »

Доброго всем Уважаемые форумчане! Есть некий код бегущих огней (взятый с радиопати),
в нём при нажатии кнопки светики бегут в другом направление при отпускание опять в другом! Собственно вот какой вопрос !! как сделать чтоб при отпускание кнопки не менялось направление бега светиков. т.е нажал ,отпустил светики в одну сторону , ещё раз нажал отпустил в дргую!
Вложения
123.c
(950 байт) 412 скачиваний
Реклама
Аватара пользователя
coredumped
Опытный кот
Сообщения: 838
Зарегистрирован: Вт апр 12, 2011 18:38:19
Откуда: с Земли

Re: Бегущие огни,кнопка прерывания.

Сообщение coredumped »

Код: Выделить всё

#include <avr/io.h>
#include <avr/interrupt.h>

unsigned char temp;
volatile unsigned char direction = 0;
/***Процедура обработки прерывания по Таймеру 1***/

ISR (TIMER1_COMPA_vect)
{
if (direction) // Проверка состояния переключателя
{
temp = temp >> 1; // Сдвиг вправо
if (temp==0)
{ temp = 0b10000000;}
}
else
{
temp = temp << 1; // Сдвиг влево
if (temp==0)
{ temp = 0b00000001;}
}
PORTD=temp; // Запись в порт PD
}

int main(void)
{
unsigned int c;
/***настраиваем порты ввода-вывода***/

DDRC = 0x00;
PORTC = (1 << PC0);
DDRD = 0xFF;
PORTD = 0x00;

/***Настраиваем таймер***/

TCCR1A = 0x00;
TCCR1B = (1 << CS12)|(0 << CS11)|(1 << CS10)|(1 << WGM12); //предделитель clk/1024, режим таймера СТС
TCNT1=0x00;
OCR1A=780; // выбор коэффициента деления
TIMSK=(1 << OCIE1A); // разрешение прерывания по совпадению

temp=0b00000000; // Присвоение начального значения

asm ("sei"); // Разрешение прерываний

while (1) 
{
	if((PINC&(1 << PC0)) == 1) c=0;	
	else
	{
		if(c<=10000) c++; //антидребезг	
		if(c==10000) direction ^= 0xFF; //change direction 
	}
} // Бесконечный цикл

}
Все будет только лучше, в крайнем случае - хуже.
Реклама
Andrewtar
Встал на лапы
Сообщения: 80
Зарегистрирован: Чт фев 24, 2011 09:06:09
Откуда: Новосибирск

Re: Бегущие огни,кнопка прерывания.

Сообщение Andrewtar »

Спасибо большое работает то что надо )) буду кумекать что да как!
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»