Форумы Modlabs.net: Помогите собрать моргалку на 5 светиков - Форумы Modlabs.net

Перейти к содержимому

  • (2 Страниц)
  • +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Помогите собрать моргалку на 5 светиков

#21 Пользователь офлайн   Bauman Communist 

  • Junior
  • Pip
  • Группа: Пользователи
  • Сообщений: 7
  • Регистрация: 03 Август 06

Отправлено 29 Август 2006 - 02:11

Набрасал следующий пример... Написан на WinAVR. Кого мнтересует, могу скинуть всесь проект.

/* Идеология следущая. Запускаем тймер - он входит
в прерывание по переполнению, но эти интервалы времени не велики,
поэтому считаем количество вхождений в прерывание.
А дальше делаем то, что нам нужно.
*/

#include <avrio.h>
#include <avrinterrupt.h>
#include <avrwdt.h>
#include <avrpgmspace.h>
#include <stdio.h>


int t=0;
int cnt=0;

SIGNAL(SIG_OVERFLOW0) // Прерывание по пеполнению
{
t++; // t считает вхождения в прерывание
if (t == 60) // Когда количество вхождений достишло необходимого
{ // вы полняем требуемые действия:
/* cnt хранит номер (от 0 до 4) ножки (номер бита в регистре порта)
которую надо зажечь */
if (cnt == 5) // Если счетчик ножек переполнился, то гасим все светодиоды
{
PORTB = 0;
cnt = 0;
}
else
{
// в противном случае
PORTB |= (1 << cnt); // зажигаем нужную ногу
cnt++;
}
t = 0;
}
}



int main(void)
{
// Установки порта
DDRB = 0xFF; // Включаем PORB на вывод
PORTB = 0; // Гасим все светодиоды (на всякий случай)

// Инициализация таймера
TCNT0 = 0; // Ставим счетчик в ноль
TCCR0 = 0x05; // Устанавливаем прескаллер 1024 (смотрите в даташите)

// Прерывания
sei(); // Разрешаем прерывания
TIMSK |= (1 << TOIE0); // Включаем прерывание таймера 0

return 1;
}
0

#22 Пользователь офлайн   blacks 

  • Junior
  • Pip
  • Группа: Пользователи
  • Сообщений: 12
  • Регистрация: 28 Август 06

Отправлено 29 Август 2006 - 02:16

Оба!
Интересненько
Сейчас времени нет но завтра почитаю

Если сможешь скинь мне проект на black-s@mail.ru
Буду потихоньку учиться....

Зание спасибки
0

Поделиться темой:


  • (2 Страниц)
  • +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 members, 1 guests, 0 anonymous users