void main()
{
Start_GSM(); //开启TC35
Delay_s(5); //延时大约10秒 ,等待模块联网/
UART_init(); //串口初始化/
GSM_INIT(); //对tc35模块进行初始化
}
void GSM_INIT(void)
{
sendstring(ATE); //发送握手信号
Delay_s(1);
sendstring(ATE); //发送握手信号
Delay_s(1);
sendstring(AT); //发送握手信号
Delay_s(1);
sendstring(AT); //发送握手信号
Delay_s(1);
}
void UART_init (void)
{
TMOD=0x20; //选择定时器1
PCON=0x00; ///波特率不加倍
SCON=0x50; //串行工作方式1允许串行接收
TH1=0xFD; //实验板上晶振位11.0592MHZ,选择波特率为9600
TL1=0xFD; //在相应计数器上赋值
EA=1; //总中断开启
ES=1; //串行中断开启
TR1=1; //开启定时器1
}
void Start_GSM(void)
{
start=0;
Delay_ms(100);
Delay_ms(100);
Delay_ms(100);
Delay_ms(100);
start=1;
}
void Delay_ms(int xms) //延时程序,xms是形式参数
{
uint i, j;
for(i=xms;i>0;i--) // i=xms,即延时xms, xms由实际参数传入一个值
for(j=115;j>0;j--); //此处分号不可少
}
void Delay_s(int xs) //延时程序,xms是形式参数
{
uint i,j;
for(i=xs;i>0;i--) // i=xms,即延时xms, xms由实际参数传入一个值
for(j=10;j>0;j--) //此处分号不可少
Delay_ms(100);
}
(uchar code AT[]="AT"; //握手信号
uchar code ATE[]="ATE"; //关回显
)
void sendchar(uchar ch)
{
SBUF=ch;
while(TI==0);
TI=0;
}
void sendstring(uchar *p)
{
while(*p)
{
sendchar(*p);
p++;
}
sendchar(0x0D); //回车换行的ASCII码
sendchar(0x0A);
}
void receive(void) interrupt 4 using 1
{
if(RI)
{
while(1)
{
test=1;
Delay_s(1);
test=0;
Delay_s(1);
}
}
}
我就是先测试一下硬件能不能用,所以就一直发了四个AT指令,如果串口好用的话,则可定会置位RI的吧,所以这个时候就会让P2^0锁链的LED灯闪烁,但是现实不行。。。
|