新手上路
- 积分
- 38
- 金钱
- 38
- 注册时间
- 2015-5-24
- 在线时间
- 0 小时
|
楼主 |
发表于 2015-5-25 11:57:40
|
显示全部楼层
回复【2楼】正点原子:
---------------------------------
#include "reg52.h"
#include <string.h>
#include <stdio.h>
#include "intrins.h"
#define BufMax 10
#define uchar unsigned char
#define uint unsigned int
uchar RecDat[10];
uchar TxData[10];
uchar uart_i=0;
void UartInit()
{
SCON=0x50;//SCON:模式1,8-bitUART,使能接收
TMOD=0x20;//TMOD:timer1,mode2,
TH1=0xFD;//TH1:reload value for 9600baud @11.0592MHz
TL1=0XFD;
TR1=1;//TR1:timer1run
EA=1;//打开总中断
ES=1;//打开串口中断
}
/*------------------------------------------------
发送一个字节
------------------------------------------------*/
void UartSendByte(uchar dat)
{
ES=0;
SBUF=dat;
while(!TI); // while(TI==0)
TI=0;
ES=1;
}
/*------------------------------------------------
发送一个字符串
------------------------------------------------*/
void UartSendStr(uchar *s)
{
while(*s!='\0')// \0 表示字符串结束标志,通过检测是否字符串末尾
{
UartSendByte(*s);
s++;
}
}
void delay_us(uint t) //延时,us,ds18b20使用
{
while(t--);
}
void delay_ms(uint t)
{
uint x,y;
for(x=t;x>0;x--)
for(y=110;y>0;y--);
}
//延时函数大概是1s钟,
void delay_sec(uint sec)
{
uint i , j= 0;
for(i=0; i<sec; i++)
{
for(j=0; j><65535; j++)
{
}
}
}
void ClrBuf()
{
// uchar i;
for(uart_i=0;uart_i<BufMax;uart_i++)
RecDat[uart_i]=0;
uart_i=0;
}
void display(uchar *p)
{
uchar TxData_i=0;
while(*p)
{
TxData[TxData_i]=*p;
TxData_i++;
p++;
}
ClrBuf();
}
uchar num[] = "ATD13500314655;\r\n";
void SendMessage(uchar *sms_text)
{
uchar i = 0;
UartSendStr("AT+CSCS=\"GSM\"\r\n");
delay_sec(3);//延时3秒
UartSendStr("AT+CMGF=1\r\n");
delay_sec(3);//延时3秒
UartSendStr("AT+CMGS=\"13350384234\"\r\n");//此处修改为对方的电话号
delay_sec(5);//延时3秒
UartSendStr(sms_text);//修改短信内容
UartSendByte(0x1a);
delay_sec(3);//延时3秒
}
void jznchaxun()
{
UartSendStr("ATE1\r\n");
delay_sec(10);
UartSendStr("AT+CREG?\r\n");
delay_sec(20);//延时20秒
}
void hone()
{
uchar i = 0;
delay_sec(5); //等待4-5秒钟
UartSendStr("ATD13350384234;\r\n");
delay_sec(6);//延时20秒
delay_sec(1);//延时5秒
}
void readnew()
{
if(strstr(RecDat,"+CMTI")!=NULL)
{
ClrBuf();
UartSendStr("AT+CMGF=1\r\n") ;
delay_sec(1);
ClrBuf();
UartSendStr("AT+CMGR=1\r\n");
delay_sec(1);
if(strstr(RecDat,"k11")!=NULL)
P3|=0xf0;
}
}
void main()
{
UartInit();
jznchaxun();
SendMessage(RecDat);
//readnew();
Phone();
while(1);
}
void Serial() interrupt 4 //串口中断处理
{
ES=0; //关中断
if(TI==1) //发送
{
TI=0;
}
else //接收,处理
{
RI=0;
RecDat[uart_i]=SBUF;
if(uart_i><BufMax)
uart_i++;
else
uart_i=0;
}
ES=1;
}
其中发送lac值和cid值 总是发送的空值 ,要不就是错误> |
|