Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
03.12.2011, 16:55
|
|
Супер-модератор
Регистрация: 09.06.2011
Сообщений: 2,676
Сказал спасибо: 74
Сказали Спасибо 1,806 раз(а) в 654 сообщении(ях)
|
Re: Мигание светодиодом :)
Сообщение от alvadep
|
на столе, это не значит что оно будет работать в других условиях.
|
И на столе, и в других разумных условиях всё прекрасно и стабильно работает. Конечно, в условиях сильных электромагнитных помех, отвратительного питания, длинных соединительных проводов и емкостных или повышенных нагрузок на порты стоит подстраховаться. Но в подавляющем большинстве случаев (вроде рассматриваемого здесь) можете не опасаться, проверено.
Сообщение от alvadep
|
команды "BSF PORT" и "BCF PORT" однозначно влияют на указанный разряд.
|
На указанный-то влияет, а что происходит с остальными? Если не важно, и к порту подключен только один светодиод, можно и проще сделать, безо всяких "ксоров". Например, для того же подключения к RB0:
PHP код:
|
MAIN incf LED, W movwf LED movwf PORTB goto MAIN
|
Последний раз редактировалось RECTO; 03.12.2011 в 17:19.
|
|
|
|
03.12.2011, 17:20
|
|
Вид на жительство
Регистрация: 07.09.2007
Адрес: Дерёвня Ишимбай
Сообщений: 419
Сказал спасибо: 65
Сказали Спасибо 136 раз(а) в 87 сообщении(ях)
|
Re: Мигание светодиодом :)
Сложно так потому, что светодиодов много, и источники обновления для других светодиодов тоже разные.
Сообщение от RECTO
|
Скажу по секрету: хотя Вы здесь и используете дополнительную переменную, которая "всегда даёт 100% правильный результат", стабильность работы в данном случае всё равно не обеспечена (чем нас здесь так пугает alvadep). Потому что команды "BSF PORT" и "BCF PORT" тоже работают по принципу "чтение-модификация-запись".
|
Откуда такая информация? Не то чтоб не верю, просто мнения разделились...
Последний раз редактировалось Slava-martyn; 03.12.2011 в 17:23.
|
|
|
|
03.12.2011, 17:34
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
|
Re: Мигание светодиодом :)
Сообщение от RECTO
|
Скажу по секрету: хотя Вы здесь и используете дополнительную переменную, которая "всегда даёт 100% правильный результат",
|
И где вы там увидели применение фантомного регистра???
Скажу по секрету: andwf portХ,f , iorwf portХ,f и xorwf portb,f - тоже RMW... в отличие от movwf ...
|
|
|
|
03.12.2011, 17:43
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
|
Re: Мигание светодиодом :)
|
|
|
|
03.12.2011, 17:44
|
|
Гражданин KAZUS.RU
Регистрация: 17.08.2008
Сообщений: 770
Сказал спасибо: 52
Сказали Спасибо 450 раз(а) в 202 сообщении(ях)
|
Re: Мигание светодиодом :)
Сообщение от RECTO
|
команды "BSF PORT" и "BCF PORT" тоже работают по принципу "чтение-модификация-запись".
|
Поэтому нужно делать BSF BCF байта и выводить байт в порт.
|
|
|
|
03.12.2011, 17:45
|
|
Супер-модератор
Регистрация: 09.06.2011
Сообщений: 2,676
Сказал спасибо: 74
Сказали Спасибо 1,806 раз(а) в 654 сообщении(ях)
|
Re: Мигание светодиодом :)
Сообщение от Slava-martyn
|
Сложно так потому, что светодиодов много, и источники обновления для других светодиодов тоже разные.
|
Понятно. Тогда проще (и надежнее! )можно было сделать так:
PHP код:
|
MAIN movlw 0x01 ; Задаем бит, который инвертируем.
xorwf LED, W ; Модификация значения переменной, хранящей состояние порта D
movwf LED ; Сохраняем модифицированное значение переменной.
movwf PORTD ; Запись в порт.
goto MAIN ; Возврат на начало цикла.
|
Сообщение от Slava-martyn
|
Откуда такая информация? Не то чтоб не верю, просто мнения разделились...
|
Из даташита. Читайте раздел "Порты ввода/вывода".
А где мнения разделились? Кто-то утверждает, что BSF и BCF работают не по принципу "чтение/модификация/запись"?
|
|
|
|
03.12.2011, 17:54
|
|
Супер-модератор
Регистрация: 09.06.2011
Сообщений: 2,676
Сказал спасибо: 74
Сказали Спасибо 1,806 раз(а) в 654 сообщении(ях)
|
Re: Мигание светодиодом :)
Последний раз редактировалось RECTO; 03.12.2011 в 17:58.
|
|
|
|
03.12.2011, 18:03
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
|
Re: Мигание светодиодом :)
Сообщение от RECTO
|
Насколько я понял, переменная "LED" в программе Slava-martyn - это и есть то, что Вы называете "фантомным портом". Т.е. хранит текущее значение порта. Только использовался он у него несколько странно...
|
А что тут странного???
Типичное применение битового флага... бита, а не порта... есть разница???
|
|
|
|
03.12.2011, 18:33
|
|
Супер-модератор
Регистрация: 09.06.2011
Сообщений: 2,676
Сказал спасибо: 74
Сказали Спасибо 1,806 раз(а) в 654 сообщении(ях)
|
Re: Мигание светодиодом :)
|
|
|
|
03.12.2011, 18:49
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
|
Re: Мигание светодиодом :)
Сообщение от Slava-martyn
|
просто мнения разделились...
|
Да нифига они не разделились... каждый "музыкант играет так, как может"...
Ещё раз... на пальцах...
Если у вас нет последовательных операций вывода (один-два NOP'a выручает), ёмкостной нагрузки, перегруза по выходному току и длинных линий по выходу (межблочное соединение, для примера, или длинные проводники на плате), то можете использовать все битовые и байтовые операции без ограничений... Но... в реальной жизни, в реальных конструкциях, существуют и длинные проводники, и подключение затворов мощных полевиков, не говоря уже о подключении семисегментных индикаторов без ключей, и т.д. ... И любая, случайная, помеха, в сочетании с RMW, приведёт к непредсказуемому результату... И только применение "фантомного регистра" с применением MOVWF даст 100% правильный результат, т.к. нет RMW с портом...
Последний раз редактировалось st_1; 03.12.2011 в 18:53.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:50.
|
|