云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > C51单片机控制sim900a收发信息c语言程序

C51单片机控制sim900a收发信息c语言程序

  • 62 次阅读
  • 3 次下载
  • 2025/5/4 8:08:27

#include #include

#include \

//! 服务器IP地址与端口号,注意,用户需要将此IP替换为 //! 自己服务器的公网IP地址

#define TCPIP_SERVER_IPADDR \#define TCPIP_SERVER_PORT \

//! 串口发送与接收缓冲区大小 #define TTY_MAX_BUFFER_SIZE 256 //! 串口发送与接收缓冲区

char ttyBuffer[TTY_MAX_BUFFER_SIZE];

//! TCPIP发送与接收缓冲区大小

#define TCPIP_MAX_BUFFER_SIZE 256 //! TCPIP发送与接收缓冲区

char tcpipBuffer[TCPIP_MAX_BUFFER_SIZE];

//! 串口0初始化函数, 此串口用作接收终端控制命令 //! 晶振频率:22.1184MHz //! 串口0波特率:9600

void Uart0_Init(void) //9600bps@22.1184MHz {

PCON |= 0x80; //使能波特率倍速位SMOD SCON = 0x50; //8位数据,可变波特率

AUXR |= 0x40; //定时器1时钟为Fosc,即1T

AUXR &= 0xfe; //串口1选择定时器1为波特率发生器 TMOD &= 0x0f; //清除定时器1模式位

TMOD |= 0x20; //设定定时器1为8位自动重装方式 TL1 = 0x70; //设定定时初值

TH1 = 0x70; //设定定时器重装值 ET1 = 0; //禁止定时器1中断 TR1 = 1; //启动定时器1 }

//! 串口0字符串输出函数

//! 参数说明:pString为字符串缓冲区首地址 void Uart0_PutString(char* pString) {

unsigned short i = 0; while(pString[i]) {

SBUF = pString[i++]; while(!TI); TI = 0; } }

//! 串口0字符串读取函数, 获取一行数据, 遇到换行符为止

//! 参数说明:pBuffer为缓冲区首地址, nBufferLen为缓冲区大小, nTimeOut为超时时间 //! 如果nTimeOut=0, 那么函数会阻塞, 直到缓冲区满或遇到换行符

unsigned short Uart0_GetALine(char* pBuffer, unsigned char nBufferLen, unsigned char nTimeOut) {

char ch = 0;

unsigned int i = 0, j = 0, k = 0;

k = 20000*nTimeOut;

for(i = 0, j = 0; i < nBufferLen; i++) {

while(1) {

if(RI) {

RI = 0; //清除接收完成标志 pBuffer[i] = SBUF; //! 回显给终端显示 SBUF = pBuffer[i]; while(!TI); TI = 0;

if(pBuffer[i] == 0x0d) {

pBuffer[i] = 0x00; return i; }

break; }

else if(nTimeOut == 0) continue; else j++;

if(j == k) break; } }

return i; }

//! 串口1初始化函数, 此串口用作控制GSM模块 //! 晶振频率:22.1184MHz //! 串口1波特率:9600

void Uart1_Init(void) //9600bps@22.1184MHz {

AUXR |= 0x08; //使能波特率倍速位S2SMOD S2CON = 0x50; //8位数据,可变波特率

BRT = 0x70; //设定独立波特率发生器重装值

AUXR |= 0x04; //独立波特率发生器时钟为Fosc,即1T AUXR |= 0x10; //启动独立波特率发生器 }

//! 串口1字符串输出函数

//! 参数说明:pString为字符串缓冲区首地址 //! 备注:此函数一方面向串口1发送数据, //! 另一方面也向串口0发送数据, //! 目的是为了方便调试 void Uart1_PutString(char* pString) {

unsigned char i = 0;

//! 向串口1写数据 i = 0;

while(pString[i]) {

//! 向串口0写数据,目的是方便调试 SBUF = pString[i]; while(!TI); TI = 0;

S2BUF = pString[i++]; while(!(S2CON&S2TI)); S2CON &= ~S2TI; } } /**

* @func Uart1_GetString

* @author SwanTech (2011/12/14) * @param pBuffer 缓冲区地址

* @param nBufferLen 缓冲区长度

* @param nTimeOut 读取返回数据的超时时间

* @return unsigned short 成功: 返回接收到的字节数. 失败: 返回-1 * @remark 注意nTimeOut超时时间从接收到第一个字符开始计数 */

unsigned short Uart1_GetString(char* pBuffer, unsigned short nBufferLen, unsigned short nTimeOut) {

unsigned short i = 0, j = 0, k = 0;

//! 此函数固定的超时时间,也就是说如果根本就

//! 没有应答数据时,函数经过这个固定超时时间会返回 const unsigned short nFixedTimeout = 65500;

for(i = 0; (i < nFixedTimeout && k == 0); i++) {

for(j = 0, k = 0; j < nTimeOut; j++) {

if(S2CON & S2RI) {

S2CON &= ~S2RI; pBuffer[k++] = S2BUF;

SBUF = S2BUF; //! 向串口0写数据,目的是方便调试 while(!TI); TI = 0;

if(k == 1) //! 应答数据第一次到来,重新计算超时值 j = 0;

else if(k+1 == nBufferLen) //! 字符串缓冲区已满 break; } } }

pBuffer[k] = 0x00; //! 字符串必须以0x00结束

return k; }

void SwanTech_LogoDisplay(void) {

Uart0_PutString(\

Uart0_PutString(\ #鸿鹄电子科技# |\\n\\r\ Uart0_PutString(\ http://swantech.taobao.com |\\n\\r\

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

#include #include #include \ //! 服务器IP地址与端口号,注意,用户需要将此IP替换为 //! 自己服务器的公网IP地址 #define TCPIP_SERVER_IPADDR \#define TCPIP_SERVER_PORT \ //! 串口发送与接收缓冲区大小 #define TTY_MAX_BUFFER_SIZE 256 //! 串口发送与接收缓冲区 char ttyBuffer[TTY_MAX_BUFFER_SIZE]; //! TCPIP发送与接收缓冲区大小 #define TCPIP_MAX_BUFFER_SIZE 256 //! TCPIP发送与接收缓冲区 c

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com