22.09.2013, 12:23
|
|
Временная регистрация
Регистрация: 04.08.2013
Сообщений: 51
Сказал спасибо: 22
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
MPLAB, PIC16F84
Уважаемые программисты, подскажите как в ассемблере можно многократно инвертировать один бит регистра не затрагивая остальные биты?
Например только выход порта RB3, инвертировать многократно не затрагивая остальные порты.
Последний раз редактировалось nikvas; 22.09.2013 в 12:25.
Причина: ошибка
|
|
|
|
22.09.2013, 13:14
|
|
Почётный гражданин KAZUS.RU
Регистрация: 01.04.2009
Адрес: Рязань
Сообщений: 1,140
Сказал спасибо: 21
Сказали Спасибо 635 раз(а) в 344 сообщении(ях)
|
Re: MPLAB, PIC16F84
В аккумулятор требумую маску и операция "исключающе или" с портом. Результат в порт.
Код:
|
movlw (1 ‹‹ Pb3);
xorwf PORTB, 1; |
как то так ...
Последний раз редактировалось _guardianangel; 22.09.2013 в 13:16.
|
|
|
|
22.09.2013, 15:08
|
|
Временная регистрация
Регистрация: 04.08.2013
Сообщений: 51
Сказал спасибо: 22
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: MPLAB, PIC16F84
Состояние остальных бит в порту В неизвестно и изменять их не возможно.
Поэтому вся маска не годится.
Я так понимаю что команду xorwf применить к одному биту невозможно.
Я не проф и много не знаю, поэтому попробую Ваш вариант, но его пока полностью не понимаю.
|
|
|
|
22.09.2013, 15:25
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,121
Сказал спасибо: 2,569
Сказали Спасибо 11,944 раз(а) в 5,991 сообщении(ях)
|
Re: MPLAB, PIC16F84
Сообщение от nikvas
|
Я не проф и много не знаю, поэтому попробую Ваш вариант
|
Прежде, чем в железе, промоделируйте побитно на бумажке и поймете - можно или нет.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
22.09.2013, 18:18
|
|
Временная регистрация
Регистрация: 04.08.2013
Сообщений: 51
Сказал спасибо: 22
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: MPLAB, PIC16F84
Если я беру маску порта "В", то по команде xorwf PORTB, 1; инвертируются все его выходы, а мне надо управлять только одним не трогая другие, они выполняют свои функции.
Я и рад бы на бумажке, да не знаю чего. Поэтому и обратился.
|
|
|
|
22.09.2013, 18:23
|
|
Почётный гражданин KAZUS.RU
Регистрация: 30.06.2005
Сообщений: 3,399
Сказал спасибо: 5
Сказали Спасибо 431 раз(а) в 306 сообщении(ях)
|
Re: MPLAB, PIC16F84
Сообщение от nikvas
|
Если я беру маску порта "В", то по команде xorwf PORTB, 1; инвертируются все его выходы, а мне надо управлять только одним не трогая другие, они выполняют свои функции.
Я и рад бы на бумажке, да не знаю чего. Поэтому и обратился.
|
Ну пишите баг репорт в Microchip,если у них XOR с нулем инвертирует.
|
|
|
|
22.09.2013, 18:27
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,121
Сказал спасибо: 2,569
Сказали Спасибо 11,944 раз(а) в 5,991 сообщении(ях)
|
Re: MPLAB, PIC16F84
Ну, таблица истинности "исключаещего ИЛИ" проста - исключает совпадения. То есть, 1 и 0 в любой комбинации дают 1, а два 0 или две 1 дают 0. В данной ситуации это мало поможет.
ПС Ну да, _guardianangel, прав, я не просчитал варианты. Давно соскачил на С.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
Последний раз редактировалось akegor; 22.09.2013 в 21:05.
|
|
|
|
22.09.2013, 20:53
|
|
Почётный гражданин KAZUS.RU
Регистрация: 01.04.2009
Адрес: Рязань
Сообщений: 1,140
Сказал спасибо: 21
Сказали Спасибо 635 раз(а) в 344 сообщении(ях)
|
Re: MPLAB, PIC16F84
Сообщение от nikvas
|
Если я беру маску порта "В", то по команде xorwf PORTB, 1; инвертируются все его выходы, а мне надо управлять только одним не трогая другие, они выполняют свои функции.
|
С какого "художника" ВСЕ выходы инвертируются????? (1 ‹‹ Pb3) равнозначно 00001000b (так кажись в пиковском ассемблере) и по сией маске имеем: если Pb3 = 1 - 1 xor 1 = 0 (инверсия) остальные пины: 0 xor pin_state = pin_state; если Pb3 = 0 - 1 xor 0 = 1 (инверсия) остальные пины: 0 xor pin_state = pin_state.
|
|
|
|
22.09.2013, 21:26
|
|
Заблокирован
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
|
Re: MPLAB, PIC16F84
Сообщение от akegor
|
я не просчитал варианты. Давно соскачил на С.
|
И с СИ давно соскачил!?
Код:
|
26: PORTB ^= (1 ‹‹ 4) | (1 ‹‹ 0);
MOVLW 0x11
XORWF PORTB, F
27: PORTB ^= (1 ‹‹ 4) | (1 ‹‹ 0);
XORWF PORTB, F
28: PORTB ^= (1 ‹‹ 4) | (1 ‹‹ 0);
XORWF PORTB, F
29: PORTB ^= (1 ‹‹ 4) | (1 ‹‹ 0);
XORWF PORTB, F
30: PORTB ^= (1 ‹‹ 4) | (1 ‹‹ 0);
XORWF PORTB, F
31: PORTB ^= (1 ‹‹ 4) | (1 ‹‹ 0);
XORWF PORTB, F
32: PORTB ^= (1 ‹‹ 4) | (1 ‹‹ 0);
XORWF PORTB, F
33: |
Последний раз редактировалось nahimovv; 22.09.2013 в 21:29.
|
|
|
Сказали "Спасибо" nahimovv
|
|
|
23.09.2013, 11:15
|
|
Вид на жительство
Регистрация: 29.03.2009
Адрес: Бровары, Украина
Сообщений: 326
Сказал спасибо: 1,410
Сказали Спасибо 82 раз(а) в 46 сообщении(ях)
|
Re: MPLAB, PIC16F84
btfss PortB,3
goto SetBit
bcf PortB,3
goto EndInv
SetBit
bsf PortB,3
EndInv
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Подскаж., плиз, как "увидеть" в MPLAB (в Watch) fl
|
olki |
Микроконтроллеры, АЦП, память и т.д |
2 |
13.08.2009 09:25 |
MPLab 8.1& HItech
|
Boris_Britva |
Микроконтроллеры, АЦП, память и т.д |
0 |
05.06.2008 18:54 |
Кириллица в проектах MPLAB IDE 8.00
|
X_ela_2 |
Микроконтроллеры, АЦП, память и т.д |
2 |
22.01.2008 15:26 |
РАБОТА с MPLAB
|
downkazus |
Proteus, KiCAD и другие ECAD |
10 |
28.01.2007 13:15 |
Проблема с внутрисхемным эмулятором MPLAB ICE 2000
|
AntiLL |
Микроконтроллеры, АЦП, память и т.д |
4 |
05.07.2006 18:22 |
Часовой пояс GMT +4, время: 02:17.
|
|