main.lst

来自「51系列单片之间的串口多机通信程序。已经成功通过调试」· LST 代码 · 共 127 行

LST
127
字号
C51 COMPILER V7.50   MAIN                                                                  08/27/2007 10:50:55 PAGE 1   


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

line level    source

   1          #include <reg51.h>
   2          #include <intrins.h>
   3          #include <absacc.h>
   4          #include "define.h"
   5          #include "delay.h"
   6          #include "lcd1602.h"
   7          #define SNUM 8
   8          #define RNUM 8
   9          #define MYADDR 0xfe
  10          uchar sdbuf[SNUM]="recived";
  11          uchar rvbuf[RNUM];
  12          uchar ri,si;
  13          bit rcved,rcv,acked;
  14          bit Send(uchar addr);//主机,从机
  15          void main()
  16          {
  17   1              Lcd_Initial();
  18   1              Lcd_Puts(2,0,"connecting...");
  19   1              SCON=0x90;//串口工作方式2
  20   1              PCON|=0x80;
  21   1              EA=1;//开串口中断
  22   1              ES=1;
  23   1      
  24   1              rcved=0;
  25   1              ri=0;si=0;
  26   1      
  27   1              TI=1;
  28   1              while(!Send(0x35));
  29   1              while(1)
  30   1              {
  31   2                      if(rcved)
  32   2                      {
  33   3                              rcved=0;
  34   3                              Lcd_Puts(3,1,rvbuf);
  35   3                              while(!Send(0x35));
  36   3                      }
  37   2              }
  38   1      }
  39          bit Send(uchar addr)//主机,从机
  40          {
  41   1              uchar temp=100;
  42   1              SBUF=addr;//发送地址
  43   1      
  44   1              while(1)//等待应答
  45   1              {
  46   2                      if(acked)//检查应答标志
  47   2                      {
  48   3                              acked=0;
  49   3                              si=0;
  50   3                              break;//继续发送
  51   3                      }
  52   2                      temp--;
  53   2                      if(temp==0)return 0;//检测应答失败
  54   2              }
  55   1              //继续发送
C51 COMPILER V7.50   MAIN                                                                  08/27/2007 10:50:55 PAGE 2   

  56   1              while(1)
  57   1              {
  58   2                      if(TI)
  59   2                      {
  60   3                              TI=0;
  61   3                              SBUF=sdbuf[si++];
  62   3                              if(si==SNUM)
  63   3                              {
  64   4                                      return 1;
  65   4                              }
  66   3                      }
  67   2              }
  68   1      }
  69          void rvchar() interrupt 4 using 1 //利用中断接受数据,从机
  70          {
  71   1              uchar temp;     
  72   1              EA=0;//关中断
  73   1              if(RI)
  74   1              {
  75   2                      temp=SBUF;
  76   2                      RI=0;
  77   2                      if(temp==0xff)//应答信号
  78   2                      {
  79   3                              acked=1;
  80   3                      }
  81   2                      else//接受到信息 
  82   2                      {
  83   3                              if(temp==MYADDR)//是我的地址
  84   3                              {
  85   4                                      rcv=1;
  86   4                                      ri=0;
  87   4                                      SBUF=0xff;//发送应答标志
  88   4                              }
  89   3                              else if(rcv)
  90   3                              {
  91   4                                      rvbuf[ri++]=temp;
  92   4                                      if(ri==RNUM)
  93   4                                      {
  94   5                                              rcv=0;
  95   5                                              rcved=1;
  96   5                                      }
  97   4                              }
  98   3                      }
  99   2              }
 100   1              EA=1;//开中断
 101   1      } 


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    642    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     18      32
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      3    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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