📄 ad.lst
字号:
C51 COMPILER V8.08 AD 10/01/2008 23:53:32 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE AD
OBJECT MODULE PLACED IN AD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE AD.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include"reg52.h"
2 #include"function.h"
3 #include "intrins.h"
4
5 /****************AD端口定义****************/
6 sbit AD_CLK = P3^2;
7 sbit AD_RST = P3^3;
8 sbit AD_DIN = P3^7;
9 sbit AD_DOUT = P3^6;
10 sbit AD_DRDY = P3^5;
11
12 /************************************************************************************
13 延时
14 ************************************************************************************/
15 void delay(uint i)
16 {
17 1 for(;i > 0;i--);
18 1 }
19 /************************************************************************************
20 复位AD7705
21 ************************************************************************************/
22 void rst_ad()
23 {
24 1 AD_DRDY = 1;
25 1 AD_CLK = 1;
26 1 AD_DIN = 1;
27 1 AD_DOUT = 1;
28 1 AD_RST = 0;
29 1 delay(300);
30 1 AD_RST = 1; // 复位电路可以接5V电
31 1 delay(500);
32 1 }
33
34 /************************************************************************************
35 写1字节到AD7705
36 ************************************************************************************/
37 write_ad(uchar i)
38 {
39 1 uchar a;
40 1 for(a = 8;a > 0;a--)
41 1 {
42 2
43 2 if((i & 0x80) == 0)
44 2 {AD_DIN = 0;}
45 2 else
46 2 {AD_DIN = 1;}
47 2 i <<= 1;
48 2 AD_CLK = 0;
49 2 _nop_();
50 2 _nop_();
51 2 _nop_();
52 2 AD_CLK = 1;
53 2 }
54 1 }
55
C51 COMPILER V8.08 AD 10/01/2008 23:53:32 PAGE 2
56 /************************************************************************************
57 设置AD7705通道
58 * 0 为第一通道
59 * 1 为第二通道
60
61 //MD1(0) 工 作 模 式
62 //MD0(0) 工 作 模 式
63 //G2(0) 增益选择 0 0 0 0 1 1 1 1
64 //G1(0) 增益选择 0 0 1 1 0 0 1 1
65 //G0(0) 增益选择 0 1 0 1 0 1 0 1
66 // 1 2 4 8 16 32 64 128
67 //B/U(0) 单极性/双极性工作。“0”表示选择双极性操作,“1”表示选择单极性工作
68 //BUF(0) 缓冲器控制。“0”表示片内缓冲器短路,缓冲器短路后,电源电流降低
69 // 此位处于高电平时,缓冲器与模拟输入串联,输入端允许处理高阻抗源
70 //FSYNC(1) 滤波器同步
71
72 ************************************************************************************/
73
74 void set_7705_ch(bit a)
75 {
76 1 if(a == 0)
77 1 {
78 2 write_ad(0x20);//write_ad(0x20);
79 2 write_ad(0x05);
80 2 write_ad(0x10);//write_ad(0x10);
81 2 write_ad(0x44);//write_ad(0x46);//设置40H 双极性方式 44H 单极性方式
82 2 }
83 1 else
84 1 {
85 2 write_ad(0x20);//write_ad(0x20);
86 2 write_ad(0x05);
87 2 write_ad(0x10);//write_ad(0x10);
88 2 write_ad(0x44);//write_ad(0x46);//设置40H 双极性方式 44H 单极性方式
89 2 }
90 1 }
91
92
93 /************************************************************************************
94 读1字节到AD7705
95 ************************************************************************************/
96 uchar read_ad()
97 {
98 1 uchar temp2;
99 1 uchar a;
100 1 for(a = 8;a > 0;a--)
101 1 {
102 2 AD_CLK = 0;
103 2 _nop_();
104 2 _nop_();
105 2 _nop_();
106 2 AD_CLK = 1;
107 2 _nop_();
108 2 _nop_();
109 2 _nop_();
110 2 temp2 <<= 1;
111 2 if(AD_DOUT == 0)
112 2 {temp2 &= 0xfe;}
113 2 else
114 2 {temp2 |= 0x01;}
115 2 }
116 1 return temp2;
117 1 }
C51 COMPILER V8.08 AD 10/01/2008 23:53:32 PAGE 3
118
119 /************************************************************************************
120 读AD7705转换后的数据
121 // 把DRDY位换为读内部寄存器状态位,显示不正常
122 ************************************************************************************/
123
124 uint read_AD_data(uchar y)
125 {
126 1 uint temp;
127 1 uchar i;
128 1 write_ad(y);
129 1 while(AD_DRDY);
130 1 for(i = 16;i > 0;i--)
131 1 {
132 2 AD_CLK = 0;
133 2 _nop_();
134 2 _nop_();
135 2 _nop_();
136 2 AD_CLK = 1;
137 2 _nop_();
138 2 _nop_();
139 2 _nop_();
140 2 temp <<= 1;
141 2 if(AD_DOUT == 0)
142 2 {temp &= 0xfffe;}
143 2 else
144 2 {temp |= 0x0001;}
145 2 }
146 1 return temp;
147 1 }
148
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 163 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -