📄 tlv5638.lst
字号:
C51 COMPILER V7.09 TLV5638 08/24/2007 09:33:04 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE TLV5638
OBJECT MODULE PLACED IN TLV5638.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE TLV5638.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2 #include "TLV5638.h"
3
4 //短延时函数:ShortDelay()
5 void nNop(uchar i)
6 {
7 1 for(;i>0;i--) ;
8 1 }
9
10 //长延时函数:LongDelay()
11 void LongDelay(uint i)
12 {
13 1 uint j;
14 1 for(;i>0;i--)
15 1 { for(j=1000;j>0;j--);}
16 1 }
17
18 //向SPI写16bits数据函数:SPIWrite()
19 void SPIWrite(int temp)
20 {
21 1 uint i;
22 1 SetCS(0);
23 1 for(i=0;i<16;i++)
24 1 {
25 2 PinDIN = (bit) (temp & 0x8000);
26 2 SetSCLK(1);
27 2 temp <<= 1;
28 2 nNop(1);
29 2 SetSCLK(0);
30 2 nNop(1);
31 2 }
32 1 SetCS(1);
33 1 }
34
35 //将电压值转换为对应的12bits数字量函数:VoltToData()
36 int VoltToData(uint ref, float ex_ref, float out_volt)
37 {
38 1 int temp;
39 1 switch(ref)
40 1 {
41 2 case EXTERNAL : temp = (int)((out_volt*4096) / (2*ex_ref));break;
42 2 case IN_1024 : temp = (int)((out_volt*4096) / (2*1.024)); break;
43 2 case IN_2048 : temp = (int)((out_volt*4096) / (2*2.048)); break;
44 2 default : break;
45 2 }
46 1 return(temp & 0xfff);
47 1 }
48
49 //设置DAC A(即A 通道)输出函数:SetDAC_A()
50 void SetDAC_A(uint speed, uint ref, float ex_ref, float temp)
51 {
52 1 int ModCMD;
53 1 int Data;
54 1 ModCMD = 0x9000 | (speed<<14) | (ref);
55 1 Data = VoltToData(ref,ex_ref,temp);
C51 COMPILER V7.09 TLV5638 08/24/2007 09:33:04 PAGE 2
56 1 Data = Data | 0x8000 | (speed<<14);
57 1 SPIWrite(ModCMD);
58 1 nNop(10);
59 1 SPIWrite(Data);
60 1 }
61
62 //设置DAC B(即B 通道)输出函数:SetDAC_B()
63 void SetDAC_B(uint speed, uint ref, float ex_ref, float temp)
64 {
65 1 int ModCMD;
66 1 int Data;
67 1 ModCMD = 0x9000 | (speed<<14) | (ref);
68 1 Data = VoltToData(ref,ex_ref,temp);
69 1 Data = Data | 0x0000 | (speed<<14);
70 1 SPIWrite(ModCMD);
71 1 nNop(10);
72 1 SPIWrite(Data);
73 1 }
74
75 //设置DAC A与DAC B同时输出函数:SetDAC_AB()
76 void SetDAC_AB(uint speed, uint ref, float ex_ref, float temp1, float temp2)
77 {
78 1 int ModCMD;
79 1 int DataA,DataB;
80 1 ModCMD = 0x9000 | (speed<<14) | (ref);
81 1 DataA = VoltToData(ref,ex_ref,temp1);
82 1 DataA = DataA | 0x8000 | (speed<<14);
83 1 DataB = VoltToData(ref,ex_ref,temp2);
84 1 DataB = DataB | 0x1000 | (speed<<14);
85 1 SPIWrite(ModCMD);
86 1 SPIWrite(DataB);
87 1 SPIWrite(DataA);
88 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 548 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 62
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 + -