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

📄 mapkey.asm

📁 VCP201_CODE is a FPGA source code.
💻 ASM
字号:
;====================================================
; File Name : MapKey.asm        
; PF2107 PSX2 Dual Impact 2 (ASIC)
;
; Rev:   Date:    Author:
; 0.1    xx/06/00 Parco		
;====================================================
mapkey:
	btfsc	D_A_mode	;Digital Mode?
        goto	out_map     	;No. Analog Mode 	
	bsf	bit_L3     	;Yes
        bsf	bit_R3

out_map:
	movlw	0xff	
       	movwf	key_out0

	btfss	bit_L3
	bcf	bit_L3_out
	btfss	bit_R3
	bcf	bit_R3_out
     	btfss	bit_select
        bcf	bit_select_out
        btfss	bit_start
        bcf	bit_start_out
        btfss	bit_up
       	bcf	bit_up_out
       	btfss	bit_right
      	bcf	bit_right_out
       	btfss	bit_down
        bcf	bit_down_out
        btfss	bit_left
        bcf	bit_left_out
  
	movf	key_raw1,W
	movwf	key_out1
 
	btfss	bit_E1
        bcf	bit_L1_out

	btfss	bit_E2
        bcf	bit_R1_out

;-----------------------
	btfsc	D_A_mode
        goto	XY_end

	movf	xaxis_val,W
        movwf	temp_1		;x1_val
	movf	yaxis_val,W
        movwf	temp_2		;y1_val
        call	XY_map

	movf	zaxis_val,W
        movwf	temp_1		;x1_val
        movf	raxis_val,W
        movwf	temp_2		;y1_val
        call	XY_map

;--------------------------
XY_end:	
	btfsc	bit_left_out
        goto	mapkey_down_1
	bsf	bit_right_out
        movlw	0x00
        movwf	right_val	

mapkey_down_1:
	btfsc	bit_down_out
        goto	mapkey_out_1
	bsf	bit_up_out
	movlw	0x00
        movwf	up_val
;-------------------------

mapkey_out_1:
	bsf	STATUS,RP0
	movf	data3_4f,W
        movwf	sio_4f_data3
	movf	data2_4f,W
        movwf	sio_4f_data2
	movf	data1_4f,W
        movwf	sio_4f_data1
	clrf	mapkey_counter
	clrf	out_tmp
	clrf	mapkey_tmp   
	bcf	STATUS,RP0
	movf	pad_id,W       	
        andlw	0x0f
	bsf	STATUS,RP0
	movwf	mapkey_counter
        addwf	mapkey_counter,F

;-----------------------------------
mapkey1:
	btfss	sio_out_1
	goto	mapkey2

data_out1:
	bcf	STATUS,RP0
	movf	key_out0,W
	bsf	STATUS,RP0
	movwf	out_tmp
       	incf	mapkey_tmp,F
        call	out_finadata
	decf	mapkey_counter,F
	btfsc	STATUS,Z
       	goto	mapkey_exit

mapkey2:
	btfss	sio_out_2
	goto	mapkey3

data_out2:
	bcf	STATUS,RP0
	movf	key_out1,W
	bsf	STATUS,RP0
	movwf	out_tmp
       	incf	mapkey_tmp,F
        call	out_finadata
	decf	mapkey_counter,F
	btfsc	STATUS,Z
       	goto	mapkey_exit

mapkey3:
	btfss	sio_out_3
	goto	mapkey4

data_out3:
	bcf	STATUS,RP0
	movf	zaxis_val,W
	bsf	STATUS,RP0
	movwf	out_tmp
       	incf	mapkey_tmp,F
        call	out_finadata
	decf	mapkey_counter,F
	btfsc	STATUS,Z
       	goto	mapkey_exit

mapkey4:
	btfss	sio_out_4
	goto	mapkey5

data_out4:
	bcf	STATUS,RP0
	movf	raxis_val,W
	bsf	STATUS,RP0
	movwf	out_tmp
       	incf	mapkey_tmp,F
        call	out_finadata
	decf	mapkey_counter,F
	btfsc	STATUS,Z
       	goto	mapkey_exit

mapkey5:
	btfss	sio_out_5
	goto	mapkey6

data_out5:
	bcf	STATUS,RP0
	movf	xaxis_val,W
	bsf	STATUS,RP0
	movwf	out_tmp
       	incf	mapkey_tmp,F
        call	out_finadata
	decf	mapkey_counter,F
	btfsc	STATUS,Z
       	goto	mapkey_exit

mapkey6:
	btfss	sio_out_6
	goto	mapkey7

data_out6:
	bcf	STATUS,RP0
	movf	yaxis_val,W
	bsf	STATUS,RP0
	movwf	out_tmp
       	incf	mapkey_tmp,F
        call	out_finadata
	decf	mapkey_counter,F
	btfsc	STATUS,Z
       	goto	mapkey_exit

mapkey7:
	btfss	sio_out_7
	goto	mapkey8

data_out7:
	bcf	STATUS,RP0
	movf	right_val,W
	bsf	STATUS,RP0
	movwf	out_tmp
       	incf	mapkey_tmp,F
        call	out_finadata
	decf	mapkey_counter,F
	btfsc	STATUS,Z
       	goto	mapkey_exit

mapkey8:
	btfss	sio_out_8
	goto	mapkey9

data_out8:
	bcf	STATUS,RP0
	movf	left_val,W
	bsf	STATUS,RP0
	movwf	out_tmp
       	incf	mapkey_tmp,F
        call	out_finadata
	decf	mapkey_counter,F
	btfsc	STATUS,Z
       	goto	mapkey_exit

mapkey9:
	btfss	sio_out_9
	goto	mapkey10

data_out9:
	bcf	STATUS,RP0
	movf	up_val,W
	bsf	STATUS,RP0
	movwf	out_tmp
       	incf	mapkey_tmp,F
        call	out_finadata
	decf	mapkey_counter,F
	btfsc	STATUS,Z
       	goto	mapkey_exit

mapkey10:
	btfss	sio_out_10
	goto	mapkey11

data_out10:
	bcf	STATUS,RP0
	movf	down_val,W
	bsf	STATUS,RP0
	movwf	out_tmp
       	incf	mapkey_tmp,F
        call	out_finadata
	decf	mapkey_counter,F
	btfsc	STATUS,Z
       	goto	mapkey_exit

mapkey11:
	btfss	sio_out_11
	goto	mapkey12

data_out11:
	bcf	STATUS,RP0
	movf	tri_val,W
	bsf	STATUS,RP0
	movwf	out_tmp
       	incf	mapkey_tmp,F
        call	out_finadata
	decf	mapkey_counter,F
	btfsc	STATUS,Z
       	goto	mapkey_exit

mapkey12:
	btfss	sio_out_12
	goto	mapkey13

data_out12:
	bcf	STATUS,RP0
	movf	O_val,W
	bsf	STATUS,RP0
	movwf	out_tmp
       	incf	mapkey_tmp,F
        call	out_finadata
	decf	mapkey_counter,F
	btfsc	STATUS,Z
       	goto	mapkey_exit

mapkey13:
	btfss	sio_out_13
	goto	mapkey14

data_out13:
	bcf	STATUS,RP0		
	movf	X_val,W
	bsf	STATUS,RP0
	movwf	out_tmp
       	incf	mapkey_tmp,F
        call	out_finadata
	decf	mapkey_counter,F
	btfsc	STATUS,Z
       	goto	mapkey_exit

mapkey14:
	btfss	sio_out_14
	goto	mapkey15

data_out14:
	bcf	STATUS,RP0
	movf	square_val,W
	bsf	STATUS,RP0
	movwf	out_tmp
       	incf	mapkey_tmp,F
        call	out_finadata
	decf	mapkey_counter,F
	btfsc	STATUS,Z
       	goto	mapkey_exit

mapkey15:
	btfss	sio_out_15
	goto	mapkey16

data_out15:
	bcf	STATUS,RP0
	movf	L1_val,W
	bsf	STATUS,RP0
	movwf	out_tmp
       	incf	mapkey_tmp,F
        call	out_finadata
	decf	mapkey_counter,F
	btfsc	STATUS,Z
       	goto	mapkey_exit

mapkey16:
	btfss	sio_out_16
	goto	mapkey17

data_out16:
	bcf	STATUS,RP0
	movf	R1_val,W
	bsf	STATUS,RP0
	movwf	out_tmp
       	incf	mapkey_tmp,F
        call	out_finadata
	decf	mapkey_counter,F
	btfsc	STATUS,Z
       	goto	mapkey_exit

mapkey17:
	btfss	sio_out_17
	goto	mapkey18

data_out17:
	bcf	STATUS,RP0
	movf	L2_val,W
	bsf	STATUS,RP0
	movwf	out_tmp
       	incf	mapkey_tmp,F
        call	out_finadata
	decf	mapkey_counter,F
	btfsc	STATUS,Z
       	goto	mapkey_exit

mapkey18:
	btfss	sio_out_18
	goto	mapkey_exit

data_out18:
	bcf	STATUS,RP0
	movf	R2_val,W
	bsf	STATUS,RP0
	movwf	out_tmp
       	incf	mapkey_tmp,F
        call	out_finadata
	decf	mapkey_counter,F
;	btfsc	STATUS,Z
;      	goto	mapkey_exit
       	goto	mapkey_exit

;------------------------------------
out_finadata:
out_1:
	movf	mapkey_tmp,W
        xorlw	0x01
        btfss	STATUS,Z
        goto	out_2
	movf	out_tmp,W
	bcf	STATUS,RP0
	movwf	finadata1
	bsf	STATUS,RP0
      	return

out_2
	movf	mapkey_tmp,W
        xorlw	0x02
        btfss	STATUS,Z
        goto	out_3
	movf	out_tmp,W
	bcf	STATUS,RP0
	movwf	finadata2
	bsf	STATUS,RP0
      	return
out_3:
	movf	mapkey_tmp,W
        xorlw	0x03
        btfss	STATUS,Z
        goto	out_4
	movf	out_tmp,W
	bcf	STATUS,RP0
	movwf	finadata3
	bsf	STATUS,RP0
      	return
out_4:
	movf	mapkey_tmp,W
        xorlw	0x04
        btfss	STATUS,Z
        goto	out_5
	movf	out_tmp,W
	bcf	STATUS,RP0
	movwf	finadata4
	bsf	STATUS,RP0
      	return
out_5:
	movf	mapkey_tmp,W
        xorlw	0x05
        btfss	STATUS,Z
        goto	out_6
	movf	out_tmp,W
	bcf	STATUS,RP0
	movwf	finadata5
	bsf	STATUS,RP0
      	return
out_6:
	movf	mapkey_tmp,W
        xorlw	0x06
        btfss	STATUS,Z
        goto	out_7
	movf	out_tmp,W
	bcf	STATUS,RP0	
	movwf	finadata6
	bsf	STATUS,RP0	
      	return
out_7:
	movf	mapkey_tmp,W
        xorlw	0x07
        btfss	STATUS,Z
        goto	out_8
	movf	out_tmp,W
	bcf	STATUS,RP0	
	movwf	finadata7
	bsf	STATUS,RP0	
      	return
out_8:
	movf	mapkey_tmp,W
        xorlw	0x08
        btfss	STATUS,Z
        goto	out_9
	movf	out_tmp,W
	bcf	STATUS,RP0	
	movwf	finadata8
	bsf	STATUS,RP0	
      	return
out_9:
	movf	mapkey_tmp,W
        xorlw	0x09
        btfss	STATUS,Z
        goto	out_10
	movf	out_tmp,W
	bcf	STATUS,RP0	
	movwf	finadata9
	bsf	STATUS,RP0	
      	return
out_10:
	movf	mapkey_tmp,W
        xorlw	0x0a
        btfss	STATUS,Z
        goto	out_11
	movf	out_tmp,W
	bcf	STATUS,RP0	
	movwf	finadata10
	bsf	STATUS,RP0	
      	return
out_11:
	movf	mapkey_tmp,W
        xorlw	0x0b
        btfss	STATUS,Z
        goto	out_12
	movf	out_tmp,W
	bcf	STATUS,RP0	
	movwf	finadata11
	bsf	STATUS,RP0	
      	return
out_12:
	movf	mapkey_tmp,W
        xorlw	0x0c
        btfss	STATUS,Z
        goto	out_13
	movf	out_tmp,W
	bcf	STATUS,RP0	
	movwf	finadata12
	bsf	STATUS,RP0	
      	return
out_13:
	movf	mapkey_tmp,W
        xorlw	0x0d
        btfss	STATUS,Z
        goto	out_14
	movf	out_tmp,W
	bcf	STATUS,RP0	
	movwf	finadata13
	bsf	STATUS,RP0	
      	return
out_14:
	movf	mapkey_tmp,W
        xorlw	0x0e
        btfss	STATUS,Z
        goto	out_15
	movf	out_tmp,W
	bcf	STATUS,RP0	
	movwf	finadata14
	bsf	STATUS,RP0	
      	return
out_15:
	movf	mapkey_tmp,W
        xorlw	0x0f
        btfss	STATUS,Z
        goto	out_16
	movf	out_tmp,W
	bcf	STATUS,RP0	
	movwf	finadata15
	bsf	STATUS,RP0	
      	return
out_16:
	movf	mapkey_tmp,W
        xorlw	0x10
        btfss	STATUS,Z
        goto	out_17
	movf	out_tmp,W
	bcf	STATUS,RP0	
	movwf	finadata16
	bsf	STATUS,RP0	
      	return
out_17:
	movf	mapkey_tmp,W
        xorlw	0x11
        btfss	STATUS,Z
        goto	out_18
	movf	out_tmp,W
	bcf	STATUS,RP0	
	movwf	finadata17
	bsf	STATUS,RP0	
      	return
out_18:
	movf	mapkey_tmp,W
        xorlw	0x12
        btfss	STATUS,Z
        return
	movf	out_tmp,W
	bcf	STATUS,RP0
	movwf	finadata18
	bsf	STATUS,RP0	
      	return

;------------------------------
mapkey_exit:
	bcf	STATUS,RP0
	movf	pad_id,W       	
	bsf	STATUS,RP0
        andlw	0x0f
	movwf	mapkey_counter
        addwf	mapkey_counter,F

mapkey_exit1:
	movf	mapkey_tmp,W
        subwf	mapkey_counter,W

	btfss	STATUS,Z
	goto	mapkey_exit2
	bcf	STATUS,RP0
	return

mapkey_exit2:
       	movlw	0x00	
        movwf	out_tmp
       	incf	mapkey_tmp,F
	call	out_finadata
        goto	mapkey_exit1

;=================================================-










;--------------------------------------------
;conver_raw_to_out:		;key_raw0,key_raw1
				;key_out0,key_out0
;	bcf	STATUS,RP0
;	movlw	0xff	
;        movwf	key_out0
;
;	btfss	bit_L3
;	bcf	bit_L3_out
;	btfss	bit_R3
;	bcf	bit_R3_out
 ;     	btfss	bit_select
  ;      bcf	bit_select_out
   ;     btfss	bit_start
    ;    bcf	bit_start_out
;        btfss	bit_up
 ;       bcf	bit_up_out
  ;      btfss	bit_right
   ;     bcf	bit_right_out
    ;    btfss	bit_down
;        bcf	bit_down_out
 ;       btfss	bit_left
  ;      bcf	bit_left_out
   ;
;	movf	key_raw1,W
;	movwf	key_out1
 ;
;	btfss	bit_E1
 ;       bcf	bit_L1_out
  ;;
;	btfss	bit_E2
 ;       bcf	bit_R1_out
  ;
;	return
;
;     
;-------------E N D---------------


;======================================-
XY_map:
        movlw	0xb2
        subwf	temp_1,W
	btfsc	STATUS,C	;>0xaf?
	bcf	bit_right_out	;Yes
	movlw	0xa6
	subwf	temp_1,W    	;<0xa4?
	btfsc	STATUS,C
      	bcf	bit_right_out  
X_left:
        movlw	0x4c
        subwf	temp_1,W
       	btfss	STATUS,C	;<0x4f?
	bcf	bit_left_out	;Yes
	movlw	0x58
        subwf	temp_1,W
        btfss	STATUS,C
        bcf	bit_left_out
y_axis:
        movlw	0xb2
        subwf	temp_2,W
        btfsc	STATUS,C
 	bcf	bit_down_out
        movlw	0xa6
        subwf	temp_2,W
	btfsc	STATUS,C
	bcf	bit_down_out
Y_down:
	movlw	0x4c
	subwf	temp_2,W
	btfss	STATUS,C
	bcf	bit_up_out
	movlw	0x58
	subwf	temp_2,W
	btfss	STATUS,C
	bcf	bit_up_out
	return


⌨️ 快捷键说明

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