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

📄 max5533.lst

📁 (个人原创)这个是我在Keil下写的MAX5532--MAX5535通用的驱动代码
💻 LST
字号:
C51 COMPILER V8.08   MAX5533                                                               08/21/2008 16:59:51 PAGE 1   


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

line level    source

   1          //完成时间: 2008/08/21
   2          //作者:ppt1845
   3          //测试:ppt1845(以下全部模块通过硬件测试)
   4          
   5          //--------我手上得到的是5532芯片,必须要提供外部参考电压,并不是5533--------//
   6          /** MCU为51单片机,主频12M,根据IC手册和Keil指令周期,不需要加必要延时,就能
   7          满足所有操作时序要求 **/
   8          
   9          #include "MAX5533.h"
  10          
  11          //---------------写控制位和DAC数据函数--------------------//
  12          /*********************************************************
  13          函数形参:
  14            control_bits: 为需要写入的控制位.
  15            DAC_dat: 为需要写入的数据,并可根据在函数调用时,可以写入
  16                     有效数据,也可以写入无效数据.
  17          函数功能:
  18            一个16位数据的完整写入.   
  19          *********************************************************/
  20          void Write_MAX5533(uint8 control_bits, uint16 DAC_dat)
  21          {
  22   1        uint8 i;
  23   1        MAX5533_SCLK=0;
  24   1        MAX5533_CS=0;                //使能
  25   1        DAC_dat=((uint16)control_bits<<12)|DAC_dat;
  26   1        for(i=0;i<16;i++)
  27   1        {
  28   2          if(DAC_dat&0x8000)
  29   2                MAX5533_DIN=1;
  30   2              else
  31   2                MAX5533_DIN=0;
  32   2              MAX5533_SCLK=1;            //写入数据
  33   2              DAC_dat<<=1;
  34   2              MAX5533_SCLK=0;
  35   2        }
  36   1        MAX5533_CS=1;                    //禁止
  37   1        MAX5533_SCLK=1;                  //为减少电源功耗
  38   1      }
  39          //--------------------------------------------------------//
  40          
  41          
  42          /*********************************************************
  43          函数形参:
  44            Ref_Volt: 为在进入空闲模式后,内部参考电压的输出选择值
  45            当
  46              Ref_Volt = Ref_1v214 时,内部参考电压的输出为 1.214 v
  47                  Ref_Volt = Ref_1v940 时,内部参考电压的输出为 1.940 v
  48                  Ref_Volt = Ref_2v425 时,内部参考电压的输出为 2.425 v
  49                  Ref_Volt = Ref_3v885 时,内部参考电压的输出为 3.885 v
  50          注意:
  51            StandBy模式只针对MAX5533和MAX5535,参考电压输出有效,如果
  52            将此函数用于MAX5532和MAX5534的话,那MAX5532和MAX5534将直
  53            接进入掉电模式。
  54          函数功能:
  55            使所选器件进入空闲模式,DAC输出呈高阻抗,使之功耗更低
C51 COMPILER V8.08   MAX5533                                                               08/21/2008 16:59:51 PAGE 2   

  56          **********************************************************/
  57          void Enter_StandBy_Mode(uint8 Ref_Volt)
  58          {
  59   1        Write_MAX5533(StandBy_Mode,Ref_Volt);
  60   1      }
  61          //----------------------------------------------------------------------------//
  62          
  63          
  64          /*********************************************************
  65          函数形参:
  66            Ref_Volt: 与Enter_StandBy_Mode()函数中的说明一样。
  67          注意:
  68            1、Normal模式对于MAX5532--MAX5535全部适用。
  69            2、但是对于内部参考电压输出,只对MAX5533和MAX5535有效。
  70          函数功能:
  71            使器件进入工作模式后,DAC输出DAC寄存器中的转换值。
  72          **********************************************************/
  73          void Enter_Normal_Mode(uint8 Ref_Volt)
  74          {
  75   1        Write_MAX5533(Normal_Mode,Ref_Volt);
  76   1      }
  77          //---------------------------------------------------------------------------//
  78          
  79          
  80          /*********************************************************
  81          函数形参:
  82            Ref_Volt: 与Enter_StandBy_Mode()函数中的说明一样。
  83                      此函数中的Ref_Volt其实是个无效值
  84          注意:
  85            1、ShutDwon模式对于MAX5532--MAX5535全部适用。
  86            2、只对MAX5533和MAX5535有效内部参考电压在掉电模式中,也被
  87               关闭。
  88          函数功能:
  89            使器件进入掉电模式,DAC输出呈高阻抗,使之功耗更低
  90          **********************************************************/
  91          void Enter_ShutDwon_Mode(uint8 Ref_Volt)
  92          {
  93   1        Write_MAX5533(Shutdown_Mode,Ref_Volt);
  94   1      }
  95          //--------------------------------------------------------------------------//
  96          
  97          
  98          /*********************************************************
  99          函数形参:
 100            Ref_Volt: 与Enter_StandBy_Mode()函数中的说明一样。
 101                      此函数中的Ref_Volt其实是个无效值
 102          函数功能:
 103            使器件进入掉电模式,DAC输出呈高阻抗,使之功耗更低
 104          **********************************************************/
 105          void Change_StandBy_to_ShutDown(uint8 Ref_Volt)
 106          {
 107   1        Enter_Normal_Mode(Ref_Volt);
 108   1        Enter_ShutDwon_Mode(Ref_Volt);
 109   1      }
 110          //--------------------------------------------------------------------------//
 111           
 112          
 113          //双通道DAC输出----方案1
 114          /*********************************************************
 115          函数形参:
 116            Ch_A_dat: 向通道A写入的数据.
 117            Ch_B_dat:向通道B写入的数据.
C51 COMPILER V8.08   MAX5533                                                               08/21/2008 16:59:51 PAGE 3   

 118          函数功能:
 119            实现双通道同时输出DAC不同的有效数据.
 120          **********************************************************/
 121          void Double_Channle_DACOUT_Method_1(uint16 Ch_A_dat,uint16 Ch_B_dat)
 122          {
 123   1        Write_MAX5533(Shift_to_Input_A, Ch_A_dat);    //仅是把输出的数据写入输入寄存器A中,此时的DAC_A为无效输出
 124   1        Write_MAX5533(Shift_to_Input_B, Ch_B_dat);    //仅是把输出的数据写入输入寄存器B中,此时的DAC_B为无效输出
 125   1        Write_MAX5533(InputAB_to_DACRegAB,0x0000);    /*把输入输入寄存器AB写入DAC寄存器中,并更新两路输出DAC,
 126   1                                                            此时的0x0000位无效值,可以任意(超过0x1000的未测试)*/
             -                                                
 127   1      }
 128          //----------------------------------------------------------------------------//
 129          
 130          
 131          //双通道DAC输出----方案2
 132          /*********************************************************
 133          函数形参:
 134            Ch_A_dat: 向通道A写入的数据.
 135            Ch_B_dat:向通道B写入的数据.
 136          函数功能:
 137            实现双通道同时输出DAC不同的有效数据.
 138          **********************************************************/
 139          void Double_Channle_DACOUT_Method_2(uint16 Ch_A_dat,uint16 Ch_B_dat)
 140          {
 141   1        Write_MAX5533(Shift_to_Input_B, Ch_B_dat);    //写把数据写入到输入寄存器B中,此时的DAC_B为无效输出
 142   1        Write_MAX5533(SFTtoInADA_InBtoDACB,Ch_A_dat); //此时的CH_A_dat为A通道的有效数据
 143   1      }
 144          //----------------------------------------------------------------------------//
 145          
 146          
 147          //双通道DAC输出----方案3
 148          //双通道输出相同的DAC值
 149          void Double_Channle_DACOUT_Method_3(uint16 Ch_AB_dat)
 150          {
 151   1        Write_MAX5533(ShiftAB_to_DACAB,Ch_AB_dat);
 152   1      }
 153          //----------------------------------------------------------------------------//
 154          
 155          
 156          /********************************************************
 157          方案比较:
 158              双通道DAC输出3中方案中,在实际使用中,当需要两路输出
 159                  各自需要的DAC时,一般选用方案2,因为它比方案1的完成时
 160                  间更短,效率更高。
 161                  方案3并不是没有用处,可以作为单通道DAC输出使用。
 162          *********************************************************/
 163          
 164          
 165          //---------------------test main()-----------------------//
 166          void main(void)
 167          {
 168   1         //演示测试全部OK
 169   1         Double_Channle_DACOUT_Method_1(0x0400,0x0800);
 170   1         Double_Channle_DACOUT_Method_2(0x0a00,0x0635);
 171   1         Double_Channle_DACOUT_Method_3(0x0754);
 172   1      //如果是MAX5533或者是MAX5535 =========================================================
 173   1         Enter_StandBy_Mode(Ref_2v425);               // 此时的Ref_Out = 2.425 v,为有效值
 174   1         Change_StandBy_to_ShutDown(Ref_1v940);       // 此时的Ref_1v940为无效值
 175   1         Enter_Normal_Mode(Ref_3v885);                        /* 此时的Ref_3v885为有效值,一般在想从其他模式
 176   1                                                         回到工作模式时,想改变之前设置的内部参考
 177   1                                                                                                         电压的话,可用到此函数
 178   1                                                  */
C51 COMPILER V8.08   MAX5533                                                               08/21/2008 16:59:51 PAGE 4   

 179   1      //====================================================================================
 180   1         Double_Channle_DACOUT_Method_2(0x0d45,0x0435);
 181   1         while(1);
 182   1      }


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