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

📄 slave.lst

📁 此程序能实现单片机与PC机的多机通信
💻 LST
字号:
C51 COMPILER V7.01  SLAVE                                                                  04/17/2008 18:24:24 PAGE 1   


C51 COMPILER V7.01, COMPILATION OF MODULE SLAVE
OBJECT MODULE PLACED IN slave.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE slave.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include<c8051f020.h>
   2          #define uchar unsigned char
   3          #define SLAVE0 0x02                                                             //从机地址
   4          #define BN0 16
   5          uchar trbuf[16];
   6          uchar rebuf[16];
   7          bit tready;
   8          bit rready;
   9          /*void main()
  10          {       
  11                  TMOD=0x20;
  12                  TH1=0xfd;
  13                  TL1=0xfd;
  14                  PCON=0x00;
  15                  TR1=1;
  16                  SADDR0=SLAVE0;                                                          //从机地址
  17                  SADEN0=0xff;
  18                  SCON0=0xf0;                                                                     //UART0方式3,SM20=1,REN0=1,TB80=0
  19                  ES0=1;
  20                  EA=1;                                                                           //开中断
  21                  while(1){tready=1;rready=1;}                            //等待中断
  22          }*/
  23          
  24          void ssio(void) interrupt 4 using 1                             //中断函数
  25          {
  26   1              void str(void);                                                         //函数声明
  27   1              void sre(void);
  28   1              uchar a;
  29   1              RI0=0;
  30   1              ES0=0;
  31   1              if(SBUF0!=SLAVE0){ES0=1;goto reti;}                     //非本机地址,继续监听,因c8051f内部
  32   1                                                                                                      //可自动判断,因此这句可省
  33   1              SM20=0;
  34   1              SBUF0=SLAVE0;                                                           //回送从机地址
  35   1              while(!TI0);TI0=0;
  36   1              while(!RI0);RI0=0;                                                      //接收命令
  37   1              if(RB80==1){SM20=1;ES0=1;goto reti;}            //是复位命令,继续监听
  38   1              a=SBUF0;
  39   1              if(a==0x01)                                                                     //接收主机数据命令
  40   1              {
  41   2                      if(rready==1) SBUF0=0x01;                               //发准备好接收状态字
  42   2                      else SBUF0=0x00;                                                //发未准备好接收状态字
  43   2                      while(!TI0);TI0=0;
  44   2                      sre();
  45   2              }
  46   1              else
  47   1              {
  48   2                      if(a==0x02)                                                                     //向主机发送数据的命令
  49   2                      {
  50   3                              if(tready==1) SBUF0=0x02;                               //发准备好接收状态字
  51   3                              else SBUF0=0x00;                                                //发未准备好接收状态字
  52   3                              while(!TI0);TI0=0;
  53   3                              str();
  54   3                      }
  55   2                      else
C51 COMPILER V7.01  SLAVE                                                                  04/17/2008 18:24:24 PAGE 2   

  56   2                      {
  57   3                              SBUF0=0x08;                                                             //发送非法命令状态字
  58   3                              while(!TI0);TI0=0;
  59   3                              SM20=1;ES0=1;                                                   //恢复监听
  60   3                      }
  61   2              }
  62   1              reti: ;
  63   1              
  64   1      }
  65          
  66          
  67          void str(void)                                                                          //发送数据块
  68          {
  69   1              uchar p0,i0;
  70   1              tready=0;
  71   1              do
  72   1              {
  73   2                      p0=0;
  74   2                      for(i0=0;i0<BN0;i0++)                                                   //发送BN字节数据
  75   2                      {
  76   3                              SBUF0=trbuf[i0];
  77   3                              p0+=trbuf[i0];
  78   3                              while(!TI0);TI0=0;
  79   3                      }
  80   2                      SBUF0=p0;                                                                       //发送校验和
  81   2                      while(!TI0);TI0=0;
  82   2                      while(!RI0);RI0=0;                                                      //接收主机应答
  83   2              }while(SBUF0!=0);
  84   1              SM20=1;
  85   1              ES0=1;
  86   1      }
  87          
  88          void sre(void)                                                                          //接收数据块
  89          {
  90   1              uchar p0,i0;
  91   1              rready=0;
  92   1              while(1)
  93   1              {
  94   2                      p0=0;
  95   2                      for(i0=0;i0<BN0;i0++)
  96   2                      {
  97   3                              while(!RI0);RI0=0;
  98   3                              rebuf[i0]=SBUF0;
  99   3                              p0+=SBUF0;
 100   3                      }
 101   2                      while(!RI0);RI0=0;
 102   2                      if(SBUF0==p0)
 103   2                      {       SBUF0=0x00;
 104   3                              while(!TI0);TI0=0;
 105   3                              break;
 106   3                      }
 107   2                      else
 108   2                      {
 109   3                              SBUF0=0xff;
 110   3                              while(!TI0);TI0=0;
 111   3                      }
 112   2              }
 113   1              SM20=1;
 114   1              ES0=1;
 115   1      }


C51 COMPILER V7.01  SLAVE                                                                  04/17/2008 18:24:24 PAGE 3   

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