Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2017, 11:22   #51
scccorp
Пользователь
 
Регистрация: 05.10.2017
Сообщений: 44
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Да, чувствуется, что давно я не писа'л на Си, а для МК - вообще никогда. ..
В некоторых более новых версиях Мега есть такая фича: пишешь по адресу PINX, который вроде бы только для чтения, при этом инвертируются биты, соответствующие '1', в PORTX ! Но это не во всех Мегах, да и то написать это на асме - запросто, а вот компилятор может выругаться: "ты что, дурень, PINВ - это же для чтения!"
а инвертнуть бит можно еще и так: PORTD ^= (1<<RD7), где RD7 - номер бита.
Только ТСу этот наш разговор, видимо, уже не интересен.
ещё как интересен я просто читаю и делаю)
scccorp вне форума Ответить с цитированием
Старый 12.10.2017, 11:44   #52
scccorp
Пользователь
 
Регистрация: 05.10.2017
Сообщений: 44
По умолчанию

подскажите как описать функцию вкл\выкл. ? тобишь есть та же кнопка и определённая комбинация на входе (допустим PINB==0b00000011). и при нажатии на кнопку диод включился, нажав ещё раз выключился?
scccorp вне форума Ответить с цитированием
Старый 12.10.2017, 22:53   #53
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Блинннн ! ! ! Я же это тебе описал (ударение на а) ! Перечти предыдущую страницу, мой вариант и лучший вариант - коллеги WorldMaster'а . Только надо, чтобы процесс шел не все время, пока нажата кнопка, а по нажатию или отпусканию. Только обязательно прописать защиту от дребезга - WorldMaster это детально описал. И по этому событию (нажатию или отпусканию кнопки) делаем XOR
Код:
PORTD ^= (1<<RD7), где RD7 - номер бита .
Изображения
Тип файла: bmp Knop.bmp (6.3 Кб, 142 просмотров)

Последний раз редактировалось digitalis; 13.10.2017 в 10:27.
digitalis вне форума Ответить с цитированием
Старый 13.10.2017, 09:23   #54
scccorp
Пользователь
 
Регистрация: 05.10.2017
Сообщений: 44
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Блинннн ! ! ! Я же это тебе описал (ударение на а) ! Перечти предыдущую страницу, мой вариант и лучий вариант коллеги WorldMaster'а . Только надо, чтобы процесс шщел не все время, пока нажата кнопка, а по нажатию или отпусканию. Только обязательно прописать защиту от дребезга - WorldMaster это детально описал. И по этому событию (нажатию или отпусканию кнопки) делаем XOR
Код:
PORTD ^= (1<<RD7), где RD7 - номер бита .
я понял. просто повторюсь я ещё никогда не работал с свичкейс, поэтому немного не понял код)
и что означает "XOR"

Последний раз редактировалось scccorp; 13.10.2017 в 09:28.
scccorp вне форума Ответить с цитированием
Старый 13.10.2017, 10:25   #55
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

XOR - исключающее ИЛИ : z = (x И НЕ(y)) ИЛИ ( НЕ(х) И y) . Если переменной а делаем XOR по маске b, то в переменной а инвертируются биты, установленные в '1' в маске b . Например, если
Код:
  a = 1100b ;  b = 1001b ; a ^= b ;
получим в а значение 0101b .

Последний раз редактировалось digitalis; 13.10.2017 в 10:39.
digitalis вне форума Ответить с цитированием
Старый 13.10.2017, 10:29   #56
scccorp
Пользователь
 
Регистрация: 05.10.2017
Сообщений: 44
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
XOR - исключающее ИЛИ : z = (x & ^y) | (^x & y) . Если переменной а делаем XOR по маске b, то в переменной а инвертируются биты, установленные в '1' в маске b . Например, если
Код:
  a = 1100b ;  b = 1001b ; a ^= b ;
получим в а значение 0101b .
Код:
 while ((PINB&(1<<4))==1) {}
				 _delay_ms(200);
				 if ((PORTD&(1<<7))==0) 
			 {
				 PORTD|=(1<<7);
			}
			 else
			 {
				 PORTD &=~(1<<7);
			 }
			 while ((PINB&(1<<4))==0) {}
			 _delay_ms(200);
попробовал сделать так но у меня он просто мерцает с частотой 200 мс. что не так я делаю?)
scccorp вне форума Ответить с цитированием
Старый 13.10.2017, 11:04   #57
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

scccorp, обычно личные сообщения приходят сюда (надо просто обращать в это место своё внимание):

1.jpg


либо в личных личных сообщениях можно просмотреть:


2.jpg


Что ты хотел?
___________________________________ ___________________________________ ___
У тебя не хватает базы, основы (хотя бы самое минимальное для решение задачи), ты не понимаешь, что тебе говорят и как работать с этой информацией... Обычно такие люди пытаются "выехать на чужом горбу" и их особо здесь не жалуют. Чаще всего люди с нулевыми знаниями просто платят (в платном разделе Фриланс) за решение своей задачи другими.
Но, если ты платить не хочешь, тогда надо "пахать", восполнять пробелы в знаниях.
Иди на ютуб (обрати внимание, что я тебе даже книг не предлагаю, а просто смотреть видеоролики и повторять за лекторами):

3.jpg


там есть всё (и почему появляется и как бороться с той, то всегда можно спросить у лектора в комментариях.

Твоя задача: "сделать кнопку как кнопку" и запрограммировать свою таблицу входов/выходов. Всё.
А сделать "надстройку" над кодом (чтобы кнопка "срабатывала через раз") - это я тебе сделаю.

Повторяю, это не сложно: даже полный видеокурс смотреть не придётся, т.к. описываются в первых 2-3 (4-хх) лекциях. Выбрал видеокурс, посмотрел первые лекции, если нету ничего интересного - переходи к другому автору...
___________________________________ ____________________

Если тебе трудно делать сразу всё (следить за 4-я битами одновременно), тогда вот тебе план действий:
1) сделай программу, просто зажигающую 0-й бит.
2) сделай программу, мигающую 0-м и 4-м битом.
3) сделай программу, от одной кнопки, зажигающую 1-й бит (а когда кнопка отключена - зажигается 7-й бит).
4) сделай программу, в которой 2-е кнопки, действующие на PINB0, PINB1
5) (и наконец) сделай программу, с 4-мя кнопками + кнопка разрешения.
Запрограммируй свою логику вход/выход.
ura_111 вне форума Ответить с цитированием
Старый 13.10.2017, 11:08   #58
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Еще раз терпеливо повторю :
1. Состояние кнопки фиксируется с подавлением дребезга, т.е. кнопка считается нажатой или отпущенной, если состояние отвечающего за нее бита осталось неизменным в течение 50-100мс. Для этого нужно завести переменную, в которой фиксируется предыдущее ее состояние.
2. Действие надо производить, если состояние кнопки изменилось с 0 на 1 или наоборт (это уж сам выбираешь). Для этого нужна еще одна переменная, в которой хранится предыдущее, уже очищенное от дребезга, состояние. И эти состояния сравниваются - если произошло нужное нам изменение, запускаем switch.
Может быть, тебе для простоты сначала дребезг убрать аппаратно, сосредоточившись на переключении состояний ?
Изображения
Тип файла: jpg TR2.JPG (5.6 Кб, 146 просмотров)
digitalis вне форума Ответить с цитированием
Старый 13.10.2017, 11:42   #59
scccorp
Пользователь
 
Регистрация: 05.10.2017
Сообщений: 44
По умолчанию

Цитата:
Сообщение от ura_111 Посмотреть сообщение
scccorp, обычно личные сообщения приходят сюда (надо просто обращать в это место своё внимание):

Вложение 89844


либо в личных личных сообщениях можно просмотреть:


Вложение 89845


Что ты хотел?
___________________________________ ___________________________________ ___
У тебя не хватает базы, основы (хотя бы самое минимальное для решение задачи), ты не понимаешь, что тебе говорят и как работать с этой информацией... Обычно такие люди пытаются "выехать на чужом горбу" и их особо здесь не жалуют. Чаще всего люди с нулевыми знаниями просто платят (в платном разделе Фриланс) за решение своей задачи другими.
Но, если ты платить не хочешь, тогда надо "пахать", восполнять пробелы в знаниях.
Иди на ютуб (обрати внимание, что я тебе даже книг не предлагаю, а просто смотреть видеоролики и повторять за лекторами):

Вложение 89846


там есть всё (и почему появляется и как бороться с той, то всегда можно спросить у лектора в комментариях.

Твоя задача: "сделать кнопку как кнопку" и запрограммировать свою таблицу входов/выходов. Всё.
А сделать "надстройку" над кодом (чтобы кнопка "срабатывала через раз") - это я тебе сделаю.

Повторяю, это не сложно: даже полный видеокурс смотреть не придётся, т.к. описываются в первых 2-3 (4-хх) лекциях. Выбрал видеокурс, посмотрел первые лекции, если нету ничего интересного - переходи к другому автору...
___________________________________ ____________________

Если тебе трудно делать сразу всё (следить за 4-я битами одновременно), тогда вот тебе план действий:
1) сделай программу, просто зажигающую 0-й бит.
2) сделай программу, мигающую 0-м и 4-м битом.
3) сделай программу, от одной кнопки, зажигающую 1-й бит (а когда кнопка отключена - зажигается 7-й бит).
4) сделай программу, в которой 2-е кнопки, действующие на PINB0, PINB1
5) (и наконец) сделай программу, с 4-мя кнопками + кнопка разрешения.
Запрограммируй свою логику вход/выход.
cпасибо извини не заметил)
и ещё как я не пытаюсь выехать "на чужом горбу" как видишь я читаю и пробую сам делать параллельно сёрфя интернет)

Последний раз редактировалось scccorp; 13.10.2017 в 11:47.
scccorp вне форума Ответить с цитированием
Старый 13.10.2017, 23:16   #60
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Кстате, ещё больше материала по программированию вылазит и без сортировки:

1.jpg



Наверно большинство лекторов предпочитают делать один большой файл. чем делить его на части и запихивать в плейлисты... Но ты ищи и так и так.
ura_111 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Порты Novichek_1996 Помощь студентам 3 22.04.2014 19:55
Не могу открыть порты. aszaszasz Помощь студентам 0 26.05.2010 14:27
Порты Троян Помощь студентам 1 12.02.2010 14:55
порты Rabitka Безопасность, Шифрование 0 16.10.2009 16:09
COM Порты Skazi21101 Помощь студентам 0 02.11.2008 12:24