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

📄 410rt.lst

📁 GSM通信系统的软件设计
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   410RT                                                                 04/05/2008 12:08:22 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE 410RT
OBJECT MODULE PLACED IN 410rt.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 410rt.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <c8051F410.h>
   2          #include <string.h>
   3          #define uchar unsigned char
   4          #define uint unsigned int
   5          #define buf_len 120
   6          #define SYSCLK 24500000                 
   7          #define uart_rate 9600                  
   8          
   9          #define C_TMR1 -((SYSCLK/48)/2)/uart_rate
  10          #define C_TMR0 -((SYSCLK/48)/1000)*20
  11          /*
  12          struct location
  13          {
  14              uchar high;
  15                  uchar low;
  16          }location;
  17          */
  18          sbit TC35_IGT = P1^6;
  19          sbit TC35_PD = P1^5;
  20          sbit PC_using=P2^6;
  21          
  22          void ENA_WDT (void);
  23          void SYSCLK_Init (void);
  24          void GSM_PORT_Init (void);
  25          void CKCON_Init (void);
  26          void Uart0_Init (void);
  27          void Port_Init (void);
  28          
  29          void GSM_Init (void);
  30          void delay_20ms (void);
  31          
  32          void transmitte (void);                           //send information
  33          void Read_sms(void);              //read a message
  34          void Process_sms(void);                              //process a message;
  35          void Send_sms(void);                                 //send a message;
  36          void Del_sms(void);                                  //delete a message
  37          void ini_buf(void);                                  //initial rec_buff  put_buf=get_buff;
  38          void addbuffer(void);                                //add buffer;
  39          uchar getbuffer(void);                               //get from buffer;
  40          
  41          uchar code tr_buf[] = {"atd13488716723;\r\0"};
  42          //uchar code del_msm[]={"AT+CMGD=10\r\0"};       //删短信
  43          uchar code sd_ms[]={"AT+CMGS=\""};       //发信息
  44          uchar code pho[]={"13488716723"};           //管理员号码
  45          uchar data loca[12]={"AT+CMGR="};          //接信息
  46          uchar xdata rec_buf[buf_len];              //循环数组
  47          uchar xdata *get_pt=rec_buf;               //循环数组操作指针
  48          uchar xdata *put_pt=rec_buf;               //循环数组加数值指针
  49          uchar *data tr_point;                       //发送指针  
  50          uchar xdata privacy[]={"123456 \0"};        //校验密码
  51          uchar xdata content[30];                   //存储管理员发来的信息
  52          //uchar xdata content1[]="";               //存储管理员发来的信息
  53          
  54          uchar data alarms[32]="";                  //要发的警报信息
  55          uchar data send_buff[25]="AT+CMGS=\"";    //发送缓冲区        
C51 COMPILER V7.06   410RT                                                                 04/05/2008 12:08:22 PAGE 2   

  56          
  57          bit     TRANS_NEXT_BYTE_OK=0;
  58          bit Recving_SMS=0;          //正在接受短信
  59          bit SMS_EN=0;               //来短信头已接完;
  60          bit IS_sending=0;           //正在发送信息
  61          bit SMS_OK=0;               //消息内容已接完
  62          bit CM_CMD=0;               //content已接到管理员的信息,通知主机取值
  63          bit DEL_MS=0;               //删除短信
  64          bit ALARM=0;               //有报警
  65          bit CSD=0;                //标记 发送AT+CMGS="13488716723"<cr>后 接受到'>'
  66          uint Rec_status=0;           //switch 接收状态
  67          unsigned int  num=0;                  //接受消息头+CMTI: ,"SM",1的计数;
  68          uchar temp;                 //接收媒介;
  69          void main (void) 
  70          {
  71   1      
  72   1              ENA_WDT ();
  73   1              GSM_PORT_Init ();
  74   1              SYSCLK_Init ();
  75   1              CKCON_Init ();
  76   1              Uart0_Init ();
  77   1              Port_Init ();
  78   1      
  79   1              GSM_Init ();
  80   1      
  81   1      //      tr_point = tr_buf;
  82   1      
  83   1      //      TRANS_NEXT_BYTE_OK = 1;
  84   1      
  85   1              ES0 = 1;
  86   1      
  87   1              EA = 1;
  88   1         // loca[0]='1';
  89   1        //  loca[1]='9';
  90   1       //   test
  91   1        //  DEL_MS=1;
  92   1              IS_sending=0; 
  93   1              PC_using=0;
  94   1      ///     ALARM=1;
  95   1              while (1)
  96   1              {
  97   2            if(!PC_using)
  98   2            {
  99   3                      if (TRANS_NEXT_BYTE_OK) transmitte ();
 100   3              
 101   3                      if (SMS_EN) Read_sms();       //read a message 
 102   3              if (SMS_OK) Process_sms();
 103   3              //      if (CM_CMD) ;            //加主机调用函数;  
 104   3              if (DEL_MS) Del_sms();          //del a message
 105   3              //if(! Recving_SMS&&ALARM)Send_sms();
 106   3            } 
 107   2              }
 108   1      }
 109          
 110          void GSM_Init (void)
 111          {
 112   1              uchar data i;
 113   1              TMOD |= 0x01;                           //定时器0为模式1,16位
 114   1              TC35_IGT = 0;
 115   1              delay_20ms ();
 116   1              TC35_IGT = 1;
 117   1              delay_20ms ();
C51 COMPILER V7.06   410RT                                                                 04/05/2008 12:08:22 PAGE 3   

 118   1              TC35_IGT = 0;
 119   1              for (i=0;i<6;i++) delay_20ms ();
 120   1              TC35_IGT = 1;
 121   1              TR0 = 0;
 122   1              while (!TC35_PD);
 123   1              while (TC35_PD);
 124   1              while (!TC35_PD);
 125   1      }
 126          
 127          void delay_20ms (void)
 128          {
 129   1              TR0 = 0;
 130   1              TH0 = C_TMR0 >> 8;                      //设置定时器0的初始值,
 131   1              TL0 = C_TMR0;   
 132   1              TR0 = 1;                                        //启动定时器0
 133   1              TF0 = 0;
 134   1              while (!TF0);
 135   1      }
 136          
 137          void SYSCLK_Init (void)
 138          {
 139   1              OSCICN |= 0x07;                         //24500000hz
 140   1      }
 141          
 142          void GSM_PORT_Init (void)
 143          {
 144   1              XBR1 |= 0x80;                           //关闭弱上拉 
 145   1      }
 146          
 147          void Port_Init (void)
 148          {  
 149   1              XBR1 |= 0x40;                           //使能交叉矩阵,弱上拉 
 150   1      }
 151          
 152          void ENA_WDT (void)
 153          {
 154   1              PCA0MD &= ~0x40;
 155   1      }
 156          
 157          void CKCON_Init (void)
 158          {   
 159   1              CKCON |= 0x02;                          //定时器1和2的触发时钟为 sysclk/48
 160   1      }
 161          
 162          void Uart0_Init (void)
 163          {
 164   1              SCON0 = 0x50;                           //8位数据,允许接收
 165   1              XBR0 |= 0x01;                           //uart的tx,rx分配至p0.4及p0.5 
 166   1              P0MDOUT |= 0x10;                        //uart的tx为推挽输出 
 167   1              TMOD |= 0x20;                           //定时器1为模式2,8位自动重装
 168   1              TH1 = C_TMR1;                           //设置定时器1的重装值,
 169   1              TL1 = C_TMR1;
 170   1              TR1 = 1;                                        //启动定时器1
 171   1              ES0 = 1;                                        //允许UART中断
 172   1      }
 173          
 174          void Uart0_ISR (void) interrupt 4
 175          {
 176   1              if (RI0)
 177   1              {
 178   2                      RI0 = 0;
 179   2              switch(Rec_status)
C51 COMPILER V7.06   410RT                                                                 04/05/2008 12:08:22 PAGE 4   

 180   2              {
 181   3                case 0:
 182   3                       temp=SBUF0;
 183   3                       switch(num)
 184   3                       {
 185   4                         case 0:
 186   4                                if(temp=='+') 
 187   4                                {
 188   5                                   ++num;
 189   5                                   Recving_SMS=1;        //index receiving  a message
 190   5                                }else
 191   4                                   num=0;
 192   4                                break;
 193   4                         case 1:
 194   4                                num=(temp=='C') ? ++num : 0;break;
 195   4                         case 2:
 196   4                                num=(temp=='M') ? ++num : 0;break;
 197   4                         case 3:
 198   4                                num=(temp=='T') ? ++num : 0;break;
 199   4                         case 4:
 200   4                                num=(temp=='I') ? ++num : 0;break;
 201   4                         case 5:
 202   4                                num=(temp==':') ? ++num : 0;break;
 203   4                         case 6:
 204   4                               if(temp==',') 
 205   4                                    ++num ;
 206   4                               break;
 207   4                         case 7:
 208   4                                                num++;
 209   4                                                        loca[8]=temp;
 210   4                                break;
 211   4                                         case 8:
 212   4                                                        if(temp!=0x0d)
 213   4                                                        {
 214   5                                                            loca[9]=temp;
 215   5                                                                loca[10]='\r';
 216   5                                                                loca[11]='\0';
 217   5                                                        }
 218   4                                                        else
 219   4                                                        {
 220   5                                                            loca[9]='\r';

⌨️ 快捷键说明

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