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

📄 cs5460.lst

📁 C51编写的ADC芯片CS5460源程序
💻 LST
字号:
C51 COMPILER V8.01   CS5460                                                                01/25/2007 09:59:10 PAGE 1   


C51 COMPILER V8.01, COMPILATION OF MODULE CS5460
OBJECT MODULE PLACED IN cs5460.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE cs5460.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //-------------存在的问题------------------------------------------
   2          //问题一:目前没有办法检验这个模块是否正确,因为无法确定得出的数据是否合理 
   3          //                              暂时将这个模块存放在主程序中,通过真实地称重来检验是否准确。
   4          //                              尽管我目前我无法准确判断,得到的AD值是否准确,但是至少线性
   5          //                              应该正确,AD值也不能太小。
   6          //问题二:现在不能实现连续转换
   7          #include<reg52.h>
   8          #include<intrins.h>
   9          #define uchar unsigned char
  10          #define uint unsigned int
  11          //以下是cs5460的管脚定义:
  12          sbit reset_5460=P1^0;
  13          sbit sdo_5460=P1^1;
  14          sbit sclk_5460=P1^2;
  15          sbit sdi_5460=P1^3;
  16          long buf_rd[3]={0,0,0};
  17          //以下是cs5460的函数声明
  18          void cmd_5460(uchar cmd);
  19          long read_5460(void);
  20          void delay_nms(uint n);
  21          void main(void)
  22          {
  23   1              char k;
  24   1              cmd_5460(0xff);
  25   1              cmd_5460(0xff);
  26   1              cmd_5460(0xff);
  27   1              cmd_5460(0xfe);//以上四条命令的功能:初始化5460的串口
  28   1              cmd_5460(0xe8);//启动5460的连续转换
  29   1              delay_nms(5000);
  30   1              //cmd_5460(0x0e);//读取瞬时电流寄存器
  31   1              k=0;
  32   1              while(k<3)
  33   1              {
  34   2                      cmd_5460(0x0e);//读取瞬时电流寄存器
  35   2                      buf_rd[k]=read_5460();
  36   2                      delay_nms(1000);
  37   2                      k++;
  38   2              }
  39   1              //read_5460();
  40   1              _nop_();
  41   1      }
  42          
  43          
  44          
  45          /*************************************************
  46          原型:void cmd_5460(uchar cmd)
  47          行参:uchar cmd
  48          返回值:无
  49          功能:向cs5460中写入8位的命令
  50          *************************************************/
  51          void cmd_5460(uchar cmd)
  52          {
  53   1              char i=8;
  54   1              while(i>0)
  55   1              {
C51 COMPILER V8.01   CS5460                                                                01/25/2007 09:59:10 PAGE 2   

  56   2                      sclk_5460=0;
  57   2                if(cmd>=0x80)
  58   2                         sdi_5460=1;
  59   2                else
  60   2                         sdi_5460=0;
  61   2                      sclk_5460=1;
  62   2                      i--;
  63   2                      cmd<<=1;
  64   2              }
  65   1      }
  66          /******************************
  67          原型:void delay_nms(uint n)
  68          行参:uint n
  69          返回值:无
  70          功能:延时n ms
  71          *****************************/
  72          void delay_nms(uint n)
  73          {
  74   1              uchar i;
  75   1              for(;n>0;n--)
  76   1              {
  77   2                      for(i=125;i>0;i--)
  78   2                      {
  79   3                              ;
  80   3                      }
  81   2              }
  82   1      }
  83          /******************************
  84          原型:void read_5460(void)
  85          行参:无
  86          返回值:无
  87          功能:从cs5460中读取24位数据,存放在数据缓冲区buf_read中
  88          *****************************/
  89          /****************************
  90          void read_5460(void)
  91          {
  92                  char i;
  93                  char j;
  94                  long temp;
  95                  j=0;
  96                  while(j<3)
  97                  {
  98                          i=24;
  99                          temp=0;
 100                          sdi_5460=1;
 101                          while(i>0)
 102                          {
 103                                  sclk_5460=0;
 104                                  temp<<=1;
 105                                  sclk_5460=1;
 106                                  _nop_();
 107                                  if(sdo_5460==1)
 108                                          temp|=0x00000001;
 109                                  i--;
 110                          }
 111                          buf_rd[j]=temp;
 112                          j++;
 113                          delay_nms(1000);
 114                  }
 115          }
 116          ******************************/
 117          long read_5460(void)
C51 COMPILER V8.01   CS5460                                                                01/25/2007 09:59:10 PAGE 3   

 118          {
 119   1              char i;
 120   1              char j=0;
 121   1              //char k;
 122   1              long temp;
 123   1              //k=0;
 124   1                      //cmd_5460(0x0e);//读取瞬时电流寄存器
 125   1                      //read_5460();
 126   1                      temp=0;
 127   1                      while(j<3)
 128   1                      {
 129   2                              i=7;
 130   2                              sdi_5460=1;
 131   2                              while(i>0)
 132   2                              {
 133   3                                      sclk_5460=0;
 134   3                                      temp<<=1;
 135   3                                      sclk_5460=1;
 136   3                                      _nop_();
 137   3                                      if(sdo_5460==1)
 138   3                                              temp|=0x00000001;
 139   3                                      i--;
 140   3                              }
 141   2                              sdi_5460=0;
 142   2                              sclk_5460=0;
 143   2                              temp<<=1;
 144   2                              sclk_5460=1;
 145   2                              _nop_();
 146   2                              if(sdo_5460==1)
 147   2                                      temp|=0x00000001;
 148   2                              j++;
 149   2                      }
 150   1                      return(temp);
 151   1      }


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