Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 16.02.2005, 18:43  
lisergin
Прописка
 
Регистрация: 29.01.2005
Адрес: Киев
Сообщений: 227
Сказал спасибо: 50
Сказали Спасибо 32 раз(а) в 24 сообщении(ях)
lisergin на пути к лучшему
По умолчанию Проблемка с кусочком кода, на ассемблере

Товарищи, помогите советом, плиз, а то совсем замаялся, не очень хорошо ассемблер знаю. Есть кусочек кода, он критичный по времени. Так вот, как установить в порте Б один бит, не трогая остальных, причем номер этого бита должен передаваться в процедуру извне. Простое присваивание переменной 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). Заранее спасибки!
Реклама:
__________________
Невежество всегда на что-нибудь испражняется.
lisergin вне форума  
Непрочитано 24.02.2005, 12:02  
Drex
Прописка
 
Аватар для Drex
 
Регистрация: 16.04.2004
Сообщений: 201
Сказал спасибо: 337
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
Drex на пути к лучшему
По умолчанию

Бит в порте можно установить с помощью команды 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

и тоже радуешься

Удачи!
Drex вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
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, время: 17:46.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot