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

📄 receive.lst

📁 口若悬河口若悬河口若悬河口若悬河口若悬河口若悬河口若悬河口若悬河口若悬河
💻 LST
字号:
C51 COMPILER V8.02   RECEIVE                                                               08/21/2008 13:57:08 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE RECEIVE
OBJECT MODULE PLACED IN receive.OBJ
COMPILER INVOKED BY: C:\Keil\uv3\C51\BIN\C51.EXE receive.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include"reg52.h"
   2          #define uchar unsigned char
   3          uchar a[12];//记录0-F与和校验字节
   4          bit t1s=0; //1秒到标志
   5          bit rsucc=0; //接收成功标志
   6          bit rstart=0;  //开始接收0-F与和校验字节标志
   7          sbit SCON7=SCON^7; //帧错误
   8          uchar rmath=0;   //求和
   9          uchar t=0;
  10          
  11          /***********初始化T0T1************/
  12          init()
  13          {
  14   1      SCON=0xd0;//方式3
  15   1      TL1=0xfa; 
  16   1      TH1=0xfa;
  17   1      TH0=0x3c;
  18   1      TL0=0xb0;       //50ms
  19   1      TMOD=0x21; //T0工作于16位定时,T1于8位自动重装
  20   1      PCON|=0x40;     //错误侦测功能
  21   1      ET1=0;
  22   1      ET0=1;
  23   1      TR1=1;
  24   1      RI=0;
  25   1      //TR0=1;
  26   1      EA=1;
  27   1      }
  28          
  29          /*********错误要求重发*************/
  30          void error()
  31          {
  32   1      rstart=0; //一有错误就清帧开始位
  33   1      rmath=0;
  34   1      ACC=0xa6;
  35   1      TB8=P;
  36   1      SBUF=ACC;
  37   1      //P1=ACC;
  38   1      }
  39          
  40          /*********接收部分***********/
  41          void receive()
  42          {
  43   1      uchar j,sum;
  44   1      unsigned int rsum=0;
  45   1      //while(TI)
  46   1      //TI=0;
  47   1      while(rsucc==0)
  48   1      {
  49   2      while(RI==0);//等待接收一个完整的数据帧
  50   2      {
  51   3      RI=0;
  52   3      if(SCON7)
  53   3      error();  //没有收到停止位,要求重发
  54   3      ACC=SBUF;
  55   3      //P1=SBUF;
C51 COMPILER V8.02   RECEIVE                                                               08/21/2008 13:57:08 PAGE 2   

  56   3      if(P^RB8!=0)   //奇偶校验
  57   3      error();
  58   3      if(ACC==0xaa)//首帧正确
  59   3      rstart=1;
  60   3      if(rstart)
  61   3      {
  62   4      a[rmath]=SBUF;
  63   4      rmath++;
  64   4      //P1=SBUF;
  65   4      if(rmath==16)
  66   4      {
  67   5      rmath=0;
  68   5      for(j=0;j<16;j++)
  69   5      rsum+=a[j];
  70   5      sum=rsum;
  71   5      //j++;
  72   5      if(sum==a[17])
  73   5      {
  74   6      rstart=0; //全接收后复位
  75   6      rsucc=1; //成功接收标志置1
  76   6      TR0=1; // 允许中断
  77   6      }
  78   5      else
  79   5      error(); //错误重发
  80   5      }//P1=0x40;
  81   4      }
  82   3      }}}
  83          
  84          /**************T0中断入口**************/
  85          void timer0() interrupt 1
  86          {
  87   1      TL0=0xb0;
  88   1      TH0=0x3c;
  89   1      t++;
  90   1      if(t==20)
  91   1      {t1s=1;
  92   2      t=0;
  93   2      }}
  94          
  95          /*************主函数 ****************/
  96          void main()
  97          {
  98   1      uchar i=0;
  99   1      init();
 100   1      while(1)
 101   1      {
 102   2      if(rsucc)
 103   2      {
 104   3      if(t1s)
 105   3      t1s=0;
 106   3      P1=a[i]; //依次把帧首字节与0-F分别送到P1口
 107   3      i++;
 108   3      if(i==16)
 109   3      {i=0;
 110   4      rsucc=0; //等待下一次
 111   4      }
 112   3      }
 113   2      receive();
 114   2      }}


MODULE INFORMATION:   STATIC OVERLAYABLE
C51 COMPILER V8.02   RECEIVE                                                               08/21/2008 13:57:08 PAGE 3   

   CODE SIZE        =    204    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     14    ----
   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 + -