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

📄 12.lst

📁 《单片机C语言编程与实例的代码.rar
💻 LST
字号:
C51 COMPILER V6.20c  12                                                                    09/02/2001 15:11:06 PAGE 1   


C51 COMPILER V6.20c, COMPILATION OF MODULE 12
OBJECT MODULE PLACED IN 12.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 12.c DEBUG OBJECTEXTEND

stmt level    source

   1          #include<reg51.h>
   2          #define uchar unsigned char
   3          #define SLAVE 0xF1					//单片机地址
   4          #define BN 10						//传送一次的字节数
   5          
   6          uchar idata rdata[10];
   7          uchar idata tdata[10]={"abcdefghij"};
   8          uchar receive(uchar addrs);
   9          char send();
  10          
  11          void main(void)
  12          {
  13   1        uchar i;
  14   1        for(i=0;i<10;i++)
  15   1        TMOD=0x20;					//定时器T1定义为模式2
  16   1        TL1=0xE6;TH1=0xE6;			//置初值
  17   1        PCON=0x00;
  18   1      TR1=1;
  19   1      SCON=0xE0;					//设置串行口控制字,方式3,允许接收
  20   1      receive(SLAVE);					//接收数据函数
  21   1      send();							//发送数据函数
  22   1      }
  23          
  24          void error(void)
  25          {
  26   1        SBUF=0xFF;					//发给PC机数据出错标志
  27   1        while(TI!=1);						//等待发送完
  28   1        TI=0;
  29   1      }
  30          
  31          uchar receive(uchar addrs)
  32          { uchar i,p;
  33   1      while(1)
  34   1      {
  35   2      while(RI!=1);					//等待PC机的联络信号
  36   2      RI=0;
  37   2      if(SBUF!=addrs)
  38   2      error();						//若地址出错,发出错标志
  39   2      else
  40   2      {
  41   3      TB8=0;						//清地址标志位,准备接收数据
  42   3      SBUF=0x00;					//发约定代码00H,说明地址正确
  43   3      while(TI!=1);TI=0;
  44   3      while(RI!=1);RI=0;
  45   3      {
  46   4      while(1)
  47   4      {p=0;
  48   5      for(i=0;i<BN;i++)
  49   5      {
  50   6      while(RI!=1);RI=0;
  51   6      rdata[i]=SBUF;			//单片机接收数据
  52   6      p=p+rdata[i];
  53   6      }
  54   5      while(RI==0);RI=0;
  55   5      if(SBUF==p)
C51 COMPILER V6.20c  12                                                                    09/02/2001 15:11:06 PAGE 2   

  56   5      {SBUF=0x00;				//校验和相同,发0x00给PC机
  57   6       while(TI!=1);TI=0;
  58   6      }
  59   5      else
  60   5      {SBUF=0xFF;				//校验和不同,发0xFF给PC机
  61   6       while(TI!=1);TI=0;
  62   6      }
  63   5      }
  64   4      TB8=1;					//重置地址标志位
  65   4      return(0);
  66   4      }
  67   3      }
  68   2      }
  69   1      }
  70          char send()					//单片机发送数据函数
  71          {
  72   1      uchar i,p;
  73   1      do{
  74   2      p=0;						//清校验和
  75   2      for(i=0;i<BN;i++)
  76   2      {SBUF=tdata[i];				//发送数据
  77   3       p=p+tdata;					//计算校验和
  78   3       while(TI!=1);TI=0;
  79   3      }
  80   2      SBUF=p;					//发送校验和给PC机
  81   2      while(TI!=1);TI=0;
  82   2      while(RI!=1);RI=0;
  83   2      }while(SBUF!=0);				//PC机接收不正确,单片机重新发送
  84   1      TB8=1;					//重置地址标志位
  85   1      return(0);
  86   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    169    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =     20    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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