2016-11-06 11 views
2

PIC18F252PIC/сборки, копировать и вращать 10 бит между регистрами

В сборке:

От преобразования A/D, у меня есть 10-битный результат влево или вправо регулируется, в регистрах результата ADRESH и ADRESL.

Что такое умный способ получить эти 10 бит в TMR0H от бит 5 до битма 4 TMR0L?

Более конкретно, с двумя 11s на фронте:

XXXX XXXX XX00 0000 ADRESH ADRESL => 
11XX XXXX XXXX 0000 TMR0H TMR0L 

ответ

2

Нет тестируемой ...

bsf  STATUS, _C ;Set Carry 
rrcf ADRESH, f  ;Do 16 bit shift right of ADRES 
rrcf ADRESL, f 
bsf  STATUS, _C ;Set Carry 
rrcf ADRESH, w  ;Do high byte shift right 
movwf TMR0H   ;Copy WREG to destination 
rrcf ADRESL, w  ;Do low byte shift right 
movwf TMR0L   ;Copy WREG to destination 

Читайте также информационные листки, как TMR0 обновляется: 10,4 16-битный режим таймера Чтение и Пишет

+0

Nice. Протестировано: работает! (За исключением: Используется MPLAB 8.92 с Debugger «MPLAB SIM». TMR0H не обновляется в списке наблюдения, но я предполагаю, что это должно быть ограничение/ошибка симулятора (?)) – bretddog

+0

@bretddog: да может быть ошибкой. –