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

📄 485.lst

📁 STC的485中断发送与接收应用请大家使用
💻 LST
字号:
C51 COMPILER V8.02   485                                                                   08/16/2008 14:56:22 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE 485
OBJECT MODULE PLACED IN 485.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 485.c ROM(COMPACT) BROWSE

line level    source

   1          #include <intrins.h>
   2          #include <string.h>
   3          #include "5410ad.h"
   4          
   5          sbit CKXZA = P2^2;                                       /* 4052选通(1) */
   6          sbit CKXZB = P2^3;                                       /* 4052选通(2) */
   7          sbit EN485 = P2^5;                                       /* 485使能 */
   8          //AE 28 54 73 34 10 20 25
   9          #define INBUF_LEN 8   //数据长度
  10          
  11          unsigned char inbuf1[INBUF_LEN];
  12          unsigned char checksum,count3;
  13          bit           read_flag=0;
  14          void init_serialcomm(void)
  15          {
  16   1          SCON  = 0x50;       //SCON: serail mode 1, 8-bit UART, enable ucvr 
  17   1          TMOD |= 0x20;       //TMOD: timer 1, mode 2, 8-bit reload 
  18   1          PCON |= 0x80;       //SMOD=1; 
  19   1          TH1   = 0xF4;       //Baud:4800  fosc=11.0592MHz 
  20   1          IE   |= 0x90;       //Enable Serial Interrupt 
  21   1          TR1   = 1;          // timer 1 run 
  22   1         // TI=1; 
  23   1      }
  24          void send_char_com(unsigned char ch)   // 发送一个字符   
  25          {
  26   1          SBUF=ch;     
  27   1          while(TI==0);
  28   1          TI=0;
  29   1      }
  30          
  31          void send_string_com(unsigned char *str,unsigned int strlen)  //发送一个字符串,strlen为该字符串长度
  32          {
  33   1          unsigned int k=0;
  34   1          do 
  35   1          {
  36   2              send_char_com(*(str + k));
  37   2              k++;
  38   2          } while(k < strlen);
  39   1      }
  40          void serial () interrupt 4 using 3 //串口接收中断函数
  41          {
  42   1          if(RI)
  43   1          {
  44   2              unsigned char ch;
  45   2              RI = 0;
  46   2              ch=SBUF;
  47   2              if(ch>127)
  48   2              {
  49   3                   count3=0;
  50   3                   inbuf1[count3]=ch;
  51   3                   checksum= ch-128;
  52   3              }
  53   2              else 
  54   2              {
  55   3                   count3++;
C51 COMPILER V8.02   485                                                                   08/16/2008 14:56:22 PAGE 2   

  56   3                   inbuf1[count3]=ch;
  57   3                   checksum ^= ch;
  58   3                   if( (count3==(INBUF_LEN-1)) && (!checksum) )
  59   3                   {
  60   4                       read_flag=1;  //如果串口接收的数据达到INBUF_LEN个,且校验没错, 
  61   4                                     //就置位取数标志 
  62   4                   }
  63   3              }
  64   2          }
  65   1      }
  66          
  67          
  68          main()
  69          {
  70   1              CKXZA = 0; CKXZB = 0;
  71   1              EN485=0;
  72   1          init_serialcomm();  //初始化串口 
  73   1          while(1)
  74   1          {
  75   2                if(read_flag)  //如果取数标志已置位,就将读到的数从串口发出 
  76   2                {
  77   3                                 EN485=1;
  78   3                     read_flag=0; //取数标志清0
  79   3                                 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); 
  80   3                     send_string_com(inbuf1,INBUF_LEN);
  81   3                                 EN485=0;
  82   3                                 _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
  83   3                }
  84   2          }
  85   1      
  86   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    183    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     10       6
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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