2016-11-06 11 views
2

PIC18F252間PIC /アセンブリ、アセンブリ内のレジスタ

10ビットをコピーして回転する:

A/D変換され、Iは、結果レジスタに、左または右調整10ビットの結果を有しますADRESHおよびADRESL。

これらの10ビットをビット5からTMR0Lのビット4までTMR0Hにするための巧妙な方法はありますか?

具体的には、2つのフロントで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」を使用していますが、ウォッチリストでは更新されていませんが、シミュレータの制限/バグである必要があります)? – bretddog

+0

@bretddog:yesはバグです。 –

関連する問題