Помогите с прерываниями attiny2313

Модератор: boogyman

Ответить
Аватара пользователя
uuu000
Новичок
Сообщения: 2
Зарегистрирован: 08 апр 2019, 00:15

Помогите с прерываниями attiny2313

#1

Сообщение uuu000 » 01 дек 2019, 21:33

Подключены 2 кнопки.Первая подключена к ножке PA0, переключает последовательно циклично 2 светодиода(в третьем положении и при включении питания светодиоды погашены).Светодиоды подключена к выводам PB3,PB4.
Вторая кнопка(PA0) работает аналогично,но с тремя светодиодами(соответственно PB0,PB1,PB3).
Каждая группа по отдельности работает нормально.Но,если при включенном светодиоде одной группы включить светодиод другой группы,
то этот светодиод из первой группы отключается.Возможна я ошибся где-то с оператором switch.Я попытался использовать прерывание по переполнению,но еще не имею опыта его применения и настройки.Пока еще новичок в программировании. Работу программы проверял в
"Proteus"и на макетной плате.
Прошу помощи.
Спасибо.
Вложения
on off inter.rar
(35.82 КБ) 3 скачивания

Аватара пользователя
AntonChip
Администратор
Сообщения: 232
Зарегистрирован: 24 дек 2011, 22:11
Откуда: Киров
Контактная информация:

Re: Помогите с прерываниями attiny2313

#2

Сообщение AntonChip » 02 дек 2019, 08:16

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

PORTB |= (1<<PB3); // Установить отдельный бит(независимо от других в порте B)
PORTB &= ~(1<<PB3); // Сбросить отдельный бит(независимо от других в порте B)

Аватара пользователя
uuu000
Новичок
Сообщения: 2
Зарегистрирован: 08 апр 2019, 00:15

Re: Помогите с прерываниями attiny2313

#3

Сообщение uuu000 » 02 дек 2019, 10:13

Спасибо за помощь.Просто нужно разделять операции по разным портам при прерывании.Я тоже пробовал это сделать, т. к. не совсем понял
что это значит:
PORTB |= (1<<PB3); // Установить отдельный бит(независимо от других в порте B)
PORTB &= ~(1<<PB3); // Сбросить отдельный бит(независимо от других в порте B).
Все получилось,еще раз спасибо.

Ответить