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

📄 tlv5618.lst

📁 TI公司的TLV5618 驱动程序。本代码在KEILC中编译通过
💻 LST
字号:
C51 COMPILER V8.08   TLV5618                                                               05/21/2009 14:04:17 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE TLV5618
OBJECT MODULE PLACED IN TLV5618.OBJ
COMPILER INVOKED BY: D:\My professional software\keil\userfile\C51\BIN\C51.EXE TLV5618.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1                     //===================================================================== 
   2          //                    TLV5618 DA转换驱动程序 
   3          //硬件连接: DIN --P0^0;    
   4          //          SCLK --P0^1;     
   5          //          CS   --P0^2;        
   6          //          VDD --逻辑电源(+5V) 
   7          //          AGND --GND(0V)  
   8          //writer:谷雨 2008年8月4日于EDA实验室 
   9          //说明   参考电压为0-3.5V,本程序为2.5V 
  10          //       输出模拟电压为:V=2*Vref*(dignum/0x1000) 注:dignum后四位为:0x0000~~0x0fff 
  11          //注意: 所需输入的数字信号值为16位数,其中D15~~D12为特殊位设置,D11~~D0为数据位000~~fff 
  12          //版本号:V1.0 
  13          //===================================================================== 
  14          #include <reg51.h>      //STC单片机头文件  
  15          #include <intrins.h> 
  16          #define uint unsigned int 
  17          #define uchar unsigned char 
  18          #define Channal_A     1    //通道A 
  19          #define Channal_B     2    //通道B 
  20          #define Channal_AB    3    //通道A&B 
  21          //**************************一下为函数声明修************************************** 
  22          static void DA_conver(uint Dignum); 
  23          extern void Write_A_B(uint Data_A,uint Data_B,uchar Channal,bit Model); 
  24          //**************************修改硬件时要修改的部分******************************** 
  25          sbit DIN   = P3^3;     //数据输入端 
  26          sbit SCLK = P3^4;     //时钟信号 
  27          sbit CS    = P3^5;     //片选输入端,低电平有效 
  28          //=================================================================  
  29          // 函数名称 :void DA_conver(uint Dignum) 
  30          // 函数功能 :进行DA转换  
  31          // 入口参数 :Dignum:根据说明设置转化数据.头四位为特殊位用于选择转化方式, 
  32          //            以及用于通道选择.请自行设置.后12位为需要转换的值 
  33          // 出口参数 :无 
  34          //================================================================= 
  35          void DA_conver(uint Dignum) 
  36          { 
  37   1      uint Dig=0; 
  38   1      uchar i=0; 
  39   1      SCLK=1; 
  40   1      CS=0;           //片选有效 
  41   1      for(i=0;i<16;i++)   //写入16为Bit的控制位和数据 
  42   1      { 
  43   2         Dig=Dignum&0x8000; 
  44   2         if(Dig)  
  45   2         { 
  46   3          DIN=1; 
  47   3         } 
  48   2         else 
  49   2         { 
  50   3          DIN=0; 
  51   3         } 
  52   2         SCLK=0; 
  53   2         _nop_(); 
  54   2         Dignum<<=1; 
  55   2      
C51 COMPILER V8.08   TLV5618                                                               05/21/2009 14:04:17 PAGE 2   

  56   2         SCLK=1; 
  57   2         _nop_(); 
  58   2      } 
  59   1      SCLK=1; 
  60   1      CS=1;       //片选无效 
  61   1      } 
  62          //=================================================================  
  63          // 函数名称 :void Write_A_B(uint Data_A,uint Data_B,uchar Channal,bit Model) 
  64          // 函数功能 :模式、通道选择并进行DA转换  
  65          // 入口参数 :Data_A:A通道转换的电压值 
  66          //            Data_B:B通道转换的电压值 
  67          //            Channal:通道选择,其值为Channal_A,Channal_B,或Channal_AB 
  68          //            Model:速度控制位 0:slow mode 1:fast mode 
  69          // 出口参数 :无 
  70          // 说明:     Data_A,Data_B的范围为:0-0x0fff 
  71          //            本程序如果只需要一个通道时,另外一个通道的值可任意,但是不能缺省 
  72          //================================================================= 
  73          void Write_A_B(uint Data_A,uint Data_B,uchar Channal,bit Model) 
  74          { 
  75   1      uint Temp; 
  76   1      if(Model)  
  77   1      { 
  78   2         Temp=0x4000; 
  79   2      } 
  80   1      else  
  81   1          { 
  82   2         Temp=0x0000; 
  83   2      } 
  84   1      switch(Channal) 
  85   1      { 
  86   2          case Channal_A:         //A通道 
  87   2               DA_conver(Temp|0x8000|(0x0fff&Data_A)); 
  88   2            break;  
  89   2          case Channal_B:       //B通道 
  90   2               DA_conver(Temp|0x0000|(0x0fff&Data_B)); 
  91   2          break;  
  92   2          case Channal_AB: 
  93   2               DA_conver(Temp|0x1000|(0x0fff&Data_B));        //A&B通道 
  94   2               DA_conver(Temp|0x8000|(0x0fff&Data_A)); 
  95   2          break; 
  96   2          default: 
  97   2               break; 
  98   2      } 
  99   1      } 
 100          //=================================================================  
 101          // 函数名称 :int main(void) 
 102          // 函数功能 :主函数,无实际意义,仅测试TLV5618用  
 103          // 入口参数 :无 1-A;2-B;3-A&B 
 104          // 出口参数 :无 
 105          //================================================================= 
 106          int main(void) 
 107          {   while(1)
 108   1          {
 109   2            Write_A_B(0x0ccc,0x0000,Channal_A,0);   //测量A通道 
 110   2            //Write_A_B(0x0000,0x0600,Channal_B,1);   //测量B通道 
 111   2            // Write_A_B(0x0504,0x0a47,Channal_AB,1);   //测量AB通道,测量时需屏蔽上面两句 
 112   2        }
 113   1        }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    147    ----
C51 COMPILER V8.08   TLV5618                                                               05/21/2009 14:04:17 PAGE 3   

   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       4
   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 + -