📄 gsm-at-ok.c
字号:
#include <at89x55.h>
#include <string.h>
#include <stdio.h>
bit sendbiao; //定义发送完成标志
bit jie1;
bit jie2;
bit jie3;
bit ok;
unsigned char code at[]={"AT"};
unsigned char data c;
unsigned char data p;
unsigned char data jiec;//接收区计数器
unsigned char xdata buf1[140];
unsigned char xdata buf2[140];
unsigned char xdata buf3[100];
unsigned int data chua_c;// 串口接收总字节数
unsigned char inbuf1[INBUF_LEN];
unsigned char checksum,count3;
bit read_flag=0;
unsigned char idata atback[80];
/*定义函数*/
void delay(int); //延时函数
void start(void); //初始化函数
void chuan();
void main()
{
unsigned int data maaa;
int i;
start();
for(i>0;i<100;i++)
{
while(sendbiao==1);
atback[0]=0;
strcpy(atback,at);
strcat(atback,Enter);
c=strlen(atback);
p=0;
SBUF=atback[p];
p++;
sendbiao=1;
jiec=0;
jie1=0;
for(maaa=0;maaa<10000;maaa++)
{
if(jie1==1)
{
if (buf1[0]=='O' && buf1[1]=='K' )//OK
{
workled=0;
}
else
{
alarm=1;
}
jiec=0;
jie1=0;
}
}
delay(5000);
}
}
void start(void)
{
/* SCON Bit 7 6 5 4 3 2 1 0
SM0/FE SM1 SM2 REN TB8 RB8 TI RI
T2CON Bit 7 6 5 4 3 2 1 0
TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RL2 */
/* T2CON=0x34; //0011,0100,由T2作为波特率发生器
RCAP2H=0xFF; //时钟11.0592MHZ,
RCAP2L=0xDB; //9600波特率
ES=0; //禁止串口中断
SCON=0X50; //0101,0000 8位数据位,无奇偶校验
T2CON=0x34; //0011,0100,由T2作为波特率发生器
RCAP2H=0xFF; //时钟11.0592MHZ,
RCAP2L=0xDB; //9600波特率
ES=1; //允许串口中断 */
sendbiao=0;
SCON = 0x50; //SCON: serail mode 1, 8-bit UART, enable ucvr
TMOD |= 0x20; //TMOD: timer 1, mode 2, 8-bit reload
PCON |= 0x80; //SMOD=1;
TH1 = 0xF4; //Baud:4800 fosc=11.0592MHz
IE |= 0x90; //Enable Serial Interrupt
TR1 = 1; // timer 1 run
}
void delay(int j)
{
int i;
for(;j>0;j--)
{
for(i=0;i<124;i++)
{;}
}
}
void chuan() interrupt 4
{
if(TI==1)
{TI=0;
if(p>=c)
{
sendbiao=0;
}
else
{
SBUF=atback[p];
p++;
}
}
else
{RI=0;
if(jie1==0)
{
if(SBUF==0X0A)
{
jie1=1;
jiec=0;
}
else if(jiec>139)
{ jie1=1;
jiec=0;
}
else
{
buf1[jiec]=SBUF;
jiec++;
chua_c++;
}
}
else if(jie2==0)
{
if(SBUF==0X0A)
{
jie2=1;
jiec=0;
}
else if(jiec>140)
{ jie2=1;
jiec=0;
}
else
{
buf2[jiec]=SBUF;
jiec++;chua_c++;
}
}
else if(jie3==0)
{
if(SBUF==0X0A)
{
jie3=1;
jiec=0;
}
else if(jiec>99)
{ jie3=1;
jiec=0;
}
else
{
buf1[jiec]=SBUF;
jiec++;chua_c++;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -