📄 snt1.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,when DLAB=0, TBR ORBR;when DLAB=1 IS DLL
ADDR2 EQU 0CFA9H ;When DLAB=0,IER;When DLAB=1 IS DLH
INTR EQU 0CFAAH ;interrupt enable register
LCR EQU 0CFABH ;line control register
MCR EQU 0CFACH ;modem control register
LSR EQU 0CFADH ;line status register
MSR EQU 0CFAEH ;modem status register
;=============================================
STSF EQU 20H
TIME EQU 30H
DPHR EQU 31H ;存放ASCII码的高位地址
DPLR EQU 32H ;存放ASCII码的底位地址
ADRX EQU 33H ;ASCII X轴坐标
ADRY EQU 34H ;ASCII Y轴坐标
CNTB EQU 35H
BUF EQU 36H ;临时存放显示的ASCII码,以判断是否为可显示字符
;=============================================
RIF EQU 00H ;STSF BIT
TIF EQU 04H
;=============================================
ORG 4000H
LJMP START
;=============================================
ORG 4100H
START: MOV DPTR,#LCR ;通过设置LCR.7位,来确定DLABD的状态。
MOV A,#80H ;访问MSB或LSB
MOVX @DPTR,A
MOV DPTR,#ADDR1 ;首先要对DLAB进行置位或清零,以决定是访问那个寄存器.,LSB
MOV A,#18H ;set the baudrate is 4800
MOVX @DPTR,A
MOV DPTR,#ADDR2 ;MSB
MOV A,#0
MOVX @DPTR,A
MOV DPTR,#LCR
MOV A,#7 ;no pe, 8 bit, 1 stop--????
MOVX @DPTR,A
MOV DPTR,#ADDR2 ;DLAB=0,访问中断使能寄存器
MOV A,#0
MOVX @DPTR,A ;no interupt
MOV DPTR,#LSR
MOVX A,@DPTR ;读状态寄存器
MOV DPTR,#ADDR1
MOVX A,@DPTR ;读输入寄存器.RECEIVE BUFF
MAIN:
ACALL SNT1 ;SET SNT 1,SHOW ONLY GPAGG DATA
ACALL DELAY
ACALL SNT1
LJMP MAIN
;=============================================
SEND: MOV BUF,A
WTSD: MOV DPTR,#LSR
MOVX A,@DPTR
JBC ACC.5,SDOK ;判断1450准备好了吗?
AJMP WTSD
SDOK: MOV DPTR,#ADDR1
MOV A,BUF
MOVX @DPTR,A
RET
;=============================================
;延时子程序
;=============================================
DELAY: MOV R4,#0
MOV R5,#0
DLY: DJNZ R4,DLY
DJNZ R5,DLY
RET
;=============================================
;回车换行
;=============================================
SCRLF: MOV A,#0DH
ACALL SEND
MOV A,#0AH
ACALL SEND
RET
;=============================================
;GPS命令。SNT命令
;=============================================
SNT1: MOV A,#'$' ;GPGGA
ACALL SEND
MOV A,#'S'
ACALL SEND
MOV A,#'N'
ACALL SEND
MOV A,#'T'
ACALL SEND
MOV A,#'1'
ACALL SEND
ACALL SCRLF
RET
END
;===============================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -