请
登录
后使用快捷导航
没有帐号?
注册
首页
论坛
设计作品
全志V85x硬件设计大赛作品精选第一期
全志V85x硬件设计大赛作品精选第二期
瑞萨RA4M2物联网网关设计挑战赛作品集
国民技术N32开源移植挑战赛作品精选
2022福建省大学生人工智能创意赛作品合集
OpenHarmony开发者成长计划学生挑战赛优秀作品
精选帖子
【作品合集】龙芯2K0300蜂鸟开发板试用精选
【资源下载】英飞凌PSoC 6 RTT物联网开发板
【正点原子STM32精英V2开发板】HC-SR501红外人体感应
【沁恒CH32V208开发板试用】跳动的心脏-Systick
【鲁班猫创意氛围赛】现代化无线哨兵
【飞凌RK3588开发板试用】基于pyqt5的人脸识别
书籍评测
电子工程师必备丛书系列——电路板技能速成宝典
Proteus实战攻略:从简单电路到单片机电路的仿真
电子工程师必备丛书系列——九大系统电路识图宝典
OpenHarmony嵌入式系统原理与应用——基于RK2206芯片
深入理解微电子电路设计——数字电子技术及应用(原书第5版)
资深工程师十余年实战经验,PADS PCB设计指南
社区工程师专题
第一期:坚持兴趣成就嵌入式工程师
第二期:电子工程师需要在参赛中历练成长
第三期:创意源于生活,工具始于懒惰
第四期:工程师漫谈开发板评测的乐趣
第五期:硬件工程师的心路历程
第六期:宁精勿杂,在嵌入式领域做到优秀
版块
技术社区
FPGA开发者技术社区
RISC-V MCU技术社区
HarmonyOS技术社区
瑞芯微Rockchip开发者社区
OpenHarmony开源社区
嵌入式技术论坛
单片机及嵌入式
单片机/MCU论坛
ARM技术论坛
STM32/STM8技术论坛
RISC-V技术社区
FPGA|CPLD|ASIC论坛
DSP论坛
电源与无线技术
电源技术论坛
无线充电技术
WIFI技术
蓝牙技术
天线|RF射频|微波|雷达技术
EDA设计论坛
PCB设计论坛
DFM|可制造性设计论坛
Protel|AD|DXP论坛
PADS技术论坛
Allegro论坛
KiCad EDA 中文论坛
proteus论坛|仿真论坛
电路设计与测试
电路设计论坛
电子元器件论坛
LabVIEW论坛
Matlab论坛
传感技术
测试测量技术
DIY及创意
综合应用与活动
电机控制
发烧友官方/活动
模拟技术论坛
机器人论坛
USB论坛
音视频技术
综合技术交流
小组
厂商
龙芯技术社区
先楫半导体HPMicro
其利天下技术小组
瑞萨单片机论坛
芯海科技论坛
飞凌嵌入式论坛
国民技术论坛
飞腾派开发者社区
创龙科技论坛
米尔电子
技术
Linux论坛
单片机学习小组
嵌入式学习小组
电子行业动态
工程资源中心
电磁兼容设计与整改
物联网技术
汽车电子技术论坛
氮化镓技术社区
HiHope开发者社区
高校
东莞理工学院电子协会
西安电子科技大学西电实验室
深圳大学电子协会
桂林电子科技大学机电工程协会
湘潭大学电子科技协会
名人
张飞硬件学习小组
韦东山Linux嵌入式课程社区
黄工无刷电机学习
MILL小眼睛FPGA小组
龙哥 Labview 学习群
淘贴
开源硬件项目分享
开发板免费试用
沁恒微CH32V307试用合集
芯昇RISC-V开发板试用合集
乐鑫ESP32-C3试用合集
活动
设计大赛
瑞萨RA4M2物联网网关设计挑战赛
华秋电子x全志在线开源硬件设计大赛
RT-Thread 创新设计大赛
星核计划-高云FPGA开发者计划
OpenHarmony成长计划学生挑战赛
RT-Thread全球巡回线下培训
国民技术N32开源移植挑战赛
开发板试用
【创客营】新品Vision Board开发板免费评测
龙芯2K0300蜂鸟开发板免费试用
米尔-STM32MP135开发板-入门级MPU设计平台
风火轮YY3568开发板免费体验
【新品试用】英飞凌PSoC 6 RTT开发板试用
正点原子STM32战舰V4开发板
【有奖评测】为昕原理图设计EDA软件免费试用
社区之星
杨永胜:兴趣加努力,嵌入式工程师最好的前进之路
谢小龙:五年嵌入式开发,一个“博大”+“精深”的老鸟
罗大信:从工程师到创始人,我的20年嵌入式经验
刘建华:如果不想虚度一生,那就学习一辈子
贺婷婷:不退则进,遇到问题面对它,你会登上新台阶
罗除博士:共同携手,助力鸿蒙生态冲破牢笼
官方活动
【有奖征文】赢千元现金!发文章、上传资料送壕礼
每日打卡活动,赢取OH定制礼品
RISC-V MCU 技术社区打卡活动
【有奖打卡活动】2023年打卡计划
【书单评测】27本电子工程书籍
【书籍评测】PADS PCB设计指南
【精选集合】野火鲁班猫创意氛围赛作品
技术峰会/沙龙
2024 KiCon Asia KiCad 用户大会
2023 电子工程师大会暨第三届社区年度颁奖
开放原子开源基金会OH技术峰会
电子设计与制造技术研讨会
PCB设计与制造技术研讨会
2022 OH主题线下技术沙龙
2022开放原子全球开源峰会
专栏
技术原创
从编程到应用——从零开始学ARM
基于STM32设计的数码相册
基于DWC2的USB驱动开发-IAD描述符详解
基于CW32L083的线控器方案设计
RISC-V内核RC遥控车拆解:空心杯电机+2.4G跳频控制
最新资讯
SK海力士2023年HBM3营收增长5倍
夺得多项第一!问界M7冬测成绩大翻身
ASML 2023年末爆单,中国贡献营收翻倍
谁能打造最强车型?从OTA看车企的智能化之争有多激烈
首个石墨烯功能半导体面世,硅基的陌路?
企业
推荐企业号
Aigtek安泰电子
斯丹麦德电子
张飞实战电子
芯佰微电子
扬兴科技
飞凌嵌入式
米尔电子
RA生态工作室
生态平台
OpenHarmony生态平台
RISC-V生态平台
瑞芯微Rockchip生态平台
精选内容
大咖齐聚,飞凌嵌入式技术创新日活动
米尔NXP i.MX 93开发板免费评测试用
Docker容器安装及运行测试方案详解
用时钟频率精度测量电路进行时间校验
基于Realtek的智能语音服务解决方案
问答
年度榜单
2022年度TOP榜单——模拟技术论坛问答
2021年度TOP榜单——电路设计论坛问答
2021年度TOP榜单——电源技术论坛问答
2021年度TOP榜单——电机控制技术论坛问答
高手问答
电子老顽童带你看懂电路设计
资深产品硬件研发工程师,与你讨论电路设计!
layout leader工程师任工谈PCB设计
与搞电源小哥一起揭秘电源设计那些难点
下载
电子书
电源技术知识总结
常用电源设计技巧图解
开关电源噪声-EMC(上)
开关电源噪声-EMC(下)
凡亿电路-PCB封装设计指导白皮书
精华资料
龙芯生态白皮书
中国物联网操作系统市场研究白皮书
AIGC(GPT-4)赋能通信行业应用白皮书
OPPO 《6G:极简多能 构建移动的世界》白皮书
智慧充电桩物联网技术白皮书
常用软件
Altium Designer21.9.2软件安装包下载
Cadence SPB OrCAD Allegro 17.4安装包及补丁下载
MATLAB 2020软件安装包下载
PADS 软件下载
LabVIEW 软件下载
学院
课程
直播
开发板购买
更多
电子发烧友
电子新闻
电子电路
技术文库
行业应用
电子标签
资料下载
电子元器件
技术研讨会
在线研讨会
特色服务
企业号
硬声APP
发烧友APP
产品库
积分商城
VIP会员
签到
经验
淘贴
华秋智造
PCB计价
SMT计价
元器件采购
BOM计价
Layout计价
钢网计价
PCB下单助手
工程师工具
PCB在线检查
华秋CAM
datasheet查询
替代料查询
免费样品申请
在线计算工具
工程师专区
品牌厂商查询
华秋DFM
帖子
搜索历史
清空
搜索热词
本版
帖子
用户
发 帖
提问题
发文章
发资料
发讨论
发视频
草稿箱
登录/注册
完善资料让更多小伙伴认识你,还能领取
20
积分哦,
立即完善>
3天内不再提示
每日签到
发烧友10周年庆典,全网超值优惠来袭!千元现金券,下单抽奖赶紧参与》》
电子发烧友论坛
/
嵌入式论坛
/
嵌入式论坛
电路图及DIY
电源技术论坛
综合技术与应用
无线通信论坛
EDA设计论坛
测试测量论坛
招聘/交友/外包/交易/杂谈
官方社区
单片机/MCU论坛
ARM技术论坛
STM32/STM8技术论坛
嵌入式技术论坛
RISC-V技术论坛
瑞芯微Rockchip开发者社区
FPGA|CPLD|ASIC论坛
DSP论坛
/
STC与SIM900A进行TCP通信问题
[文章]
STC与SIM900A进行TCP通信问题
一个人。
2015-1-12 21:23:20
8481
扫一扫,分享给好友
复制链接分享
链接复制成功,分享给好友
0
1
最近在通过STC89C52控制SIM900A进行TCP
通信
,有一个很纠结的问题,我打算是通过串口中断进行判断然后发送数据的,但是
单片机
发AT指令过去后,看到
开发板
的RX灯已经闪烁起来了,就代表有数据传回来
,但是判断进入串口中断的灯却没有亮起来。然后我通过延时进行打电话和发送数据,打电话都没有问题,而发送数据也可以发送,但发送一次之后就会自动断了,并且这样发送数据不稳定。所以还是希望可以通过串口中断判断,希望各位大神帮帮忙,实在找不到问题所在。。。
以下为程序:
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int
***it KEY4=P1^4;
***it KEY5=P1^5;
***it KEY6=P1^6;
***it KEY7=P1^7;
***it LED0=P0^0;
***it LED1=P0^1;
***it LED2=P0^2;
***it LED3=P0^3;
***it LED4=P0^4;
***it LED5=P0^5;
***it LED6=P0^6;
***it LED7=P0^7;
//以下用于保存单片机收到模块发来的AT指令,通过这些指令单片机可以判断模块的状态
uchar GsmRcv[30] = {0};
uchar GsmRcvAt[50] = {0};
uchar GsmRcvCnt = 0;
uchar GsmAtFlag = 0;
uchar str1[] = "ATD10086;rn";
void SerialIn
ti
();
void Send(uchar c);
void Sends(uchar *str);
void Delay(int z);
void ATD();
void ATH();
void ATA();
void GPRS();
void main()
{
SerialInti();
while(1)
{
if(KEY4 == 0)
{
Delay(20);
if(KEY4 == 0)
{
ATD();
Delay(20);
}
}
if(KEY5 == 0)
{
Delay(20);
if(KEY5 == 0)
{
ATH();
Delay(20);
}
}
if(KEY6 == 0)
{
Delay(20);
if(KEY6 == 0)
{
ATA();
Delay(20);
}
}
// if(KEY7 == 0)
// {
// Delay(20);
// if(KEY7 == 0)
// {
GPRS();
Delay(2000);
// }
// }
}
}
/*初始化程序(必须使用,否则无法收发),次程序将会使用定时器1*/
void SerialInti()//初始化程序(必须使用,否则无法收发)
{
TMOD = 0x20; //定时器1操作模式2:8位自动重载定时器
TH1 = 0xfd; //装入初值,波特率9600
TL1 = 0xfd;
TR1 = 1; //打开定时器
SM0 = 0; //设置串行通讯工作模式,(10为一部发送,波特率可变,由定时器1的溢出率控制)
SM1 = 1; //(同上)在此模式下,定时器溢出一次就发送一个位的数据
REN = 1; //串行接收允许位(要先设置sm0sm1再开串行允许)
EA = 1; //开总中断
ES = 1; //开串行口中断
}
/*串行通讯中断,收发完成将进入该中断*/
void Serial_interrupt() interrupt 4
{
uchar i = 0;
LED0 = 0;
if(RI == 1) //收到信息
{
LED1 = ~LED1;
GsmRcv[GsmRcvCnt] = SBUF;
GsmRcvCnt++;
//收到了完整的AT指令,完整的AT指令是以0x0a 0x0d结尾的。故作此判断,在接收的过程中是否收到0x0a 0x0d
/* if(GsmRcv[GsmRcvCnt-2] == 0x0d && GsmRcv[GsmRcvCnt-1] == 0x0a && GsmRcvCnt >= 2)
{
LED3 = ~LED3;
//一旦收到0x0a 0x0d,就将数据保存起来。用户主函数的判断。
for(i=0; i
{
GsmRcvAt[i] = GsmRcv[i];
GsmRcv[i] = 0;
}
GsmRcvCnt = 0;
GsmAtFlag = 1;//收到了完整的at指令,通过这个标志位置1,这样主函数就知道去判断了。
}
else if(GsmRcvCnt >= 50)//因为内存有限,收到了50个字符还是没有看到0x0a 0x0d的话,就重新开始接收吧。
{
GsmRcvCnt = 0;
} */
}
LED0 = 1;
RI = 0; //接收中断信号清零,表示将继续接收
}
void Send(uchar c)
{
SBUF = c;
while(!TI); //等待发送完成信号(TI=1)出现
TI = 0;
}
//串行口连续发送char型数组,遇到终止号/0将停止
void Sends(uchar *str)
{
ES = 0;
while(*str!='