[an error occurred while processing this directive] [an error occurred while processing this directive]
ну уж это врядли.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Elektronik 04 февраля 2002 г. 07:05
В ответ на: Ответ: отправлено trainer 02 февраля 2002 г. 23:27

Бяка тут в другом и тут было сказано уже.
1. Прежде чем делать логическое сложение над какими-нибудь разрядами, надо быть уверенным в том , что в этих разрядах логические единицы. А то запросто можно получить лишние нули оставшиеся от предыдущих операций. То есть перед CopyReg1 = CopyReg1 & (~MaskaBit); надо делать
CopyReg1 = CopyReg1 || 0x07; (считаем что работаем с тремя младшими битами)
2. И лучше сделать также следующее
Сигнал записи переводить сначала в единицу, затем в ноль, а затем снова в единицу. А не как у автора без последнего действия.
3. Обязательно во время этой процедуры должны быть запрещены более высокоприоритетные прерывания или на короткое время делать CLR EA чтобы не рушить времянку.
4. Операции на портами лучше дублировать (иначе были проблемы с некоторыми клонами MCS-51)и делать времянку не NOP-ами, а теми же командами над портами.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru