3986|7

77

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

单片机与gsm模块连接 [复制链接]

哪位有wavecom与51单片机连接收发程序的例子,给我看看学习下,谢谢了

最新回复

看看下面这个,希望对你有所帮助 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
点赞 关注

回复
举报

67

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
就是串口操作而已,只不过发送的内容是AT指令,接收的内容是AT指令的响应罢了

51的串口收发程序到处可见,多入牛毛

 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
楼上说得对。。。就是担心实验调试的时候短信话费
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(中级)

4
 
折腾了许久,自己写了一个山寨的串口程序,唯一让我为难的是,必须知道,每个发送过来的字符串的结尾字符才能根据这个判定完整的接收一个字符串,但是gsm模块发送过来的字符串结尾的字符又不一样
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

5
 
gsm模块给你的字符串都应该是\r\n结尾的,也就是回车换行.你监控"\r\n"就好了.
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

6
 
串口的程序不需要知道接收的是什么,它只要做到把接收的东西放到一个特定内存里面就可以了。
而做命令识别的应该是另外一系列函数,接包,解析,提取数据等操作。
否则以后你会发现让别人维护这个是比较麻烦的事情,当然对于这个程序来说它不大,看两行就能明白,不过这也算是比较基本的良好的变成风格啊~
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

7
 
MARK一下
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

8
 
看看下面这个,希望对你有所帮助

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
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表