Форум программистов  
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

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

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

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

PORTD ^= (1<<RD7), где RD7 - номер бита .

Изображения
Тип файла: bmp Knop.bmp (6.3 Кб, 0 просмотров)

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

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

PORTD ^= (1<<RD7), где RD7 - номер бита .

я понял. просто повторюсь я ещё никогда не работал с свичкейс, поэтому немного не понял код)
и что означает "XOR"

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

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

  a = 1100b ;  b = 1001b ; a ^= b ;

получим в а значение 0101b .

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

Цитата:
Сообщение от 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, 12:04   #57
ura_111
Профессионал
 
Регистрация: 14.05.2016
Сообщений: 1,636
Репутация: 338
По умолчанию

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, 12:08   #58
digitalis
Форумчанин
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Адрес: Минск
Сообщений: 451
Репутация: 198
По умолчанию

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

Цитата:
Сообщение от 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 в 12:47.
scccorp вне форума   Ответить с цитированием
Старый 14.10.2017, 00:16   #60
ura_111
Профессионал
 
Регистрация: 14.05.2016
Сообщений: 1,636
Репутация: 338
По умолчанию

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

1.jpg



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



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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




04:19.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru