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

📄 spi.asm

📁 PS2 Game Products Test-Jig source code,
💻 ASM
字号:

;////////////////////////////////////////////////
;COMMUNICATION
;////////////////////////////////////////////////

COMMUNICATE	CLRWDT
		
;		MOVLW	RX1
;		MOVWF	FSR
		
;CLR_RX_BUF		
;		INCF	FSR,F
;		CLRF	INDF

;		MOVLW	RX31
;		SUBWF	FSR,W
;		BTFSS	STATUS,C
;		GOTO	CLR_RX_BUF

 
		CLRF	DSR_FB
		BSF	STATUS,RP0	;TO BANK1
		MOVLW	SPI_PORT_O
		ANDWF	TRISC,F		;SET SCK,SDO,/DTR IS OUTPUT PIN
;		BSF	TRISC,2
		BCF	STATUS,RP0	;TO BANK0

;		CALL	E_SPI_PORT
		BCF	DTR		;/DTR ACTIVE LOW 
		
		CLRF	CCPR1H
		MOVLW	TAC		;ACCESS TIME=16us
		CALL	E_CCP1

		MOVLW	CAPTURE_MODE
		MOVWF	CCP1CON		;CAPTURE MODE
	
COM_1		BSF	SSPCON,SSPEN	;ENABLE SPI MODE
		MOVLW	PROTOCOL_ID	;SEND 0x01
		MOVWF	SSPBUF		;MOVE W REGISTER TO SPI BUFFER

		BCF	PIR1,SSPIF
		BCF     PIR1,CCP1IF
	
COM_11		CALL	CHK_R_CPLE 
		BCF	SSPCON,SSPEN	;DISABLE SPI MODE

		CALL	CHK_DSR
		BTFSC   DSR_TIMOUT_FB
		GOTO	EXIT_SPI

COM_2		
		BSF	SSPCON,SSPEN	;ENABLE SPI MODE		
		MOVF	COMMAND1,W	;SEND COMMAND1
		MOVWF	SSPBUF

		BCF	PIR1,SSPIF
		BCF     PIR1,CCP1IF

		CALL	CHK_R_CPLE
		BCF	SSPCON,SSPEN	;DISABLE SPI MODE
;CHECK DSR OVER TIME?	

		CALL	CHK_DSR
		MOVF	SSPBUF,W
		MOVWF	TERMINAL_ID

COM_21		BTFSC   DSR_TIMOUT_FB
		GOTO	EXIT_SPI			

COM_3	
		BSF	SSPCON,SSPEN	;ENABLE SPI MODE
		MOVF	COMMAND2,W	;SEND COMMAND2
		MOVWF	SSPBUF

		BCF	PIR1,SSPIF
		BCF     PIR1,CCP1IF
		CALL	CHK_R_CPLE
		BCF	SSPCON,SSPEN	;DISABLE SPI MODE

;CHECK DSR OVER TIME?
		BCF	SSPCON,SSPEN	;DISABLE SPI MODE		
		CALL	CHK_DSR

		MOVF	SSPBUF,W
		MOVWF	ACK		

COM_31		BTFSC   DSR_TIMOUT_FB
		GOTO	EXIT_SPI


COM_4	
		BSF	SSPCON,SSPEN	;ENABLE SPI MODE
		MOVF	TX0,W	
		MOVWF	SSPBUF	
		
		CALL	DATA_TYPE

		MOVF	ACK,W
		XORLW	C_ACK
		BTFSC	STATUS,Z	;CHECK ACKNOWLEDGE = 5A
		GOTO	COM_41		
		BSF	UNINITIAL_FB

COM_41	
		BCF     PIR1,CCP1IF
		BCF	PIR1,SSPIF
		CALL	CHK_R_CPLE
		BCF	SSPCON,SSPEN	;DISABLE SPI MODE

		CALL	CHK_DSR

		MOVF	SSPBUF,W	;MOVE SPI BUFFER TO W REGISTER
		MOVWF	RX0		;MOVE RECEIVE DATA TO RX0 BUFFER
		
		BTFSC   DSR_TIMOUT_FB
		GOTO	EXIT_SPI

COM_5
		BSF	SSPCON,SSPEN	;ENABLE SPI MODE
		MOVF	TX1,W
		MOVWF	SSPBUF

		BCF     PIR1,CCP1IF
       		BCF	PIR1,SSPIF
       		
		CALL	CHK_R_CPLE
		BCF	SSPCON,SSPEN	;DISABLE SPI MODE

		MOVF	SSPBUF,W	;MOVE SPI BUFFER TO W REGISTER
		MOVWF	RX1 

;--------------------------------------------------------------------
		DECFSZ	DATA_SIZE,F	
		GOTO	COM_51
		GOTO	EXIT_SPI

;--------------------------------------------------------------------

COM_51		CALL	CHK_DSR	

		BTFSC   DSR_TIMOUT_FB
		GOTO	EXIT_SPI
	
COM_6		
		BSF	SSPCON,SSPEN	;ENABLE SPI MODE
		MOVF	TX2,W
                MOVWF	SSPBUF

		BCF     PIR1,CCP1IF
		BCF	PIR1,SSPIF
		
		CALL	CHK_R_CPLE
		BCF	SSPCON,SSPEN	;DISABLE SPI MODE
		CALL	CHK_DSR
		
		MOVF	SSPBUF,W
                MOVWF	RX2		;MOVE RX VALUE TO RX2 BUFFER

COM_61		BTFSC   DSR_TIMOUT_FB
		GOTO	EXIT_SPI

COM_7		
		BSF	SSPCON,SSPEN	;ENABLE SPI MODE		
		MOVF	TX3,W
      		MOVWF	SSPBUF
		
		BCF     PIR1,CCP1IF
		BCF	PIR1,SSPIF
		CALL	CHK_R_CPLE
		BCF	SSPCON,SSPEN	;DISABLE SPI MODE

		MOVF	SSPBUF,W
                MOVWF	RX3		;MOVE RY VALUE TO RX3 BUFFER

;--------------------------------------------------------------------
		DECFSZ	DATA_SIZE,F
		GOTO	COM_71
		GOTO	EXIT_SPI

;--------------------------------------------------------------------

COM_71		CALL	CHK_DSR

		BTFSC   DSR_TIMOUT_FB
		GOTO	EXIT_SPI

COM_8		
		BSF	SSPCON,SSPEN	;ENABLE SPI MODE
		MOVF	TX4,W
      		MOVWF	SSPBUF

		BCF     PIR1,CCP1IF
		BCF	PIR1,SSPIF

		CALL	CHK_R_CPLE
		BCF	SSPCON,SSPEN	;DISABLE SPI MODE

		CALL	CHK_DSR
		MOVF	SSPBUF,W
                MOVWF	RX4		;MOVE LX VALUE TO RX4 BUFFER

COM_81		BTFSC   DSR_TIMOUT_FB
		GOTO	EXIT_SPI

COM_9		
		BSF	SSPCON,SSPEN	;ENABLE SPI MODE
		MOVF	TX5,W
     		MOVWF	SSPBUF
	
		BCF     PIR1,CCP1IF
		BCF	PIR1,SSPIF

		CALL	CHK_R_CPLE
		BCF	SSPCON,SSPEN	;DISABLE SPI MODE

		MOVF	SSPBUF,W
                MOVWF	RX5		;MOVE LY VALUE TO RX5 BUFFER

;--------------------------------------------------------------------
		DECFSZ	DATA_SIZE,F
		GOTO	COM_A
		GOTO	EXIT_SPI

;--------------------------------------------------------------------
COM_A		CALL	CHK_DSR
		BTFSC   DSR_TIMOUT_FB ;CHECK DSR TIME OUT ?
		GOTO	EXIT_SPI

		MOVLW	RX5
		MOVWF	FSR

COM_A1		INCF	FSR,F

		BSF	SSPCON,SSPEN	;ENABLE SPI MODE
		MOVLW	0x00
      		MOVWF	SSPBUF

		BCF     PIR1,CCP1IF
		BCF	PIR1,SSPIF
		CALL	CHK_R_CPLE
		BCF	SSPCON,SSPEN	;DISABLE SPI MODE
		CALL	CHK_DSR

		MOVF	SSPBUF,W
                MOVWF	INDF

COM_A2		BTFSC   DSR_TIMOUT_FB
		GOTO	EXIT_SPI

COM_B		INCF	FSR,F

		BSF	SSPCON,SSPEN	;ENABLE SPI MODE		
		MOVLW	0x00
      		MOVWF	SSPBUF

		BCF     PIR1,CCP1IF
		BCF	PIR1,SSPIF
		CALL	CHK_R_CPLE
		BCF	SSPCON,SSPEN	;DISABLE SPI MODE
		MOVF	SSPBUF,W
                MOVWF	INDF

		DECFSZ	DATA_SIZE,F
		GOTO	COM_B1
		GOTO	EXIT_SPI

COM_B1		CALL	CHK_DSR

		BTFSS   DSR_TIMOUT_FB
		GOTO	COM_A1

;--------------------------------------------------------------------
EXIT_SPI	BCF	SSPCON,SSPEN	;DISABLE SPI MODE
		CLRF	CCP1CON		;CAPTURE/COMPARE/PWM OFF
		MOVLW	TAC
		CALL	E_CCP1
		BSF	DTR		;COMMUNICATE COMPLETE

		BSF	STATUS,RP0	;TO BANK1
		MOVLW	SPI_PORT_I
		IORWF	TRISC,F		;SET SCK,SDO,/DTR IS INPUT PIN
		BCF	STATUS,RP0	;TO BANK0

;		CALL	D_SPI_PORT

		BTFSC	DSR_TIMOUT_FB	;CHECK DSR TIME OUT?
;		CALL	DTR_INT_TIME	;YES

EXIT_SPI1	RETURN

;--------------------------------------------------------------------
CHK_R_CPLE	BTFSS	PIR1,SSPIF	;TRANSMIT & RECEIVE TO COMPLETE?	
		GOTO	CHK_R_CPLE	;NOT COMPLETE
		RETURN	

;--------------------------------------------------------------------
;ENABLE SPI PORT
;E_SPI_PORT	BSF	STATUS,RP0	;TO BANK1
;		MOVLW	SPI_PORT_O
;		ANDWF	TRISC,F		;SET SCK,SDO,/DTR IS OUTPUT PIN
;		BSF	TRISC,2
;		BCF	STATUS,RP0	;TO BANK0
;		RETURN			

;--------------------------------------------------------------------
;DISABLE SPI PORT
;D_SPI_PORT	BSF	STATUS,RP0	;TO BANK1
;		MOVLW	SPI_PORT_I
;		IORWF	TRISC,F		;SET SCK,SDO,/DTR IS INPUT PIN
;		BCF	STATUS,RP0	;TO BANK0
; 		RETURN

;--------------------------------------------------------------------
CHK_DSR		MOVLW	TWDS
		MOVWF	TEMP_BUFFER

CHK_DSR1	BTFSC	PIR1,CCP1IF	;/DSR ACTIVE LOW ?
		GOTO	EXIT_CHK_DSR	;YES

		DECFSZ	TEMP_BUFFER,F	;/DSR TIME OUT ?
		GOTO	CHK_DSR1	;NO
		BSF	DSR_TIMOUT_FB	;YES 
EXIT_CHK_DSR
		RETURN			
		
;--------------------------------------------------------------------
DTR_INT_TIME	MOVLW	TDTR_H		;/DTR INTERVAL TIME
	        MOVWF	CCPR1H
                MOVLW	TDTR_L
		CALL	E_CCP1
		RETURN
		
;--------------------------------------------------------------------
DATA_TYPE	MOVF	TERMINAL_ID,W
		ANDLW	0xF0
		CALL	CONVERT

		MOVWF	DATA_SIZE	;***FISHING CONTROLLER***
		MOVWF	DATA_SIZE1
		
EXIT_DATA_TYPE	RETURN

;--------------------------------------------------------------------

⌨️ 快捷键说明

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