2016-11-06 17 views
2

之间10位PIC18F252PIC /组件,复制和旋转寄存器

在组件:

从A/d转换,我有一个10位的结果的向左或向右调整,在结果寄存器ADRESH和ADRESL。

什么是从位5到TMR0L位4将这10位置入TMR0H的聪明方法?

更具体地说,与前面的两个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

不错。测试:工作! (除了:MPLAB 8.92与调试器'MPLAB SIM'一起使用.TMR0H不在监视列表中更新,但我认为它必须是仿真器(?)的限制/错误) – bretddog

+0

@bretddog:是的可能是一个错误。 –