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

📄 cc1160.lst

📁 电子称重的程序
💻 LST
字号:
C51 COMPILER V8.02   CC1160                                                                05/04/2008 21:35:46 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE CC1160
OBJECT MODULE PLACED IN CC1160.OBJ
COMPILER INVOKED BY: e:\Keil\C51\BIN\C51.EXE CC1160.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<config.h>
   2          #include<head.h>
   3          #pragma OPTIMIZE(8,size)
   4          
   5          
   6          #define ADBUFEN 0  //cs1160的输入buf是否开启,开启后噪音较大,但输入阻抗可达10m
   7          
   8          long pdata adreadtemp[3];
   9          
  10          union   LongData
  11          {
  12                  unsigned long   word ;
  13                  unsigned char   byte[4];
  14          };
  15          //
  16          void    delay_50us(void)
  17          {
  18   1              unsigned char i;
  19   1              for (i=0; i<16; i++)
  20   1                      ;
  21   1      }
  22          void SPI_clock(void)
  23          {
  24   1              SCLK = LOW;
  25   1              _nop_();_nop_();
  26   1              SCLK = HIGH;
  27   1              _nop_();_nop_();
  28   1      }
  29          /**************************************************************************************
  30          *函数原型:     void SPI_send(unsigned char SPI_data)
  31          *功能    :     向spi总线上发送8位数据信号
  32          **************************************************************************************/
  33          void SPI_send(unsigned char SPI_data)
  34          {
  35   1              unsigned char bitCount;
  36   1              for (bitCount=0; bitCount<8; bitCount++)
  37   1              {
  38   2                      SDI = (bit)(SPI_data & 0x80);
  39   2                      SPI_data <<= 1;
  40   2                      SPI_clock();
  41   2              }
  42   1      }
  43          /**************************************************************************************
  44          *函数原型:     unsigned char SPI_receive(void)
  45          *功能    :     从spi总线上接受8位数据信号,并将接收到的数据作为一个字节返回
  46          **************************************************************************************/
  47          unsigned char SPI_receive(void)
  48          {
  49   1              unsigned char bitCount;
  50   1              unsigned char SPI_data=0;
  51   1              SDO = 1;
  52   1              for (bitCount=0; bitCount<8; bitCount++)
  53   1              {
  54   2                      SPI_data *= 2;
  55   2                      SCLK = HIGH;
C51 COMPILER V8.02   CC1160                                                                05/04/2008 21:35:46 PAGE 2   

  56   2                      _nop_();_nop_();
  57   2                      SCLK = LOW;
  58   2                      _nop_();_nop_();
  59   2                      if (SDO)
  60   2                      {
  61   3                              SPI_data++;
  62   3                      }
  63   2              }
  64   1              return (SPI_data);
  65   1      }
  66          
  67          /**************************************************************************
  68          *      函数原型:void EXT0_INT(void);
  69          *      功    能:外部中断读AD中断!
  70          **************************************************************************/
  71          void  exit_int0()    interrupt  0
  72           {
  73   1              unsigned char i;
  74   1              union LongData a;
  75   1              while (DRDY)                            //当drdy 为高时,不读取数据
  76   1                      ;
  77   1              a.byte[0] = 0;
  78   1              CS = LOW;
  79   1              _nop_();_nop_();
  80   1              SPI_send(COMM_RDATA);
  81   1              delay_50us();
  82   1              for (i=1;i<4;i++)
  83   1              {
  84   2                      a.byte[i] = SPI_receive();
  85   2              }
  86   1              CS = HIGH;
  87   1              adreadtemp[0]=adreadtemp[1];
  88   1              adreadtemp[1]=adreadtemp[2];
  89   1              adreadtemp[2]=(a.word>>8);
  90   1              PostMessageOne(M_ADHAD,0);
  91   1       }
  92          
  93          /**************************************************************************
  94          *      函数原型: ulong CS1160read();
  95          *      功    能:读AD功能函数
  96          **************************************************************************/
  97          long CS1160read()
  98          {
  99   1              return adreadtemp[0]+adreadtemp[1]+adreadtemp[2];
 100   1      }
 101          
 102          
 103          /******************************************************
 104          *函数原型:     void InitCS1160(void)
 105          *功能    :     初始化CS1160
 106          **************************************************************************************/
 107          void InitCS1160(uchar gain,uchar adzero)
 108          {
 109   1              SCLK = HIGH;
 110   1              SDI = HIGH ;
 111   1              SDO = HIGH ;
 112   1              _nop_();_nop_();
 113   1              CS = LOW;
 114   1              _nop_();_nop_();
 115   1              SPI_send(COMM_RESET);                   //rst 1240
 116   1              _nop_();_nop_();
 117   1              CS = HIGH;
C51 COMPILER V8.02   CC1160                                                                05/04/2008 21:35:46 PAGE 3   

 118   1              delay_50us();
 119   1      
 120   1      
 121   1              CS = LOW;
 122   1              _nop_();_nop_();
 123   1              SPI_send(0x50);
 124   1              SPI_send(0x02);                                 // 发送3个指令
 125   1              if(gain==64)
 126   1              SPI_send(0x06);                                 // 0x00 pga =64
 127   1              else
 128   1              SPI_send(0x07);                                 // 0x00 pga =128
 129   1              SPI_send(0x01);                                 // 0x01 设置ad 通道
 130   1              #if ADBUFEN
                      SPI_send(0x70);                                 // 0x02 输出频率 15hz,参考电压2.5V
                      #else
 133   1              SPI_send(0x60);                                 // 0x02 输出频率 15hz,参考电压2.5V
 134   1              #endif
 135   1              _nop_();_nop_();
 136   1              CS = HIGH;
 137   1              delay_50us();
 138   1      
 139   1              CS = LOW;
 140   1              _nop_();_nop_();
 141   1              SPI_send(COMM_CALSELF);
 142   1              _nop_();_nop_();
 143   1              CS = HIGH;
 144   1              while (DRDY)
 145   1                      ;
 146   1              while (!DRDY)
 147   1                      ;
 148   1              delayms(10);
 149   1              while (DRDY)                                    //扔调一次 数据
 150   1                      ;
 151   1              IT0=1;
 152   1              EX0=1;
 153   1              EA=1;         
 154   1      
 155   1      }
*** WARNING C280 IN LINE 107 OF CC1160.C: 'adzero': unreferenced local variable
 156          
 157          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    325    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =     12    ----
   DATA SIZE        =   ----       5
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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