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