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

T бит в SREGе

Подскажите(с примером) как можно использовать T бит в SREGе, а то вдруг мне это надо , а я не знаю :(

Поделиться сообщением


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

для хранения 1 бита

есть команды установки, сброса, условного перехода

и запсиь и сохранение в любой бит любго регистра

Поделиться сообщением


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

Просто любого от фонаря, по моему хотению, и никто на него не позариться?:)

Компилятор от IAR иногда использует его для своих нужд при работе с булевыми переменными.

Поделиться сообщением


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

Есть команда (bst) загрузки любого бита любого регистра во флаг T, и команда(bld) выгрузки флага T в любой бит любого регистра, а также есть команды(brts/brtc) перехода по значению флага T.

 

Т.о. этот флаг упрощает работу там где требуется манипуляция с битами.

 

Пример:

Пусть имеется какой-то регистр в котором хряняться какие-то флаги, которые предполагается использовать в программе.

 

.def AL = r24
.def AH = r25
.def Flags = R15 ; Пользовательский регистр флагов
.equ Flag0 = 0  
.equ Flag1 = 1
.equ Flag2 = 2
.equ Flag3 = 3
...
.equ Flag7 = 7

прочитать порт B и поместить значение пина PB5 во флаг Flag0:

  in  AL, PinB
  bst AL, PB5
  bld  Flags, Flag0

проверить Flag4 и если он установлен перейти на подпрограмму Proc1

  bst  Flags, Flag4
  brts Proc1
  ...
Proc1:

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

Поделиться сообщением


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

Попытался использовать практически,но:

в обработке прерывания сохраняю SREG в стеке, далее устанавливаю бит Т , по выходу восстанавливаю SREG и все бит тю-тю.

Что делать ? Может использовать, как и прежде, рабочий р-р?

Поделиться сообщением


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

Попытался использовать практически,но:

в обработке прерывания сохраняю SREG в стеке, далее устанавливаю бит Т , по выходу восстанавливаю SREG и все бит тю-тю.

Что делать ? Может использовать, как и прежде, рабочий р-р?

Из прерываний так не получится флаг сбросить/установить

 

надо действительно или регистр зарезервировать (IAR позволяет)

или в новых мегах есть GPIOR0 он доступен для команд SBI CBI SBIS SBIC

 

Еще можно некоторые биты в портах использовать если нога используется переферией или свободна.

Я например в проектах где используется шина данных и PORTA полностью занят шиной, использую его как 8 битовых флагов, прекрасно работает.

Поделиться сообщением


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

Я например в проектах где используется шина данных и PORTA полностью занят шиной, использую его как 8 битовых флагов, прекрасно работает.

 

О, толково... Спасибо за подсказку. Я обычно биты управления прерыванием (фронт/спад) аналогового компаратора пользовал ;), порт под шиной - побольше размером.

Поделиться сообщением


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

Попытался использовать практически,но:

в обработке прерывания сохраняю SREG в стеке, далее устанавливаю бит Т , по выходу восстанавливаю SREG и все бит тю-тю.

Что делать ? Может использовать, как и прежде, рабочий р-р?

Из прерываний так не получится флаг сбросить/установить

 

надо действительно или регистр зарезервировать (IAR позволяет)

или в новых мегах есть GPIOR0 он доступен для команд SBI CBI SBIS SBIC

 

Еще можно некоторые биты в портах использовать если нога используется переферией или свободна.

Я например в проектах где используется шина данных и PORTA полностью занят шиной, использую его как 8 битовых флагов, прекрасно работает.

Не совсем понял. А как же работа с шиной данных/адреса?

Поделиться сообщением


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

Не совсем понял. А как же работа с шиной данных/адреса?

 

Так при использовании External Memory управление ногами отключатся от регистра PORTA и его, как оказывается, можно совбодно использовать.

ну еще и часть PORTC можно использовать, в зависимости от того сколько бит адреса используется.

Поделиться сообщением


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

Не совсем понял. А как же работа с шиной данных/адреса?

 

Так при использовании External Memory управление ногами отключатся от регистра PORTA и его, как оказывается, можно совбодно использовать.

ну еще и часть PORTC можно использовать, в зависимости от того сколько бит адреса используется.

Теперь понял. Оригинально.

Поделиться сообщением


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

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

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

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

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

×
×
  • Создать...