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

📄 decode.lst

📁 此程序实现无线信标定位
💻 LST
字号:
C51 COMPILER V7.06   DECODE                                                                07/07/2008 21:47:22 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE DECODE
OBJECT MODULE PLACED IN decode.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE decode.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include<AT89X51.H>
   2          
   3          void sound(unsigned char n);
   4          void port_init(void);
   5          
   6          extern unsigned char data beacon_lat[8];//11 ="(244)6.5211N";
   7          extern unsigned char data beacon_lon[8];//12 ="(1210)0.1536E";
   8          extern unsigned char data recieve[15];//21 ="(244)6.5211N(1210)0.1536E";
   9          
  10          void decode(void)
  11          {       
  12   1              unsigned char data DATB;
  13   1              unsigned char data k = 0,i;
  14   1              unsigned char column1 = 0xE8;   //      1110 1000
  15   1              unsigned char column2 = 0xD4;   //      1101 0100
  16   1              unsigned char column3 = 0xB2;   //      1011 0010       监督矩阵
  17   1              unsigned char bg,s,s1,s2,s3;
  18   1              bit ss1,ss2,ss3,chs;
  19   1              port_init();
  20   1      //      shake hand signal :  8 bits 5A signal for 3 times
  21   1              while(1)
  22   1              {
  23   2                      RI = 0;
  24   2                      while(!RI)
  25   2                      {}
  26   2                      if(SBUF == 0x5A)
  27   2                              k ++;
  28   2                      else
  29   2                              k = 0;
  30   2                      if(k == 3)
  31   2                      break;
  32   2              }
  33   1      
  34   1              
  35   1      //      start
  36   1              
  37   1              for(k = 0;k < 15;k ++)
  38   1                      {       
  39   2                              RI = 0;
  40   2                              while(!RI)
  41   2                              {}
  42   2                              recieve[k] = SBUF;
  43   2                      }
  44   1      
  45   1              for(k = 0;k < 15;k ++)
  46   1              {
  47   2                      DATB = recieve[k];
  48   2                      ss1 = 0;
  49   2                      ss2 = 0;
  50   2                      ss3 = 0;
  51   2                      s1 = DATB & column1;
  52   2                      s2 = DATB & column2;
  53   2                      s3 = DATB & column3;            //      DATB与监督矩阵相乘
  54   2                      for(i = 0;i < 8;i ++)
  55   2                      {
C51 COMPILER V7.06   DECODE                                                                07/07/2008 21:47:22 PAGE 2   

  56   3                              ss1 = ss1 ^ (s1 >> i) % 2;
  57   3                              ss2 = ss2 ^ (s2 >> i) % 2;
  58   3                              ss3 = ss3 ^ (s3 >> i) % 2;              //      从低到高提取上述结果各位异或,完成逻辑矩阵乘法求和的部分
  59   3                      }
  60   2                      s1 = ss1;s2 = ss2;s3 = ss3;
  61   2                      s = s1 * 100 + s2 * 10 + s3;            //      S为校正子
  62   2                      switch(s)
  63   2                      {
  64   3                              case   0:       break;                          //      correct
  65   3                              case   1:       bg = DATB & 2;          bg = ~( bg >> 1 | 254 );                DATB = (DATB & (255 - 2)) + bg * 2;             break;
  66   3                      //      第二位错,bg提取出第二位,              右移一位,其它位置1,然后取反, DATB去除第二位影响后与bg相加,最低位为奇

⌨️ 快捷键说明

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