⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scale_vr.asm

📁 VCP201_CODE is a FPGA source code.
💻 ASM
字号:
;==========================================================================
; File Name : scale_vr.asm
;
; Rev:   Date:    Author:     Reason:
; 1.00   dd-mm-yy nnnnnnnnnnn rrrrrrrrrrrrrrrrrr
;==========================================================================

;------------------------------------------------------------
; Name : adj_axis
; Parm : W, vr_null, vr_scale
; Retn : W: adjusted and scaled axis value
; Desc : 
;------------------------------------------------------------
adj_axis:
        
        subwf   vr_null,W       ; null - value
        btfsc   STATUS,C
        goto    adj_axis2

        movf    vr_null,W       ; null < value
        subwf   vr_value,W
        movwf   hi_byte

        movlw   0x7f
        movwf   lo_byte
        call    umul

        movlw   0xff
        movwf   vr_value
        movf    vr_null,W
        subwf   vr_value,W
        movwf   divisor

        call    udiv
        movlw   0x80
        addwf   lo_byte,W

        return

adj_axis2:
        clrw                    ; null = 0
        subwf   vr_null,W
        btfss   STATUS,Z
        goto    adj_axis3
        movlw   0x80
        return

adj_axis3:
        movlw   0x80            ; null > value
        movwf   lo_byte
        movf    vr_value,W
        movwf   hi_byte
        call    umul

        movf    vr_null,W
        movwf   divisor
        call    udiv
        movf    lo_byte,W
        
        return  


;------------------------------------------------------------
; Name : adj_lr_axis
; Parm : W, vr_null, vr_scale
; Retn : W: adjusted and scaled axis value
; Desc : 
;------------------------------------------------------------
adj_lr_axis:
        
        subwf   vr_null,W       ; null - value
        btfsc   STATUS,C
        goto    value_is_less

        movlw   d'243'          ; null < value
        subwf   vr_value,W
        btfsc   STATUS,C
        goto    value_exceed_max

        movf    vr_null,W       ; 243 > value
        subwf   vr_value,W
        movwf   hi_byte
        
        movlw   0xff
        movwf   lo_byte
        call    umul

        movlw   d'243'          ; 0xff
        movwf   vr_value
        movf    vr_null,W
        subwf   vr_value,W
        movwf   divisor

        call    udiv
        movf    lo_byte,W

        goto    adj_lr_exit

value_is_less:                  ; null > value
        clrw
        goto    adj_lr_exit

value_exceed_max:
        movlw   0xff
        
adj_lr_exit:
        
        return  


;------------------------------------------------------------
; Name : 
; Parm : 
; Retn : 
; Desc :  adjustment & table lookup
;------------------------------------------------------------
adjust_vr:
        movf    xaxis_null,W
        movwf   vr_null
        movf    xaxis_val,W
        movwf   vr_value
        call    adj_axis
        movwf   offset
        call    table_look
        movwf   xaxis_val

        movf    yaxis_null,W
        movwf   vr_null
        movf    yaxis_val,W
        movwf   vr_value
        call    adj_axis
        movwf   offset
        call    table_look
        movwf   yaxis_val
        
        movf    zaxis_null,W
        movwf   vr_null
        movf    zaxis_val,W
        movwf   vr_value
        call    adj_lr_axis
        movwf   zaxis_val

        movf    raxis_null,W
        movwf   vr_null
        movf    raxis_val,W
        movwf   vr_value
        call    adj_lr_axis
        movwf   raxis_val
       
        
        return


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; table lookup procedure
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
table_look:
        movf    PCLATH,W
        movwf   pclath_save2    ; save PCLATH

        movlw   0x0e6           ;230
        subwf   offset,W
        btfss   STATUS,C        ; offset<W ?
        goto    table_l2        ; No
        movlw   0x0e6
        movwf   offset

table_l2:
        movlw   HIGH Table
        movwf   PCLATH

        movf    offset,W
        nop
        call    Table
        nop
        movwf   offset

;        movlw   HIGH $
;        movwf   PCLATH

        movf    pclath_save2,W
        movwf   PCLATH
        movf    offset,W

        return

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -