⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main备份.c

📁 用51单片机开发的GSM报警程序,用51单片机开发的GSM报警程序
💻 C
字号:
#include <REG51.h>
#include<intrins.h>
#include "serial.h"
#include "gsm.h"
#include "bianliang.h"
#include <string.h>
#include "1602.H"
#define uchar_code unsigned char code
#define uchar unsigned char 
#define SELInt_on() ES=1       //串行口中断允许
#define SELInt_off() ES=0      //串行口中断禁止
sbit P0_0=P0^0;
sbit P0_1=P0^1;
sbit P0_2=P0^2;
sbit P0_3=P0^3;
sbit P0_4=P0^4;
sbit P0_5=P0^5;
sbit P0_6=P0^6;
sbit P0_7=P0^7;
sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
sbit P1_4=P1^4;
sbit P1_5=P1^5;
sbit P1_6=P1^6;
sbit P1_7=P1^7;
sbit P2_0=P2^0;
sbit P2_1=P2^1;
sbit P2_2=P2^2;
sbit P2_3=P2^3;
sbit P2_5=P2^5;
sbit P2_4=P2^4;
uchar alarm=0;
uchar count=0;
bit idata read_mes=0;
uchar temp2;
void delay(int n)
{
  uchar i;
  while(n--)
   for(i=0;i<100;i++);
}

void main(void)
{	
  	
	Ser_Init();     //初始化串口

 	INIT_GSM();		//GSM初始化
	MES_COUNT=0x31;
	Del_Mes(MES_COUNT);//删除短信
	MES_COUNT=0x32;
	Del_Mes(MES_COUNT);//删除短信
	MES_COUNT=0x33;
	Del_Mes(MES_COUNT);//删除短信
	Cls_Rebuf();
	while(1)
	{  
		if(NewSMS_flag==1)
		{	
			NewSMS_flag=0;
			if(Rev_Buf[count+7]==0x53&&Rev_Buf[count+8]==0x4D)//判断该新短信存储的位置是否在SIM卡
			{
				MES_COUNT=Rev_Buf[count+11];//返回该新短信息的序号
			}
			Read_Mes(MES_COUNT);//读取控制指令
		    Del_Mes(MES_COUNT);//删除短信
			Cls_Rebuf();
			delay(10);
			Cls_Rebuf();
			CMD_SHIBIE();//指令识别
			P1_1=1;
			if(TELNUM_OK)//如果电话号码正确
			{	
				TELNUM_OK=0;
				P1_2=1;
				if(CMD==1)
				{
					CMD=0;
					Sent_Mes(CMD_1);
					//delay(2000);
					Cls_Rebuf();
					
				}
				if(CMD==2)
				{CMD=0;
					Sent_Mes(CMD_2);
					Cls_Rebuf();
				}
			
			}
		
		}
		if(alarm==1)
		{
			alarm=0;
			Sent_Mes(alarm_mes);
			delay(10);
			Cls_Rebuf();
		
		}
	}
}

void Ser_Rev() interrupt 4 using 1//中断接收
{
    SELInt_off();
	if(RI==1)
  	RI=0;
	Rev_Buf[Rev_count++]=SBUF;
	if(Rev_count==16)
	{	
		for(i=0;i<16;i++)
		{
			if(Rev_Buf[i]==0x43&Rev_Buf[i+1]==0x4D&Rev_Buf[i+2]==0x54&Rev_Buf[i+3]==0x49)
			{	P1_1=0;
				NewSMS_flag=1;//置位新短信标志位
				count=i;	//返回新短信索引号
			}	
		}
	}

	if(Rev_count==Rev_BufSIZE+1)
		Rev_count=0;
	SELInt_on();
	
}

void EINT_SEND() interrupt 0 using 1
{
	
	alarm=1;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -