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

📄 m32.lst

📁 这是用W77E58编写的控制GSM模块
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.50   M32                                                                   04/04/2007 15:01:44 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE M32
OBJECT MODULE PLACED IN m32.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE m32.c BROWSE DEBUG OBJECTEXTEND CODE

line level    source

   1          #include <w77e58.h>
   2          #include "global.h"
   3          #include "io.h"
   4          #include "timer.h"
*** WARNING C258 IN LINE 4 OF TIMER.H: 'd': mspace on parameter ignored
*** WARNING C258 IN LINE 5 OF TIMER.H: 'd': mspace on parameter ignored
   5          #include "serial.h"
   6          #include "m32.h"
   7          
   8          
   9          
  10          extern bit  GPSReady;
  11          bit  AlarmFlag;
  12          
  13          extern bit   GPSav;           //1 = A
  14          bit GPSTimerReq;
  15          extern UINT16   idata   GPSTimer30;
  16          
  17          #define _1_SEC         35
  18          #define _2_SEC         70
  19          #define _5_SEC         150
  20          #define _10_SEC        300
  21          #define _30_SEC        900
  22          
  23          
  24          
  25          //用户信息编码方式 
  26          #define GSM_7BIT        0 
  27          #define GSM_8BIT        4 
  28          #define GSM_UCS2        8      
  29          
  30          
  31          
  32          char xdata SCA[16];                  // 短消息服务中心号码(SMSC地址)     
  33          char xdata TPA[16];                  // 目标号码或回复号码(TP-DA或TP-RA) 
  34          char xdata TP_PID;                   // 用户信息协议标识(TP-PID)     
  35          char xdata TP_DCS;                   // 用户信息编码方式(TP-DCS)     
  36          char xdata TP_SCTS[16];              // 服务时间戳字符串(TP_SCTS), 接收时用到     
  37          char xdata TP_UD[161];               // 原始用户信息(编码前或解码后的TP-UD)     
  38          int xdata  index;                   // 短消息序号,在读取时用到 
  39          int xdata  PhoneNumber;              //存电话号码用
  40          
  41          
  42          
  43          char xdata cmd[16];                       // 命令串     
  44          char xdata pdu[256];                      // PDU串     
  45          char xdata ans[256];                      // 应答串     
  46          
  47          char idata gsm_task;
  48          //int  aLength;
  49          extern uchar     idata  SysTimer;
  50          extern uchar     xdata  JWDMode;
  51          extern UINT32    xdata  Speed;
  52          extern UINT32    xdata  LonDeg,LonMin1,LonMin2,LatDeg,LatMin1,LatMin2;
  53          extern UINT32    xdata  xYear,xMonth,xDay;
C51 COMPILER V7.50   M32                                                                   04/04/2007 15:01:44 PAGE 2   

  54          extern UINT32    xdata  xHour,xMin,xSec;
  55          
  56          
  57          int gsmSearchPhone(uchar* flag);  
  58          
  59          int gsmString2Bytes(uchar* pSrc, uchar* pDst, int nSrcLength); 
  60          int gsmEncodePdu(char xdata* pDst);   //pDst=pdu;
  61          //void gsmGreateSmsHD(void);           //SMS header
  62          
  63           
  64          void ClearBuf(uchar* Buff,int size)
  65          {
  66   1               int xdata i;
  67   1                       for(i=0;i<size;i++)
  68   1                       {
  69   2                  
  70   2                         Buff[i]=0;
  71   2                       }
  72   1      
  73   1      }
  74          
  75          
  76          
  77          void ATSend(uchar* puts)
  78          {
  79   1           
  80   1            for (;*puts!=0;puts++)   //遇到停止符0结束
  81   1            {
  82   2                    putbyte(*puts);
  83   2                getUartWait();
  84   2                    //getbyte();
  85   2                        //putbyte1(getbyte());
  86   2                      
  87   2                }
  88   1            ClearBuf(ans,256);             
  89   1               
  90   1      }
  91          
  92          
  93          void gsmInitPhoneBook(void)
  94          {
  95   1      
  96   1              ATSend("AT+CPBS=\"SM\"\r");  //SIM 卡作为电话簿存储体。
  97   1              PhoneNumber = 1;
  98   1              
  99   1      
 100   1      }
 101          
 102          
 103          
 104          #if 1
 105          BOOL gsmSavePhone(uchar* phone,uchar* flag)
 106          {
 107   1      
 108   1             int xdata n;
 109   1             uchar xdata* ptr;
 110   1             ClearBuf(ans,256);  
 111   1             sprintf(ans,"AT+CPBW=");
 112   1           
 113   1           #if 1  
 114   1             sprintf(cmd,"%d",PhoneNumber);
 115   1                 strcat(ans,cmd);
C51 COMPILER V7.50   M32                                                                   04/04/2007 15:01:44 PAGE 3   

 116   1           #endif  
 117   1             
 118   1             strcat(ans,",\"");
 119   1             strcat(ans,phone);
 120   1             strcat(ans,"\",129,\"");
 121   1             strcat(ans,flag);
 122   1             strcat(ans,"\"\r");
 123   1             putstring1(ans);
 124   1                 putstring1("\r\n");
 125   1                 
 126   1             ATSend(ans); 
 127   1             
 128   1                 ReadSerail(ans, 128, &n,5);  
*** WARNING C214 IN LINE 128 OF M32.C: 'Argument': conversion: pointer to non-pointer
 129   1             if((ptr=strstr(ans,"+CME ERROR:"))== NULL)
 130   1             {
 131   2             
 132   2                     return TRUE;        
 133   2                 }
 134   1             else
 135   1             {
 136   2                 return FALSE;
 137   2             }
 138   1      
 139   1      
 140   1      }
 141          #endif
 142          
 143          
 144          #if 1
 145          BOOL gsmDeletePhone(int index)
 146          {
 147   1            int xdata i,n;      
 148   1                sprintf(cmd,"AT+CPBW=");
 149   1            sprintf(ans,"%d",index);
 150   1                strcat(cmd,ans);
 151   1            strcat(cmd,"\r\n");
 152   1           
 153   1                ATSend(cmd);
 154   1                ReadSerail(ans, 120, &n,5);  
*** WARNING C214 IN LINE 154 OF M32.C: 'Argument': conversion: pointer to non-pointer
 155   1                if((strstr(ans,"OK")) != NULL) return TRUE;
 156   1                return FALSE; 
 157   1      
 158   1      }
*** WARNING C280 IN LINE 147 OF M32.C: 'i': unreferenced local variable
 159          #endif
 160          
 161          #if 1
 162          int gsmSearchPhone(uchar* flag)  
 163          {
 164   1          
 165   1             int xdata n;
 166   1             uchar xdata* ptr;
 167   1             ClearBuf(ans,256);  
 168   1             sprintf(ans,"AT+CPBF=\"");
 169   1             strcat(ans, flag);                      
 170   1                 strcat(ans,"\"\r\n");
 171   1             ATSend(ans); 
 172   1             ReadSerail(ans, 256, &n,5);  
*** WARNING C214 IN LINE 172 OF M32.C: 'Argument': conversion: pointer to non-pointer
 173   1             if((ptr=strstr(ans,"+CPBF: ")) != NULL)
C51 COMPILER V7.50   M32                                                                   04/04/2007 15:01:44 PAGE 4   

 174   1                 {
 175   2                 //putstring1(ptr);
 176   2                 //putstring1("\r\n");
 177   2                 ptr +=6;
 178   2                         sscanf(ptr, "%d", &n);
 179   2                   
 180   2                 return n;        
 181   2      
 182   2                 }
 183   1             else
 184   1                 {
 185   2                        return 0;
 186   2             }
 187   1      }
 188          #endif
 189          
 190          
 191          uchar* gsmCheckRightNumber(uchar* text,BOOL phone)       //phone=1,get phone number to SCA;else cmp SCA an
             -d TPA.
 192          {
 193   1             int xdata i,n;
 194   1             uchar xdata Number[16];
 195   1             uchar xdata * ptr;
 196   1             
 197   1                 sprintf(ans,"AT+CPBF=\"");
 198   1             strcat(ans, text);                      
 199   1                 strcat(ans,"\"\r\n");
 200   1             strcpy(cmd,ans);
 201   1                 putstring1("cmd:\r\n"); 
 202   1                 putstring1(cmd); 
 203   1                 putstring1("\r\n"); 
 204   1                 i=5;
 205   1                 while(i--)
 206   1                 {
 207   2                 
 208   2                    ATSend(cmd); 
 209   2                ReadSerail(ans, 256, &n,5);  
*** WARNING C214 IN LINE 209 OF M32.C: 'Argument': conversion: pointer to non-pointer
 210   2                if((ptr=strstr(ans,"+CPBF: ")) != NULL) break;
 211   2                    else
 212   2                if(strstr(ans,"RING") != NULL) return 0;;
 213   2      
 214   2             } 
 215   1                
 216   1                 if(i==0)return 0;
 217   1                 
 218   1                 while(1)
 219   1             {    
 220   2                 ATSend(cmd); 
 221   2                 ReadSerail(ans, 256, &n,5);  
*** WARNING C214 IN LINE 221 OF M32.C: 'Argument': conversion: pointer to non-pointer
 222   2                     putstring1("ans=:\r\n"); 
 223   2                     putstring1(ans); 
 224   2                     putstring1("\r\n"); 
 225   2                 if((ptr=strstr(ans,"+CPBF: ")) != NULL)
 226   2                     {   
 227   3                            ptr +=6; //skip [+CPBF ]
 228   3                            if((ptr=strstr(ptr,",\"")) != NULL)
 229   3                            {
 230   4                           if(strncpy(Number,ptr,16) != NULL)  
 231   4                       {
 232   5                           for(i=0;i<16;i++)
C51 COMPILER V7.50   M32                                                                   04/04/2007 15:01:44 PAGE 5   

 233   5                          {
 234   6                            if((Number[i]=='\"') && (Number[i+1]==','))   
 235   6                                            {
 236   7                                                    Number[i]=0;    //第二个"后面清0;
 237   7                                        
 238   7                                                        Number[0]=TPA[0];
 239   7                                Number[1]=TPA[1];
 240   7                                                                      
 241   7                                                        putstring1("Number=:\r\n"); 
 242   7                                            putstring1(Number); 
 243   7                                                putstring1("\r\n"); 
 244   7                                              
 245   7                                                        putstring1("TPA=:\r\n"); 
 246   7                                            putstring1(TPA); 

⌨️ 快捷键说明

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