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

📄 sms.lst

📁 用C语言编写的GSM-SIM驱动程序包
💻 LST
字号:
C51 COMPILER V8.06   SMS                                                                   12/25/2007 08:55:46 PAGE 1   


C51 COMPILER V8.06, COMPILATION OF MODULE SMS
OBJECT MODULE PLACED IN SMS.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE SMS.c BROWSE MODDP2 DEBUG OBJECTEXTEND

line level    source

   1          /*************************************************
   2          文件名:SMS.C
   3          功 能:与短信相关的代码
   4          *************************************************/
   5          #include <W77C32.h>
   6          #include "hal.h"
   7          #include "SMS.h"
   8          
   9          //发送AT命令
  10          void SENDCMD(uchar cmdlen,uchar *cmd)
  11          {uchar i=0;
  12   1       for(;cmdlen>0;cmdlen--)
  13   1           {SBUF=cmd[i++];
  14   2                while(TI==0);
  15   2                TI=0;
  16   2                }
  17   1       }
  18          
  19          //发送一个字符
  20          void SENDCHAR(uchar c)
  21          { SBUF=c;
  22   1        while(TI==0);
  23   1        TI=0;
  24   1        }
  25          
  26          //获得发送手机的号码和数据
  27          void GETNUMBER_DATA(void)
  28          {uint i;
  29   1       for(;rcount>0;rcount--)
  30   1         {if((rbuff[rcount]==0x38)&&(rbuff[rcount-1]==0x30)&&(rbuff[rcount-2]==0x0A)&&(rbuff[rcount-3]==0x0D))
  31   2          for(i=0;i<14;i++)
  32   2                {number_buff[i]=rbuff[rcount+23+i];
  33   3                 }
  34   2              datalen=(DoubleAscii2Byte(rbuff[rcount+55],rbuff[rcount+56]))*2;
  35   2              for(i=0;i<datalen;i++)
  36   2                {databuff[i]=rbuff[rcount+57+i];
  37   3                 }
  38   2              break;
  39   2              }
  40   1       }
  41          
  42          
  43          //向指定的号码发送短消息(内容为:短信已收到!)
  44          void SENDSMS(void)
  45          {ulong i=0xfffff;
  46   1       rcount=0;//数据缓冲区指针回0
  47   1       SENDCMD(10,&cmgs);
  48   1       SENDCHAR(0x0D);
  49   1       while(rbuff[rcount-1]!=">")
  50   1         {i--;                   //超时返回
  51   2              if(i==0)
  52   2               {return;}
  53   2          }
  54   1       SENDCMD(10,&smsdata0);
  55   1       SENDCMD(14,&number_buff);  //发送号码
C51 COMPILER V8.06   SMS                                                                   12/25/2007 08:55:46 PAGE 2   

  56   1       SENDCMD(20,&smsdata1);
  57   1       SENDCHAR(0x1A);  //Ctrl+z发送短信
  58   1       i=0xffffff;    //发送短消息超时处理
  59   1        while(receive_ok==0)
  60   1          {i--;
  61   2               if(i==0)                //超时还未响应则返回
  62   2                 {rcount=0;
  63   3              receive_ok=0;
  64   3                  return;} 
  65   2                }
  66   1       receive_ok=0;
  67   1       rcount=0;
  68   1       }
  69          
  70          //读取指定索引号的短信内容
  71          void READSMS(void)
  72          {ulong i=0xfffff;
  73   1       rcount=0;
  74   1       SENDCMD(8,&cmgr);
  75   1       SENDCHAR(index_buff[0]);
  76   1       if(index_len==2)
  77   1         {SENDCHAR(index_buff[1]);}
  78   1       SENDCHAR(0x0D);
  79   1       while(receive_ok==0)
  80   1         {i--;
  81   2          if(i==0)             //超时还未响应则返回
  82   2                {rcount=0;
  83   3             receive_ok=0;
  84   3             return;} 
  85   2             }
  86   1       receive_ok=0;
  87   1       }
  88          
  89          //删除指定索引号的短信内容
  90          void DELSMS(void)
  91          {ulong i=0xffff;  
  92   1       rcount=0;
  93   1       SENDCMD(8,&cmgd);
  94   1       SENDCHAR(index_buff[0]);
  95   1       if(index_len==2)
  96   1         {SENDCHAR(index_buff[1]);}
  97   1       SENDCHAR(0x0D);
  98   1        while(receive_ok==0)
  99   1          {i--;
 100   2               if(i==0)                //超时还未响应则返回
 101   2                 {rcount=0;
 102   3              receive_ok=0;
 103   3                  return;} 
 104   2                }
 105   1       receive_ok=0;
 106   1       rcount=0; 
 107   1       }
 108          
 109          //计算短信索引号
 110          void GET_INDEX(void)
 111          {for(;rcount>0;--rcount)
 112   1       if(rbuff[rcount]==0x2C)   //用逗号来定位
 113   1          {if((rbuff[rcount+2]>=0x30)&&(rbuff[rcount+2]<=0x39))
 114   2                  {index_len=2;
 115   3                       index_buff[0]=rbuff[rcount+1];
 116   3                       index_buff[1]=rbuff[rcount+2];
 117   3                       break;
C51 COMPILER V8.06   SMS                                                                   12/25/2007 08:55:46 PAGE 3   

 118   3                       }
 119   2               else 
 120   2                  {index_len=1;
 121   3                       index_buff[0]=rbuff[rcount+1];
 122   3                       break;
 123   3                       }
 124   2                 }
 125   1      
 126   1       }
 127          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    913    ----
   CONSTANT SIZE    =     58    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      17
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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