GSM 打电话小问题
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit s1=P3^2;
uchar code TC_ZXH[]={"AT+CSCA=+8613800813500\r"}; //本地中心号。
uchar code TC_MDSJ[]={"AT+CMGS=13408131082\r"}; //目的手机地址,
uchar code at[] = "AT";
uchar code call[] = "ATD13408131082;\r"; //目的手机地址,打电话用 我把最后的‘\r’去掉,在程序后面用 send(0X0A)换行,就不能打打电了,为什么呢?
uchar code cmgf[] = "AT+CMGF=1\r";
/***********************************************************
函数名称:Ini_UART
函数功能:串口初始化设置 入口参数:无 出口参数:无
***********************************************************/
void uart_int(void)
{
SCON = 0x50; //UART方式1:8位UART; REN=1:允许接收
PCON = 0x00; //SMOD=0:波特率不加倍
TMOD = 0x20; //T1方式2,用于UART波特率
TH1 = 0xFD;
TL1 = 0xFD; //UART波特率设置:9600
TR1 = 1;
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)for(y=110;y>0;y--);
}
void send(uchar *tab)
{
while((*tab)!= '\0')
{
SBUF =*tab;
while(TI ==0);
TI = 0;
tab++;
}
}
void main()
{
uart_int();
delay(150);
while(1)
{
if(s==0)
{
delay(10);
if(s3==0)
{
while(!s3);
P0=0x00;
delay(200);
send(cmgf);
//send(0x0d);
//send(0x0d);
send(0x0a);//uchar code TC_MDSJ[]={"AT+CMGS=13408131082\r"}; 没有\r就打 不通了为什么,‘\r’不是等于 0X0A的嘛?
delay(200);
send(call);
P0=0xf7;
}
}
}
}
有劳大家了,谢谢!