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

📄 send.lst

📁 口若悬河口若悬河口若悬河口若悬河口若悬河口若悬河口若悬河口若悬河口若悬河
💻 LST
字号:
C51 COMPILER V8.02   SEND                                                                  08/21/2008 17:20:12 PAGE 1   


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

line level    source

   1          
   2          /**************先发0xaa,再发0-F笔段码(要发奇偶检验位TB8),然后发和检验字节********************/
   3          #include"reg52.h"
   4          #define uchar unsigned char
   5          uchar seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,
   6              0x83,0xc6,0xa1,0x86,0x8e};   //0-F笔段码
   7          uchar sum;
   8          bit tsucc=1; //开始时假设发送成功
   9          sbit P10=P1^0;
  10          uchar timemath=0;
  11          uchar rdata;
  12          /************初始化T1,波特率4800,不倍增,8位自动重装******************/
  13          void init()
  14          {
  15   1      SCON=0xd0;
  16   1      TL1=0xfa;
  17   1      TH1=0xfa;
  18   1      TMOD=0x2f;
  19   1      ET1=0;//T1禁止中断,只用于计数(IE)
  20   1      TR1=1;
  21   1      //ES=1;
  22   1      //EA=1;
  23   1      }
  24          
  25          /****************0-F和放seg[17],有返回值*******************/
  26          unsigned int add()
  27          {
  28   1      uchar i;
  29   1      int sum=0;
  30   1      for(i=0;i<16;i++)
  31   1      sum+=seg[i];
  32   1      return(sum);
  33   1      }
  34          
  35          /*************把0-F字节分别发过去******************/
  36          
  37          send()
  38          {
  39   1      ACC=seg[timemath];
  40   1      TB8=P;
  41   1      SBUF=ACC;
  42   1      timemath++;
  43   1      if (timemath==16)
  44   1      {timemath=0;
  45   2      //P1=0xf0;
  46   2      ACC=sum;
  47   2      TB8=P;
  48   2      SBUF=ACC; //和部分
  49   2      while(TI==0);//最后一帧要清TI,防止重发,等待回发是否正确
  50   2      TI=0;
  51   2      }
  52   1      }
  53          
  54          /**************接收部分*****************/
  55          void receive()
C51 COMPILER V8.02   SEND                                                                  08/21/2008 17:20:12 PAGE 2   

  56          {
  57   1      ACC=SBUF;
  58   1      rdata=ACC;
  59   1      //P1=ACC;
  60   1      if(P^RB8==0&&rdata==0xa5)
  61   1      //if(P^RB8!=0||rdata==0xa6)
  62   1      {tsucc=0;//发送成功
  63   2      }
  64   1      else 
  65   1      {
  66   2      tsucc=1;//重发
  67   2      ACC=0xa6;
  68   2      TB8=P;
  69   2      SBUF=ACC;
  70   2      while(TI==0);//最后一帧要清TI,防止重发,等待回发是否正确
  71   2      TI=0;
  72   2      //P1=ACC;
  73   2      }
  74   1      }
  75          
  76          /***************主函数******************/
  77          void main()
  78          {
  79   1      P10=1;
  80   1      //uchar k;
  81   1      init();
  82   1      while(1)
  83   1      if(tsucc)
  84   1      {
  85   2      P10=~P10;
  86   2      tsucc=0;
  87   2      sum=add(); 
  88   2      ACC=0xaa;//发帧首标志
  89   2      TB8=P;
  90   2      SBUF=ACC;
  91   2      while(tsucc==0)//等待发送或接收有效     (重发时有用)
  92   2      {if(RI==1||TI==1)
  93   3      {
  94   4      if(TI)
  95   4      {TI=0;
  96   5      send();
  97   5      }
  98   4      if(RI)
  99   4      {RI=0;
 100   5      receive();
 101   5      }}
 102   3      }}}


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