📄 ad7705.lst
字号:
C51 COMPILER V8.02 AD7705 05/17/2009 18:24:26 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE AD7705
OBJECT MODULE PLACED IN ad7705.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ad7705.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2 #include"intrins.h"
3
4 #define Ain1 0x00
5 #define Ain2 0x01
6
7 sbit sclk = P1^7;
8 sbit drdy = P1^3;
9 sbit din = P1^5;
10 sbit dout = P1^6;
11 sbit CS_AD7705 = P1^4;
12
13 void Writetoreg(unsigned char byteword);
14 unsigned int Read_16bitdata(void);
15 void Init_AD7705( unsigned char Channel );
16 unsigned int Average_Sample(unsigned int Num_Sample);
17 void Reset_AD7705(void);
18
19 void Writetoreg(unsigned char byteword)
20 {
21 1
22 1 unsigned char i;
23 1
24 1 while( !drdy );
25 1 sclk = 1;
26 1 CS_AD7705 = 0;
27 1
28 1 for(i = 0; i < 8; i++)
29 1 {
30 2 sclk = 0;
31 2 din = (bit)(byteword & 0x80);
32 2 sclk = 1;
33 2 byteword <<= 1;
34 2 }
35 1
36 1 CS_AD7705 = 1;
37 1
38 1 }
39
40 unsigned int Read_16bitdata(void)
41 {
42 1
43 1 unsigned char i;
44 1 unsigned int Sample = 0;
45 1
46 1 while( drdy );
47 1
48 1 sclk = 1;
49 1 CS_AD7705 = 0;
50 1
51 1 for(i = 0; i < 16; i++)
52 1 {
53 2 Sample <<= 1;
54 2 sclk = 0;
55 2 Sample += (0x0001 & (unsigned int)dout);
C51 COMPILER V8.02 AD7705 05/17/2009 18:24:26 PAGE 2
56 2 sclk = 1;
57 2 }
58 1
59 1 CS_AD7705 = 1;
60 1
61 1 while( !drdy );
62 1
63 1 return Sample;
64 1
65 1 }
66
67 void Init_AD7705( unsigned char Channel )
68 {
69 1
70 1 CS_AD7705 = 1;
71 1
72 1 Writetoreg(0x21|Channel); /* Active Channel is Ain1(+)/Ain1(.), next operation as write to the clock regi
-ster */
73 1 Writetoreg(0x08); /* master clock enabled, 2.0000MHz Clock(CLKDIV = 1), set output rate to 200Hz*/
74 1 Writetoreg(0x11|Channel); /* Active Channel is Ain1(+)/Ain1(.), next operation as write to the setup regi
-ster */
75 1 Writetoreg(0x7c); /* gain = 128, bipolar mode, buffer on, clear FSYNC and perform a Self Calibration*/
76 1
77 1 }
78
79 unsigned int Average_Sample(unsigned int Num_Sample)
80 {
81 1
82 1 unsigned int i;
83 1 unsigned long int result = 0;
84 1
85 1 for(i = 0; i < Num_Sample; i++)
86 1 {
87 2 // Init_AD7705();
88 2 Writetoreg(0x39);
89 2 result += Read_16bitdata();
90 2 }
91 1
92 1 result = result / Num_Sample;
93 1
94 1 return (unsigned int)result;
95 1 }
96
97 void Reset_AD7705(void)
98 {
99 1 unsigned char i;
100 1
101 1 sclk = 1;
102 1 for(i = 0;i < 40; i++)
103 1 {
104 2 sclk = 0;
105 2 din = 1;
106 2 sclk = 1;
107 2 }
108 1
109 1 }
110
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 216 ----
CONSTANT SIZE = ---- ----
C51 COMPILER V8.02 AD7705 05/17/2009 18:24:26 PAGE 3
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 6
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 + -