| Форум РадиоКот https://radiokot.ru/forum/ |
|
| Нет реакции МК на кнопку https://radiokot.ru/forum/viewtopic.php?f=61&t=86606 |
Страница 1 из 1 |
| Автор: | lakec [ Вт мар 12, 2013 09:32:19 ] |
| Заголовок сообщения: | Нет реакции МК на кнопку |
Здравствуйте уважаемые коты Начал изучение контроллеров. Пишу прогу которая по нажатию кнопки переключает лампочки Код: #include <tiny2313.h> Появились вопросы, ответа на которые не могу найти в инете.#include <delay.h> void main (void){ DDRB=0b11111111; PORTB=0b11111111; DDRD=0b00000000; PORTD=0b00000011; if (PIND.1 == 1) { PORTB.1 = 0; // вкл светодиод delay_ms(50000); // пауза }; if (PIND.1 == 0) { PORTB.0 = 0; // вкл светодиод delay_ms(50000); // пауза }; } 1. Нужно ли при установке порта на выход писать PORTB=0b11111111; или резюки подключаются при настройке порта на вход? 2. Почему МК не реагирует на кнопку? Горит только светодиод подключенный к PORTB.1 Спасибо |
|
| Автор: | oleg110592 [ Вт мар 12, 2013 14:38:12 ] |
| Заголовок сообщения: | Re: Нет реакции МК на кнопку |
delay_ms(50000); // пауза 50 секунд так должно быть? |
|
| Автор: | VanyaSV [ Вт мар 12, 2013 14:51:12 ] |
| Заголовок сообщения: | Re: Нет реакции МК на кнопку |
lakec писал(а): 1. Нужно ли при установке порта на выход писать PORTB=0b11111111; или резюки подключаются при настройке порта на вход? Нужно. Порт по умолчанию включается на вход без резисторов lakec писал(а): 2. Почему МК не реагирует на кнопку? Горит только светодиод подключенный к PORTB.1 А что конкретно должна делать ваша программа? Переключать 2 светодиода по 2 кнопкам? |
|
| Автор: | pyzhman [ Вт мар 12, 2013 17:52:06 ] |
| Заголовок сообщения: | Re: Нет реакции МК на кнопку |
У вас однократно опрашиваются кнопки и по результату устанавливаются выходы. Попробуйте перед включением питания удерживать кнопки - убедитесь. Правда эти 50 сек Код: while(1)
{ опрос кнопки { делаем светодиод } опрос кнопки { делаем светодиод } } |
|
| Автор: | lakec [ Вт мар 12, 2013 21:17:51 ] |
| Заголовок сообщения: | Re: Нет реакции МК на кнопку |
С задержкой погорячился Код: #include <tiny2313.h> так работает)) Поставил след. задачу. Есть одна кнопка и 3 (количество не важно) светодиода. Сделать так, чтобы при нажатии на кнопку один светик включался, другие не горят. И так поочередно (типа светофора, только переключаются кнопкой). Как такое сделать если у кнопки только два состояния (0 и 1)?#include <delay.h> void main (void){ DDRB=0b11111111; PORTB=0b11111111; DDRD=0b00000000; PORTD=0b00000011; while (1) { if (PIND.1 == 1) { PORTB.1 = 0; // вкл светодиод 1 PORTB.0 = 1; // выкл светодиод 0 delay_ms(5); // пауза }; if (PIND.1 == 0) { PORTB.0 = 0; // вкл светодиод 0 PORTB.1 = 1; // выкл светодиод 1 delay_ms(5); // пауза }; }; } ЗЫ.Посоветуйте пожалуйста книгу или сайт с примерами программирования на си именно для микроконтроллеров. Те, что я находил слишком сложны для новичков. |
|
| Автор: | oleg110592 [ Вт мар 12, 2013 21:24:42 ] |
| Заголовок сообщения: | Re: Нет реакции МК на кнопку |
http://chipenable.ru/index.php/programm ... l?start=60 |
|
| Автор: | Аlex [ Вт мар 12, 2013 22:17:36 ] |
| Заголовок сообщения: | Re: Нет реакции МК на кнопку |
viewtopic.php?f=20&t=79801 |
|
| Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|


