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

📄 cs5532.lst

📁 cs5532c test cs 5532c test cs5532c test
💻 LST
字号:
C51 COMPILER V7.50   CS5532                                                                09/24/2007 10:48:07 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE CS5532
OBJECT MODULE PLACED IN cs5532.OBJ
COMPILER INVOKED BY: C:\Keil\C51\Bin\c51.exe cs5532.c DB OE SMALL ROM(LARGE)

line level    source

   1          /* CS5532程序
   2          * Copyright (c) 2007 宁波柯力电气制造有限公司
   3          * All rights reserved
   4          
   5          * 文件名称: CS5532_C
   6          * 文件标示: cs5532数据采样程序函数
   7          * 摘    要: 函数及变量定义。
   8          
   9          
  10          * 当前版本: 1.0
  11          * 作    者: 张勇
  12          * 完成日期: 2007年8月22日
  13          */
  14          
  15          
  16          #define CS5532_C
  17          
  18          #include "reg8252.h"
  19          #include "intrins.h"
  20          
  21          // Original design board
  22          sbit CS5532_CS=P3^7;
  23          sbit CS5532_SDI=P3^6;
  24          sbit CS5532_SCLK=P3^5;
  25          sbit CS5532_SDO=P3^4;
  26          
  27          /* 3线接口的连接,与实际电路有关 */
  28          sbit    AD420_DIN = P1^2;
  29          sbit    AD420_CLOCK = P1^3;
  30          sbit    AD420_LATCH = P1^4;
  31          sbit    AD420_CLEAR = P1^5;
  32          
  33          unsigned char Sample_buf[4];
  34          
  35          
  36          void CS5532_Write_Byte(unsigned char dat);
  37          //void CS5532_Read_Data(unsigned char address_pt);
  38          //void CS5532_Read_Reg(unsigned char address_pt);
  39          void CS5532_Sample(void);
  40          void CS5532_Init(void);
  41          
  42          
  43          
  44          /***************************************************************
  45                  1ms延时
  46          ***************************************************************/
  47          void Delay_1ms(unsigned char count)
  48          {
  49   1              unsigned char i,j;
  50   1              while(count--)
  51   1              {
  52   2                      for(i=9;i>0;i--)
  53   2                      {
  54   3                              for(j=45;j>0;j--)
  55   3                                      ;
C51 COMPILER V7.50   CS5532                                                                09/24/2007 10:48:07 PAGE 2   

  56   3                      }
  57   2              }
  58   1      }
  59          
  60          void CS5532_Write_Byte(unsigned char dat)//向CS5532写一字节数据
  61          {
  62   1              unsigned char i;
  63   1              CS5532_CS=0;
  64   1              CS5532_SCLK=0;//时钟低  
  65   1              for(i=0;i<8;i++)
  66   1              {
  67   2                      if((dat<<i)&0x80) 
  68   2                              CS5532_SDI=1;   //数据送到SPI的SDI口
  69   2                      else             
  70   2                              CS5532_SDI=0;
  71   2                      CS5532_SCLK=1;    //时钟高
  72   2                      _nop_();
  73   2                      _nop_();
  74   2                      _nop_();
  75   2                      CS5532_SCLK=0;    //时钟低
  76   2                      _nop_();
  77   2                      _nop_();
  78   2                      _nop_();
  79   2           }
  80   1      }
  81          
  82          
  83          void CS5532_Read_Data(void)
  84          {
  85   1              unsigned char i,j;    
  86   1              CS5532_CS=0;
  87   1              CS5532_SCLK=0;//时钟低 
  88   1              for(j=0;j<4;j++)
  89   1              {
  90   2                      for(i=0;i<8;i++)
  91   2                      {
  92   3                              CS5532_SCLK=1;     //时钟高
  93   3                              _nop_();
  94   3                              _nop_();
  95   3                              Sample_buf[j]<<=1;
  96   3                              if(CS5532_SDO) 
  97   3                                      Sample_buf[j] |= 0x01;  //从SDO读取数据
  98   3                              else
  99   3                                      Sample_buf[j] &= 0xfe;
 100   3                              _nop_();
 101   3                              _nop_();
 102   3                              CS5532_SCLK=0;            //时钟低
 103   3                              _nop_();
 104   3                              _nop_();
 105   3                      }
 106   2              }
 107   1      } 
 108          void CS5532_Read_Reg(unsigned char dat)
 109          {
 110   1              CS5532_Write_Byte(dat);
 111   1              CS5532_Read_Data();
 112   1              CS5532_CS=1;
 113   1              CS5532_SDI = 0;
 114   1              CS5532_SCLK = 0;  //时钟低
 115   1      }
 116          void CS5532_Sample(void)
 117          {
C51 COMPILER V7.50   CS5532                                                                09/24/2007 10:48:07 PAGE 3   

 118   1              unsigned char i;
 119   1              CS5532_CS=0; //片选使能
 120   1              CS5532_SDI = 0;
 121   1              CS5532_SCLK = 0;  //时钟低
 122   1              for(i=0;i<8;i++)
 123   1              {
 124   2                      _nop_();
 125   2                      _nop_();
 126   2                      CS5532_SCLK = 1;
 127   2                      _nop_();
 128   2                      _nop_();
 129   2                      CS5532_SCLK = 0;  //时钟低
 130   2              }
 131   1              CS5532_Read_Data();
 132   1              CS5532_CS = 1; //片选使能
 133   1              CS5532_SDI = 1;
 134   1      }
 135          
 136          void CS5532_Init(void)
 137          {
 138   1              unsigned char i;
 139   1              //串口初始化,串行口为命令状态
 140   1          CS5532_CS=0; //片选使能
 141   1      reset:
 142   1              for(i=0;i<15;i++)
 143   1              {
 144   2                      CS5532_Write_Byte(0xff);//发送命令
 145   2              }
 146   1              CS5532_Write_Byte(0xfe);
 147   1              CS5532_SDI = 1;
 148   1              CS5532_CS = 1;
 149   1              CS5532_SDI = 0;
 150   1              
 151   1              CS5532_Write_Byte(0x03);////写入CS5532复位命令
 152   1              CS5532_Write_Byte(0x22);
 153   1              CS5532_Write_Byte(0x00);
 154   1              CS5532_Write_Byte(0x00);
 155   1              CS5532_Write_Byte(0x00);
 156   1              
 157   1              CS5532_Read_Reg(0x0b);//读取配置寄存器内容
 158   1              if(!(Sample_buf[0]&0x10))       //acc.4=0 复位没有完成,再来一次复位过程
 159   1              {
 160   2                      goto reset;
 161   2              }
 162   1              
 163   1              CS5532_Write_Byte(0x03);//写配置寄存器
 164   1              CS5532_Write_Byte(0x00);
 165   1              CS5532_Write_Byte(0x08);
 166   1              CS5532_Write_Byte(0x00);
 167   1              CS5532_Write_Byte(0x00);
 168   1              
 169   1              CS5532_Write_Byte(0x05);//写通道设置寄存器
 170   1              CS5532_Write_Byte(0x29);
 171   1              CS5532_Write_Byte(0x80);
 172   1              CS5532_Write_Byte(0x29);
 173   1              CS5532_Write_Byte(0x80);
 174   1              
 175   1              CS5532_Write_Byte(0xc0);//启动A/D连续转换
 176   1      }
 177          /********************************************************
 178                                  向AD420写数据
 179          ********************************************************/
C51 COMPILER V7.50   CS5532                                                                09/24/2007 10:48:07 PAGE 4   

 180          void Write_Ad420(unsigned int dat)
 181          {
 182   1              unsigned char i;
 183   1          AD420_CLOCK = 0;
 184   1          AD420_DIN = 0;
 185   1              AD420_LATCH = 0;
 186   1              for(i=0;i<16;i++)
 187   1              {  
 188   2                  if((dat<<i)&0x8000)
 189   2                      {
 190   3                          AD420_DIN = 1;
 191   3                              _nop_();                        
 192   3                              _nop_();
 193   3                              _nop_();
 194   3                              _nop_();
 195   3                              _nop_();                        
 196   3                              _nop_();
 197   3                              _nop_();
 198   3                              _nop_();
 199   3                              _nop_();                        
 200   3                              _nop_();
 201   3                              _nop_();
 202   3                              _nop_();
 203   3              }
 204   2                      else
 205   2                      {
 206   3                          AD420_DIN = 0;
 207   3                              _nop_();                        
 208   3                              _nop_();
 209   3                              _nop_();
 210   3                              _nop_();
 211   3                              _nop_();                        
 212   3                              _nop_();
 213   3                              _nop_();
 214   3                              _nop_();
 215   3                              _nop_();                        
 216   3                              _nop_();
 217   3                              _nop_();
 218   3                              _nop_();
 219   3              }
 220   2              AD420_CLOCK = 0;
 221   2                      _nop_();                        
 222   2                      _nop_();
 223   2                      _nop_();
 224   2                      _nop_();
 225   2                      _nop_();                        
 226   2                      _nop_();
 227   2                      _nop_();
 228   2                      _nop_();
 229   2                      _nop_();                        
 230   2                      _nop_();
 231   2                      _nop_();
 232   2                      _nop_();
 233   2                      AD420_CLOCK = 1;
 234   2                      Delay_1ms(1);
 235   2      
 236   2              }
 237   1              AD420_CLOCK = 0;
 238   1      //      AD420_DIN = 1;
 239   1              AD420_LATCH = 1;
 240   1              Delay_1ms(1);
 241   1      //      AD420_LATCH = 0;
C51 COMPILER V7.50   CS5532                                                                09/24/2007 10:48:07 PAGE 5   

 242   1              Delay_1ms(1);
 243   1      }
 244          
 245          void main()
 246          {
 247   1              unsigned int hh;
 248   1              unsigned long xx,zz;
 249   1              CS5532_Init();
 250   1              while(1)
 251   1              {
 252   2                      CS5532_Sample();
 253   2                      zz = Sample_buf[0];
 254   2                      zz <<= 8;
 255   2                      zz |= Sample_buf[1];
 256   2                      zz <<= 8;
 257   2                      zz |= Sample_buf[2];
 258   2                      zz &= 0xffffff;
 259   2                      xx = (zz-0)/50;         //转化为16bit的数字量
 260   2                      hh = xx;
 261   2                      _nop_();
 262   2                      Write_Ad420(0x8000);
 263   2      
 264   2      /*        while(1)
 265   2              {
 266   2                  P1_2 = 0;
 267   2                  P1_3 = 0;
 268   2                  P1_2 = 1;
 269   2                  P1_3 = 1;
 270   2              }
 271   2      
 272   2      */      
 273   2          }
 274   1      }
 275          
 276          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    493    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4      10
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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