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

📄 slavedevice.lst

📁 零基础单片机C语言设计全套教程
💻 LST
字号:
C51 COMPILER V8.08   SLAVEDEVICE                                                           08/31/2008 15:11:53 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE SLAVEDEVICE
OBJECT MODULE PLACED IN SlaveDevice.OBJ
COMPILER INVOKED BY: C:\Program Files\keil\C51\BIN\C51.EXE SlaveDevice.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg52.h>
   2          #define uchar unsigned char
   3          #define SLAVE 0x00
   4          #define BN 16
   5          
   6          uchar idata SendData[16];
   7          uchar idata ReceiveData[16];
   8          
   9          void main(void)
  10          {
  11   1      SCON  = 0x70;                                   //设置串行口: 方式 1, 8位UART, 允许接收
  12   1      TMOD  |= 0x20;                                  //设置定时器T1, 方式 2, 8位自动重装
  13   1      PCON  =0x80;                                            //设置SMOD=1
  14   1      TL1    =0xF4;                                           //波特率4800bit/s,初值
  15   1      TH1    =0xF4;
  16   1      TR1    = 1;                             //启动定时器T1
  17   1      ES         =1;
  18   1      EA         =1;                                          //开串行口中断
  19   1      
  20   1        while(1)                                                      //主循环
  21   1      {
  22   2      } 
  23   1      }
  24          
  25          void slave(void) interrupt 4 using 1            //中断服务例程
  26          {
  27   1      uchar p,i;
  28   1        uchar a;
  29   1      bit SendBit;                                            //准备发送标志
  30   1      bit ReceiveBit;                                 //准备接收标志
  31   1      
  32   1        RI=0;                                                 //关串行口中断
  33   1        ES=0;
  34   1        if(SBUF!=SLAVE)                               //非本机地址
  35   1      {
  36   2              ES=1;
  37   2              goto Exit;
  38   2      }               
  39   1        SM2=0;                                                        //取消监听状态
  40   1      SBUF=SLAVE;                                     //发回从机地址
  41   1      while(TI!=1);
  42   1      TI=0;
  43   1      while(RI!=1);
  44   1      RI=0;
  45   1      if(RB8==1)                                              //地址不符,从机复位
  46   1      {
  47   2              SM2=1;
  48   2              ES=1;
  49   2              goto Exit;
  50   2      }               
  51   1      a=SBUF;                                         //接收命令
  52   1      if(a==1)                                                //从机接收主机的数据
  53   1      {                                               
  54   2              if(ReceiveBit==1) 
  55   2                      SBUF=0x01;                              //接收准备好,发回0x01
C51 COMPILER V8.08   SLAVEDEVICE                                                           08/31/2008 15:11:53 PAGE 2   

  56   2              else
  57   2                      SBUF=0x00;
  58   2      while(TI!=1);
  59   2      TI=0;
  60   2              while(RI!=1);
  61   2              RI=0;
  62   2              if(RB8==1)
  63   2              {
  64   3                      SM2=1;
  65   3                      ES=1;
  66   3                      goto Exit;
  67   3              }
  68   2      //开始接收数据
  69   2      ReceiveBit=0;
  70   2        while(1)
  71   2      {
  72   3              p=0;                                                    //初始化校验和为0
  73   3              for(i=0;i<BN;i++)
  74   3              {
  75   4                      while(RI!=1);RI=0;
  76   4                      SendData[i]=SBUF;                       //接收数据
  77   4                      p+=ReceiveData[i];
  78   4              }
  79   3              while(RI!=1);
  80   3              RI=0;
  81   3      if(SBUF==p)
  82   3      {
  83   4      SBUF=0x00;                              //校验和相同,返回00H
  84   4      break;
  85   4              }               
  86   3              else
  87   3              {
  88   4                      SBUF=0xEE;                              //返回EEH,重新接收
  89   4                      while(TI!=1); 
  90   4                      TI=0;           
  91   4              }
  92   3      }
  93   2      SM2=1;
  94   2      ES=1;
  95   2      ReceiveBit=1;                                   //准备接收标志
  96   2      }
  97   1      else if(a==0x02)                                        //从机向主机发送数据
  98   1      {
  99   2              if(SendBit ==1) 
 100   2                      SBUF=0x02;                              //发送准备好
 101   2              else
 102   2                      SBUF=0x00;
 103   2              while(TI!=1);
 104   2              TI=0;
 105   2              while(RI!=1);
 106   2              RI=0;
 107   2              if(RB8==1)
 108   2              {
 109   3                      SM2=1;
 110   3                      ES=1;
 111   3                      goto Exit;
 112   3              }
 113   2      //开始发送数据
 114   2      SendBit =0;
 115   2        do
 116   2      {
 117   3              p=0;                                                    //初始校验和为0
C51 COMPILER V8.08   SLAVEDEVICE                                                           08/31/2008 15:11:53 PAGE 3   

 118   3              for(i=0;i<BN;i++)
 119   3           {
 120   4                      SBUF=SendData[i];                       //发送数据
 121   4              p+=SendData[i];
 122   4              while(TI!=1);
 123   4                      TI=0;
 124   4           }
 125   3          SBUF=p;                                             //发送校验和
 126   3              while(TI!=1);
 127   3              TI=0;
 128   3              while(RI!=1);
 129   3              RI=0;
 130   3      }while(SBUF!=0);                                        //主机接收不正确,重新发送
 131   2      SM2=1;
 132   2      ES=1;
 133   2      SendBit =1;                                             //准备发送标志
 134   2      
 135   2      }
 136   1      else                                                    //非法命令
 137   1      {
 138   2              SBUF=0x80;                              
 139   2              while(TI!=1);
 140   2              TI=0;
 141   2              SM2=1;
 142   2              ES=1;                                           //恢复监听
 143   2      }
 144   1      Exit:;
 145   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    257    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =     32    ----
   BIT SIZE         =   ----       2
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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