我想用8051单片机控制GSM模块发短信
程序如下:
#include
#include
unsigned int i;
unsigned char letter= 0;
unsigned int str[3];
sbit D0=P0^0;
sbit D1=P0^1;
sbit D2=P0^2;
sbit D3=P0^3;
sbit D4=P0^4;
void serial_init(void);
void delay_3s(void);
void send_message(void);
//********************
void serial_init(void)
{
SCON = 0x50;
PCON = 0x00;
TMOD = 0x20;
TH1 = 0xFD;
TL1 = 0xFD;
TR1 = 1;
TI = 1;
}
//*************************
void delay_3s(void)
{
for(i=0;i<60;i++) //delay 50ms *60= 3s
{TMOD=0x21;
TH0=0x3C ;
TL0=0xB0 ;
TF0=0;
TR0=1;
while(TF0==0)
{}
TR0=0;
TF0=0;
}
}
//*************************
void send_message (void)
{ for ( ;letter<1;letter++)
{
printf ("AT\r\n");
delay_3s();
printf ("AT\r\n");
D0=0;
delay_3s();
printf ("AT+CMGF=1\r\n");
D1=0;
delay_3s();
printf ("AT+CSMP=17,167,0,0\r\n");
D2=0;
delay_3s();
printf ("AT+CSCS=GSM\r\n");
D3=0;
delay_3s();
}
}
//**************************
void main (void)
{ P1=0XFF;
serial_init();
while (1)
{
if (P1==0xFF) {}
else if (P1==0xFE)
{
send_message();
for ( ;letter<2;letter++)
{
printf ("AT+CMGS=0871685530\r\n");
delay_3s();
printf ("Room 1 warning");
putchar (0x1A);
D4=0;
delay_3s();
}
}
}
}
我是让单片机在p1.0口接地的时候发送AT指令
每次发送一条指令p0口上的灯就会亮一盏
但是连接模块后我的单片机工作了,灯也一盏一盏的亮
可以短信没发出去~哪位大侠告诉我问题是什么
|