📄 短信模块.c
字号:
#include<reg52.h>
#include<string.h>
#include<intrins.h>
//**************************************************************************
#define uchar unsigned char
#define uint unsigned int
#define uchar unsigned char
#define uint unsigned int
uchar getdata;
sbit CLK=P2^0;
//-------------------------------------
unsigned char tempL=0;
unsigned char tempH=0;
float temperature,tempdate;//x
sbit send_key = P2^1; //短信息发送
sbit shutdown_key = P2^3;// 关机
sbit P2_0 = P2^0;
uchar idata mgsOK[]="OK";//
uchar Temp[1];
uchar Telnum[10];
uchar redata[40];
uchar delchar,j; //
uchar zone,num2,datesbuf,k;//
bit havemess;
bit flag;
//**************************************************************************
//延迟函数
void delays(uchar n) // void Delay11(uchar n)
{
uchar i=204;
while(n--)
{
while(i--);
}
}
////////////////////////////////////////////////////////////////
///////////////////////////////////////////////
void t0(void) interrupt 1 using 0
{
CLK=~CLK;
}
/*void t1(void) interrupt 3 using 0
{
TH1=(65536-4000)/256;
TL1=(65536-4000)%256;
} */
///////////////////////////////////////////////
void send_initial()
{ /*定时器1和串口初始化,定时器1用来产生波特率*/
TMOD = TMOD|0x20; // T1使用定时模式,工作模式2,无门控位
TH1 = 0xFD; // 产生9600波特率,晶振为11.0592
TL1 = 0xFD;
PCON = 0x00; // SMOD=0;
TR1 = 1; //T1开始计数
SCON = 0x50; // 允许接收,工作方式1;一个0起始位,一个1停止位
ES = 1; // 串口中断允许
EA = 0; // CPU关闭中断,串口发送时,不在需要外部中断
}
/*串口发送一个字节*/
//功能:
//输入:
//输出:
void send_onechar(uchar send_sdata)
{ TI = 0;
SBUF = send_sdata;
while(!TI);
TI = 0;
}
/*串口发送一数组*/
//功能:
//输入:
//输出:
//--------------------------------------
void send_data(uchar *row,uchar length)
{ uchar i=0;
for(i=0;i<length;i++)
{ send_onechar(*row);
row++;
}
delays(500);
}
//--------------------------------------
/*串口接收一个字节*/
//功能:
//输入:
//输出:
uchar receive_onechar()
{ uchar temp=0;
RI = 0;
while(!RI);
temp= SBUF;
RI = 0;
return temp;
}
/*************************************************************************************/
void main(void)
{ unsigned char arrayy[]={0x1A,0x0d,0x0a};
P2_0=1;
send_key=1;
shutdown_key=1;
send_initial();
delays(200);
delays(200);
// EraseMsgAll(); //删除sim卡内全部短信息
// num2=1;// num2复位,重新接收"+".....
while(1)
{
if(send_key==0)
{
delays(10);
if(send_key==0)
{
send_data("AT\r\n",4); //发送AT指令,测试连接成功
send_data("AT+CMGF=1\r\n",11); //设置为TEXT模式
send_data("AT+CSCA=+8613800769500\r\n",24); //设置短信中心号码,各地区不一样
send_data("AT+CSMP=17,167,0,0\r\n",20); //设置TEXT模式参数,最后一个参数是数据编码类型;0表示默认字符集(GSM),4表示8位数据
send_data("AT+CSCS=GSM\r\n",13); //设置为GSM字符集
send_data("AT+CMGS=15999705094\r\n",21); //输入对方电话号码
send_data("ok\r\n",10); //写入发送内容,可为英文符号
send_data(arrayy,3); //发送结束语1A,一定要十六进制大写,不是ASIC
P2_0=~P2_0;
}
}
}
while(2)
{
if(shutdown_key==0)
{
delays(10);
if(shutdown_key==0)
{
send_data("AT+CFUN=0\r\n",11); //关机,这个命令停止GSM软件堆栈和硬件层
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -