С Новым годом! Форум программистов, компьютерный форум, киберфорум
Электроника для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/79: Рейтинг темы: голосов - 79, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 27.01.2010
Сообщений: 199

команда PIN

30.01.2010, 23:06. Показов 14694. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно выполнить команду при нажатии кнопки.
Можно ли командой PIN считать данные и с одной ножки порта, или она считывает со всех.
Попробовал записать так,

if (PINC5 == 0)
PORTC = 0b0000011;
else PORTC = 0b0001100;

но при симуляции в АВРстудио это не сработало. Контроллер Мега8 схема

http://img206.imagevenue.som/loc583/th_63862_Miko8_122_583lo.jpg
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.01.2010, 23:06
Ответы с готовыми решениями:

Модернизация китайского 4 pin разветвителя: добавление поддержки PWM на 3 pin и 2 pin вентиляторах
Задача: переделка 3-х пинового вентилятора в 4-х пиновый с добавлением поддержки изменения оборотов (на основе данных, взятых с 4 пинового...

Распиновка тумблера (6 pin)
Приветствую! Задумал я смастерить подобие разветвителя для наушников. Такой разветвитель меня не устраивает, так как звук идет...

Откуда выдрать разъем (pin header) с шагом 1.5мм?
Все попытки найти в Киеве разъем с шагом 1.5мм не увенчались успехом. Требуется папа для организации панельки для Bluetooth-модуля HC-04....

12
0 / 0 / 0
Регистрация: 18.10.2006
Сообщений: 547
30.01.2010, 23:16
а так
Code
1
if(!(PINC&(1<<PINC5)))...
0
0 / 0 / 1
Регистрация: 22.01.2010
Сообщений: 4,000
30.01.2010, 23:47
Компилятор то какой? Судя по синтаксису это что то из CVAVR. В WinAVR так обращаться к регистру PIN не прокатит.
0
0 / 0 / 0
Регистрация: 27.01.2010
Сообщений: 199
31.01.2010, 09:14
Цитата Сообщение от tyx
а так
Код:
if(!(PINC&(1<<PINC5)))...
спасибо, попробую попозже на работе не получится.
Цитата Сообщение от DY HOTT
Компилятор то какой? Судя по синтаксису это что то из CVAVR. В WinAVR так обращаться к регистру PIN не прокатит.
AVRStudyo и WinAVR . Так как я начинающий а это моя первая программа то то начал всё по курсу «AVR. Учебный Курс. Программирование на Си» но как считывать информацию с одной ножки не нашёл. Хотелось бы сделать без прерывания.
0
0 / 0 / 0
Регистрация: 27.01.2010
Сообщений: 199
01.02.2010, 09:43
вот это пытаюсь довести до ума, но всё время байт устанавливаются в 0b0000011. Конечно когда нибудь и сам дойду как считать информацию с кнопки :) но хотелось бы побыстрее.
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#defyme F_CPU 1000000UL
#ymstude <avr/io.h>
#ymstude <util/delay.h>
 
int main (void)
{
DDRB  = 0b01000111;
DDRC  = 0b00100000;
PORTC = 0b00100000;
 
if ( ! ( PINC& ( 1<<PINC5 )))
PORTC = 0b0000011;
else PORTC = 0b0001100;
_delay_ms(50);
 
}
0
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 52
01.02.2010, 13:12
Цитата Сообщение от tyx
а так
Код:
if(!(PINC&(1<<PINC5)))...
расшифруйте по-русски
если не равно значение на PINC а далее о логическом И и сдвиге
это одно и то же, что и
if (PINC5 == 0)
PORTC = 0b0000011;
else PORTC = 0b0001100;
последннее понятно, а вот сокращенная запись нет. можно кто ее в полном виде записать?
0
0 / 0 / 0
Регистрация: 24.01.2010
Сообщений: 727
01.02.2010, 13:56
Цитата Сообщение от Ko3ox
...
запись if(PINC5==0) не правильная. PINC5 численно равно 5, это номер бита. Получается if(5==0) - ложно всегда.

Цитата Сообщение от JomBroum
вот это пытаюсь довести до ума, но всё время байт устанавливаются в 0b0000011. Конечно когда нибудь и сам дойду как считать информацию с кнопки :) но хотелось бы побыстрее.
Код:
DDRB = 0b01000111;
DDRC = 0b00100000;
PORTC = 0b00100000;

мб
Code
1
2
  DDRC  = 0b11011111;
PORTC = 0b00100000;
0
0 / 0 / 0
Регистрация: 18.10.2006
Сообщений: 547
01.02.2010, 16:39
Code
1
if( PINC&(1<<PINC5)) // истинно, если в 5 бите PINC 1
PINC & 0b00100000 = 0b00100000 - то кнопка не нажата
PINC & 0b00100000 = 0 - то кнопка нажата
0
0 / 0 / 0
Регистрация: 27.01.2010
Сообщений: 199
01.02.2010, 21:44
Цитата Сообщение от xroymom
мб

DDRC = 0b11011111;
PORTC = 0b00100000;
правильно что то я ошибся
0
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 52
02.02.2010, 00:15
if( PINC&(1<<PINC5)) // истинно, если в 5 бите PINC 1
===
зачем так мозг закакивать? зачем PINC5? зачем через одно место гланды вырезать? какую смысловую нагрузку в данном случае несет PINC во втором случае?
если написать
if( PINC&(1<<5)) будет понятнее, загружаем 1 и двигаем ее 5 раз
0
0 / 0 / 0
Регистрация: 24.01.2010
Сообщений: 727
02.02.2010, 01:02
Цитата Сообщение от Ko3ox
if( PINC&(1<<PINC5)) // истинно, если в 5 бите PINC 1
===
зачем так мозг закакивать? зачем PINC5? зачем через одно место гланды вырезать? какую смысловую нагрузку в данном случае несет PINC во втором случае?
если написать
if( PINC&(1<<5)) будет понятнее, загружаем 1 и двигаем ее 5 раз
как зачем?
делаем
Code
1
2
#undef PINC5
#defyme PINC5 3
и хрен кто догадается, особенно если переопределить всё :) потом можно врагам продавать исходники, пусть отлаживают

А вообще, в winavr вроде есть макрос типа _BV(x) или как-то так, для этих дел
if (PINC&_BV(5))
0
0 / 0 / 0
Регистрация: 18.10.2006
Сообщений: 547
02.02.2010, 08:35
использование предопределенных констант считается хорошим тоном. это позволяет улучшить читаемость программы. в данном случае используя подстановку препроцессора PINC5, которая заменяется на 5, явно видно что мы обращаемся к 5 пину.
0
0 / 0 / 0
Регистрация: 27.01.2010
Сообщений: 199
02.02.2010, 09:40
Приятно послушать умных людей. Но я совсем запутался подумаю пару дней :) Тем более всё равно это код пока не работает.
Был бы очень признателен если кто выложит рабочий кусочек. Кстати С0-С3 предполагается задействовать под АЦП. Если это так геморойно может проще кнопку повесить на другой порт?

Вообще планировал сделать зарядку для NI-Mh аккумуляторов. Чтобы одновременно заряжать 4 ак. но параметры отслеживать на каждом отдельно. Самое смешное что в интернете не нашлось ни одной подходящей схемы. Это было последним толчком к изучению МК так как на логике делать меня не привлекало. Хотя лет 20 назад делал частотомеры и цифр вольтметры на 155 серии.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.02.2010, 09:40
Помогаю со студенческими работами здесь

stm32f429di и HSD070IDW1-A 60 pin lcd
Ребята, кто сталкивался с матрицей H-B070D-12P это китайский аналог матрицы HSD070IDW1-A? У нее на борту помимо паралельного RGB...

Состояние PORT не передается в PIN
Добрый день! Недавно я начал изучение программирования МК. Платформа Code vision, отладчик AVR studyo v.4.19. Микроконтройлер - ATMiko8. ...

не могу поменять pin EXTI прерывания
Взял код стандартного примера stm32f4 - всё прекрасно, ножка PA0 управляет прерыванием. Пытаюсь код модифицировать, чтоб управлять...

Toggle pin (PINx |= bit;). Вопрос.
Вычитал в ДШ что toggle пином можно делать не по принципу &quot;чтение-модификация-запись&quot; регистра PORTx, а просто установкой...

Не устанавливается PIN после установки PORT в 1
Добрый день, я начинающий, учусь естественно с примеров. AVR Studyo 6.1. Схема простая, кнопка и диод. По нажатию кнопки меняется...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru