最新回复
看看下面这个,希望对你有所帮助
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
详情
回复
发表于 2009-8-29 09:46
| |
|
|
| |
|
|
| |
|
|
此帖出自嵌入式系统论坛
| ||
|
||
| |
|
|
此帖出自嵌入式系统论坛
| ||
|
||
| |
|
|
此帖出自嵌入式系统论坛
| ||
|
||
EEWorld Datasheet 技术支持