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

📄 11.2.lst

📁 单片机C语言编程与实例源代码
💻 LST
字号:
C51 COMPILER V6.20c  11_2                                                                  09/02/2001 15:07:56 PAGE 1   


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

stmt level    source

   1          #include<reg51.h>
   2          #define uchar unsigned char
   3          #define BN 16						//传送一次的字节数
   4          
   5          uchar master(uchar addrs,uchar comnd);
   6          uchar SLAVE=0x00;					//从机地址
   7          uchar idata rdata[16];
   8          uchar idata tdata[16]={"abcdefghijklmnop"};
   9          void main(void)
  10          {
  11   1       uchar i;
  12   1       for(i=0;i<10;i++)
  13   1       TMOD=0x20;						//定时器T1定义为模式2
  14   1        TL1=0xfd;TH1=0xfd;				//置初值
  15   1        PCON=0x00;
  16   1      TR1=1;
  17   1      SCON=0xD0;					//设置串行口控制字,方式3,允许接收
  18   1      master(SLAVE,0x01);
  19   1      master(SLAVE,0x02);
  20   1      SLAVE++;
  21   1      }
  22          
  23          void error(void)
  24          {
  25   1        SBUF=0xFF;					//发给从机数据出错标志
  26   1        while(TI!=1);						//等待发送完
  27   1        TI=0;
  28   1      }
  29          
  30          uchar master(uchar addrs,uchar comnd)
  31          { uchar a,i,p;
  32   1      while(1)
  33   1      {
  34   2        SBUF=SLAVE;					//发呼叫地址 
  35   2        while(TI!=1);						//等待发送完
  36   2        TI=0;
  37   2      while(RI!=1);						//等待从机应答
  38   2      RI=0;
  39   2      if(SBUF!=addrs)
  40   2      error();							//若地址出错,发出错标志,从机复位
  41   2      else{
  42   3      TB8=0;						//清地址标志位,准备接收数据
  43   3      SBUF=comnd;					//发命令帧
  44   3      while(TI!=1);TI=0;
  45   3      while(RI!=1);RI=0;
  46   3      a=SBUF;						//接收从机的返回地址帧
  47   3      if((a&0x80)==0x80){TB8=1;error();}	//若主机命令非法,发复位信号给从机
  48   3      else
  49   3      {
  50   4      	 if(comnd==0x01)				//主机发送的命令是请求从机接收数据
  51   4             {if((a&0x01)==0x01)			//从机准备接收就绪
  52   5      {do{
  53   7                  p=0;					//清校验和
  54   7      			for(i=0;i<BN;i++)
  55   7      {SBUF=tdata[i];			//发送数据
C51 COMPILER V6.20c  11_2                                                                  09/02/2001 15:07:56 PAGE 2   

  56   8       p=p+tdata;				//计算校验和
  57   8       while(TI!=1);TI=0;
  58   8      			}
  59   7      			SBUF=p;				//发送校验和给从机
  60   7      			while(TI!=1);TI=0;
  61   7      while(RI!=1);RI=0;
  62   7      }while(SBUF!=0);			//从机接收不正确,主机重新发送
  63   6      TB8=1;				//重置地址标志位
  64   6      return(0);
  65   6      }
  66   5      }
  67   4      	   else{
  68   5      if(comnd==0x02)			//主机发送的是接收命令,从机发送数据
  69   5      {if((a&0x02)==0x02)		   	//从机准备发送就绪
  70   6      {while(1)
  71   7      {p=0;
  72   8       for(i=0;i<BN;i++)
  73   8      {while(RI!=1);RI=0;
  74   9      rdata[i]=SBUF;		//主机接收数据
  75   9      p+=rdata[i];
  76   9      }
  77   8      while(RI==0);RI=0;
  78   8      if(SBUF==p)
  79   8      {
  80   9      SBUF=0x00;		//校验和相同,发0x00给从机
  81   9      while(TI!=1);TI=0;
  82   9      }
  83   8      else
  84   8      {SBUF=0x0F;			//校验和不同,发0x0F给从机
  85   9       while(TI!=1);TI=0;
  86   9      }
  87   8      }
  88   7      	TB8=1;				//重置地址标志位
  89   7      	return(0);
  90   7      }
  91   6      }
  92   5      }
  93   4      }
  94   3      }
  95   2      }
  96   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    215    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1    ----
   IDATA SIZE       =     32    ----
   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 + -