|
|
  |
T бит в SREGе, Зачем? |
|
|
|
Mar 27 2006, 14:50
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Есть команда (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 - Mar 27 2006, 14:56
|
|
|
|
|
Apr 28 2006, 07:23
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(muravei @ Apr 28 2006, 10:18)  Попытался использовать практически,но: в обработке прерывания сохраняю SREG в стеке, далее устанавливаю бит Т , по выходу восстанавливаю SREG и все бит тю-тю. Что делать ? Может использовать, как и прежде, рабочий р-р? Из прерываний так не получится флаг сбросить/установить надо действительно или регистр зарезервировать (IAR позволяет) или в новых мегах есть GPIOR0 он доступен для команд SBI CBI SBIS SBIC Еще можно некоторые биты в портах использовать если нога используется переферией или свободна. Я например в проектах где используется шина данных и PORTA полностью занят шиной, использую его как 8 битовых флагов, прекрасно работает.
|
|
|
|
|
Apr 28 2006, 08:59
|

Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544

|
Цитата(KRS @ Apr 28 2006, 11:23)  Цитата(muravei @ Apr 28 2006, 10:18)  Попытался использовать практически,но: в обработке прерывания сохраняю SREG в стеке, далее устанавливаю бит Т , по выходу восстанавливаю SREG и все бит тю-тю. Что делать ? Может использовать, как и прежде, рабочий р-р?
Из прерываний так не получится флаг сбросить/установить надо действительно или регистр зарезервировать (IAR позволяет) или в новых мегах есть GPIOR0 он доступен для команд SBI CBI SBIS SBIC Еще можно некоторые биты в портах использовать если нога используется переферией или свободна. Я например в проектах где используется шина данных и PORTA полностью занят шиной, использую его как 8 битовых флагов, прекрасно работает. Не совсем понял. А как же работа с шиной данных/адреса?
|
|
|
|
|
Apr 28 2006, 10:30
|

Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544

|
Цитата(KRS @ Apr 28 2006, 13:51)  Цитата(Igor26 @ Apr 28 2006, 12:59)  Не совсем понял. А как же работа с шиной данных/адреса?
Так при использовании External Memory управление ногами отключатся от регистра PORTA и его, как оказывается, можно совбодно использовать. ну еще и часть PORTC можно использовать, в зависимости от того сколько бит адреса используется. Теперь понял. Оригинально.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|