Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Частичная конфигурация порта


Частичная конфигурация порта

Сообщений 1 страница 4 из 4

1

Необходимо изменить направление части выводов порта. Есть идеи как это сделать на прописывая CONFIG PORT.x для всех выводов?
Пока что думаю прочитать содержимое DDR, изменить состояние с помощью логических операций и записать в DDR. Может есть другие варианты?

0

2

Вместо "0" и "1" подставляем то, что надо в любых вариантах

  !LDS R16 , DDRx
  !ANDI R16 , &B_1111_0000       ' Если 1 - бит не меняется, если 0 - бит сбрасывается
  !STS DDRx , R16

  !LDS R16 , DDRx
  !ORI R16 , &B_1111_0000       ' Если 1 - бит меняется на 1, если 0 - бит не изменяется
  !STS DDRx , R16

  !LDS R16 , DDRx
  !COM R16 , &B_1111_0000       ' Меняется состояние на противоположное
  !STS DDRx , R16

Отредактировано sasha_1973 (2015-08-23 05:23:13)

+1

3

Спасибо.
Значит кроме логических операций других вариантов нет. Сделал так.

Код:
DdrD = DdrD And &B11100001

0

4

С выводом все оказалось гораздо сложнее. Не нужные выводы могут быть настроены как входами (с включенными или выключенными подтягивающими резисторами), так и выходами.
Если читать из PIND модифицировать и записывать в PORTD, то есть вероятность случайно включить или выключить подтягивающий резистор.
Видимо необходимо прочитать DdrD, определить какие выводы из неиспользуемых являются входами, а какие выходами и в зависимости от этого, читать PIND или PORTD. Делать это нужно для каждого вывода в отдельности.
По моему проще будет побитово читать/писать данные на нужных выводах.

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Частичная конфигурация порта