;***************************** 2005/07/30 ******** ;Hex 16ビット2バイトデータを10進数5桁のBCD値に変換する ;入力 u_hex,d_hex ;出力 de_5,de_4,de_3,de_2,de_1 ; BANK 0 ;間接アドレッシングを使用しているので変数順序を変更しないこと ;***************************** Ishikawa ********** Hexdec16 ; ; 変数エントリー CBLOCK H'20' ;ファイルアドレス20hから変数を割り当てる u_hex ; 入力上位 d_hex ; 入力下位 de_5 ; 出力5桁 de_4 ; 出力4桁 de_3 ; 出力3桁 de_2 ; 出力2桁 de_1 ; 出力1桁 SR_CNT ; Cunter SR_wk ; Wk TEMP ENDC ;CBLOCK終了 ;----------------------------------------- bcf STATUS,IRP ; Bank 0,1(00h-FFh) movlw SR_CNT ; 格納場所初期値 movwf FSR ; 間接アドレッシングの先頭アドレスをセット call Devide ; 1桁目変換 call Devide ; 2桁目変換 call Devide ; 3桁目変換 call Devide ; 4桁目変換 call Devide ; 5桁目変換 Return Devide movlw d'16' ; カウンターセット movwf SR_CNT clrf SR_wk Devide1 bcf STATUS,C ; キャリークリア rlf d_hex,f ; 下位データ rlf u_hex,f ; 上位データ rlf SR_wk,f ; movlw b'11110110' addwf SR_wk,w btfsc STATUS,C movwf SR_wk btfsc STATUS,C incf d_hex,f decfsz SR_CNT,f goto Devide1 decf FSR,f ; アドレス-1 movf SR_wk,w movwf INDF ; 計算結果を出力 Return ;--------------------------------------------