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

📄 masterdevice.lst

📁 零基础单片机C语言设计全套教程
💻 LST
字号:
C51 COMPILER V8.08   MASTERDEVICE                                                          08/31/2008 14:58:40 PAGE 1   


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

line level    source

   1          #include<reg52.h>
   2          #define uchar unsigned char
   3          #define BN 16                                           //传送一次的字节数
   4          
   5          uchar SLAVE=0x00;                                       //从机地址
   6          uchar idata ReceiveData[16];
   7          uchar idata SendData[16]={"0123456789abcdef"};
   8          
   9          void error(void)        ;                                       //出错子函数
  10          void SendDataFun(void)  ;                               //发送数据子函数
  11          void ReceiveDataFun();                                  //接收数据子函数
  12          
  13          void main(void)                                         //主函数
  14          {
  15   1      SCON  = 0x50;                                   //设置串行口: 方式 1, 8位UART, 允许接收
  16   1      TMOD  |= 0x20;                                  //设置定时器T1, 方式 2, 8位自动重装
  17   1      PCON  =0x80;                                            //设置SMOD=1
  18   1      TL1    =0xF4;                                           //波特率4800bit/s,初值
  19   1      TH1    =0xF4;
  20   1      TR1    = 1;                             //启动定时器T1
  21   1      
  22   1      SendDataFun();                                  //发送数据
  23   1      ReceiveDataFun();                                       //接收数据
  24   1      }
  25          
  26          void error(void)                                                //出错子函数
  27          {
  28   1        SBUF=0xEE;                                            //发给出错标志
  29   1        while(TI!=1);                                         //等待发送完
  30   1        TI=0;
  31   1      }
  32          
  33          void SendDataFun(void)                                  //发送数据子函数
  34          {
  35   1      uchar a,i,p,comond,addrs;
  36   1      comond=0x01;                                    //发送数据指令
  37   1      addrs=SLAVE;                                    //从机地址
  38   1        SBUF=addrs;                                   //发送呼叫地址 
  39   1        while(TI!=1);                                         //等待发送完
  40   1        TI=0;
  41   1      while(RI!=1);                                           //等待从机应答
  42   1      RI=0;
  43   1      if(SBUF!=addrs)
  44   1              error();                                                //若地址出错,发出错标志,从机复位
  45   1      else
  46   1      {
  47   2              TB8=0;                                          //清地址标志位,准备接收数据
  48   2              SBUF=comond;                            //发送数据指令
  49   2              while(TI!=1);
  50   2              TI=0;
  51   2      while(RI!=1);
  52   2      RI=0;
  53   2              a=SBUF;                                         //接收从机返回的地址帧
  54   2      if((a&0x80)==0x80)                              //若主机命令非法,发复位信号给从机
  55   2      {
C51 COMPILER V8.08   MASTERDEVICE                                                          08/31/2008 14:58:40 PAGE 2   

  56   3      TB8=1;
  57   3      error();
  58   3              }       
  59   2              else
  60   2              {
  61   3                      if((a&0x01)==0x01)                      //从机准备接收就绪
  62   3                      {
  63   4                              do
  64   4                              {
  65   5                              p=0;                            //清校验和
  66   5                                      for(i=0;i<BN;i++)
  67   5                                      {
  68   6                                              SBUF=SendData[i];       //发送数据
  69   6                                              p=p+SendData;   //计算校验和
  70   6                                              while(TI!=1);
  71   6                                              TI=0;
  72   6                                      }
  73   5                                      SBUF=p;                 //发送校验和给从机
  74   5                                      while(TI!=1);
  75   5                                      TI=0;
  76   5                                      while(RI!=1);
  77   5                                      RI=0;
  78   5                              }while(SBUF!=0);                //从机接收不正确,主机重新发送
  79   4                              TB8=1;                          //重置地址标志位
  80   4                      }
  81   3              }
  82   2      }
  83   1      }
  84          
  85          void ReceiveDataFun()                                   //接收数据子函数
  86          {
  87   1      uchar a,i,p,comond,addrs;
  88   1      comond=0x02;                                    //接收数据指令
  89   1      addrs=SLAVE;                                    //从机地址
  90   1        SBUF=addrs;                                   //发送呼叫地址 
  91   1        while(TI!=1);                                         //等待发送完
  92   1        TI=0;
  93   1      while(RI!=1);                                           //等待从机应答
  94   1      RI=0;
  95   1      if(SBUF!=addrs)
  96   1              error();                                                //若地址出错,发出错标志,从机复位
  97   1      else
  98   1      {
  99   2              TB8=0;                                          //清地址标志位,准备接收数据
 100   2              SBUF=comond;                            //发送接收数据指令
 101   2              while(TI!=1);
 102   2              TI=0;
 103   2      while(RI!=1);
 104   2      RI=0;
 105   2              a=SBUF;                                         //接收从机的返回地址帧
 106   2      if((a&0x80)==0x80)                              //若主机命令非法,发复位信号给从机
 107   2      {
 108   3      TB8=1;
 109   3      error();
 110   3              }       
 111   2              else
 112   2              {
 113   3                      if((a&0x02)==0x02)                      //从机准备发送就绪
 114   3                      {
 115   4                              while(1)
 116   4                              {
 117   5                                      p=0;
C51 COMPILER V8.08   MASTERDEVICE                                                          08/31/2008 14:58:40 PAGE 3   

 118   5                                      for(i=0;i<BN;i++)
 119   5                                      {
 120   6                                              while(RI!=1);
 121   6                                              RI=0;
 122   6                                              ReceiveData[i]=SBUF;    //主机接收数据
 123   6                                              p+=ReceiveData[i];
 124   6                                      }
 125   5                                      while(RI==0);
 126   5                                      RI=0;
 127   5                                      if(SBUF==p)
 128   5                                      {
 129   6                                              SBUF=0x00;      //校验和相同,发0x00给从机
 130   6                                              while(TI!=1);
 131   6                                              TI=0;
 132   6                                      }
 133   5                                      else
 134   5                                      {
 135   6                                              SBUF=0x0F;      //校验和不同,发0x0F给从机
 136   6                                              while(TI!=1);
 137   6                                              TI=0;
 138   6                                      }
 139   5                              }
 140   4                              TB8=1;                          //重置地址标志位
 141   4                      }
 142   3              }
 143   2      }
 144   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    234    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1    ----
   IDATA SIZE       =     32    ----
   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 + -