Помогите разобраться с программой.

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Аватара пользователя
amirus
Открыл глаза
Сообщения: 63
Зарегистрирован: Пт авг 07, 2009 06:55:32
Откуда: Asia.

Помогите разобраться с программой.

Сообщение amirus »

Всем доброго времени суток. Помогите пожалуйста, или подскажите как реализовать следующее. Программа при нажатии на кнопки зажигает, а последующее тушит светодиоды на портах PB0 и PB1. Как сделать чтобы при подачи питания оба светодиода зажглись и потухли на пример через пару секунд и перешла в ожидание нажатия кнопок? Заранее благодарен.
Спойлер#include<avr/io.h>
#define F_CPU 128000UL
#include<util/delay.h>

//void _delay_ms
void wait(int time)
{
volatile int i;

for(i=0; i<time; i++);
}
int main(void)
{
char k1state, k2state;

DDRB |= 1<<0|1<<1;
PORTB |= 1<<0|1<<1;

DDRB &= ~(1<<4|1<<5);
PORTB |= (1<<4|1<<5);

while(1)
/////////////////////////////////////////////////
{
if(PINB&(1<<4))
{
if(k1state==0) k1state = 1;
wait(100);
}
else
{
if(k1state)
{
wait(100);
k1state = 0;
wait(100);
PORTB^=(1<<0);
}

////////////////////////////////////////////////
}
if(PINB&(1<<5))
{
if(k2state==0) k2state = 1;
wait(100);
}
else
{
if(k2state)
{
wait(100);
k2state = 0;
PORTB^=(1<<1);
wait(100);
}
}

wait(100);

};
}
Реклама
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Помогите разобраться с программой.

Сообщение YS »

Как сделать чтобы при подачи питания оба светодиода зажглись и потухли на пример через пару секунд и перешла в ожидание нажатия кнопок?
Т.е., алгоритм получается такой:

1. При подаче питания оба светодиода загораются на 2 с., после чего гаснут.
2. Далее нажатие кнопки включает оба светодиода, повторное тушит, и так далее.

Так?
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Реклама
Аватара пользователя
amirus
Открыл глаза
Сообщения: 63
Зарегистрирован: Пт авг 07, 2009 06:55:32
Откуда: Asia.

Re: Помогите разобраться с программой.

Сообщение amirus »

Доброго времени суток. Все верно, после включения, загораются оба светодиода. Далее алгоритм верный, только не оба светодиода, а по отдельности, каждый светодиод управляется своей кнопкой. В архиве файл протеуса и прошивка, можно посмотреть как работает.
Вложения
Кнопки.rar
(6.83 КБ) 145 скачиваний
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Помогите разобраться с программой.

Сообщение YS »

В архиве файл протеуса и прошивка
Так тема еще актуальна или нет, если прошивка уже есть?
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Mishany
Электрический кот
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Re: Помогите разобраться с программой.

Сообщение Mishany »

вообще то перед циклом While пишется разовый код/алгоритм/функция после выполнения уходим в цикл опроса кнопок
Реклама
Аватара пользователя
rxstart1
Вымогатель припоя
Сообщения: 508
Зарегистрирован: Пт фев 22, 2013 18:00:43
Откуда: Беларусь, г. Гомель

Re: Помогите разобраться с программой.

Сообщение rxstart1 »

Нажимаешь на кнопку зажигаешь диоды и обнуляешь счетчик таймера, а там хоть по совпадению, хоть по переполнению делай. Как счетчик достиг значения=2сек. диоды туши. Программа линейна и никуда возвращаться не надо.
Реклама
Аватара пользователя
amirus
Открыл глаза
Сообщения: 63
Зарегистрирован: Пт авг 07, 2009 06:55:32
Откуда: Asia.

Re: Помогите разобраться с программой.

Сообщение amirus »

Всем доброго времени. Тема еще актуальна. Не могу решить проверку светодиодов зажиганием. Если пишу разовым кодом, у меня светодиоды просто моргают.
Аватара пользователя
Mishany
Электрический кот
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Re: Помогите разобраться с программой.

Сообщение Mishany »

а ваша писанина засекречена? алгоритм подсказал, а то что не работает надо код смотреть....
Аватара пользователя
amirus
Открыл глаза
Сообщения: 63
Зарегистрирован: Пт авг 07, 2009 06:55:32
Откуда: Asia.

Re: Помогите разобраться с программой.

Сообщение amirus »

Нет конечно :) Вы правильно написали, "писанина" . Она в спойлере в первом посте.
Вложения
auto.c
(822 байт) 204 скачивания
Аватара пользователя
Mishany
Электрический кот
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Re: Помогите разобраться с программой.

Сообщение Mishany »

это что?

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

 DDRB |= 1<<0|1<<1;
 PORTB |= 1<<0|1<<1;
 
 DDRB &= ~(1<<4|1<<5);
 PORTB |= (1<<4|1<<5);
DDRB устанавливает еденицей вывод мк на выход, по умолчанию выводы мк работают на вход.

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

DDRB =(1<<0)|(1<<1); //0 и 1 порт на выход, остальные вход...
вообщем убираем эту запись и пишем:

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

DDRB |=(1<<0)|(1<<1); //0 и 1 порт на выход, остальные вход...
POPTB |=(1<<0)|(1<<1); //выводим на порт 0 и 1 еденицу
wait(100); //подбираем нужную задержку в скобках
POPTB &=~(1<<0)|(1<<1); //выводим на порт 0 и 1 ноль
wait(100); //подбираем нужную задержку в скобках
// и далее...
int main(void)
{
 char  k1state, k2state;
...........
и добавить перед последней скобкой return 0;
Аватара пользователя
rxstart1
Вымогатель припоя
Сообщения: 508
Зарегистрирован: Пт фев 22, 2013 18:00:43
Откуда: Беларусь, г. Гомель

Re: Помогите разобраться с программой.

Сообщение rxstart1 »

Во первых зачем функция wait
используй библиотеку <delay.h>, там есть функция delay_ms(<задержка в миллисекундах>);
во вторых основная функция ничего не возвращает, поэтому правильно писать void main(void)
и самое главное, твой код здесь не при чем. Проверь, на работу с какой частотой настроен твой компилятор, она должна совпадать с частотой установленной в твоем коде и оптимизация должна быть минимальной, оптимизировать надо по скорости.
для твоего случая частоты в 1МГц за глаза хватит, не думаю, что на rc цепочке мк корректно раскрутит 12 МГц, без внешнего источника тактования.
Аватара пользователя
Mishany
Электрический кот
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Re: Помогите разобраться с программой.

Сообщение Mishany »

судя по настройке там уже 128 кГц, для лампочек и кнопок стабилизация частоты не имеет смысла.
можно и делай использовать можно и своей функцией, тут кому как удобнее, да и не в задержке собственно проблема.
А вообще делай при возможности лучше заменять, сам стараюсь по минимуму ее использовать
Аватара пользователя
amirus
Открыл глаза
Сообщения: 63
Зарегистрирован: Пт авг 07, 2009 06:55:32
Откуда: Asia.

Re: Помогите разобраться с программой.

Сообщение amirus »

Спасибо за советы, попробую, расскажу что получилось.
Ответить

Вернуться в «Разные вопросы по МК»