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

📄 t.lst

📁 基于51的RS485的多机发送和接收的通信程序
💻 LST
字号:
C51 COMPILER V7.07   T                                                                     03/10/2008 19:25:16 PAGE 1   


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

stmt level    source

   1          #include <reg51.h>
   2          
   3          #define uchar unsigned char
   4          #define NODE1_ADDR 1
   5          #define NODE2_ADDR 2
   6          
   7          bit flag=0;
   8          bit flag_send=0;
   9          uchar KeyValue=0;               //键值
  10          
  11          uchar code str[]="0123456789ABCDEF";
  12          uchar pointer_1=0;
  13          uchar pointer_2=0;
  14          
  15          void delay(uchar Time)
  16          {
  17   1              uchar i,j;
  18   1              for(i=0;i<100;i++)
  19   1                      for(j=0;j<Time;j++);
  20   1      }
  21          
  22          uchar key_scan()
  23          {
  24   1              P1=0xff;
  25   1              while(P1==0xff);
  26   1          return P1;
  27   1      }
  28          
  29          void proc_key1()
  30          {
  31   1              delay(200);
  32   1              //初始化串行口和波特率发生器
  33   1              SCON=0xc0;
  34   1              TMOD=0x20;
  35   1              TH1=0xfd;
  36   1              TR1=1;          //打开T1                
  37   1              ET1=0;          //关闭定时器中断
  38   1              ES=1;           //允许串行口中断
  39   1              EA=1;           //打开所有中断
  40   1              //发送地址帧
  41   1              TB8=1;
  42   1              SBUF=NODE1_ADDR;
  43   1              while(flag_send==0);    //发送完毕
  44   1              ES=0;
  45   1              EA=0;                           //关中断
  46   1              flag_send=0;
  47   1              KeyValue=0;
  48   1      }
  49          
  50          void proc_key2()
  51          {
  52   1              delay(200);
  53   1              //初始化串行口和波特率发生器
  54   1              SCON=0xc0;
  55   1              TMOD=0x20;
C51 COMPILER V7.07   T                                                                     03/10/2008 19:25:16 PAGE 2   

  56   1              TH1=0xfd;
  57   1              TR1=1;          //打开T1                
  58   1              ET1=0;          //关闭定时器中断
  59   1              ES=1;           //允许串行口中断
  60   1              EA=1;           //打开所有中断
  61   1              //发送地址帧
  62   1              TB8=1;
  63   1              SBUF=NODE2_ADDR;
  64   1              while(flag_send==0);    //发送完毕
  65   1              ES=0;
  66   1              EA=0;                           //关中断
  67   1              flag_send=0;
  68   1              KeyValue=0;
  69   1      }
  70          
  71          main()
  72          {
  73   1              while(1)
  74   1              {
  75   2                      KeyValue=key_scan();
  76   2                      switch(KeyValue)
  77   2                      {
  78   3                              case 0xfe: proc_key1();break;
  79   3                              case 0xef: proc_key2();break;
  80   3                              default: break;
  81   3                      }
  82   2              }
  83   1      } 
  84          
  85          //串行中断服务程序
  86          void send(void) interrupt 4 using 3
  87          {
  88   1              TI=0;
  89   1              if(flag==1) 
  90   1              {
  91   2                      flag_send=1;
  92   2                      flag=0;
  93   2                      return;
  94   2              }
  95   1              else
  96   1              {
  97   2                      TB8=0;
  98   2                      switch(KeyValue)
  99   2                      {
 100   3                              case 0xfe: 
 101   3                              {
 102   4                                      SBUF=str[pointer_1];
 103   4                                      pointer_1++;
 104   4                                      if(pointer_1>=16)
 105   4                                              pointer_1=0;
 106   4                                      break;
 107   4                              }
 108   3                              case 0xef: 
 109   3                              {
 110   4                                      SBUF=str[pointer_2];
 111   4                                      pointer_2++;
 112   4                                      if(pointer_2>=16)
 113   4                                              pointer_2=0;
 114   4                                      break;
 115   4                              }
 116   3                              default: break;
 117   3                      }
C51 COMPILER V7.07   T                                                                     03/10/2008 19:25:16 PAGE 3   

 118   2                      flag=1;
 119   2              }
 120   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    217    ----
   CONSTANT SIZE    =     17    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      3    ----
   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 + -