Опрос Кнопок От Таймера_0 На Atmega8

9-11-2012, 11:34 От: admin Посмотрели: 991
Доброго времени суток Уважаемые!

Вопрос покажиться глупым, но это факт!




#include <avr/interrupt.h>
#include <avr/io.h>
unsigned char button = 0;

ISR (TIMER0_OVF_vect) // Обработка прерывания таймера_0
{
if ((PIND&0x80) == 0)
{ delay_ms(50); button++;}
if (button == 8)
{ button = 0;}
delay_ms(100);
}
/*** процедура задержки в микросекундах ***/
void delay_us(unsigned char time_us)
{ register unsigned char i;
for(i = 0; i < time_us; i++) // 4 цикла
{ asm (" PUSH R0 "); // 2 цикла
asm (" POP R0 "); // 2 цикла
// 8 циклов = 1 us для 8MHz
}
}
/*** процедура задержки в милисекундах ***/
void delay_ms(unsigned int time_ms)
{ register unsigned int i;
for(i = 0; i < time_ms; i++)
{ delay_us(250);
delay_us(250);
delay_us(250);
delay_us(250);
}
}
int main (void)
{
DDRD = 0x00; // Порт "D" - вход
PORTD = 0xFF; //Включены подтягивающие резисторы
DDRB = 0xFF; // Порт "B" - выход
TIMSK |= (1 << TOIE0); // Разрешение прерыванияя
TCCR0 |= (0 << CS02)|(0 << CS01)|(1 << CS00); // без пределителя
sei(); // глобальное разрешение прерываний

while(1)
{

if (button == 0) PORTB = 0x01;
if (button == 1) PORTB = 0x02;
if (button == 2) PORTB = 0x04;
if (button == 3) PORTB = 0x08;
if (button == 4) PORTB = 0x10;
if (button == 5) PORTB = 0x20;
if (button == 6) PORTB = 0x40;
if (button == 7) PORTB = 0x80;

}

}



теоретически в функции обработке прерывания от таймера_0 должен проходить опрос кнопки! В AVR Studio когда включаю режим отладки, всё красиво, курсор проходит через эту функцию и проверяет кнопку, но вот в Proteuse работать не хотит эта прошивка! такое ощущение что переменная "button" либо не сохроняет новое значение, либо не записывается новое значение.

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

Ни чего не понимаю что не так? Либо я дурак, лидо лыжи не едут Опрос Кнопок От Таймера_0 На Atmega8

За ранее спасибо!
Раздел: Периферия и внешние устройства

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться, либо войти на сайт под своим именем.

Обсудить на форуме


На момент добавления Опрос Кнопок От Таймера_0 На Atmega8 все ссылки были рабочие.
Все публикации статей, книг и журналов, представлены на этом сайте, исключительно для ознакомления,
авторские права на эти публикации принадлежат авторам статей, книг и издательствам журналов!
Подробно тут | Жалоба
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.


Опрос

Ваши предпочтения в TRX


Одинарное преобразование
Двойное преобразование
Прямое преобразование
SDR
Другое
Мне всё равно

Популярные новости
Календарь новостей
«    Май 2024    »
ПнВтСрЧтПтСбВс
 12345
6789101112
13141516171819
20212223242526
2728293031