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

📄 gsm.lst

📁 单片机控制GSM模块(发短信
💻 LST
字号:
C51 COMPILER V8.05a   GSM                                                                  03/24/2009 10:29:07 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE GSM
OBJECT MODULE PLACED IN gsm.OBJ
COMPILER INVOKED BY: D:\Program Files\keil c51 v8.05\C51\BIN\C51.EXE gsm.c COMPACT BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg52.h>
   2          sbit key1=P3^3;//按钮
   3          unsigned int rsl;//接收字符串长度
   4          unsigned char *q;//发送数组指针
   5          unsigned char cmgs;//发送的字节数
   6          //code的用法因为你定义的数据是常量,放在DATA或XDATA区中浪费了,故被定位在CODE(就是程序存储器)区内。
   7          unsigned char callno[]="ATDT15816916909;";//发送的字符串
   8          unsigned char msmorder[]="AT+CMGS=21";
   9          unsigned char msm[140];
  10          unsigned char rsbuf;
  11          unsigned char rspoint,z;//接收数组下标+接收数组开关
  12          void sendmassage();//发短信
  13          void call();//打电话
  14          void scankey1();  //扫描按钮
  15          void delay(int);  //粗略延时 
  16          void ser();               //串口中断
  17          void sendtogsm(unsigned char,int);//发送字符串
  18          void sendasc(unsigned char);//发送一个ASCII码
  19          void sendenter();//发送回车
  20          
  21          
  22          main()
  23          {       
  24   1      //----------串口通信初始化开始------------------
  25   1              PCON=0x80;//设置波特率为19200  若想变成9600删除此行即可
  26   1              TMOD=0x20;//设置定时器1为方式2
  27   1              TH1=0xfd;//设置波特率
  28   1              TL1=0xfd;
  29   1              TR1=1;
  30   1              REN=1;//打开串口通信            
  31   1              SM0=0;
  32   1              SM1=1;
  33   1              EA=1;
  34   1              ES=1;
  35   1              z=0;
  36   1              rspoint=0;
  37   1      //---------串口通信初始化结束-------------------                
  38   1      
  39   1              while(1)
  40   1                      {
  41   2                              scankey1();                     
  42   2                      }
  43   1      }
  44          
  45          //------------扫描按键是否按下------------------
  46          void scankey1()
  47          {
  48   1              if (key1==0)
  49   1                      {
  50   2                              delay(6000);
  51   2                                      if (key1==0)
  52   2      
  53   2                                      {
  54   3                                              
  55   3                                              sendmassage();
C51 COMPILER V8.05a   GSM                                                                  03/24/2009 10:29:07 PAGE 2   

  56   3                                              delay(20000);
  57   3                                      }
  58   2      
  59   2                      }       
  60   1      }
  61          
  62          //---------------粗糙延时-----------------------
  63          void delay(int x)
  64          {
  65   1              int i;
  66   1              for (i=0;i<=x;i++);
  67   1      }
  68          //-------串口中断+串口数据接收-----------
  69          void ser() interrupt 4 using 1
  70          {       
  71   1                      RI=0;
  72   1                      if(SBUF=='~')
  73   1                      {
  74   2                              z=1;
  75   2                      }
  76   1                      if(SBUF=='!')
  77   1                      {
  78   2                              rspoint=0;
  79   2                              z=0;
  80   2                      }
  81   1                      if(z==1)
  82   1                      {
  83   2                              msm[rspoint]=SBUF;
  84   2                              rspoint++;
  85   2                      }
  86   1                      
  87   1      }
  88          
  89          //-----------发送一个ASCII码----------------
  90          void sendasc(unsigned char asc)
  91          {
  92   1              bit es;
  93   1              es=ES;
  94   1              ES=0;
  95   1              TI=0;
  96   1              SBUF=asc;
  97   1              while(!TI);
  98   1              TI=0;
  99   1              ES=es;
 100   1      }
 101          
 102          //---------------------------发送字符串------------------------------------
 103          void sendtogsm(unsigned char *p,int L)//1、字符串数组   2、字符串长度
 104          {
*** WARNING C235 IN LINE 104 OF GSM.C: parameter 1: different types
 105   1              while (L--)
 106   1                      {
 107   2                              sendasc(*p++);
 108   2                      }
 109   1      }
 110          //---------------------发送字符串去首字符---------------------------------
 111          void sendtogsmno1(unsigned char *p,int L)//1、字符串数组   2、字符串长度
 112          {
 113   1              p++;
 114   1              while (L--)
 115   1                      {
 116   2                              sendasc(*p++);
C51 COMPILER V8.05a   GSM                                                                  03/24/2009 10:29:07 PAGE 3   

 117   2                      }
 118   1      }
 119          //-----------------发短信-----------------------
 120          void sendmassage()
 121          {
 122   1                      int i;
 123   1                      sendtogsm(msmorder,sizeof(msmorder)-1);
 124   1                      sendenter();
 125   1                      for(i=0;i<10000;i++) delay(50000);//接收<符号
 126   1                      q=&msm[1];
 127   1                      sendtogsm(q,sizeof(msm)-1);
 128   1                      sendasc(26);    
 129   1      }
 130          
 131          
 132          //-----------------打电话-----------------------
 133          void call()
 134          {
 135   1              sendtogsm(callno,sizeof(callno)-1);
 136   1              sendenter();
 137   1                      
 138   1      }
 139          
 140          //-------------------发送回车---------------------
 141          void sendenter()
 142          {
 143   1              sendasc(13);//传送回车
 144   1              sendasc(10);                    
 145   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    335    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =    177       6
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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