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

Запись В Определённые Порты Регистров Ввода-вывода


DFooz

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

Есть 8-я мега. Для вывода из мк 10-битного значения использую регистр PC(7-битный) и 3 порта PB. 8 из 10 бит находятся в одном регистре R16, остальные 2 бита в R17.

Существуют ли команды пересылки битов? Если нет, то как проще сделать?

Я смог только до таукого додуматься

переслать напр. out PORTC,R16, потом напр. сделать сдвиг R16>>7, далее R17<<1, сложить R17+R16 и переслать out PORTB,R17

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

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

А через маску никак?

Кроме того, есть команды установки/сброса отдельных битов (cbi/sbi) - чтоб не трогать весь порт...

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

Любой, заслуживающий внимания, опыт приобретается себе в убыток...

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

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

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

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

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

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

а через маску примерно как? Применить какую-нибудь логическую операцию м/у константой и регистром общего назначения?

а отдельных битов (cbi/sbi) - чтоб не трогать весь порт...

в этих 10 битах интервал времени пересылается, поэтому наверное данные команды не подойдут. Или могут подойти?

Спаибо.

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

Особенности хранения литиевых аккумуляторов и батареек

Потеря емкости аккумулятора напрямую зависит от условий хранения и эксплуатации. При неправильном хранении даже самый лучший литиевый источник тока с превосходными характеристиками может не оправдать ожиданий. Технология, основанная на рекомендациях таких известных производителей литиевых источников тока, как компании FANSO и EVE Energy, поможет организовать правильный процесс хранения батареек и аккумуляторов. Подробнее>>

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

а через маску примерно как? Применить какую-нибудь логическую операцию м/у константой и регистром общего назначения?

Примерно. В константе единицы стоят напртив нужных битов, далее операция "побитовое И" c регистром. Результат ложите куда удобно и выводите одним махом в порт.

в этих 10 битах интервал времени пересылается, поэтому наверное данные команды не подойдут. Или могут подойти?

Я же не знаю какой там у Вас алгоритм. Смотрите сами - по два такта на установку одного бита...

Любой, заслуживающий внимания, опыт приобретается себе в убыток...

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

Секреты депассивации литиевых батареек FANSO EVE Energy

Самыми лучшими параметрами по энергоемкости, сроку хранения, температурному диапазону и номинальному напряжению обладают батарейки литий-тионилхлоридной электрохимической системы. Но при длительном хранении происходит процесс пассивации. Разберем в чем плюсы и минусы, как можно ее избежать или уменьшить последствия и как проводить депассивацию батареек на примере продукции и рекомендаций компании FANSO EVE Energy. Подробнее>>

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

А разве не проще сделать сдвиг через перенос, а для упрощения алгоритма задействовать еще регистр (времянку).

Например:

mov r18,r16 ; - чтобы не трогать оригинал r16

rol   r18 ; - 7-й бит заносится в С

rol   r17 ; - также С заносится в 0-й бит

далее уже

out PORTC,R16

out PORTB,R17

Таким способом 7-й бит вытесняется из R18 во флаг переноса С, а оттуда в 0-й бит R17, сдвигая остальные биты влево. Накладывать маски или нет - дело автора. 5 машинных циклов и данные на выводах МК.

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

  • 3 недели спустя...

всем спасибо. Всё посмотрел, изучил.

Посмотрел также CodeVIsion ассемблированный файл. Мне оказался удобным этот вариант.

.macro setPORT
;записывает указанный бит РОН в порт регистра в/в
;@0-destination IO register
;@1-port number of IO register
;@2-data source (general-purpose register, GPR)
;@3-bit number to write
mov r23,@2
ldi r24,@3
tst r24
breq APP_MASK
LOOP:
lsr r23
dec r24
brne LOOP
APP_MASK:
andi r23,0x1
cpi r23,0
brne ONE
cbi @0,@1
rjmp QUIT
ONE: sbi @0,@1
QUIT: nop
.endmacro;setPORT

пример использования setPORT PORTD,4,tmpL,6 Записываем 6-ой бит регистра tmpL в 4-ый порт регистра PD (отсчёт от 0)

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

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

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

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

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

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

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

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

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

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

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