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

📄 led.c

📁 采用AYG-59C GSM MODEM模块
💻 C
字号:
/***********************************
*MCU:AT89S51
*Freq:12M
.edit Tab:4
driver:ht1621
**********************************/
  //=============================================================
//OCMJ8X15D触摸屏中断程序
//当触摸事件发生时模块产生中断经INT脚输出信号触发MCU的外部中断0
//=============================================================
//=============================================
//=============================================
#include <reg52.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h> 
#include <math.h>
#include <intrins.h>
#include <absacc.h>
//#include "malloc.h"



#define uchar        unsigned char
#define uint         unsigned int
//=============================================

 /**************************************************************************************************\
 * 短信控制处理:                                                                                   *
 * 1、初始化串口(不会写)                                                                          *
 * 2、初始化GSM模块,主要是为了设定消息接受模式,一般英文TEXT足够,PDU用于中文编码                  *
 * 3、读取消息,通过指令“AT+CMGR=1”读取SIM卡位置为1的消息                                        *
 * 4、串口收发不是很懂,随便写了一下,好像要用到定时器和中断的start_timer0();close_timer0();都没有写*
 \**************************************************************************************************/


unsigned char code Command_At[4] = "AT\r\0";   
unsigned char code Command_Cmgf[11] = "AT+CMGF=1\r\0";
unsigned char code Command_Cmgd[11] = "AT+CMGD=1\r\0"; 
unsigned char code Command_Cmgr[11] = "AT+CMGR=1\r\0";

void delay1 (int ms)
{
  int i,j;
  for(i=0;i<ms;i++)
    for(j=0;j<123;j++);
}
//=================================

 //=============================================





uchar *pTBuf;
uchar *SaveRBuf;
uchar RBuf[15];
uchar *pRBuf=RBuf;
uchar R_index=0;
uchar command;
bit com_data=0; 
uchar remote_status=0; 

void UartInit(unsigned int BandRate)
{
  TMOD&=0X0F;                           
	TMOD|=0x20;                 /*定时器1作为波特率发生器,工作于方式2,自动8位装载*/
	SCON=0x50;					/*工作方式 1*/
	PCON|=0x80;					/*波特率加倍*/
	TH1=255-57600/BandRate+1;;		/*按波特率计算初值  TH1=256-F*(SMOD+1)/(384*Band)=256-57600/Band*/
	TL1=TH1;
	TR1=1;
  EA=1;
  ES=1;
}



uchar func(uchar i)
{
if((SaveRBuf-RBuf-i)<0) SaveRBuf=SaveRBuf+15;
if((SaveRBuf-RBuf-i)>=15) SaveRBuf=SaveRBuf-15;
return *(SaveRBuf-i);
 
}
//uchar *tab
void send_command(uchar code *com)
{
   int i=0;
   com_data=0;
    while(1)
   {
   pTBuf=com;
   SBUF='1';
   delay1(500);
  //     for(i=0;i++;i<9)
 //    show_num(RBuf[i],i);
  //  if(command==2)


     
   if((func(3)=='O')&&(func(2)=='K'))break;

   
    }
    SaveRBuf=RBuf;
    pRBuf=RBuf; 
    command=0;
}


void read_SMS ()
{
    com_data=1;
    while(1)
    {
    pTBuf=Command_Cmgr;
    SBUF='1';
    delay1(500);

  //  if((SaveRBuf-RBuf)<2)
  if((func(3)=='O')&&(func(2)=='N')) {remote_status=1;break;}
  if((func(4)=='O')&&(func(3)=='F')&&(func(2)=='F')) {remote_status=2;break;}
  if((func(3)=='T')&&(func(2)=='+')) {remote_status=3;break;}
  if((func(3)=='T')&&(func(2)=='-')) {remote_status=4;break;}
  if((func(3)=='H')&&(func(2)=='+')) {remote_status=5;break;}
  if((func(3)=='H')&&(func(2)=='-')) {remote_status=6;break;}
  if((func(5)=='A')&&(func(4)=='U')&&(func(3)=='T')&&(func(2)=='O')) {remote_status=7;break;}
 
    SaveRBuf=RBuf;
   pRBuf=RBuf; 
  command=0;
 //   else return 0;
    }
}
 void main(void)
 {
   int i; 
  // SP=0x60;
    UartInit(6000);

   send_command(Command_At);

   send_command(Command_Cmgf);
   for(i=0;i<10;i++)
   send_command(Command_Cmgd);
   read_SMS();
   while (1);
 }

void receive(void)
{
RI=0;
*pRBuf=SBUF;
if (*pRBuf==0x0a){command++;}
if((com_data)&&(command==3))SaveRBuf=pRBuf; 
if((!com_data)&&(command==2))SaveRBuf=pRBuf;  
if(R_index==15){R_index=0;pRBuf=RBuf;}
else

{pRBuf++;R_index++;}


}

void send(void)
{
TI=0;
if(*pTBuf!=0)
{
SBUF=*pTBuf;

pTBuf++;


}
}
 void UART(void)interrupt 4
 {
 if(RI==1){receive();return;}
 if(TI==1){send();  return;}
 }
  

⌨️ 快捷键说明

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