Помогите написать програму, Tiny2313

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
dumser2
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Сб мар 03, 2012 02:16:23

Помогите написать програму, Tiny2313

Сообщение dumser2 »

Хочу написать програму она простая, но для меня пока не очень. Использую Тину2313.

Задача:
Есть 4 порта нада их поставить на выводы. ПОРТ1 выдает +5В на случайную длительность от 5-20 сек, например. ПОРТ2 включается после того как перестал работать ПОРТ1 (это важно), тоже на случайное число. ПОРТ3 и ПОРТ4 работает аналогично как 1 и 2.

Зачем это? для дискотеки шота типа светомузыки. Есть световой сканер фото ниже, вот хочу чтобы он крутился в разные стороны верх, вниз, направо, налево в случайно порядке и случайным интервалом. Можно добавить еще порты например для смены свечения красных зеленых лампочек например, мегание и т.п. но с этем проще.
Применяю Тину2313 т.к. есть в наличии. Возможно есть что-то подешевлей для моих целей?

Помогите!
Вложения
Tiny2313.rar
Фото прибора + начальная прошивка и протеус
(286.11 КБ) 176 скачиваний
Реклама
vovik15
Опытный кот
Сообщения: 768
Зарегистрирован: Сб ноя 08, 2008 18:32:36
Контактная информация:

Re: Помогите написать програму, Tiny2313

Сообщение vovik15 »

вот так попробуй

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

#include <tiny2313.h>
#include <delay.h>
unsigned char x; //генератор случайного числа

interrupt [TIM0_OVF] void timer0 (void)
{x++; if(x>20)x=5;}//генерируем случайное число

void main(void)
{
PORTA=0x00;
DDRA=0x07;
PORTB=0x00;
DDRB=0xFF;
PORTD=0x00;
DDRD=0x7F;
ACSR=0x80;
TCCR0A = 0; 
TCCR0B = 0b000000001; 
TIMSK=TIMSK|=0b00000010; 
TCNT0=0; 
OCR0A=0x00; 
OCR0B=0x00;

x=5; //по умолчанию 5 секунд
while (1)
      {
PORTB.0 = 1;//включаем первую линию
delay_ms(x*100);
PORTB.0 = 0;//обнуляем линию
      
PORTB.1 = 1;//включаем вторую линию
delay_ms(x*100);
PORTB.1 = 0;//обнуляем линию

PORTB.2 = 1;//включаем третью линию
delay_ms(x*100);
PORTB.2 = 0;//обнуляем линию

PORTB.3 = 1;//включаем четвертую линию
delay_ms(x*100);
PORTB.3 = 0;//обнуляем линию

      };
}

Реклама
Закрыто

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