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

📄 read_sen.asm

📁 VCP201_CODE is a FPGA source code.
💻 ASM
字号:
; File name : 	Read_Sen.asm
; Function : 	Read pressure senser and store the data
; Variable :	up_val, left_val, L1_val, R1_val,
;	      	down_val, right_val, L2_val, R2_val
;		O_val, X_val, tri_val, square_val
;		(All in page 0 RAM)
; Constant :	#define sen_group1 -> PORT X output
;		#define sen_group2 -> PORT X output	
;		#define sen_group3 -> PORT X output		 	
; Setting:	A/D			 
;
;==============================================================
read_sen:
	bsf	STATUS,RP0
	movlw	adc_ana_in
        movwf	adcon1
        bcf	STATUS,RP0
        
	bsf  	ADCON0,ADON  	;turn on ADC, start sampling

;First Group analogy key (UP LEFT L1 R1 )-------------------
	bsf	sen_group1	;Set "H"
	bcf	sen_group2	;Set "L"
        bcf	sen_group3	;Set "L"

	call	read_chn_delay

;A/D channel 4
	bcf   	ADCON0,CHS0	;Channel 4 (RA0) "100"
	bcf   	ADCON0,CHS1  	;
        bsf	ADCON0,CHS2

	call  	read_chn	;A/D conversion
	movwf 	up_val		;result -> up_val

;A/D channel 5
	bsf   	ADCON0,CHS0	;Channel 5 (RA0) "101"
	bcf   	ADCON0,CHS1  	;
       	bsf	ADCON0,CHS2

	call  	read_chn	;A/D conversion
	movwf 	left_val	;result -> left_val

;A/D channel 6
	bcf   	ADCON0,CHS0	;Channel 6 (RA0) "110"
	bsf   	ADCON0,CHS1  	;
       bsf	ADCON0,CHS2

	call  	read_chn	;A/D conversion
	movwf 	L1_val		;result -> L1_val

;A/D channel 7
	bsf   	ADCON0,CHS0	;Channel 7 (RA0) "111"
	bsf   	ADCON0,CHS1  	;
       	bsf	ADCON0,CHS2

	call  	read_chn	;A/D conversion
	movwf 	R1_val		;result -> R1_val

;Second Group analogy key (DOWN RIGHT L2 R2 )-----------------------
      	bcf	sen_group1	;Set "L"
 	bsf	sen_group2	;Set "H"
       	bcf	sen_group3	;Set "L"

	call	read_chn_delay


;A/D channel 4
	bcf   	ADCON0,CHS0	;Channel 4 (RA0) "100"
	bcf   	ADCON0,CHS1  	;
       bsf	ADCON0,CHS2

	call  	read_chn	;A/D conversion
	movwf 	down_val	;result -> down_val

;A/D channel 5
	bsf   	ADCON0,CHS0	;Channel 5 (RA0) "101"
	bcf   	ADCON0,CHS1  	;
       bsf	ADCON0,CHS2

	call  	read_chn	;A/D conversion
	movwf 	right_val	;result -> right_val

;A/D channel 6
	bcf   	ADCON0,CHS0	;Channel 6 (RA0) "110"
	bsf   	ADCON0,CHS1  	;
       bsf	ADCON0,CHS2

	call  	read_chn	;A/D conversion
	movwf 	L2_val		;result -> L2_val

;A/D channel 7
	bsf   	ADCON0,CHS0	;Channel 7 (RA0) "111"
	bsf   	ADCON0,CHS1  	;
       bsf	ADCON0,CHS2

	call  	read_chn	;A/D conversion
	movwf 	R2_val		;result -> R2_val

;Thrid Group analogy key (O X TRI SQUARE)-----------------------
	bcf	sen_group2	;Set "L"
        bsf	sen_group3	;Set "L"
	bcf	sen_group1	;Set "H"

	call	read_chn_delay

;A/D channel 4
	bcf   	ADCON0,CHS0	;Channel 4 (RA0) "100"
	bcf   	ADCON0,CHS1  	;
       bsf	ADCON0,CHS2

	call  	read_chn	;A/D conversion
	movwf 	O_val		;result -> O_val

;A/D channel 5
	bsf   	ADCON0,CHS0	;Channel 5 (RA0) "101"
	bcf   	ADCON0,CHS1  	;
       bsf	ADCON0,CHS2

	call  	read_chn	;A/D conversion
	movwf 	X_val		;result -> X_val

;A/D channel 6
	bcf   	ADCON0,CHS0	;Channel 6 (RA0) "110"
	bsf   	ADCON0,CHS1  	;
       	bsf	ADCON0,CHS2

	call  	read_chn	;A/D conversion
	movwf 	tri_val		;result -> tri_val

;A/D channel 7                   
	bsf   	ADCON0,CHS0	;Channel 7 (RA0) "111"
	bsf   	ADCON0,CHS1  	;
       bsf	ADCON0,CHS2

	call  	read_chn	;A/D conversion
	movwf 	square_val	;result -> square_val

;Reset port-----------------------------------------------
	bsf	STATUS,RP0
	movlw	adc_dig_in
        movwf	adcon1
        bcf	STATUS,RP0
	bcf   	ADCON0,ADON  	;turn off ADC
	bcf	sen_group3
	bcf	sen_group2
        bcf	sen_group1

;Exit
	return

;------------------------------------------------------------
; Name : read_chn
; Parm : nil
; Retn : W: A/D convertor value
; Desc : read A/D convertor of current analogue channel.
;------------------------------------------------------------
read_chn:
	call	read_chn_delay

        bsf     ADCON0,GO       ; start A/D conversion
rdch_conv:                      ; wait for A/D complete
;	bsf	PCLATH,3	
;        call    p_timer
; 	bcf	PCLATH,3
        btfsc   ADCON0,GO
        goto    rdch_conv

        btfsc   f_siointr
        goto    read_chn

        movf    ADRES,W         ; return result
        return


;-------------------------
; read_chn_delay:
;-------------------------
read_chn_delay:
        bcf     f_siointr

        movlw   0x20
        movwf   delay0
rdch_dly:                       ; sample and hold delay
;	bsf	PCLATH,3
;        call    p_timer
;        bcf	PCLATH,3
        btfsc   f_siointr
        goto    read_chn_delay
        decfsz  delay0,F
        goto    rdch_dly


	return

⌨️ 快捷键说明

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