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

📄 cs5460a.lst

📁 RM0038红外传感器接收电视机摇控的源码
💻 LST
字号:
C51 COMPILER V7.00  CS5460A                                                                07/18/2007 12:16:45 PAGE 1   


C51 COMPILER V7.00, COMPILATION OF MODULE CS5460A
OBJECT MODULE PLACED IN CS5460A.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE CS5460A.c ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include "CS5460A.h"
   2          #include "default.h"
   3          
   4          sbit SK=P3^4;           /* SPI时钟 */
   5          sbit SO=P3^2;           /*  SDO    */ 
   6          sbit SI=P3^3;           /*  SDI    */ 
   7          sbit RST = P3^5;
   8          
   9          uchar Read8(void);          //SPI 读一个字节的 程序
  10          void Write8(uchar cData);   //SPI 写一个字节的 程序
  11          void initspi(void);         // 复位CS5460A的SPI模式  程序
  12          void Write_CS5460A(uchar *p,uchar len);// 写 CS5460A 的状态寄存器
  13          void Read_CS5460A(uchar *p,uchar CommData );// 读 CS5460A 的状态寄存器
  14          
  15          xdata uchar buf5460[4];
  16          code long *lbuf = (long *)&buf5460;
  17          //-------------------------------------------------
  18          //SPI 读一个字节的 程序
  19          uchar Read8(void) 
  20          { 
  21   1              bit bData; uchar cLoop; uchar cData; 
  22   1              cData=0x00;
  23   1              SI=1;
  24   1              for(cLoop = 0; cLoop < 8; cLoop++) 
  25   1              { 
  26   2                      SK=1; 
  27   2                      SK=0;        //下降沿输出
  28   2                  cData<<=1; 
  29   2                      bData=SO; 
  30   2                      if(bData) { cData|=0x01; } 
  31   2              }       
  32   1              return cData;
  33   1      }
  34          
  35          //SPI 写一个字节的 程序
  36          void Write8(uchar cData) 
  37          {
  38   1              uchar cLoop; 
  39   1              for(cLoop = 0; cLoop < 8; cLoop++) 
  40   1              {
  41   2                      if((cData&0x80)==0) { SI=0; } 
  42   2                              else { SI=1; }
  43   2                      SK=0;      //上升沿写入 
  44   2                      SK=1; 
  45   2                      cData <<= 1; 
  46   2              }
  47   1      }
  48          
  49          // 写 CS5460A 的状态寄存器
  50          void Write_CS5460A(uchar *p,uchar len)
  51          {
  52   1         uchar i;
  53   1         initspi();
  54   1         for(i=0;i<len;i++)
  55   1          { Write8(p[i]);}
C51 COMPILER V7.00  CS5460A                                                                07/18/2007 12:16:45 PAGE 2   

  56   1      }
  57          
  58          
  59          // 读 CS5460A 的状态寄存器
  60          void Read_CS5460A(uchar *p,uchar CommData )
  61          {
  62   1         uchar i;
  63   1         initspi();
  64   1         Write8(CommData);
  65   1         for(i = 1; i < 4; i++)
  66   1              {
  67   2            p[i] = Read8();
  68   2          }
  69   1      }
  70          
  71          void initspi(void)
  72          {
  73   1              Write8(SYNC1);
  74   1              Write8(SYNC1);
  75   1              Write8(SYNC1);
  76   1              Write8(SYNC0);
  77   1      }
  78          
  79          void Clear_DRDY()
  80           {
  81   1              code uchar tBuf[] = {0x5E,0xFF,0xFF,0xFF};
  82   1              initspi();
  83   1              Write_CS5460A(tBuf,4);
  84   1      }
  85          
  86          bit Waite_DRDY_High()
  87          {
  88   1              uchar i;
  89   1              while(i < 250)
  90   1              {
  91   2                      initspi();
  92   2                      Read_CS5460A(buf5460,0x1E);
  93   2                      if(buf5460[1]&0x80)
  94   2                              return TRUE;
  95   2                      i++;
  96   2                      delay(1000);
  97   2              }
  98   1              return FALSE;
  99   1      }
 100          
 101          void Reset5460A()
 102          {
 103   1              RST = 0;
 104   1              delay(100);
 105   1              RST = 1;
 106   1      }
 107          
 108          //获得当前重量数据
 109          long GetWeight(void)
 110          {
 111   1              long xdata tWeight;
 112   1              Read_CS5460A(buf5460,0x16);   //读状态寄存器
 113   1              buf5460[0] = 0;
 114   1              tWeight = *lbuf;
 115   1              for(;;)
 116   1              {
 117   2                      Read_CS5460A(buf5460,0x16);   //读状态寄存器
C51 COMPILER V7.00  CS5460A                                                                07/18/2007 12:16:45 PAGE 3   

 118   2                      buf5460[0] = 0;
 119   2                      if(tWeight == *lbuf)
 120   2                      {
 121   3                              Read_CS5460A(buf5460,0x16);   //读状态寄存器
 122   3                              buf5460[0] = 0;
 123   3                              if(tWeight == *lbuf)
 124   3                              {
 125   4                                      break;
 126   4                              }else tWeight = *lbuf;
 127   3                      }else tWeight = *lbuf;
 128   2              }
 129   1              {
 130   2                      code uchar buf[] = {0x5E, 0xFF,0xFF,0xFF};
 131   2                      Write_CS5460A(buf,4);    //写状态寄存器,对应位产生的标志清除
 132   2              }
 133   1              return tWeight;
 134   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    391    ----
   CONSTANT SIZE    =     11    ----
   XDATA SIZE       =      4       4
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       9
   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 + -