📄 max5533.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 + -