Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.95/113: Рейтинг темы: голосов - 113, средняя оценка - 4.95
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 87

Работа с кнопками

22.02.2013, 21:14. Показов 21531. Ответов 43
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не могу никак разобраться с переключением светодиодов с помощью кнопок. Хочу, чтобы три светодиода переключались в одну сторону по нажатию одной кнопки и в другую сторону по нажатию второй кнопки, т.е. как бы обычный кнопочный переключатель. Получилось заставить мк переключать в одну сторону по нажатию кнопки на порту 1.4, а вот в другую не получается. Укажите пожалуйста на ошибки в коде и возможные пути их исправления. Ещё есть подозрение, что код слишком замудрён и всё можно сделать гораздо проще :)

Code
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <msp430g2553.h>
 
char key;
char i;
 
void main(void) {
 
WDTCTL = WDTPW + WDTHOLD;
 
P1OUT = 0;
P1DIR = BIT0+BIT1 + BIT6;
P1REN |= BIT3+BIT4;
P1OUT |= BIT3+BIT4;
P1IES |= BIT3+BIT4;
P1IFG &= ~BIT3+BIT4;;
P1IE |= BIT3+BIT4;;
 
_enable_interrupt();
 
while (1) {
switch (key){
case 1:
P1OUT |= BIT0;
P1OUT &= ~ BIT1 + BIT6;
briok;
case 2:
P1OUT |= BIT6;
P1OUT &= ~ BIT0;
briok;
case 3:
 
P1OUT |= BIT1;
P1OUT &= ~ BIT6;
briok;
default:
key=0;
}
}
}
 
#pragma vector = PORT1_VECTOR
__interrupt void P2_ISR(void) {
switch(P1IFG & (BIT3 + BIT4)) {
case BIT4:
P1IFG &= ~BIT4;
key = i+1;
if (++i == 3)
i = 0;
P1IE |= BIT4;
briok;
case BIT3:
P1IFG &= ~BIT3;
key = i-1;
if (--i == 3)
i = 0;
P1IE |= BIT3;
briok;
}
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.02.2013, 21:14
Ответы с готовыми решениями:

Работа с кнопками в ATmga8A
Доброго всем дня. На основе ATmga8A собрана схема: 4 кнопки через резисторы подсоединены к 4 портам В на вход, на выходе D есть...

Работа с кнопками (нечто на KР580)
Принять код с клавиш 0-7, подсчитать число нажатых клавиш с четными номерами и вывести соответствующую цифру на тре- тий слева...

Модуль АЦП ATMega32, работа с 3 каналами и тремя кнопками
Нужна помощь по AVR simulator IDE, работаю с АЦП, не могу сделать одну вещь, а именно при одновременном нажатие трех кнопок, что бы мигала...

43
omx
21.07.2013, 22:54
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от dr_wop
У меня компилятор (ccs) ругается на "switch(__even_in_range(P1IV, P1IV_P1IFG7))". Вы с mspgcc, как я понял, работаете? Никогда раньше такой записи не видел просто даже.
Это из IAR-а. В mspgcc такого нет, увы. Попробуйте подлючить intrinsics.h
Code
1
#include <intrinsics.h>
Цитата Сообщение от dr_wop
Ещё вот одну вещь не могу понять. Если в теле главного цикла в конце погрузить контроллер в сон, то сам главный цикл перестанет выполняться до появления прерывания?
Если в прерывании делается отмена спящего режима - то да.
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 87
21.07.2013, 23:10
Компилятор всё равно не знает что такое P1IV, P1IV_P1IFG7 и P1IV_P1IFG0. К сожалению нет под рукой файлика с дефайнами иара. Не могли бы вы объяснить что означают эти сокращения? Уверен, что мне удастся найти такие же в cсs. Довольно интересную запись обработчика вы привели. Никогда раньше такого даже в примерах не видел. Хотелось бы разобраться что здесь есть что.
0
omx
22.07.2013, 00:07
Цитата Сообщение от dr_wop
Компилятор всё равно не знает что такое P1IV, P1IV_P1IFG7 и P1IV_P1IFG0. К сожалению нет под рукой файлика с дефайнами иара. Не могли бы вы объяснить что означают эти сокращения? Уверен, что мне удастся найти такие же в cсs. Довольно интересную запись обработчика вы привели. Никогда раньше такого даже в примерах не видел. Хотелось бы разобраться что здесь есть что.
Прошу прощение за введение в заблуждение. Видимо, у вашего процессора такого регистра нету. Такого типа регистры (заканчиваются на IV) предназначены для формирования быстрых таблиц перехода для векторов прерываний, которые могут вызываться разными событиями. Например TA1IV - для таймера А. В руководстве есть описание. А P1IV есть в более старших семействах (5xx, 6xx).
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 87
22.07.2013, 00:13
О, буду знать теперь. Большое спасибо за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.07.2013, 00:13

Работа с кнопками
разместите на форме две кнопки (button). Сделайте на кнопках следующие надписи: привет, до свидания. Создайте обработчики события нажатия...

Работа с кнопками
Работаю в пятом лотусе. Из под WEBа не работают кнопки написанные на скрипте, да и на формулах тоже. Подскажите пожалуйста на что их...

Работа с кнопками
Здравствуйте! Подскажите, пожалуйста. У меня есть диалоговое окно, в нем кнопка. Надо, чтобы при нажатии на кнопку выполнялась функция....

Работа с кнопками
В моем проекте есть 15 кнопок (button1, button2, button3 и т.д.) Мне нужно проверить каждую кнопку, содержит ли она в своем наименовании...

Работа с кнопками
Помогите пожалуйста написать код кнопки для этой формулы: и по возможности описать как это будет выглядеть


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

Или воспользуйтесь поиском по форуму:
44
Ответ Создать тему
Новые блоги и статьи
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru