Страница 1 из 2
регистр и светодиоды
Добавлено: Чт окт 16, 2014 08:59:47
sirha
Всем привет подскажите возможно ли как нибудь в прерываниях упростить вот этот код
Код: Выделить всё
#include <tiny13.h>
#include <delay.h>
int i,b;
interrupt [EXT_INT0] void ext_int0_isr(void)
{
for (b=0;b<1;b++)
{
}
for (i=0;i<b;i++)
{
PORTB.3=1;
PORTB.0=1;
delay_us(1);
PORTB.0=0;
PORTB.3=0;
delay_us(1);
}
for (i=0;i<1;i++)
{
PORTB.2=1;
delay_us(1);
PORTB.2=0;
delay_us(1);
}
delay_ms(100);
}
void main (void)
{
PORTB=0x02;
DDRB=0xD;
MCUCR=0x00;
GICR=0xC0;
#asm ("sei");
while(1);
}
тут при нажатии одной кнопки загорается светодиод,при каждом нажатии количество загоревшихся светодиодов постепенно увеличивается
Можете привести примеры кода для codevision ,чтобы при нажатии кнопки загорался светодиод , при повторном нажатии загорался следующий светодиод а предыдущий тух и так далее,код только с регистром 74hc595
Re: регистр и светодиоды
Добавлено: Чт окт 16, 2014 09:39:57
Pink-Pank
тут при нажатии одной кнопки загорается светодиод,при каждом нажатии количество загоревшихся светодиодов постепенно увеличивается
Интересно, как это у Вас реализовано?
Не вижу, где меняется значение a,b,c.
Не вижу, что a,b,c объявлены как volatile
Как Вы собираетесь увидеть вот это:
Код-то вообще рабочий?
Re: регистр и светодиоды
Добавлено: Чт окт 16, 2014 09:53:40
sirha
Pink-Pank писал(а):
Как Вы собираетесь увидеть вот это:
Код-то вообще рабочий?
Вообьще то это регистр,код в протеусе работает
Зачем мне это видеть)))
это все го лишь импульс который идет на регистр чтобы светодиод включить
Re: регистр и светодиоды
Добавлено: Чт окт 16, 2014 10:08:40
Pink-Pank
так вы светодиод включаете на 1 мкс
проект в архиве можете выложить? Мне прям аж интересно стало, как это ЭТОТ код у Вас работает..
Re: регистр и светодиоды
Добавлено: Чт окт 16, 2014 10:20:54
sirha
Pink-Pank писал(а):так вы светодиод включаете на 1 мкс
проект в архиве можете выложить?
вот
при чем тут 1 мкс и светодиод??
я его импульсами включаю
Re: регистр и светодиоды
Добавлено: Чт окт 16, 2014 10:23:17
Morroc
Pink-Pank писал(а):так вы светодиод включаете на 1 мкс
А чего бы в симуляторе не включаться светодиоду на 1 мкс ? Он же нарисованный
"код в протеусе работает" это вообще какая то роковая фраза, как заклинание прям

мне отчего то даже ставить расхотелось эту штуку, а то вдруг потом буду мучится с железкой "но ведь код в протеусе то работает !"
Re: регистр и светодиоды
Добавлено: Чт окт 16, 2014 10:27:24
sirha
Morroc писал(а):Pink-Pank писал(а):так вы светодиод включаете на 1 мкс
А чего бы в симуляторе не включаться светодиоду на 1 мкс ? Он же нарисованный

вы значете что такое сдвиговые регистры??
почему светодиод должен включаться на 1 мкс????
я его импульсами включаю
http://avrprog.blogspot.ru/2013/06/74hc595.html
Re: регистр и светодиоды
Добавлено: Чт окт 16, 2014 10:40:11
Pink-Pank
Код, который в архиве несколько отличается от того, что Вы здесь выложили.
Ваш код:
Спойлер
Код: Выделить всё
#include <tiny13.h>
#include <delay.h>
int i,b;
interrupt [EXT_INT0] void ext_int0_isr(void)
{
for (b=0;b<1;b++)
{
}
for (i=0;i<b;i++)
{
PORTB.3=1;
PORTB.0=1;
delay_us(1);
PORTB.0=0;
PORTB.3=0;
delay_us(1);
}
for (i=0;i<1;i++)
{
PORTB.2=1;
delay_us(1);
PORTB.2=0;
delay_us(1);
}
delay_ms(100);
}
void main (void)
{
PORTB=0x02;
DDRB=0xD;
MCUCR=0x00;
GICR=0xC0;
#asm ("sei");
while(1);
}
Можно изменить код так:
Спойлер
Код: Выделить всё
#include <tiny13.h>
#include <delay.h>
interrupt [EXT_INT0] void ext_int0_isr(void)
{
PORTB.3=1;
PORTB.0=1;
delay_us(1);
PORTB.0=0;
PORTB.3=0;
delay_us(1);
PORTB.2=1;
delay_us(1);
PORTB.2=0;
delay_us(1);
delay_ms(100);
}
void main (void)
{
PORTB=0x02;
DDRB=0xD;
MCUCR=0x00;
GICR=0xC0;
#asm ("sei");
while(1);
}
а еще могу сказать ,что в железе это не будет работать так, как надо. Потому что есть такое понятие, как "дребезг контактов"
Re: регистр и светодиоды
Добавлено: Чт окт 16, 2014 10:43:21
sirha
Pink-Pank писал(а): "дребезг контактов"
а что нужно добавить или изменить чтобы заработало ?
Re: регистр и светодиоды
Добавлено: Чт окт 16, 2014 10:45:22
pyzhman
Нужно счетчик в прерывании организовать и по его значению зажигать светодиоды. А то и вообще, просто сдвигать порт, не забывая зажигать нужное.
Re: регистр и светодиоды
Добавлено: Чт окт 16, 2014 10:46:25
Pink-Pank
нужно добавить задержки 10-20 мс по факту нажатия кнопки (можно считать, что она у Вас есть, равная 100 мс) и по факту ее отпускания. И чтобы программа во время этих задержек не реагировала на прерывание от кнопки. Более подробно смотрите Гугл.
Re: регистр и светодиоды
Добавлено: Чт окт 16, 2014 10:50:04
Morroc
или вообще не использовать прерывания для опроса кнопок - в небольшом коде мне кажется так понятней и проще будет
Re: регистр и светодиоды
Добавлено: Чт окт 16, 2014 10:50:36
sirha
pyzhman писал(а):Нужно счетчик в прерывании организовать
можете показать кодом как это сделать
Re: регистр и светодиоды
Добавлено: Чт окт 16, 2014 10:59:48
Morroc
вам pink-pank же код скинул - попробуйте
можно хранить байт в переменной и гонять там сдвигом единичку, каждый раз скидывая байт целиком в регистр - обычно так и делают, но если хочется сделать именно "бегущий огонь" на 595м и ничего больше - можно по первому нажатию записывать туда 1, а дальше 0 и двигать на 1 такт, дергая потом защелку
Re: регистр и светодиоды
Добавлено: Чт окт 16, 2014 11:09:25
sirha
Pyzhman продемонстрируйте сказанное выше пожалуйста очень интересно,токо с помощью кнопки
Можете пожалуста написать код чтобы предыдущий светодиод тух при зажигании следующего
я некоторые записи не понимаю мне бы их кодом разьяснять я еще не такой умный чтобы знать прерывания на отлично
Re: регистр и светодиоды
Добавлено: Чт окт 16, 2014 11:54:28
pyzhman
В приложении. Великого смысла вводить в такую программу прерывание не увидел. По значению счетчика делайте все, что заблагорассудится: хоть вперед, хоть назад, хоть через один, хоть друг за другом. Нужно только преобразовать data. Сейчас просто выводится значение переменной на светодиоды.
Re: регистр и светодиоды
Добавлено: Чт окт 16, 2014 12:31:22
sirha
pyzhman писал(а): хоть вперед, хоть назад, хоть через один, хоть друг за другом. Нужно только преобразовать data. Сейчас просто выводится значение переменной на светодиоды.
спасибо огромное ,есть все таки очень хорошие люди

Re: регистр и светодиоды
Добавлено: Чт окт 16, 2014 13:05:11
Pink-Pank
Т.е. для Вас хорошие - это те, которые пишут код за Вас и не заставляют Вас думать?

Re: регистр и светодиоды
Добавлено: Чт окт 16, 2014 13:25:13
sirha
Pink-Pank писал(а):Т.е. для Вас хорошие - это те, которые пишут код за Вас и не заставляют Вас думать?

а я не за чтобы не додумался,потомучто есть команды которых я не знаю ,видя чтото новое я про них читаю и тогда уже пытаюсь понять как это работает,я не настоко умный
Re: регистр и светодиоды
Добавлено: Пт окт 17, 2014 09:18:18
pyzhman
О, тема перерастает в "О добре и зле."
Как я вижу - человек интересуется, и это уже хорошо. Дурак, как известно, не тот, кто не знает, а тот, кто не спрашивает. Да, есть вариант спросить у книги. Но не все же могут понять тамошние кракозябры. Да и не каждый автор способен доходчиво изложить материал.