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

📄 0x01.lst

📁 用RS485通信
💻 LST
字号:
C51 COMPILER V7.06   0X01                                                                  11/04/2008 12:13:20 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE 0X01
OBJECT MODULE PLACED IN 0x01.OBJ
COMPILER INVOKED BY: D:\keil\keil\C51\BIN\C51.EXE 0x01.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include<reg51.h>
   2          
   3          #define uint    unsigned int 
   4          #define uchar    unsigned char
   5          #define pindate P0
   6          sbit RE_DE=P1^3;
   7          sbit MUSIC=P1^0;
   8          sbit YIN=P1^5;
   9          sbit SHI=P1^4;
  10          sbit C=P2^0;
  11          sbit D=P2^1;
  12          sbit X=P2^2;
  13          sbit M=P2^3;
  14          uint R_485;
  15          uchar temp,louhao,fanghao,flag;
  16          uint i,addr;
  17          uchar  call[] = {0xd5,23,1,0}        ;//呼叫数据
  18          uchar  close[] = {0xd5,26,1,0};            //关视频音频
  19          uchar  opendoor[] = {0xd5,24,1,0};       //用户机控制门口机开门数据
  20          uchar  danger[] = {0xd5,22,1,0};          //紧急呼叫
  21          uchar   xying[] = {0xd5,25,1,0};          //有人应答
  22          uchar  xian=0xd6; //空闲
  23          sys_initial()
  24          {pindate=0xff;
  25   1      YIN=0;
  26   1      SHI=0;
  27   1      MUSIC=0;
  28   1      TMOD=0x20;                                 //T1方式2,初值自动恢复
  29   1              TL1=0xfd;                                  //
  30   1              TH1=0xfd;
  31   1      
  32   1              PCON=0x00;                                 //串行口波特率不加倍
  33   1              TR1=1;                                    //开启定时/计数器T1
  34   1              //SCON=0xf8        //串口工作方式3,SM2=1,REN=1允许接收,TB8=1表示主机发送的是地址 主从成功使用
  35   1              SCON=0x50;         //SM2=0,REN=1,TB8=1  
  36   1              //SCON=0xf0;
  37   1      PS=1;
  38   1      //PX1=0;                                  //从主成功使用
  39   1              EA=1;                                      //EA为CPU中断允许控制位,为1开中
  40   1      //      EX0=1;                                     //外中断INTO中断允许控制位,为1开中
  41   1      //      EX1=1;                     //外中断INT1中断允许控制位,为1开中
  42   1         // IT0=0;    
  43   1      //      IT1=0;                  //脉冲触发方式,下降沿有效
  44   1              //P3_5=0;                                          //发送
  45   1              //加上串行口中断开中
  46   1      //      ES=1;                   //串行口中断开中
  47   1              ES=1;
  48   1      }
  49          
  50          void  delay()
  51          {uint i,j;
  52   1      for(i=0;i<1000;i++)
  53   1      {
  54   2      for(j=0;j<100;j++)
  55   2      ;
C51 COMPILER V7.06   0X01                                                                  11/04/2008 12:13:20 PAGE 2   

  56   2      }
  57   1      }
  58          
  59          void sentopendoor( )
  60          {
  61   1      ES=0;
  62   1      RE_DE=1;
  63   1      
  64   1      
  65   1      opendoor[3]=pindate;
  66   1      for(i=0;i<4;i++)
  67   1      {
  68   2      SBUF=opendoor[i];
  69   2      while(!TI);
  70   2      TI=0;
  71   2      
  72   2      }
  73   1      delay();
  74   1      TI=0;
  75   1      
  76   1      SBUF= xian;
  77   1      while(TI!=1);                          
  78   1      TI=0;
  79   1      
  80   1      ES=1;
  81   1      RE_DE=0;
  82   1      }
  83          
  84          void sentclose( )
  85          {
  86   1      ES=0;
  87   1      RE_DE=1;
  88   1      
  89   1      
  90   1      close[3]=addr;
  91   1      for(i=0;i<4;i++)
  92   1      {
  93   2      SBUF=close[i];
  94   2      while(!TI);
  95   2      TI=0;
  96   2      
  97   2      }
  98   1      delay();
  99   1      TI=0;
 100   1      
 101   1      SBUF= xian;
 102   1      while(TI!=1);                          
 103   1      TI=0;
 104   1      
 105   1      ES=1;
 106   1      RE_DE=0;
 107   1      }
 108          
 109          void sentdanger( )
 110          {
 111   1      ES=0;
 112   1      RE_DE=1;
 113   1      
 114   1      
 115   1      danger[3]=addr;
 116   1      for(i=0;i<4;i++)
 117   1      {
C51 COMPILER V7.06   0X01                                                                  11/04/2008 12:13:20 PAGE 3   

 118   2      SBUF=danger[i];
 119   2      while(!TI);
 120   2      TI=0;
 121   2      
 122   2      }
 123   1      delay();
 124   1      TI=0;
 125   1      
 126   1      SBUF= xian;
 127   1      while(TI!=1);                          
 128   1      TI=0;
 129   1      
 130   1      ES=1;
 131   1      RE_DE=0;
 132   1      }
 133          
 134          void sentxying( )
 135          {
 136   1      ES=0;
 137   1      RE_DE=1;
 138   1      
 139   1      
 140   1      xying[3]=addr;
 141   1      for(i=0;i<4;i++)
 142   1      {
 143   2      SBUF=xying[i];
 144   2      while(!TI);
 145   2      TI=0;
 146   2      
 147   2      }
 148   1      delay();
 149   1      TI=0;
 150   1      
 151   1      SBUF= xian;
 152   1      while(TI!=1);                          
 153   1      TI=0;
 154   1      
 155   1      ES=1;
 156   1      RE_DE=0;
 157   1      }
 158          
 159          
 160          main()
 161          { 
 162   1      
 163   1      R_485=0;
 164   1      RE_DE=0;
 165   1      addr=pindate;
 166   1      sys_initial(); //串口初始化
 167   1      while(1)
 168   1      {
 169   2      if(D==0)                    
 170   2      {
 171   3      sentopendoor();
 172   3      
 173   3      }
 174   2      if(C==0)
 175   2      {YIN=1;
 176   3      SHI=1;
 177   3      MUSIC=0;
 178   3      
 179   3      sentxying();
C51 COMPILER V7.06   0X01                                                                  11/04/2008 12:13:20 PAGE 4   

 180   3      
 181   3      }
 182   2      if(X==0)
 183   2      {
 184   3      YIN=0;
 185   3      SHI=0;
 186   3      sentclose();
 187   3      }
 188   2      if(     M==0)
 189   2      {sentdanger();
 190   3      }
 191   2      
 192   2      }
 193   1      }
 194          
 195          
 196          
 197          
 198          
 199          
 200          void serial(void) interrupt 4 using 3
 201          {
 202   1      while(!RI);
 203   1      RI=0;
 204   1      temp=SBUF;
 205   1      if(R_485==0)  //
 206   1      {
 207   2      
 208   2      if(temp==0xd5)   
 209   2      {
 210   3      R_485=1;
 211   3      goto reback;
 212   3      
 213   3      }
 214   2      else if(temp==0xd6)
 215   2      {
 216   3      goto reback;
 217   3      }
 218   2      
 219   2      else
 220   2      {R_485=0;
 221   3      goto reback;
 222   3      }
 223   2      
 224   2      
 225   2      }
 226   1      
 227   1      else if (R_485==1) //
 228   1      {
 229   2      flag=temp;
 230   2      
 231   2      R_485=2;
 232   2      goto reback;
 233   2      }
 234   1      
 235   1      else if (R_485==2) //
 236   1      {
 237   2      louhao=temp;
 238   2      R_485=3;
 239   2      goto reback;
 240   2      }
 241   1      
C51 COMPILER V7.06   0X01                                                                  11/04/2008 12:13:20 PAGE 5   

 242   1      else if (R_485==3)  //接收
 243   1      {
 244   2      fanghao=temp;
 245   2      R_485=0;
 246   2      }
 247   1      
 248   1      if(flag==23) //接收用户ID
 249   1      {
 250   2      if( louhao==1  )
 251   2      {       
 252   3      if(fanghao==addr)
 253   3      { MUSIC=1;
 254   4      MUSIC=1;
 255   4      flag=0;
 256   4      
 257   4      }
 258   3      }
 259   2      }
 260   1      //
 261   1      else if(flag==22)
 262   1      {  
 263   2      if( louhao==1  )
 264   2      {       
 265   3      if(fanghao==addr)
 266   3      { MUSIC=1;
 267   4      YIN=1;
 268   4      SHI=1;
 269   4      flag=0;
 270   4      fanghao=0;
 271   4      louhao=0;
 272   4      MUSIC=0;
 273   4      }
 274   3         }
 275   2      }
 276   1      
 277   1      reback: ;
 278   1      }
 279          
 280          
 281          
 282          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    506    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     31    ----
   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 + -