Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
16.02.2005, 18:43
|
|
Прописка
Регистрация: 29.01.2005
Адрес: Киев
Сообщений: 227
Сказал спасибо: 50
Сказали Спасибо 32 раз(а) в 24 сообщении(ях)
|
Проблемка с кусочком кода, на ассемблере
Товарищи, помогите советом, плиз, а то совсем замаялся, не очень хорошо ассемблер знаю. Есть кусочек кода, он критичный по времени. Так вот, как установить в порте Б один бит, не трогая остальных, причем номер этого бита должен передаваться в процедуру извне. Простое присваивание переменной sensset значения 4 (это должен быть номер бита, который ставить) ничего не дает, компилятор предупреждает, что типа вне диапазона, но компилит, при этом подставляет вместо 4 значение 0 зажигая соответствующий бит.
Процедура вот (генерация пачки импульсов для ИК-светодиода)
;****************начало формирования одного периода************
form1per movlw .7 ;длинна импульса
movwf imp_length
movf sensset, w
movwf PORTB (1)
l1 decfsz imp_length, f
goto l1
bcf PORTB, s1_out (2)
bcf PORTB, s2_out (3)
movlw .4 ;длинна паузы (учитывать изначально ;большую длинну!)
movwf imp_length
l2 decfsz imp_length, f
goto l2
goto form_pack
;****************конец формирования периода**********************
а хотелось бы написать в строчке (1) что-то типа bsf PORTB, sensset и соответственно и в строках (2) и (3). Заранее спасибки!
__________________
Невежество всегда на что-нибудь испражняется.
|
|
|
|
24.02.2005, 12:02
|
|
Прописка
Регистрация: 16.04.2004
Сообщений: 201
Сказал спасибо: 337
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
|
Бит в порте можно установить с помощью команды OR, а потушить с помощью AND. Таким образом получается следующее:
movf sensset,w
;только sensset должен быть не 1,2,3,4.... а
; 0- нулевой бит
; 1- первый бит
; 2-второй бит
; 4-третий бит
; 8-
; 16- и т.д. 32, 64, 128 для 7-го бита
далее, чтобы установть бит делаешь так:
iorwf PORTB,f
и вот оно тебе счастье
а чтобы сбросить делаешь так:
comf sensset,f ;инвертируем маску бита
movf sensset,w
andwf PORB,f
и тоже радуешься
Удачи!
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Защита кода
|
Gn0me |
Микроконтроллеры, АЦП, память и т.д |
7 |
25.06.2009 14:07 |
Компиляторы C кода
|
FedorChek |
Микроконтроллеры, АЦП, память и т.д |
168 |
02.03.2009 22:56 |
проблемка с ID FT2232D
|
serb-radio |
Микроконтроллеры, АЦП, память и т.д |
0 |
05.11.2008 09:56 |
Как в AVR Studio для программы на ассемблере указать "к
|
Don_Ambrosio |
Микроконтроллеры, АЦП, память и т.д |
4 |
04.03.2008 14:54 |
at89c2051 чем перекомпилировать прогу на ассемблере
|
nbo |
Микроконтроллеры, АЦП, память и т.д |
3 |
17.03.2007 09:02 |
Часовой пояс GMT +4, время: 09:34.
|
|