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

📄 ad_da.lst

📁 51开发板调试程序
💻 LST
字号:
C51 COMPILER V7.50   AD_DA                                                                 03/28/2007 11:36:57 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE AD_DA
OBJECT MODULE PLACED IN AD_DA.OBJ
COMPILER INVOKED BY: E:\Program Files\Keil\C51\BIN\C51.EXE AD_DA.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg52.h>
   2          #include <intrins.h>
   3          #include "Define.h"
   4          #include "Set.h"
   5          
   6          ////////////2006.11.08添加///////////////////
   7          #define    Wait1us        _nop_();
   8          #define    Wait2us        {_nop_();_nop_();}
   9          #define    Wait4us        {Wait2us;Wait2us;}
  10          #define    Wait8us        {Wait4us;Wait4us;}
  11          #define    Wait10us      {Wait8us;Wait2us;}
  12          #define    Wait30us      {Wait10us;Wait8us;Wait4us;Wait2us;}/
  13          ///////////////////////////////
  14          
  15          /************定义接口总线**************/
  16          sbit ADClock = P1 ^ 5; //时钟口线
  17          sbit ADDataOut = P1 ^ 4; //数据输出口线
  18          sbit ADChipSelect = P2 ^ 7; //片选口线
  19          /************接口总线定义结束**********/
  20          
  21          ///////////////////////////////////////
  22          sbit SPI_CLK = P3^5; 
  23          sbit SPI_DATA = P3^3; 
  24          sbit CS_DA = P3^4; 
  25          sbit CS_AD = P2^7;
  26          sbit SPI_IOCLK = P1^5;
  27          sbit SPI_DAOUT = P1^4;
  28          
  29          //unsigned char code  TAB[24]={0};
  30          
  31          void Delay(UINTDATA time)
  32          {
  33   1          while(time--);
  34   1      }
  35          
  36          /************************DA****************************/
  37          void DATrans(UINTDATA da)//TLC5615DA转换
  38          {
  39   1              UCHARDATA i = 0;
  40   1              UINTIDATA tempa = 0;
  41   1              UINTIDATA tempb = 0;
  42   1              tempa = da<<2;
  43   1              //da<<=6;
  44   1      
  45   1              CS_DA = 0;
  46   1              SPI_CLK=0;
  47   1      
  48   1              for (i = 0;i < 16;i++)
  49   1              {
  50   2                  tempb = tempa;
  51   2                      SPI_DATA=(bit)(tempa&0x8000);
  52   2                      SPI_CLK=1;
  53   2                      tempa = tempa<<1;
  54   2                      _nop_();
  55   2                      SPI_CLK=0;
C51 COMPILER V7.50   AD_DA                                                                 03/28/2007 11:36:57 PAGE 2   

  56   2              }
  57   1      
  58   1              SPI_CLK = 1;
  59   1              CS_DA=1;
  60   1              //SPI_CLK=0;
  61   1      
  62   1          for (i=20;i>0;i--)
  63   1              {
  64   2                  ;
  65   2              }
  66   1      } 
  67          /******************************************************/
  68          
  69          /************************AD****************************/
  70          UCHAR ADTrans(void)//TLC549
  71          {
  72   1              UCHAR i;
  73   1          UCHAR u;
  74   1          
  75   1          CS_AD = 0;
  76   1          Delay(5);
  77   1      
  78   1          for(i=0;i<8;i++) //read data 
  79   1          { 
  80   2              SPI_IOCLK=0; 
  81   2              u=(u<<=1)|SPI_DAOUT; 
  82   2              SPI_IOCLK=1; 
  83   2              _nop_(); 
  84   2          } 
  85   1      
  86   1          CS_AD=1; 
  87   1          Delay(20);
  88   1          //u = SBUF; 
  89   1      
  90   1              return(u); //return ad data 
  91   1      }
  92          /******************************************************/
  93          
  94          
  95          
  96          /*********函数名称:ADCSelChannel********
  97          *
  98          *功能:转换指定通道的模拟量为数字量
  99          *
 100          *说明:
 101          *
 102          *位置:
 103          *
 104          ****************************************/
 105          unsigned char ADCSelChannel(void)
 106          {
 107   1            UCHARIDATA ConvertValue = 0;
 108   1            UCHARIDATA i;
 109   1            ADChipSelect = 1; //芯片复位
 110   1            ADChipSelect = 0;
 111   1            ADChipSelect = 1;
 112   1            ADClock = 0;
 113   1            Wait4us;
 114   1      
 115   1            ADChipSelect = 0; //芯片起始
 116   1            Wait4us; //等待延时
 117   1            for (i = 0; i < 8; i ++) //输入采样转换时钟
C51 COMPILER V7.50   AD_DA                                                                 03/28/2007 11:36:57 PAGE 3   

 118   1            {
 119   2                  ADClock = 1;
 120   2                  ADClock = 0;
 121   2            }
 122   1            ADChipSelect = 1; //开始转换
 123   1            Wait10us; //等待转换结束
 124   1      
 125   1            ADChipSelect = 0; //读取转换结果
 126   1            Wait4us;
 127   1            for (i = 0; i < 8; i ++) //
 128   1            {
 129   2                  ADClock = 1;
 130   2                  //ConvertValue <<= 1;
 131   2                              ////////
 132   2                              ACC  = ConvertValue;
 133   2                              //////////
 134   2                              ADDataOut = 1;
 135   2                              Wait10us;
 136   2                  if (ADDataOut)
 137   2                  {
 138   3                      ConvertValue = ConvertValue|0x01;
 139   3                  }
 140   2                              else
 141   2                              {
 142   3                                  ConvertValue = ConvertValue&0xfe;
 143   3                              }
 144   2                  ADClock = 0;
 145   2      
 146   2                              ///
 147   2                              ConvertValue = ConvertValue<<1;
 148   2            }
 149   1            ADChipSelect = 1;
 150   1            return (ConvertValue); //返回转换结果
 151   1      }
 152          
 153          /************ADCSelChannel函数结束**********/
 154          
 155          
 156          ///////////////////main////////////////////////////
 157          /*
 158          void main()
 159          {
 160              UCHARIDATA terminal = 0; 
 161              UINTDATA temp=0;
 162              
 163              //while(1)
 164                  {
 165                      //terminal = ADTrans();  ADCSelChannel(void)
 166                  //terminal = ADCSelChannel();
 167                          P1 = 4;
 168                          //P2 = 1;
 169                          P2 = ADCSelChannel();
 170                          terminal = ADCSelChannel();
 171                          //P2 = P2|terminal;
 172                      //P2=ADTrans();
 173             
 174                          temp=temp|terminal;
 175                  
 176                      DATrans(temp);
 177                          //Wait10us
 178                          //_nop_();
 179                          while(1)
C51 COMPILER V7.50   AD_DA                                                                 03/28/2007 11:36:57 PAGE 4   

 180                          {
 181                              P2 = ADCSelChannel();
 182          
 183                                  /////////
 184                                  terminal = ADCSelChannel();
 185                                  temp=temp|terminal;
 186                          
 187                              DATrans(0xffff);
 188                                  Wait10us
 189                             _nop_();
 190          
 191                          }
 192              
 193                          //P2=ADTrans();
 194              }
 195          }*/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    249    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----       6
   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 + -