Перейти к содержанию

Рекомендуемые сообщения

Я начинающий программист, пытаюсь программировать микроконтроллеры в среде АВР.

У меня возник вопрос, вот например у нас есть двоичная система исчисления где 3 мы можем записать так:

00000011, однако чтобы подать логическую 1 на третий порт микроконтроллера мы должны сделать следующую запись

PORTC=00000100, т е существует некая разница между названиями портов и системами исчисления, в таком случае как мне используя 16 ричную систему исчисления подать напряжение на какую либо ногу порта.Я знаю что данная запись 0х01 подает логическую 1 на 0 ногу, а данная запись 0х10 на 4 ногу ,ну а как быть дальше?

Как подать напряжение на 5 ногу порта? Если я в чем то заблуждаюсь - поправьте, если чего то незнаю расскажите.

Заранее благодарю. 

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

4 часа назад, Andrey Gressikov сказал:

Как подать напряжение на 5 ногу порта?

Вот так:

sbi PORTC,5

Кстати, если управлять светодиодами, подключенными к порту, то зажигать их лучше, подавая логический ноль в порт (микроконтроллеру будет легче, у него так нагрузочная способность по току выше). Светодиод катодом к выводу порта, а анодом (через резистор 1 кОм) на +5 Вольт.

Зажечь: cbi PORTC,5

P.S. Это на ассемблере.

Изменено пользователем Cxemotexnik
Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

@Andrey Gressikov учите что такое биты и битовые операции, флаги, маски.

Нумерация идет с 0. 3 порт по счету это PC2 в вашем случае так как первый PC0.

4 часа назад, Andrey Gressikov сказал:

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

о какой разнице речь не понятно... 

0b100 - установленный третий бит, это то же самое что 1 << 2

<< - это сдвиг влево

0b00000001 << 2 //сдвигаем на 2 вправо
0b00000100

Выходит все просто, надо PC0 порт (или по вашему 1) сдвиг влево на 0, то есть по сути не надо двигать
то есть 1 << 0

надо порт PC1 просто 1 << 1

надо PC2 тогда 1 << 2

все до безобразия просто.

в ассемблере удобней тем что можно 1 бит выставить или сбросить, как вам написали выше. Но это не отменяет того факта, что любой программист должен значить что такое биты и как с ними работать)

 

4 часа назад, Andrey Gressikov сказал:

PORTC=00000100, т е существует некая разница между названиями портов и системами исчисления

тут же все отчетливо видно, 3 бит выставлен на 3 порте будет единица, не уж то не видно связи?)

4 часа назад, Andrey Gressikov сказал:

Как подать напряжение на 5 ногу порта?

Ну видимо 5 биты выставить

0b00010000 если я правильно понял что под пятым портом вы понимаете PC4.

1 << 4 // PC4

PORTC |= 1 << 4;

или же макрос

PORTC |= _BV(4); // установить бит PC4

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

13 часа назад, DrobyshevAlex сказал:

или же макрос

PORTC |= _BV(4); // установить бит PC4

Особенно если учесть, что  PC4 - это предопределенная константа и можно (и нужно!) писать так

PORTC |= _BV(PC4);

 

Изменено пользователем ARV

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, ARV сказал:

(и нужно!)

Гениально! Особенно если учесть что при смене ноги мк придется лезть в код и искать а где я ж такой гений написал PC4 вместо того что бы хотя бы написать макрос 

#define PIN_LED PC4

 

А потом скопировал код в другой компилятор и он на запустился ибо нет еще макроса _BV...

 

Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, DrobyshevAlex сказал:

Особенно если учесть что при смене ноги мк придется лезть в код и искать а где я ж такой гений написал PC4 вместо того что бы хотя бы

Хорошо, что вы исправили свою же ошибку! :) 

Кстати, я в своих проектах дошел до такого

#define LED_PORT	B
#define LED_RED		_BV(0)

А где надо, пишу так

DDR(LED_PORT) |= LED_RED;
PORT(LED_PORT) |= LED_RED;

 

Изменено пользователем ARV

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Ссылка на комментарий
Поделиться на другие сайты

2 минуты назад, ARV сказал:

Хорошо, что вы исправили свою же ошибку!

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

19 часов назад, DrobyshevAlex сказал:

PORTC |= 1 << 4;

Я как бы не пытался объяснить удобство макросов, а хотел лишь немного суть передать связи цифорки 1 << вот тут

а как вы ее назовете это уже дело десятое)

Ссылка на комментарий
Поделиться на другие сайты

3 минуты назад, DrobyshevAlex сказал:

вообще что есть ошибка?

Мать опыта :)

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...