📄 ad7705.lst
字号:
C51 COMPILER V7.50 AD7705 12/08/2006 15:05:29 PAGE 1
C51 COMPILER V7.50, 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
3 #define uchar unsigned char
4 #define uint unsigned int
5
6 sbit sclk_7705=P2^3;
7 sbit dat_7705=P2^0;
8 sbit drdy=P2^2; //转换结束标志DRDY=0;
9 //sbit ret=P1^6;
10
11 void delay(uint i)
12 {
13 1 while(--i);
14 1 }
15
16 void wr_7705(uchar x) //写命令字
17 {
18 1 uchar i;
19 1 dat_7705=1;
20 1 sclk_7705=1;
21 1 for(i=8;i>0;i--)
22 1 {
23 2 sclk_7705=0;
24 2 dat_7705=x&0x80;
25 2 sclk_7705=1;
26 2 x<<=1;
27 2 }
28 1 dat_7705=1;
29 1 }
30
31 uchar rd_7705_b() //读8位数据
32 {
33 1 uchar x=0;
34 1 uchar i;
35 1 dat_7705=1;
36 1 sclk_7705=1;
37 1 for(i=8;i>0;i--)
38 1 {
39 2 x<<=1;
40 2 sclk_7705=0;
41 2 if(dat_7705)x|=0x01;
42 2 sclk_7705=1;
43 2 }
44 1 return x;
45 1 }
46
47 uint rd_7705() //读16位数据
48 {
49 1 uint x=0;
50 1 uchar i;
51 1 dat_7705=1;
52 1 sclk_7705=1;
53 1 for(i=16;i>0;i--)
54 1 {
55 2 x<<=1;
C51 COMPILER V7.50 AD7705 12/08/2006 15:05:29 PAGE 2
56 2 sclk_7705=0;
57 2 if(dat_7705)x|=0x01;
58 2 sclk_7705=1;
59 2 }
60 1 return x;
61 1 }
62
63 /*void ret_7705()
64 {
65 uchar i;
66 ret=0;
67 for(i=0;i<200;i++);
68 ret=1;
69 }*/
70 union
71 {
72 uint a;
73 uchar b[2];
74 }abc;
75 /*
76 void main()
77 {
78 P2=0xff;
79 //ret_7705();
80 wr_7705(0xff); //发至少32个1使芯片复位
81 wr_7705(0xff);
82 wr_7705(0xff);
83 wr_7705(0xff);
84 wr_7705(0xff);
85 wr_7705(0x20); //通信 选通写时钟寄存器
86 wr_7705(0x02); //时钟 晶振2.4576MHZ 输出更新频率100HZ
87 wr_7705(0x10); //通信 选通写设置寄存器
88 wr_7705(0x46);
89 // wr_7705(0x44); //设置 01 000 1 0 0
90 while(drdy==1); //自校准 增益1 单极性 不缓冲 不滤波同步(设定就不好使)
91 wr_7705(0x38);
92 rd_7705();
93 do{
94 while(drdy==1);
95 wr_7705(0x38);
96 abc.a=rd_7705();
97 //P0=abc.b[0];
98 P0=abc.b[1];
99 // P2=abc.b[1];
100 }while(1);
101 }
102 */
103 void main()
104 {
105 1 P2=0xff;
106 1 //ret_7705();
107 1 wr_7705(0xff); //发至少32个1使芯片复位
108 1 wr_7705(0xff);
109 1 wr_7705(0xff);
110 1 wr_7705(0xff);
111 1 wr_7705(0xff);
112 1
113 1 wr_7705(0x00); //通讯寄存器
114 1 wr_7705(0x00); //校准寄存器对A+,A-
115 1
116 1 wr_7705(0x10); //设置寄存器 MD1 MD0 G2 G1 G0 B/U BUF FSYNC
117 1 // wr_7705(0x7e); //01 111 1 1 0 自校准 128增益 单极性 缓冲(允许处理高阻抗源) 滤波器同步
C51 COMPILER V7.50 AD7705 12/08/2006 15:05:29 PAGE 3
118 1 wr_7705(0x46); //01 000 1 1 0 自校准 0增益 单极性 缓冲(允许处理高阻抗源) 滤波器同步
119 1
120 1 wr_7705(0x20); //时钟寄存器 0 0 0 clkdis clkdiv clk fs1 fs0
121 1 wr_7705(0x04); //000 0 0 1 10 主时钟不禁止 时钟不分频 晶振1MHZ 输出更新频率50HZ
122 1 // wr_7705(0x02); //000 0 0 0 10 主时钟不禁止 时钟不分频 晶振2.4576MHZ 输出更新频率100HZ
123 1
124 1 // wr_7705(0x10); //通信 选通写设置寄存器
125 1 // wr_7705(0x46); //01 000 1 1 0
126 1
127 1 // wr_7705(0x44); //设置 01 000 1 0 0
128 1 while(drdy==1); //自校准 增益1 单极性 不缓冲 不滤波同步(设定就不好使)
129 1 wr_7705(0x38);
130 1 rd_7705();
131 1 do{
132 2 while(drdy==1);
133 2 wr_7705(0x38);
134 2 abc.a=rd_7705();
135 2 //P0=abc.b[0];
136 2 P0=abc.b[1];
137 2 // P2=abc.b[1];
138 2 }while(1);
139 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 169 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 ----
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 + -