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

📄 gps.asm

📁 51与GPS的通信 CS0接CS8255 CS1接CS50 8255PA0-PA7接DB0-DB7 8255PC0接REQ 8255PC7接BUSY
💻 ASM
字号:
;=============================================
;CS0接CS8255 CS1接CS50 8255PA0-PA7接DB0-DB7 
;8255PC0接REQ 8255PC7接BUSY		
;=============================================
		P55A    EQU  	0CFA0H	;8255I/O	
        P55B    EQU  	0CFA1H
        P55C    EQU  	0CFA2H
        PCTR    EQU  	0CFA3H 
        STOBE0  EQU  	70H		;PC0复位控制字
        STOBE1  EQU  	71H		;PC0置位控制字
        ADDR1	EQU		0CFA8H	;8250
        ADDR2	EQU		0CFA9H
        INTR	EQU		0CFAAH
        LCR		EQU		0CFABH
        MCR		EQU		0CFACH
        LSR		EQU		0CFADH
        MSR		EQU		0CFAEH
;=============================================
		STSF	EQU		20H
		TIME	EQU		30H	
		DPHR	EQU		31H
		DPLR	EQU		32H
		ADRX	EQU		33H
		ADRY	EQU		34H	
		CNTB	EQU		35H
		BUF		EQU		36H
;=============================================	
		RIF		EQU		00H		;STSF BIT
		TIF		EQU		04H	
;=============================================		
        ORG     4000H
        LJMP  	START
;=============================================		
		ORG    	4100H
START:  MOV		DPTR,#LCR
		MOV		A,#80H
		MOVX	@DPTR,A
		MOV		DPTR,#ADDR1
		MOV		A,#18H
		MOVX	@DPTR,A
		MOV		DPTR,#ADDR2
		MOV		A,#0
		MOVX	@DPTR,A
		MOV		DPTR,#LCR
		MOV		A,#7
		MOVX	@DPTR,A
		MOV		DPTR,#ADDR2
		MOV		A,#0
		MOVX	@DPTR,A
		MOV		DPTR,#LSR
		MOVX	A,@DPTR
		MOV		DPTR,#ADDR1
		MOVX	A,@DPTR
		;ACALL	SPFST
		;ACALL	SSTOP
		;ACALL	SPFST
		;ACALL	SSURV1
		;ACALL	SPFST
		;ACALL	SPPS
		;ACALL	SPFST
		;ACALL	SSTART
MAIN:	MOV		TIME,#6
		MOV		DPHR,#50H
		MOV		DPLR,#00H 
REC0:	MOV		DPTR,#LSR		
TSTST:	MOVX	A,@DPTR
		MOV		STSF,A
		JBC		RIF,TSTOK
		AJMP	TSTST
TSTOK:	MOV		DPTR,#ADDR1
		MOVX	A,@DPTR	
		CJNE	A,#24H,REC0
		MOV		DPH,DPHR
		MOV		DPL,DPLR
		MOVX	@DPTR,A
		INC		DPLR
		JNZ		RXACK
		INC		DPHR      
RXACK:  MOV		DPTR,#LSR
RACK:	MOVX	A,@DPTR
		MOV		STSF,A
		JBC		RIF,REC1	;接收呼叫信号
        SJMP  	RACK
REC1:  	MOV		DPTR,#ADDR1
		MOVX	A,@DPTR	
		MOV		DPL,DPLR
		MOV		DPH,DPHR
		MOVX	@DPTR,A
		INC		DPLR
		MOV		A,DPLR
		JNZ		REC2
		INC		DPHR
REC2:	MOVX	A,@DPTR
		CJNE	A,#10,RXACK
		DEC		TIME
		MOV		A,TIME
		jnz		REC0
DIS:	mov		TIME,#6
		mov		DPLR,#0
		mov		DPHR,#50h
		MOV 	DPTR,#PCTR
        MOV 	A,#88H
        MOVX 	@DPTR,A		;置PA口输出,PC口高4位输入,低4位输出                
        MOV 	DPTR,#PCTR
        MOV 	A,#STOBE0
        MOVX 	@DPTR,A	
        MOV 	A,#0F4H
		ACALL 	WRTB
		ACALL 	DELAY 		;清屏
		
WRT0:	MOV		ADRX,#0
		MOV		ADRY,#0
		MOV		DPH,DPHR
		MOV		DPL,DPLR
		MOVX	A,@DPTR
		CLR		C
		SUBB	A,#'$'
		JZ		WRITE
		INC		DPLR
		MOV		A,DPLR
		JNZ		WRT0
		INC		DPHR
		AJMP	WRT0
WRITE:	MOV		CNTB,#40H
		MOV		DPH,DPHR
		MOV		DPL,DPLR
		MOVX	A,@DPTR
		CLR		C
		SUBB	A,#0DH
		JZ		WRTOK
		CALL	WRT1
		MOV		DPH,DPHR
		MOV		DPL,DPLR
		MOVX	A,@DPTR
		CJNE	A,#'$',NEXT
		LJMP	WRTOK
NEXT:	MOV		A,ADRX
		ANL		A,#0FH
		JNZ		WRITE
		MOV		ADRX,#0
		MOV		A,ADRY
		ADD		A,#8
		MOV		ADRY,A
		CJNE	A,#20H,WRITE
WRTWT:	MOV		R3,#20h
WT1:	LCALL	DELAY
		DJNZ	R3,WT1
		MOV 	DPTR, #PCTR
        MOV 	A, #88H
        MOVX 	@DPTR, A	;置PA口输出,PC口高4位输入,低4位输出                
        MOV 	DPTR, #PCTR
        MOV 	A, #STOBE0
        MOVX 	@DPTR, A	
        MOV 	A, #0F4H
		ACALL 	WRTB
		ACALL 	DELAY  
		MOV		ADRX,#0
		MOV		ADRY,#0
		AJMP	WRITE
WRTOK:	MOV		R3,#40h
OK1:	LCALL	DELAY
		DJNZ	R3,OK1
		DJNZ	TIME,WRT0		
		LJMP	MAIN		
;=============================================		
SEND:	MOV		BUF,A
		MOV		DPTR,#LSR
WTSD:	MOVX	A,@DPTR
		CJNE	A,20H,SDOK
		;CLR		C
		;SUBB	A,#20H
		;JNZ		SDOK
		;MOV		STSF,A
		;JBC		TIF,SDOK
		AJMP	WTSD
SDOK:	MOV		DPTR,#ADDR1
		MOV		A,BUF
		MOVX	@DPTR,A
		RET					
;=============================================		
RECV:	MOV		DPTR,#LSR
WTRC:	MOVX	A,@DPTR
		MOV		STSF,A
		JBC		RIF,RCOK
		AJMP	RECV
RCOK:	MOV		DPTR,#ADDR1
		MOVX	A,@DPTR
		MOV		BUF,A
		RET								
;=============================================		
WRT1:   ACALL	BUSY
		MOV		A,#0F1H
		ACALL	WRTB
		ACALL	BUSY
		MOV		A,ADRX
		ACALL	WRTB
		INC		ADRX
		ACALL	BUSY
		MOV		A,ADRY
		ACALL	WRTB
		ACALL	BUSY
		MOV		DPH,DPHR
		MOV		DPL,DPLR
		INC		DPLR
		MOVX	A,@DPTR
		ACALL	WRTB
		RET
;=============================================		
BUSY:	MOV 	DPTR,#P55C
        MOVX 	A,@DPTR
        JB 		ACC.7,BUSY
        RET
;=============================================		
DELAY: 	MOV R4,#0
	    MOV R5,#0
DLY:    DJNZ R4,DLY
		DJNZ R5,DLY
		RET
;=============================================		
WRTB:   MOV DPTR, #P55A
        MOVX @DPTR, A
        MOV DPTR, #PCTR
        MOV A, #STOBE1
        MOVX @DPTR, A 
WAIT:   MOV DPTR, #P55C
        MOVX A, @DPTR
	    JNB ACC.7, WAIT
	    MOV DPTR, #PCTR
        MOV A, #STOBE0
        MOVX @DPTR, A 
		RET
;=============================================	
SPFST:	MOV		A,#'$'
		ACALL	SEND
		MOV		A,#'P'
		ACALL	SEND
		MOV		A,#'F'
		ACALL	SEND
		MOV		A,#'S'
		ACALL	SEND
		MOV		A,#'T'
		ACALL	SEND
		MOV		A,#','
		ACALL	SEND
		RET
;=============================================	
SSTOP:	MOV		A,#'S'
		ACALL	SEND
		MOV		A,#'T'
		ACALL	SEND	
		MOV		A,#'O'
		ACALL	SEND
		MOV		A,#'P'
		ACALL	SEND
;=============================================	
SCRLF:	MOV		A,#0DH
		ACALL	SEND
		MOV		A,#0AH
		ACALL	SEND	
		RET	     
;=============================================	
SSURV1:	MOV		A,#'S'
		ACALL	SEND
		MOV		A,#'U'
		ACALL	SEND	
		MOV		A,#'R'
		ACALL	SEND
		MOV		A,#'V'
		ACALL	SEND	
		MOV		A,#'E'
		ACALL	SEND
		MOV		A,#'Y'
		ACALL	SEND   
		MOV		A,#'L'
		ACALL	SEND
		MOV		A,#'E'
		ACALL	SEND  
		MOV		A,#'N'
		ACALL	SEND
		MOV		A,#','
		MOV		A,#'1'
		ACALL	SEND
		ACALL	SCRLF
		RET
;=============================================	
SPPS:	MOV		A,#'P'
		ACALL	SEND
		MOV		A,#'P'
		ACALL	SEND
		MOV		A,#'S'
		ACALL	SEND
		MOV		A,#'M'
		ACALL	SEND
		MOV		A,#'O'
		ACALL	SEND
		MOV		A,#'D'
		ACALL	SEND
		MOV		A,#'E'
		ACALL	SEND
		MOV		A,#','
		ACALL	SEND
		MOV		A,#'1'
		ACALL	SEND
		ACALL	SCRLF
		RET
;=============================================	
SSTART:	MOV		A,#'S'
		ACALL	SEND
		MOV		A,#'T'
		ACALL	SEND
		MOV		A,#'A'
		ACALL	SEND
		MOV		A,#'R'
		ACALL	SEND
		MOV		A,#'T'
		ACALL	SEND
		ACALL	SCRLF
		RET				                                        
;=============================================	
END

⌨️ 快捷键说明

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