Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/74: Рейтинг темы: голосов - 74, средняя оценка - 4.97
15 / 14 / 4
Регистрация: 20.05.2011
Сообщений: 296
Записей в блоге: 2

ATMega8. Управление миганием светодиода

14.08.2012, 17:07. Показов 13875. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, извините за глупый вопрос решил собрать простую схему на proteus так проблема заключается в коде на си
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <avr/io.h>
#include <util/delay.h>
#define LED1 1
#define LED_DDR DDRC
#define BUTTON_DDR DDRD
#
 
 
int main( void )
{
  LED_DDR = 0xff;
  BUTTON_DDR = 0x00;
  PORTD = 0x00;
 
  while(1)
  
  { while (PIND == 0xff)
            {
                    
            
              PORTC = 1<<LED1;
            
            _delay_ms(100);
            PORTD = 0x00;
            }
            PORTC = 255;
            _delay_ms(100);
            PORTD = 0x00;
  }
  return 0;
}
смысл схемы такой что при нажатии кнопки светодиод начинает маргать а при отпускании кнопки то начинает гореть все светодиоды постояно, но получается что при нажатии кнопки маргает светодиод а при отпускании так же продолжает маргать, обьясните начинающиму.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.08.2012, 17:07
Ответы с готовыми решениями:

Управление светодиодами на ATMega8
Добрый день товарищи программисты. Написал небольшую прогу по смене режима работы 2х светодиодов. interrupt void ext_int0_isr(void)...

Управление светодиодами на ATMega8 (ASM)
Здраствуйте Пытаюсь написать программу, которая при замыкании кнопки SA1 горящий светодиот перемещается циклически против часовой...

Управление яркостью светодиода двумя кнопками на Atmega8
задача была такая но проверить сейчас не на чем может кто посмотреть и сказать правильно я написал или нет #include &lt;avr/io.h&gt; ...

5
 Аватар для cybersonner
98 / 49 / 4
Регистрация: 24.12.2011
Сообщений: 101
16.08.2012, 22:45
схемы нет. хотя бы скажи как кнопки подключены.
12 строчка- порт D весь на вход
13 строчка- порт D отключены все подтягивающие резисторы
скорее всего надо
C
1
PORTD = 0xFF;
17 строчка правльная, если у тебя кнопка нормально замкнутая и ногу коротит на землю.

Добавлено через 2 минуты
строчки 24 и 28 не нужны- ты чтото делаешь с портом, котрый у тебя на вход кнопок используется. по сути отключаешь подтягивающие резисторы, которые у тебя и так отключены( строчка 13).
1
 Аватар для raxper
10236 / 6614 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
17.08.2012, 08:47
...пин на кнопку в воздухе висит?
0
 Аватар для Санек25
422 / 352 / 19
Регистрация: 14.05.2012
Сообщений: 1,437
20.08.2012, 14:11
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <avr/io.h>
#include <util/delay.h>
#define LED1 1
#define LED_DDR DDRC
#define BUTTON_DDR DDRD
#
 
 
int main( void )
{
  LED_DDR = 0xff;
  BUTTON_DDR = 0x00;
  PORTD = 0x00;
 
  while(1)
  
  { while (1)
            {
             if (PIND == 0xff){      
            
              PORTC = 1<<LED1;
            
            _delay_ms(100);
            PORTD = 0x00;} else{
            
            PORTC = 255;
            _delay_ms(100);
            PORTD = 0x00;}
  }
  return 0;
}
А может так?

Добавлено через 37 минут
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <avr/io.h>
#include <util/delay.h>
#define LED1 1
#define LED_DDR DDRC
#define BUTTON_DDR DDRD
#
 
 
int main( void )
{
  LED_DDR = 0xff;
  BUTTON_DDR = 0x00;
  PORTD = 0x00;
 
  while(1)
  
  { 
             if (PIND == 0xff){      
            
              PORTC = 1<<LED1;
            
            _delay_ms(100);
            PORTD = 0x00;} else{
            
            PORTC = 255;
            _delay_ms(100);
            PORTD = 0x00;}
  }
  return 0;
}
ощибочку нашел

Добавлено через 3 минуты
и еще вопрос разве в коде не надо указывать контролер? "#include <mega8.h>"

Добавлено через 2 минуты
и еще можите объяснить что значит эта строка #define LED1 1. Лед это светодиод..? И что получается для светодиодов библиотеку подключать???

Добавлено через 21 минуту
#define LED1-драйвер светодиодов. так если он не указан то что светодиод не загорится???
1
Тутошний я
 Аватар для Grey
2147 / 1202 / 225
Регистрация: 03.11.2009
Сообщений: 4,424
Записей в блоге: 2
24.08.2012, 00:52
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от Санек25 Посмотреть сообщение
и еще можите объяснить что значит эта строка #define LED1 1. Лед это светодиод..? И что получается для светодиодов библиотеку подключать???
Это типа константа. Например теперь PINB.LED1 и PINB.1 будут равны по значению. Но с первым вариантом удобней работать.
3
Тутошний я
 Аватар для Grey
2147 / 1202 / 225
Регистрация: 03.11.2009
Сообщений: 4,424
Записей в блоге: 2
25.08.2012, 00:55
смысл схемы такой что при нажатии кнопки...
кнопка замыкает на минус, контакты нормально разомкнутые. Диоды подключены к минусу.
Как то так будет.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
int main( void )
{
  LED_DDR = 0xff;//на выход
  BUTTON_DDR = 0x00;//на вход
  PORTD = 0xff;//подтягиваем к плюсу
 
  while(1)
  
  { 
     if (PIND == 0xff)//проверяем нажатие кнопки//если не нажата
        {      
           PORTC = 255;//включаем диоды
           _delay_ms(100);//ждём
           PORTC = 0x00;//выключаем диоды//здесь будет не заметно выключение
        }
     else
        {
           PORTC = 1<<LED1;//включаем диод на первом пине
           _delay_ms(100);//ждём
           PORTС = 0x00;//отключаем все диоды
           _delay_ms(100);//ждём
        }
  }
  return 0;
}
Цитата Сообщение от Санек25 Посмотреть сообщение
и еще вопрос разве в коде не надо указывать контролер? "#include <mega8.h>"
Нет. В его компиляторе есть вкладка где выбирают тип контроллера. Если у вас такой нету, то нужно.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.08.2012, 00:55
Помогаю со студенческими работами здесь

Atmega8 - плавное разгорание/затухание светодиода
Всем привет! Как же давно я не писала прошивку, а под рукой сейчас по этому вопросу нет примеров. Может кто-то подскажет? Есть...

Не совпадает частота мигания светодиода в симуляторе Proteus и реальном устройстве (Atmega8)
Привет. я начинающий поэтому не прикалывайтесь. вот чё за беда у меня. повторил видеоурок кобзара по атмеге 8. прошил . результат :...

Управление скоростью мигания и яркостью светодиода через потенциометры
Необходимо добавить два потенциометра(как это сделать я знаю), один из которых будет управлять скоростью мигания светодиода, а другой-...

Управление двигателем на atmega8
Здравствуйте, есть у меня проблема, которую не удалось решить самостоятельно. Итак, имеем схему, изображенную на рисунке. Это часть схемы,...

Управление освещением на ATmega8
Приветствую. C микроконтроллерами начал общаться недавно, примерно на уровне нажал на кнопку и включился светодиод, или чтото в терминал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru