esp8266连接网站服务器,ESP8266连接本地服务器的51单片机汇编程序

news/2024/5/20 23:54:04/文章来源:https://blog.csdn.net/weixin_42519733/article/details/119662382

ESP8266连接本地服务器的51单片机汇编程序

本例采用at89c2051单片机,晶振11.096MHZ,通讯速率9600,TCP多连接方式,本地连接地址192.168.1.107,收发数据成功。

一、硬件电路如下图

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

二、下面是常见的AT命令:

;服务器模式

;AT+CIPMUX=1

允许多个客户端连接,当然模块最多允许5个客户端连接(每个客户端对应一个id号,0--4)。也是必须设定的,不然配置为服务器会出错

;AT+CIPSERVER=1,5000 创建服务器

;AT+CIPSERVER=1,8080

;AT+CIPSEND=0,6

;AT+CIFSR

查询模块IP地址

;AT+CIPSTATUS

查询模块连接状态

;客户端模式

;AT+CWMODE=1 设置模式,模式说明:AT+CWMODE

= :1-Station模式,2-AP模式,3-AP兼Station模式。重启后生效

;AT+CIPMUX=0 ;单路连接时发送指令为AT+CIPSEND=x

, x为发送的字节数

注意只有在单连接的时候才可以设置为透传模式--就是串口的数据直接发送到网络,网络的数据直接发送到串口

;AT+CWJAP="LOVE","recon2012"

;AT+CIPSTART="TCP","192.168.1.8",8080

;AT+CWLAP

列出当前可用

AP

;AT+CIPSEND=8 向主机发送8个字节

;设置模块ip,发送AT+CIPSTA="192.168.1.110";响应;AT+CIPSTA="192.168.1.110"

busy p... 2,CONNECT

OK

;AT+CWSAP="TEST","12345678",1,3

创建热点

;AT+CWLIF

查看在线IP列表

三、汇编程序如下:

ORG 0000H

AJMP

MAIN;转入主程序

ORG

0003H ;外部中断P3.2脚INT0入口地址

RETI

ORG

000BH;

LJMP

CT

RETI

ORG

0013H;中断陷阱

RETI

ORG

0023H

RETI

DD

EQU P1.7;运行状态指示

FLAG_0 EQU 20H.0

;接收到上行串口发来数据标志p3.0

FLAG_3 EQU 20H.3 ;00分标志

;FLAG EQU 20H.4 ;通用标志寄存器

HM EQU 21H ;定时器毫秒存储

YEAR EQU 22H ;年

MONTH EQU 23H ;月

DAY EQU 24H ;日

WEEK EQU 25H ;星期

HOUR EQU 26H ;小时3031

MINUTE EQU 27H ;分钟3233

SECOND EQU 28H ;秒3435

MAIN:

MOV

SCon,#50h;

MOV

TMOD,#21H;波特率发生器T1工作在模式2

MOV

TH1,#0FDH ;波特率9600

MOV

TL1,TH1

MOV

PCON,#0H

SETB

TR1 ;启动定时器T1

MOV TH0,

#0D0H ;

MOV TL0,

#00H

MOV

DPTR,#5000;延时5秒;

LCALL

DelayXmS

LCALL

ATEOK ;发送AT

MOV

DPTR,#5000;延时5秒

LCALL

DelayXmS

LCALL

CWMODE;

MOV

DPTR,#5000;延时5秒

LCALL

DelayXmS

LCALL

CIPMUX ; CIPMUX=1启动多路连接模式

MOV

DPTR,#5000;延时5秒;

LCALL

DelayXmS

CALL

CIPSTART;建立TCP连接*

MOV

DPTR,#5000;延时5秒

LCALL

DelayXmS

CALL

CIPSEND ;发送数据

CALL

CIPSEND100

MOV

DPTR,#5000;延时5秒

LCALL

DelayXmS

CALL

CIPSEND ;发送数据,

CALL

CIPSEND28

A1: MOV

DPTR,#3000;延时5秒

LCALL

DelayXmS

CLR FLAG_0

ORL 0A8H,

#82H;允许定时器0中断

A2: SETB

TR0

JB

FLAG_0,A3 ;不为1等待,定时器0工作1分钟时会使FLAG_0=1,接收到数据使FLAG_0=1

JB

RI,UARTI;检测到RI变1;有串口数据进来RI=1

AJMP

A2

ATEOK: ;发送AT指令!

MOV

A,#41H;将ASCII码A发送到串口去

LCALL

FS

MOV

A,#54H;将ASCII码T发送到串口去

LCALL

FS

LCALL

HC;回车!

MOV

R2,#15

ATEOK0: LCALL

PDOK;

JNZ

ATEOK1;如果没有检测到OK,重复发

DJNZ

R2,ATEOK0

ATEOK1: RET

PDOK: LCALL

PDDA

LCALL

PDRI;等待下一个串口数据

MOV

A,SBUF;

CJNE

A,#4FH,SB;判断串口数据"O"=4F

CLR

RI;软件清除串口中断标记

LCALL

PDRI;等待下一个串口数据

MOV

A,SBUF;

CJNE

A,#4BH,SB;判断串口数据"K"=4BH

LCALL

PDDA

MOV

A,#0FFH;检测到OK,对A置1

CPL

DD

RET

SB: CLR

A;没有检测到OK,对A清零

CLR

RI;清除有串口数据标志

RET

PDRI: SETB

REN;占用R4/R5/R1

MOV

R1,#220;

PBZ: MOV

R4,#80;67

DY2: MOV

R5,#8;8

DY1: JB

RI,KKQ;

DJNZ

R5,DY1;

JB

RI,KKQ;

SETB

C;程序正常时C=1

DJNZ

R4,DY2;内循环50毫秒

DJNZ

R1,PBZ;超时退出

CLR

C;对串口接收超时退出C=0

CLR

RI;清除有串口数据标志

KKQ: RET

;检测0D/0A?

PDDA: CLR

RI;清除有串口数据标志

LCALL

PDRI;

MOV

A,SBUF;

CJNE

A,#0DH,SB;判断串口数据换行键

CLR

RI;软件清除串口中断标记

LCALL

PDRI;等待下一个串口数据

MOV

A,SBUF;

CJNE

A,#0AH,SB;判断串口数据

CLR

RI;软件清除串口中断标记

RET

FS: CLR ES

MOV

SBUF,A

JNB TI, $

CLR TI

SETB ES

RET

;发送回车指令!

HC:

MOV

A,#0DH

LCALL

FS

MOV

A,#0AH

LCALL

FS

RET

;发送AT指令!

AT1:

MOV

A,#41H;将ASCII码A发送到串口去

LCALL

FS

MOV

A,#54H;将ASCII码T发送到串口去

LCALL

FS

RET

;发送AT+C,应答

ATC:

LCALL

AT1

MOV

A,#2BH ;+

LCALL

FS

MOV

A,#43H ;C

LCALL

FS

RET

;入口参数:DPTR=MS(毫秒1-65535mS)

DELAYXMS:

MOV

A,DPH

MOV

R7,#01

JZ

DF1

MOV

R7,DPH

DF1: MOV

A,DPl

MOV

R6,#1

JZ

DEL1

MOV

R6,DPl

DEL1: MOV

B,#0

DJNZ

B,$

DJNZ

B,$

DJNZ

R6,DEL1

DJNZ

R7,DF1

RET

;发送AT+CWMODE=1 W=57 M=4D O=4F D=44 E=45 1=31

CWMODE:

LCALL

ATC

MOV

A,#57H ;W

LCALL

FS

MOV

A,#4DH ;M

LCALL

FS

MOV

A,#4FH ;O

LCALL

FS

MOV

A,#44H ;D

LCALL

FS

MOV

A,#45H ;E

LCALL

FS

MOV

A,#3DH ;="3D"

LCALL

FS

MOV

A,#31H ;1

LCALL

FS

LCALL

HC;回车!

MOV

R2,#15

CWMODE0: LCALL

PDOK;

XRL

A,#0FFH

JZ

CWMODE1;

DJNZ

R2,CWMODE0

CWMODE1: RET

;发送;AT+CWLAP

CWLAP:

LCALL

ATC

MOV

A,#57H ;W

LCALL

FS

MOV

A,#4CH ;L

LCALL

FS

MOV

A,#41H ;A

LCALL

FS

MOV

A,#50H ;P

LCALL

FS

LCALL

HC;回车!

MOV

R2,#10

CWLAP1: LCALL

PDOK;判断是否回答OK?

JNZ

CWLAP2;如果没有检测到OK,继续检查

DJNZ

R2,CWLAP1

CWLAP2: RET

CIPMUX:

LCALL

ATC

MOV

A,#49H ;I

LCALL

FS

MOV

A,#50H ;P

LCALL

FS

MOV

A,#4DH ;M

LCALL

FS

MOV

A,#55H ;U

LCALL

FS

MOV

A,#58H ;X

LCALL

FS

MOV

A,#3DH ;="3D"

LCALL

FS

MOV

A,#31H ;1

LCALL

FS

LCALL

HC;回车!

MOV

R2,#10

CIPMUX0: LCALL

PDOK;

XRL

A,#0FFH

JZ

CIPMUX1;如果没有检测到OK,重复发

DJNZ

R2,CIPMUX0

CIPMUX1: RET

CIPSTART:

LCALL

ATC

MOV

A,#49H ;I

LCALL

FS

MOV

A,#50H ;P

LCALL

FS

MOV

A,#53H ;S

LCALL

FS

MOV

A,#54H ;T

LCALL

FS

MOV

A,#41H ;A

LCALL

FS

MOV

A,#52H ;R

LCALL

FS

MOV

A,#54H ;T

LCALL

FS

MOV

A,#3DH ;=

LCALL

FS

MOV

A,#32H ;2

LCALL

FS

MOV

A,#2CH ;,

LCALL

FS

MOV

A,#22H ;"

LCALL

FS

MOV

A,#54H ;T

LCALL

FS

MOV

A,#43H ;C

LCALL

FS

MOV

A,#50H ;P

LCALL

FS

MOV

A,#22H ;"

LCALL

FS

MOV

A,#2CH

LCALL

FS

MOV

A,#22H ;"

LCALL

FS

MOV

A,#31H ;1

LCALL

FS

MOV

A,#39H ;9

LCALL

FS

MOV

A,#32H ;2

LCALL

FS

MOV

A,#2EH ;.

LCALL

FS

MOV

A,#31H ;1

LCALL

FS

MOV

A,#36H ;6

LCALL

FS

MOV

A,#38H ;8

LCALL

FS

MOV

A,#2EH ;.

LCALL

FS

MOV

A,#31H ;" 1

LCALL

FS

MOV

A,#2EH ;.

LCALL

FS

MOV

A,#31H ;" 1

LCALL

FS

MOV

A,#30H ;" 0

LCALL

FS

MOV

A,#37H ;" 9

LCALL

FS

MOV

A,#22H ;"

LCALL

FS

MOV

A,#2CH

LCALL

FS

MOV

A,#35H ;"5

LCALL

FS

MOV

A,#30H ;"0

LCALL

FS

MOV

A,#30H ;"0

LCALL

FS

MOV

A,#30H ;0

LCALL

FS

LCALL

HC;回车!

MOV

R2,#15

CIPSTART0: LCALL

PDOK ;判断是否回答OK?

XRL

A,#0FFH

JZ

CIPSTART1

DJNZ

R2, CIPSTART0

CIPSTART1: RET

CIPSEND28: MOV

A,#33H ;3

LCALL

FS

MOV

A,#30H ;0

LCALL

FS

LCALL

HC;回车!

MOV

R2,#10

FS400: LCALL

PDOK;

XRL

A,#0FFH

JZ

FSJ;

DJNZ

R2,FS400

RET

;发送AT+CIPSEND=2,

CIPSEND: LCALL

ATC

MOV

A,#49H ;I

LCALL

FS

MOV

A,#50H ;P

LCALL

FS

MOV

A,#53H ;S

LCALL

FS

MOV

A,#45H ;E

LCALL

FS

MOV

A,#4EH ;N

LCALL

FS

MOV

A,#44H ;D

LCALL

FS

MOV

A,#3DH ;=

LCALL

FS

MOV

A,#32H ;2

LCALL

FS

MOV

A,#2CH ;,

LCALL

FS

RET

;发送100个字节

CIPSEND100: MOV

A,#31H ;1

LCALL

FS

MOV

A,#30H ;0

LCALL

FS

MOV

A,#30H ;0

LCALL

FS

LCALL

HC;回车!

MOV

R2,#15

CIPSEND0: LCALL

PDOK;

XRL

A,#0FFH

JZ

FLJ

DJNZ

R2,CIPSEND0

CIPSEND1: RET

FLJ: MOV

R2,#50 ;LJA=51,LJB=50 *

MOV

R0,#30H ;30H到62H共50个字节

MOV

DPTR,#LJB ;

FLJ1: CLR

A

MOVC

A,@A+DPTR

MOV

@R0,A

INC

R0

INC

DPTR

DJNZ

R2,FLJ1

MOV

R0,#30H;30H到62H共50个字节

MOV

R2,#50;LJA=51,LJB=50 *

FLJ2: ACALL

FSD

DJNZ

R2,FLJ2

LCALL

HC;回车!

RET

FSJ: MOV

R2,#15

MOV

R0,#30H

MOV

DPTR,#SJB;

FSJ1: CLR

A

MOVC

A,@A+DPTR

MOV

@R0,A

INC

R0

INC

DPTR

DJNZ

R2,FSJ1

MOV

R0,#30H

MOV

R2,#15

FSJ2: ACALL

FSD

DJNZ

R2,FSJ2

LCALL

HC;回车!

RET

FSD: MOV

DPTR,#ASCII

MOV A, @R0

FSD1: ANL A, #0F0H

SWAP A

MOVC

A,@A+DPTR

CALL

FS

MOV A, @R0

ANL A, #0FH

MOVC

A,@A+DPTR

CALL

FS

INC R0

RET

CT:

PUSH

ACC

PUSH

PSW

PUSH

DPH

PUSH

DPL

MOV TH0,

#0DCH;

MOV TL0,

#00H

INC

HM ;毫秒

MOV A,HM

CJNE A,

#64H, DONE ;0AH

MOV HM,

#00H

CPL

DD

MOV A,SECOND

ADD

A,#01H

DA

A

MOV

SECOND,A

XRL

A,#10H

JNZ

CT2

SETB FLAG_3 ;到10秒检查一次开关量有无报警

CT2: MOV

A,SECOND

XRL

A,#25H

JNZ

CT8

SETB FLAG_3 ;到25秒检查一次开关量有无报警

CT8: MOV

A,SECOND ;WIFI

XRL

A,#30H ;到30秒

JNZ

CT3

MOV

A,MINUTE ;检查分+1是不是被4整除

ADD

A,#01H

MOV

B,#02H

DIV

AB

MOV

A,B

JNZ

CT3

CT3: MOV

A,SECOND

XRL

A,#40H

JNZ

CT4

SETB FLAG_3 ;到40秒检查一次开关量有无报警

CT4: MOV

A,SECOND

XRL

A,#55H

JNZ

CT0

SETB FLAG_3 ;到55秒检查一次开关量有无报警

CT0: MOV

A,SECOND

XRL A,

#60h

JNZ

DONE

MOV SECOND,

#00H

SETB FLAG_0 ;心跳标志置位;每3分钟发送一次;

MOV

2CH,#06H

MOV A,MINUTE

ADD

A,#01H

DA

A

MOV

MINUTE,A

CT1: MOV

A,MINUTE

XRL A,#30h ;

JNZ

CT6

CT6: MOV

A,MINUTE

XRL A,#60h ;

JNZ

DONE

MOV MINUTE,

#00H

MOV A,HOUR

ADD

A,#01H

DA

A

MOV

HOUR,A

XRL A,

#24h

JNZ

DONE

MOV HOUR,

#00H

DONE:

POP

DPL

POP

DPH

POP

PSW

POP

ACC

RETI

;跳过接收数据

TGSJ:

SETB

C

CLR

RI;软件清除串口中断标记

LCALL

PDRI;等待下一个串口数据

MOV

A,SBUF;将串口寄存器中接收到的数据给A

JNC

XPAS;如果检测到发生超时退出,就跳出这段程序

DJNZ

R3,TGSJ;判断是否已经收全部数据?

XPAS: RET

LJB:DB

10H,30H,00H,03H,45H,44H,50H,01H,40H,00H,80H,00H,07H,31H,30H,38H,30H,34H,35H,38H,00H ;21

DB

1CH,35H,6AH,4DH,47H,61H,48H,72H,30H,37H,3DH,75H,32H,43H,3DH,38H,52H,67H,78H,62H,44H,6FH,64H,4DH,5AH,36H,59H,73H,3DH;29

ASCII:DB

30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,41H,42H,43H,44H,45H,46H;

SJB:DB

30H,0DH,00H,07H,33H,32H,36H,36H,38H,38H,38H,31H,31H,31H,31H

END

四、利用TCP/UDP调试工具看程序执行的结果如下图:

a4c26d1e5885305701be709a3d33442f.png

五、wifi设置

在你家中的wifi如TP-LINK的静态地址分配中,把ESP8266的MAC地址绑定到192.168.1.107IP上,如下图。如果不绑定,任其动态分配IP地址,你就要经常改程序中的ip地址。

a4c26d1e5885305701be709a3d33442f.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_832782.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构与算法自学网站(快乐学习数据结构)

可视化数据结构与算法 带教程的数据结构操作: https://visualgo.net/zh 是我最喜欢的网站了,教程也很详细,想自学也可以点击Esc,离开并进入探索模式。并且随着数据图动态变化,旁边还有代码进行配套讲解。也可以自己绘…

如何解决网站首页老是被篡改经常反复被篡改

网站首页被篡改说明你网站程序有漏洞导致被上传了脚本后门木马 从而进行篡改内容被百度收录一些BC内容和垃圾与网站不相关的内容,建议找专业做安全的来进行网站安全服务漏洞检测与修补以及代码安全审计,清理网站后门和恶意代码,而且这个快照内容被劫持 会在搜索引擎…

如何将自己的网站上传至服务器并通过域名进行访问

前期准备 个人博客地址:http://www.zhsh666.xyz/ 我们想要让大家都能通过域名访问自己的网站,首先我们需要准备一个域名、以及一个服务器 域名购买可以通过腾讯云,阿里云,等,我用的是腾讯云服务器和腾讯云购买的域名 …

hexo教程:搜索SEO+阅读量统计+访问量统计+评论系统

hexo教程:搜索SEO阅读量统计访问量统计评论系统 更多精彩内容欢迎访问我的个人博客皮皮猪:http://www.zhsh666.xyz或者http://www.zh66.club期待您的光临哦!我是皮皮猪,感谢各位光临,能为您排忧解难小站深感荣幸!祝您生…

网站收录提交入口

> 更多精彩内容欢迎访问我的个人博客皮皮猪:http://www.zhsh666.xyz或者http://www.zh66.club期待您的光临哦!我是皮皮猪,感谢各位光临,能为您排忧解难小站深感荣幸!祝您生活愉快! 前些天自己搭建了一个…

我来教你如何将自己的网站上传至服务器并通过域名进行访问

如何将自己的网站上传至服务器并通过域名进行访问 欢迎关注公众号小帅搜,获取更多内容 前期准备 我们想要让大家都能通过域名访问自己的网站,首先我们需要准备一个域名、以及一个服务器 域名购买可以通过腾讯云,阿里云,等&#x…

win10 iis php虚拟目录访问,win10系统iis6部署网站时配置虚拟目录的操作方法

win10系统iis6部署网站时配置虚拟目录的操作方法?很多win10用户在使用电脑的时候,会发现win10系统iis6部署网站时配置虚拟目录的的现象,根据小编的调查并不是所有的朋友都知道win10系统iis6部署网站时配置虚拟目录的的问题怎么解决,不会的朋…

linux查看网站蜘蛛,网站如何快速识别百度蜘蛛?

经常听到开发者问,百度蜘蛛是什么?最近百度蜘蛛来的太频繁服务器抓爆了!最近百度蜘蛛都不来了怎么办?还有很多站点想得到百度蜘蛛的IP段,想把IP加入白名单,但IP地址范围动态变化不固定,我们无法对外公布。那么如何才能识别正确的…

java 访问家里网络IP_求助!!!!Java获取网站访问者IP

展开全部//获取ip地址public String getIpAddr(HttpServletRequest request) {String ip request.getHeader("x-forwarded-for");if(ip null || ip.length() 0 || "unknown".equalsIgnoreCase(ip)) {ip request.getHeader("Proxy-Client-IP"…

安卓封装网站源码_App封装打包是什么意思?App封装打包教程

很多企业或公司只有自己的公司网站,或者是一些开发者只有H5游戏,没有原生开发的App,想要开发原生App的成本又太高,这时就需要用到App封装打包。但是很多人都不太了解App封装打包是什么意思?我们今天就一起来了解一下Ap…

发布动态网站需要额外安装哪些软件_专为Win10打造的一款免费开源动态壁纸软件,可与WallpaperEngine媲美!...

前几天给我给大家推荐过一款比较好用的动态壁纸软件,Wallpaper Engine,有兴趣的朋友可以看看Wallpaper Engine不过当时推荐的是解锁版Wallpaper Engine,正版Wallpaper Engine,在Steam要卖19元。毕竟是解锁版,在很多功能…

网站PWA升级

渐进式网络应用 ( Progressive Web Apps ),即我们所熟知的 PWA,是 Google 提出的用前沿的 Web 技术为网页提供 App 般使用体验的一系列方案。PWA 本质上是 Web App,借助一些新技术也具备了 Native App 的一些特性。本文将详细介绍针对现有网站…

postMessage 两网站通信

前言: 本篇文章我将带大家一起来好好认识一下postMessage,包括它的兼容性,对应的API介绍,以及常见的几个使用场景,希望可以给有同样困惑的盆友们一点启发,给需要用这个技术的同僚们一些帮助. postMessage的定义 postMessage是html5引入的API,postMessage()方法允许来自不同源…

Django电商网站项目(1)--项目立项与结构设计

电商的7种商业模式 电商即电子商务(Electronic Commerce),是是以信息网络技术为手段,以商品交换为中心的商务活动,其有多种模式: ①B2B(Business to Business):电子交易的双方都是商家,使用网络技术完成商务交易&…

Django电商网站项目(2)--准备工作

准备工作 在前文中分析了用户数据表结构(如下),本文描述一些准备工作相关事项。 父模板页的抽象 Django中支持模板的继承与重写,在实际项目中,重复的页面结构很多,因此将父模板抽象,并在父模板中设置一些block用于…

Django电商网站项目(4)--商品模块

前文中已设计了与商品模块有关的表如下: 首页活动表用于展示一些活动图片(并附带活动链接); 首页轮播表用于展示一些轮播图片(具体轮播的效果在前端使用CSS完成); 首页展示表用于展示首页按分类排列后的一部分具体商品,展示方式意…

Django电商网站项目(6)--订单模块

设计的订单相关的表如下所示: 由于每一个订单中的商品种类与数量都不定,因此单独将订单商品提出为一个表,为一对多的关系。 订单的提交 从购物车页面提交是通过form形式提交的,在checkbox元素中定义参数value并设为对应的商品i…

Django电商网站项目(7)-部署与总结

将前述4个模块完成后项目的全部功能就完成了,在本地已经可以实现网站的基本功能(从用户注册到订单评论),但开启服务器时使用的是Django自带的测试用服务器,因此仍需要将其部署到真正的可用于工程的服务器上,即uWSGI,具…

flask网站项目(1)--项目立项与结构设计

项目工作流程 一、项目立项 该项目制作一个前后端分离的租房网站,前端以jQuery和art-template模板引擎为基础实现功能,后端以flask框架为基础,前后端之间使用json格式传递数据。 二、简单的需求分析 1、用户模块 ①用户注册,通过…

flask网站项目(4)--订单模块

订单模块提供了订单生成、订单查询、接单与拒单、订单评论四个功能,下面按照页面来划分订单模块的功能。 1、订单预定页面 该页面从房屋详情页面跳转,输入参数后点击发送请求,在后端进行条件判断后由前端直接跳转至我的订单页面&#xff0c…