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

📄 gsm.asm

📁 这个是串口程序的发送 接受等通信程序
💻 ASM
字号:
;=============================================
;CS1接CS50 	
;=============================================
		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
		BUF		EQU		21H
;=============================================	
		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,#12			;9600
		MOVX	@DPTR,A
		MOV		DPTR,#ADDR2
		MOV		A,#0
		MOVX	@DPTR,A
		MOV		DPTR,#LCR
		MOV		A,#7			
		MOVX	@DPTR,A			;no pe, 8 bit, 1 stop
		MOV		DPTR,#ADDR2
		MOV		A,#0
		MOVX	@DPTR,A			;no interupt
		MOV		DPTR,#LSR
		MOVX	A,@DPTR
		MOV		DPTR,#ADDR1
		MOVX	A,@DPTR
		MOV		R0,#30H
		
		ACALL	ATT
		ACALL	DELAY
		ACALL	ATT
		ACALL	DELAY
		ACALL	CLEAR_STATUS
MAIN:	ACALL	CLEAR
		ACALL	ATE
		ACALL	RECV
		NOP						;关闭回显,设断点观察内部数据存储器从30H开始的单元
		ACALL	ATT
		ACALL	DELAY
		ACALL	CLEAR_STATUS
		ACALL	CLEAR
		ACALL	ATT
		ACALL	RECV
		NOP						;发命令AT,设断点观察内部数据存储器从30H开始的单元
		ACALL	ATT
		ACALL	DELAY
		ACALL	CLEAR_STATUS
		ACALL	CLEAR
		ACALL	CGMI
		ACALL	RECV
		NOP						;读取厂商信息,设断点观察内部数据存储器从30H开始的单元
		LJMP	START		
;=============================================		
SEND:	MOV		BUF,A
WTSD:	MOV		DPTR,#LSR
		MOVX	A,@DPTR
		JBC		ACC.5,SDOK
		AJMP	WTSD
SDOK:	MOV		DPTR,#ADDR1
		MOV		A,BUF
		MOVX	@DPTR,A
		RET					
;=============================================		
RECV:	MOV		R0,#30H
WTRC0:	MOV		DPTR,#LSR
		MOVX	A,@DPTR
		;MOV		STSF,A
		JBC		ACC.0,RCOK
		AJMP	WTRC0
WTRC:	MOV		DPTR,#LSR
		MOVX	A,@DPTR
		;MOV		STSF,A
		JBC		ACC.0,RCOK
		DJNZ	R1,WTRC
		RET		
RCOK:	MOV		DPTR,#ADDR1
		MOVX	A,@DPTR
		MOV		@R0,A
		INC		R0
		MOV		R1,#0
		;RET
		AJMP	WTRC
;=============================================		
CLEAR:	MOV		R0,#30h
		MOV		R1,#30H
CLR1:	MOV		@R0,#0
		INC		R0
		DJNZ	R1,CLR1
		RET
;=============================================		
DELAY: 	MOV R4,#10
	    MOV R5,#0
DLY:    DJNZ R4,DLY
		DJNZ R5,DLY
		RET
;=============================================		
ATT:	MOV		A,#'A'
		ACALL	SEND
		MOV		A,#'T'
		ACALL	SEND
		MOV		A,#0DH
		ACALL	SEND
		RET
;=============================================		
ATE:	MOV		A,#'A'
		ACALL	SEND
		MOV		A,#'T'
		ACALL	SEND
		MOV		A,#'E'
		ACALL	SEND
		MOV		A,#'0'
		ACALL	SEND
		MOV		A,#0DH
		ACALL	SEND
		RET
;=============================================	
CGMI:	MOV		A,#'A'
		ACALL	SEND
		MOV		A,#'T'
		ACALL	SEND
		MOV		A,#'+'
		ACALL	SEND
		MOV		A,#'C'
		ACALL	SEND	
		MOV		A,#'G'
		ACALL	SEND
		MOV		A,#'M'
		ACALL	SEND
		MOV		A,#'I'
		ACALL	SEND
		MOV		A,#0DH
		ACALL	SEND	
		RET	     
;=============================================	
CGMM:	MOV		A,#'A'
		ACALL	SEND
		MOV		A,#'T'
		ACALL	SEND
		MOV		A,#'+'
		ACALL	SEND
		MOV		A,#'C'
		ACALL	SEND	
		MOV		A,#'G'
		ACALL	SEND
		MOV		A,#'M'
		ACALL	SEND
		MOV		A,#'M'
		ACALL	SEND
		MOV		A,#0DH
		ACALL	SEND	
		RET
;=============================================	
CGMR:	MOV		A,#'A'
		ACALL	SEND
		MOV		A,#'T'
		ACALL	SEND
		MOV		A,#'+'
		ACALL	SEND
		MOV		A,#'C'
		ACALL	SEND	
		MOV		A,#'G'
		ACALL	SEND
		MOV		A,#'M'
		ACALL	SEND
		MOV		A,#'R'
		ACALL	SEND
		MOV		A,#0DH
		ACALL	SEND	
		RET
;=============================================	

CLEAR_STATUS:
		MOV		DPTR,#LSR
		MOVX	A,@DPTR
		MOV		DPTR,#ADDR1
		MOVX	A,@DPTR
		;MOV		R0,#30H
		RET		
END

⌨️ 快捷键说明

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