- Форум
- Электронные устройства, схемы
- Микроконтроллеры
- PIC
- Статья 8. Микроконтроллеры. Учимся управлять процессами в МК (Усовершенствованный «Бегущий огонь на 4 светодиодах»)
Статья 8. Микроконтроллеры. Учимся управлять процессами в МК (Усовершенствованный «Бегущий огонь на 4 светодиодах»)
- alex
-
Автор темы
- Не в сети
- Модератор
-
Меньше
Больше
- Сообщений: 189
- Репутация: 12
- Спасибо получено: 8
7 года 7 мес. назад #487
от alex
Все что просто - гениально, а что сложно, то можно разложить на гениальное.
...
В прошлой статье мы рассмотрели простейшую программу для МК. Сейчас же усложним задачу: Усовершенствуем программу для МК, а, следовательно, и схему, так что бы выполнялись два условия:
->Возможность отключать бегущий огонь, и включать «дежурный» светодиод.
->Добавим возможность регулировки скорости «бега» бегущего огня.
Первым делом изменим схему, включив в нее две кнопки: одна с фиксатором, вторая без. Одним контактом кнопки включены через резистор на «+», тем самым формируя на RA0 и RA1 логическую единицу. При нажатии на выключатель SW1 (SW2), RA0 (RA1) замыкается на «землю» - теперь есть логический ноль.
Займемся кодом. В конце статьи есть полный исходник на С. Сейчас же разберем полученную свистопляску символов.
Начнем с команды Delay_ms() – пауза в мс (задаются в скобках). При выполнении данной команды, МК как будто «замирает» на время паузы, тем самым не дает возможности наблюдать за портами ввода RA0 и RA1 – не сможем видеть нажат ли SW1 или SW2. Заменим данную команду циклом и вынесем его в отдельную функцию, которую можно будет вызывать при необходимости в любом месте программы:
Подробнее... Все что просто - гениально, а что сложно, то можно разложить на гениальное.
- wade
- Не в сети
- Новый участник
-
Меньше
Больше
- Сообщений: 7
- Спасибо получено: 0
1 год 5 мес. назад #488
от wade
кто нибуль может помочь с полным кодом программы? не получается сделать самостоятельно, а ссылка на полный код видимо пропала.
- alex
-
Автор темы
- Не в сети
- Модератор
-
Меньше
Больше
- Сообщений: 189
- Репутация: 12
- Спасибо получено: 8
1 год 5 мес. назад #490
от alex
Все что просто - гениально, а что сложно, то можно разложить на гениальное.
Что именно не получается? Выложи свой код, глянем на ошибки.
П. С. Код из статьи возможно достану через пару дней.
П. С. Код из статьи возможно достану через пару дней.
Все что просто - гениально, а что сложно, то можно разложить на гениальное.
- wade
- Не в сети
- Новый участник
-
Меньше
Больше
- Сообщений: 7
- Спасибо получено: 0
1 год 5 мес. назад #491
от wade
начну сначала. что делать с "knopka1" и "knopka2"?
их нужно присвоить к PORTA.F0 и PORTA.F1 соответственно?
PORTA.F0 = knopka1;
PORTA.F1 = knopka2;
вот так? или наоборот
knopka1=PORTA.F0;
knopka2=PORTA.F1;
Так как весь код у меня не работает, то я начал разбирать по частям. Остановился на том, что просто не могу взаимодествовать с кнопками: никак не реагируют на нажатия. Поэтому решил сначала разобраться с дежурным светодиодом, чтобы он загорался\гас по нажатию, но не выходит
int knopka1,knopka2;
void main()
{
TRISB=0;
PORTB=0;
TRISA.F1=1;
TRISA.F0=1;
knopka1=PORTA.F0;
knopka2=PORTA.F1;
if (knopka1 == 0)PORTB.F5=1;
else PORTB.F4=1;
}
их нужно присвоить к PORTA.F0 и PORTA.F1 соответственно?
PORTA.F0 = knopka1;
PORTA.F1 = knopka2;
вот так? или наоборот
knopka1=PORTA.F0;
knopka2=PORTA.F1;
Так как весь код у меня не работает, то я начал разбирать по частям. Остановился на том, что просто не могу взаимодествовать с кнопками: никак не реагируют на нажатия. Поэтому решил сначала разобраться с дежурным светодиодом, чтобы он загорался\гас по нажатию, но не выходит
int knopka1,knopka2;
void main()
{
TRISB=0;
PORTB=0;
TRISA.F1=1;
TRISA.F0=1;
knopka1=PORTA.F0;
knopka2=PORTA.F1;
if (knopka1 == 0)PORTB.F5=1;
else PORTB.F4=1;
}
- alex
-
Автор темы
- Не в сети
- Модератор
-
Меньше
Больше
- Сообщений: 189
- Репутация: 12
- Спасибо получено: 8
1 год 5 мес. назад #492
от alex
Все что просто - гениально, а что сложно, то можно разложить на гениальное.
PORTA - это регистр - обращение к самому контроллеру. knopka1 - это только для нашего понимания.
порту контроллера нельзя присвоить кнопку1
можно заменить одно другим командой #define, например,
#define knopka1 PORTA.F0;
Другими словами, когда компилятор будет собирать прошивку, вместо knopka1 он везде проставит PORTA.F0.
Данная замена делается только для нашего удобства. Замена прописывается в самом верху.
Кроме того в твоем коде неправильно настроен контроллер. Давай начнем с самого начала. Какой контроллер используешь?
порту контроллера нельзя присвоить кнопку1
можно заменить одно другим командой #define, например,
#define knopka1 PORTA.F0;
Другими словами, когда компилятор будет собирать прошивку, вместо knopka1 он везде проставит PORTA.F0.
Данная замена делается только для нашего удобства. Замена прописывается в самом верху.
Кроме того в твоем коде неправильно настроен контроллер. Давай начнем с самого начала. Какой контроллер используешь?
Все что просто - гениально, а что сложно, то можно разложить на гениальное.
- wade
- Не в сети
- Новый участник
-
Меньше
Больше
- Сообщений: 7
- Спасибо получено: 0
- alex
-
Автор темы
- Не в сети
- Модератор
-
Меньше
Больше
- Сообщений: 189
- Репутация: 12
- Спасибо получено: 8
1 год 5 мес. назад #494
от alex
Все что просто - гениально, а что сложно, то можно разложить на гениальное.
статью 6 читал? там весь код программы расписан, даже видео есть пошаговое.
Все что просто - гениально, а что сложно, то можно разложить на гениальное.
- wade
- Не в сети
- Новый участник
-
Меньше
Больше
- Сообщений: 7
- Спасибо получено: 0
1 год 4 мес. назад #495
от wade
Итак.
Прошу прощения, что долго не отвечал - проходил начальный курс по программированию.
Статью номер 6 читал, так все понятно и есть пошаговая инструкция. Но в 8ой статье не все было понятно. Сейчас вроде немного разобрался. Программу собрал, все работает. Если можете, оставьте комментарии, что думаете, что можно исправить\переделать.
Оставлю ссылку на github, чтоб не засорять форум.
github.com/e-Wade/Running_leds_v2/blob/master/mcppi
Прошу прощения, что долго не отвечал - проходил начальный курс по программированию.
Статью номер 6 читал, так все понятно и есть пошаговая инструкция. Но в 8ой статье не все было понятно. Сейчас вроде немного разобрался. Программу собрал, все работает. Если можете, оставьте комментарии, что думаете, что можно исправить\переделать.
Оставлю ссылку на github, чтоб не засорять форум.
github.com/e-Wade/Running_leds_v2/blob/master/mcppi
- Форум
- Электронные устройства, схемы
- Микроконтроллеры
- PIC
- Статья 8. Микроконтроллеры. Учимся управлять процессами в МК (Усовершенствованный «Бегущий огонь на 4 светодиодах»)
Время создания страницы: 0.146 секунд