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

📄 cs5460a.lst

📁 本人写的测试CS5530芯片代码,大部分功能和CS5532相同
💻 LST
字号:
C51 COMPILER V7.00  CS5460A                                                                11/15/2007 18:54:05 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 BROWSE DEBUG OBJECTEXTEND

stmt level    source

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

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

 118   1      }
 119          
 120          //获得当前重量数据
 121          long GetWeight(void)
 122          {
 123   1              xdata long tWeight;
 124   1              Read_CS5460A(buf5460,0x16);   //读状态寄存器
 125   1              buf5460[0] = 0;
 126   1              tWeight = *lbuf;
 127   1              /*for(;;)
 128   1              {
 129   1                      Read_CS5460A(buf5460,0x16);   //读状态寄存器
 130   1                      buf5460[0] = 0;
 131   1                      if(tWeight == *lbuf)
 132   1                      {
 133   1                              Read_CS5460A(buf5460,0x16);   //读状态寄存器
 134   1                              buf5460[0] = 0;
 135   1                              if(tWeight == *lbuf)
 136   1                              {
 137   1                                      break;
 138   1                              }else tWeight = *lbuf;
 139   1                      }else tWeight = *lbuf;
 140   1              }*/
 141   1              {
 142   2                      code uchar buf[] = {0x5E, 0xFF,0xFF,0xFF};
 143   2                      Write_CS5460A(buf,4);    //写状态寄存器,对应位产生的标志清除
 144   2              }
 145   1              return tWeight;
 146   1      }
 147          
 148          long Get5460Reg(uchar uReg)
 149          {
 150   1              Read_CS5460A(buf5460,uReg);   //读状态寄存器
 151   1              buf5460[0] = 0;
 152   1              if(buf5460[1]&0x80)
 153   1              {
 154   2                      buf5460[0] = 0xFF;
 155   2              }
 156   1              return *lbuf;
 157   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    350    ----
   CONSTANT SIZE    =     11    ----
   XDATA SIZE       =      5       8
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       6
   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 + -