реклама на сайте
подробности

 
 
> Atmega 8515 задача на прерывание.
breikist
сообщение Jan 14 2012, 10:03
Сообщение #1





Группа: Новичок
Сообщений: 8
Регистрация: 14-01-12
Пользователь №: 69 405



Доброе время суток всем. Пишу программу для мк Atmega 81515 , задача на прерывание.
Текст задачи:
Светодиоды с нечетными номерами включаются по очереди, создавая эффект
бегущих огней справа налево. После нажатия на кнопку SW6 эффект бегущих огней
создается четными светодиодами. После нажатия на кнопку SW5 снова
используются нечетные светодиоды. Для изменения режимов управления
светодиодами ипользовать прерывания INT1 (кнопка SW6) и INT2 (кнопка SW5).
Мой текст программы:

CODE
#define F_CPU 3686400UL
#include <avr/io.h>
#include<util/delay.h>
#include <avr/interrupt.h>
unsigned char r, d,a;

ISR (INT1_vect)
{
d=0;
}

ISR (INT2_vect)
{
d=1;
}

int main (void)
{
DDRB = 0xFF;
PORTB = 0xFF;
DDRE = 0x00;
PORTE = 0xFF;
PINE = 0xFF;

GICR=0b10100000;
MCUCR=0b00001010;

sei();
while (1)
{
if (d == 1)
r = 0b00000010;
else
r = 0b00000001;


while(r!=0)
{
PORTB = r^0xFF;
if (d == 1)
{
r <<= 2;
}
else
{
r <<= 2;
}
//_delay_ms(1000);


{
if(!(PINE&(1<<1)))
d=0;
r >>= 1;
}

{
if(!(PINE&(1<<0)))
d=1;
r <<=1;
}
}
}
}

Я как понимаю , мои прерывания висят в воздухе , не могли бы помочь сделать так , что бы прерывание происходило при нажатии этих кнопок?

Сообщение отредактировал IgorKossak - Jan 14 2012, 16:59
Причина редактирования: [codebox]!!!, форматирование
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 05:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01351 секунд с 7
ELECTRONIX ©2004-2016