PICマイコンによるLEDイルミネーションの製作 Q&A
008. 2つの値の大小を比較するには?
減算命令「SUBWF」を利用して差をとり、「STATUS(ステータス)レジスタ」のCフラグ、Zフラグで正負、ゼロを調べます。以下に例を示します。
※UA, UBはユーザエリアに確保され、値(符号なし0〜255)が入っているものとします。
COMP01
MOVWF UA ;UAの値をWレジスタに格納(W=UA)
SUBWF UB,0 ;減算UB-W (UB-UA)の結果をWレジスタに格納し、正負,ゼロの状態をSTATUSレジスタにセット
BTFSC STATUS,0 ;STATUSレジスタのCフラグ(ビット0)を調べ、クリア(0)ならば次の命令をスキップ
GOTO PULUS ;PULUSへジャンプ(UB-UA=0またはUB-UA>0のとき、Cフラグは1となりスキップされない)
MINUS
; ( UB - UA < 0 の処理を行う )
GOTO COMP0E
PULUS
BTFSC STATUS,2 ;STATUSレジスタのZフラグ(ビット2)を調べ、クリア(0)ならば次の命令をスキップ
GOTO ZERO ;ZEROへジャンプ(Zフラグは1となり、スキップされない)
; ( UB - UA > 0 の処理を行う )
GOTO COMP0E
ZERO
; ( UB - UA = 0 の処理を行う )
COMP0E

Last Up Date: 2009/1/13