Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
koliav
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 5
1

Atmega8. Зажигаем светодиод по кнопке

16.10.2013, 19:52. Просмотров 4225. Ответов 11
Метки нет (Все метки)

Начинаю изучать программирование микроконтроллеров. Много вариантов перепробовал чтобы выполнить простую задачу для загорания светодиода в результате нажатия на кнопку, но я то ли не правильно прописываю порты, или не правильно подключаю на схеме. Кто может скиньте исходники. Или объясните на пальцах какая программа должна быть на С, и как что должно быть подключено. Заранее благодарен.
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <mega8.h>
#include <delay.h>
void main(void) {
 PORTC=0x00; 
 DDRD=0xFF; 
    while (1)
    if (PINB.0==1)
    {PORTC.0=1;
    delay_ms(100);}
       };
 
}
http://img29.imageshack.us/img29/8492/xvlp.jpg
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2013, 19:52
Ответы с готовыми решениями:

Зажигаем определенный светодиод в трехмерной матрице
Всем привет! Есть проект, в нем есть исходники, из которых собирается...

Светодиод по кнопке
Ребят подскажите пожалуйста. только начал изучать но не могу понять что делаю...

Зажечь светодиод по кнопке на ATMega8515
Есть микроконтроллер ATMEGA 8515. Требуется считывать порты В (0 и 1 пина). И...

Разница между ATMEGA8-16AI и ATMEGA8-16AU
Кто подскажет, в чем разница между ATMEGA8-16AI и ATMEGA8-16AU. Смотрю в...

Светодиод и кнопка
Привет всем! Помогите пожалуйста! Как написать программу на С под avr, чтобы...

11
raxp
10188 / 6571 / 492
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
16.10.2013, 21:15 2
...а то, что порты B и C у вас не сконфигурированы, ничего?

C
1
2
3
4
5
6
7
8
9
10
int main(void) { 
 DDRС = 0x00; //порт С - вход 
 PORTC = 0xFF; //подключаем нагрузочный резистор 
 DDRB = 0xFF; //порт B - выход 
 PORTB = 0x00; //устанавливаем 0 на выходе 
 
 while (1) { 
  PORTB = ~PINС; // инвертируем 
 } 
}
Не забываем подтяжку внешним резистором на плюс с кнопки, несмотря на его подтяжку в коде.
0
koliav
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 5
17.10.2013, 11:35  [ТС] 3
Цитата Сообщение от raxp Посмотреть сообщение
Не забываем подтяжку внешним резистором на плюс с кнопки, несмотря на его подтяжку в коде.
С Вашей программой данная схема не работает. Или моя схема неправильная?
http://img31.imageshack.us/img31/2347/lrcw.jpg
0
raxp
10188 / 6571 / 492
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
17.10.2013, 12:00 4
...на реальном устройстве проверяйте.
0
koliav
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 5
17.10.2013, 18:48  [ТС] 5
Цитата Сообщение от raxp Посмотреть сообщение
...на реальном устройстве проверяйте.
По идее должно работать и в протеусе.
0
raxp
10188 / 6571 / 492
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
17.10.2013, 19:21 6
...необязательно.
0
ValeryS
Модератор
7446 / 5638 / 716
Регистрация: 14.02.2011
Сообщений: 19,206
Завершенные тесты: 1
17.10.2013, 19:31 7
Цитата Сообщение от koliav Посмотреть сообщение
С Вашей программой данная схема не работает.
а ты все правильно списал?
по рисунку видно что порт С у тебя работает на выход
0
paskal
450 / 299 / 28
Регистрация: 15.08.2011
Сообщений: 928
17.10.2013, 20:45 8
Цитата Сообщение от ValeryS Посмотреть сообщение
а ты все правильно списал?
по рисунку видно что порт С у тебя работает на выход
Не на выход, а подтянут к плюсу изнутри. Так и сделано в программе.
А не работает может потому что raxp весь порт B задействовал, а с ним и ножки кварцевого генератора зацепил. Это если у ТС фьюзы на кварц сконфигурированы. Как на самом деле фьюзы сделаны я не знаю, это проект надо было скидывать.
0
ValeryS
Модератор
7446 / 5638 / 716
Регистрация: 14.02.2011
Сообщений: 19,206
Завершенные тесты: 1
17.10.2013, 21:07 9
Цитата Сообщение от paskal Посмотреть сообщение
Не на выход, а подтянут к плюсу изнутри.
а теперь посмотри
на кнопке 0(синий квадратик)
а на порту 1
это или порт на выход ( конфликт)
или кнопка не присоединена к выводу(порту), потому что на резисторе тоже 1
0
paskal
450 / 299 / 28
Регистрация: 15.08.2011
Сообщений: 928
17.10.2013, 21:21 10
Цитата Сообщение от ValeryS Посмотреть сообщение
а теперь посмотри
на кнопке 0(синий квадратик)
а на порту 1
это или порт на выход ( конфликт)
или кнопка не присоединена к выводу(порту), потому что на резисторе тоже 1
Тут во всяком случае не микроконтроллер виноват.
Если посмотреть самый первый рисунок, то на кнопке стоит точка, которая ставится при Т-образном соединении проводов. А ее там не должно быть. Наверняка ТС как то не так провод к кнопке подвел.
0
korsaj
148 / 117 / 9
Регистрация: 16.08.2013
Сообщений: 563
17.10.2013, 22:53 11
ТС кноку не присоеденил, просто подставил ее к проводнику. А за протеус ручаюсь, проблем с ним не было.
0
koliav
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 5
18.10.2013, 13:08  [ТС] 12
Цитата Сообщение от korsaj Посмотреть сообщение
ТС кноку не присоеденил, просто подставил ее к проводнику. А за протеус ручаюсь, проблем с ним не было.
Всем спасибо. Действительно не было соединения.
0
18.10.2013, 13:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2013, 13:08

Pic12F675. не мигает светодиод:)
Всем привет! нашел в инете такое:...

Светодиод - датчик света
Доброе время суток, господа. Я всё ещё в светодиоднокнопочном периоде, хотя...

Почему горит светодиод?
http://savepic.su/4469205.htm Решил попробовать прошить атмега32а лпт...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru