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

📄 main.lst

📁 51系列单片之间的串口多机通信程序。已经成功通过调试
💻 LST
字号:
C51 COMPILER V7.50   MAIN                                                                  08/27/2007 10:50:51 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 9
   9          uchar sdbuf[SNUM]="recive?";
  10          uchar rvbuf[RNUM];
  11          uchar ri,si;
  12          bit rcved,rcv,acked;
  13          bit Send(uchar addr);//主机,从机
  14          void main()
  15          {
  16   1              Lcd_Initial();
  17   1              Lcd_Puts(2,0,"connecting...");
  18   1              SCON=0x90;//串口工作方式2
  19   1              PCON|=0x80;
  20   1              EA=1;//开串口中断
  21   1              ES=1;
  22   1      
  23   1              rcved=0;
  24   1              ri=0;si=0;
  25   1              rcv=1;
  26   1              //while(!Send(0xfe));
  27   1              while(1)
  28   1              {
  29   2                      if(rcved)
  30   2                      {
  31   3                              Lcd_Putint(0,1,3,rvbuf[0]);
  32   3                              Lcd_Puts(4,1,&(rvbuf[1]));
  33   3                              rcved=0;
  34   3                      }
  35   2              }
  36   1              while(1);
  37   1      }
  38          bit Send(uchar addr)//主机,从机
  39          {
  40   1              uchar temp=100;
  41   1              SBUF=addr;//发送地址
  42   1      
  43   1              while(1)//等待应答
  44   1              {
  45   2                      if(acked)//检查应答标志
  46   2                      {
  47   3                              acked=0;
  48   3                              si=0;
  49   3                              break;//继续发送
  50   3                      }
  51   2                      temp--;
  52   2                      if(temp==0)return 0;//检测应答失败
  53   2              }
  54   1              //继续发送
  55   1              while(1)
C51 COMPILER V7.50   MAIN                                                                  08/27/2007 10:50:51 PAGE 2   

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


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    641    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     19      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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -