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

📄 main.lst

📁 输出视频的字符的软件
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.02b   MAIN                                                                 06/20/2006 18:46:35 PAGE 1   


C51 COMPILER V7.02b, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE main.c DEBUG OBJECTEXTEND

stmt level    source

   1          /*--------------------------------------*/
   2          //
   3          //    this program is for message receiveing module,including three subroutine:
   4          //    RS485, MB90092,FLASH-S29gl032/64m
   5          //
   6          //
   7          /*
   8                   注意事项:
   9                   1,一天不能够给同一个用户超过16条信息,否则
  10                   系统存储会出错;
  11                   2,允许的房号编码不能超过32,否则系统会出错;
  12                   3,系统发布信息时候,时间信息必须是真实的,
  13                   如果时间信息有错误,会导致系统出错;
  14          
  15          标准的发送演示:
  16          06 B0 F0 01 01 0C 30 36 2D 30 31 2D 30 31 A0 B0 C0 D0 16
  17          
  18          */
  19          /*----------------------------------------------------------------*/
  20          #include "defineh.h"
  21          #include "sbitdef.h"
  22          #include "main.h"
  23          /*-----------------------------------------*/
  24          extern void Init_MB90092(void);
  25          extern void Save_Message_Flash(void);
  26          extern void init_timer0(void);
  27          extern void save_homemessage(void);
  28          extern void message_treat(void);
  29          extern void clr_timer2(void);
  30          extern void init_timer2(void);
  31          extern void Chip_Erase_Op(void);
  32          extern void delays60ms();
  33          extern void txstart(void);
  34          extern void Clr_Rx();
  35          extern bit Read_ID_Op();
  36          extern void Sector_Erase_Op(ulong write_address);
  37          
  38          
  39          extern void save_infomessage();   //test
  40          /*-----------------------------------------------*/
  41          void init_timer(void)
  42          {
  43   1       SCON=0x50;    //方式1 ,10位异步收发无效验位
  44   1       PCON=0x80;
  45   1       ES=1;
  46   1       TMOD=0x21;    //定时器0工作方式1,16位定时,定时器1工作方式2作串口波特率发生器
  47   1       #if CRYSTALOID     //1为12MHZ,RS485enable  is low(receive)
               {
                 TH1=0xf3;     //波特率为4800   12MHZ
                 TL1=0xf2;
               }
               #else          //0为11.0592MHz, RS485enable  is high(receive)
  53   1       {
  54   2         TH1=0xf4;     //波特率为4800,11.0592MHZ
  55   2         TL1=0xf4;
C51 COMPILER V7.02b   MAIN                                                                 06/20/2006 18:46:35 PAGE 2   

  56   2       }
  57   1       #endif
  58   1      
  59   1       TR1=1;
  60   1       IT1=1;
  61   1       EA=1;
  62   1      }
  63          /*------------------------------------------*/
  64          /*
  65          void watchdog(void)   // wdt time=40ms
  66          {
  67           WDT_CON=0X10;
  68            _nop_();
  69           WDT_CON=0X26;  //FOR 2.5S WDT-TIMER
  70          }
  71          */
  72          /*------------------------------------------*/
  73          void Check_Home_Type()
  74          {
  75   1          if(*(info_buffer+2)&0xf0==0)
  76   1               {
  77   2            kindBYTE=FALSE;
  78   2                }
  79   1           else 
  80   1               {
  81   2                kindBYTE=TRUE;             //saving-energy type =0
  82   2                }
  83   1      }
  84          /*------------------------------------------*/
  85          void init_Mcu(void)
  86          {
  87   1           MbCE       = valid;
  88   1           MBSIM      = valid;
  89   1           MBSCLK     = valid;
  90   1               CNTRL      =invalid;
  91   1           mRs485G    = receive;
  92   1           LEDY       =DARK;   //not bright the work lamp  test
  93   1      }
  94          /*-------------------------------------------*/ 
  95          /*-------------------------------------------*/
  96          
  97          void  init_var(void)
  98          {
  99   1          Rx_count=0;             /*接收数据计数器*/
 100   1          Rx_bit=0;               /*接收完毕标志*/
 101   1          Rxrun_bit=0;            /*接收数据标志,作定时用,超时接收退出*/
 102   1          Rx_sum=0;
 103   1      
 104   1              timeout0=0;
 105   1          timeout2=0;
 106   1       
 107   1          EnWork_bit=0;               /*now on work*/
 108   1          inspectBIT=0;    //inspect symbol
 109   1          inringBIT=0;  //ring symbol
 110   1          intalkingBIT=0;  //in talking symbol
 111   1      
 112   1           kindBYTE=1;          /*defaulse intelligent home-machine*/
 113   1           intalkingBIT=0;//通话标志位  1 为门口机和(用户或管理机)使用
 114   1      
 115   1          ProgramOkFlag=TRUE;
 116   1              count_copy=0;
 117   1              
C51 COMPILER V7.02b   MAIN                                                                 06/20/2006 18:46:35 PAGE 3   

 118   1      }
 119          /*---------------------------------------------*/
 120          void main()
 121          {
 122   1      uchar data i,j;
 123   1      uchar xdata *m;
 124   1      
 125   1         info_buffer=&Rx_buffer[0];
 126   1         init_var();
 127   1         init_Mcu();
 128   1         Init_MB90092();
 129   1         Clr_Rx();
 130   1         init_timer();
 131   1      
 132   1         RESET=0;               
 133   1         _nop_();
 134   1         _nop_();
 135   1         RESET=1;
 136   1      
 137   1           AUXR=0X03;
 138   1               P1=0x01;
 139   1              for(i=0;i<16;i++)
 140   1                      {
 141   2                              m=i*0x1000;
 142   2                              j=*m;
 143   2                      if(j!=0xff)
 144   2                                  {
 145   3                              ProgramOkFlag=FALSE;
 146   3                                  }
 147   2                       }
 148   1              AUXR=0X00;
 149   1      
 150   1          if(!ProgramOkFlag)
 151   1                      {
 152   2                               LEDY=0;
 153   2                   Chip_Erase_Op();
 154   2                   for(i=0;i<0x1f;i++)
 155   2                         {
 156   3                     delays60ms();
 157   3                                 }
 158   2                              LEDY=1;
 159   2                          }
 160   1      
 161   1      //        watchdog();               //暂时屏蔽
 162   1      
 163   1       for(;;)
 164   1       {
 165   2      //    WDT_CON=0X36;  //FOR 2.5S WDT-TIMER
 166   2      
 167   2              if(Rx_bit)
 168   2                      {
 169   3                      if((*(info_buffer+1)==SINGLEINFO)||(*(info_buffer+1)==ALLINFO))  //门口机发特定短信息,用应答
 170   3                              {
 171   4                     save_homemessage(); 
 172   4                                 Save_Message_Flash();
 173   4                               }
 174   3      
 175   3      
 176   3                   else if(*(info_buffer+1)==HOMEGETINFO)       //提取信息
 177   3                                {
 178   4                                  if(EnWork_bit)
 179   4                                          {
C51 COMPILER V7.02b   MAIN                                                                 06/20/2006 18:46:35 PAGE 4   

 180   5                           Clr_Rx();
 181   5                                           }
 182   4                                    else
 183   4                                               {
 184   5      //wait door answered home for 4s, then the message module
 185   5      //answer the home that the line FREE,AND BEGIN MESSAGE OPERATING
 186   5                                               Check_Home_Type();
 187   5                                               save_homemessage();
 188   5                                               Clr_Rx();
 189   5                           init_timer2(); //begin check main-door answer for 4s
 190   5                                               while((timeout2<0x64)&&(EnWork_bit==0))
 191   5                                                 {
 192   6                                                 if(Rx_bit==1)
 193   6                                                    {
 194   7                                                     if((Rx_count==15)&&(*(info_buffer+1)==MAINBACK))
 195   7                                                            {
 196   8                                                             EnWork_bit=1;
 197   8                                                         Clr_Rx();
 198   8                                                             }
 199   7                                                      else
 200   7                                                             {
 201   8                                                             Clr_Rx();

⌨️ 快捷键说明

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