[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Бяка тут в другом и тут было сказано уже.
1. Прежде чем делать логическое сложение над какими-нибудь разрядами, надо быть уверенным в том , что в этих разрядах логические единицы. А то запросто можно получить лишние нули оставшиеся от предыдущих операций. То есть перед CopyReg1 = CopyReg1 & (~MaskaBit); надо делать
CopyReg1 = CopyReg1 || 0x07; (считаем что работаем с тремя младшими битами)
2. И лучше сделать также следующее
Сигнал записи переводить сначала в единицу, затем в ноль, а затем снова в единицу. А не как у автора без последнего действия.
3. Обязательно во время этой процедуры должны быть запрещены более высокоприоритетные прерывания или на короткое время делать CLR EA чтобы не рушить времянку.
4. Операции на портами лучше дублировать (иначе были проблемы с некоторыми клонами MCS-51)и делать времянку не NOP-ами, а теми же командами над портами.
E-mail: info@telesys.ru