📄 ad7710.lst
字号:
C51 COMPILER V3.20, SN-0 AD7710 07/11/02 14:13:06 PAGE 1
DOS C51 COMPILER V3.20, COMPILATION OF MODULE AD7710
OBJECT MODULE PLACED IN AD7710.OBJ
COMPILER INVOKED BY: D:\QTH8052F\BIN\C51.EXE AD7710.C OBJECTEXTEND DB SB
stmt level source
1 /*
* ad7710.c
*
* AD数据采集
*
*
*
*
* 陈真勇(SA01010010)
* w3wind@sina.com or
* zychen@ustc.edu.cn
* 中国科学技术大学自动化系
* 2002/6/12
*/
15
16 #include "link.h"
17 #include "type.h"
18 #include "delay.h"
19 #include "watchdog.h"
20 #include <intrins.h>
21 #include "ad7710.h"
22
23 /* external-clocking mode. clock in frequency is 10MHz */
24 /* note: 在写完控制字后,程序将等待DRDY变低。
如果此时出现故障导致DRDY无法变
低,则看门狗也救不了。*/
27
28
29 BYTE ctrl_byte[3];/*存放控制字,局部变量*/
30 UINT data_word;/*存放数据,局部变量*/
31
32 UINT read_ad()
33 {
34 1 BYTE i;
35 1 UINT mask=0x8000;
36 1 data_word=0;
37 1 /* wait drdy low */
38 1 while(ADDRDY){;}
39 1
40 1 EA = 0;
41 1
42 1 /* make A0 high */
43 1 ADA0=1;
44 1
45 1 /* wait t22. at least 0.2 us */
46 1 _nop_();
47 1 /* bring rfs low */
48 1 ADRFS=0;
49 1
50 1 /* make 16 falling_edge of sclk and read 16 bits data from sdata */
51 1 for(i=0;i<16;i++){
52 2 ADSCLK=0;
53 2 if(ADSDATA){
54 3 data_word |= mask;
55 3 }
C51 COMPILER V3.20, SN-0 AD7710 07/11/02 14:13:06 PAGE 2
56 2 ADSCLK=1;
57 2 mask >>= 1;
58 2 }
59 1 /* make rfs high */
60 1 ADRFS=1;
61 1 ADA0=1;
62 1
63 1 EA = 1;
64 1
65 1 return data_word;
66 1 }
67 /* both p1 and p2 only use bit11 to bit0 */
68 void write_ctrl_reg() using 0
69 {
70 1 BYTE i,j,mask;
71 1
72 1 EA = 0;
73 1
74 1 ADRFS=1; /* disable RFS */
75 1 /* be sure that sclk is low */
76 1 ADSCLK=1;
77 1
78 1 /* make A0 low */
79 1 ADA0=0;
80 1 /* wait t32 . 0 at least*/
81 1 _nop_();
82 1 /* make tfs low */
83 1 ADTFS=0;
84 1
85 1 for(i=0;i<3;i++){
86 2 mask=0x80;
87 2 for(j=0;j<8;j++){
88 3 /* send a bit to sdata */
89 3 ADSDATA=(ctrl_byte[i]&mask)?1:0;
90 3
91 3 ADSCLK=0;
92 3 /* make sclk high for t26 */
93 3 mask >>= 1;
94 3 /* make sclk low for t27 */
95 3 ADSCLK=1;
96 3
97 3 }
98 2 }
99 1
100 1 /* wait t34 */
101 1
102 1 /* make tfs high */
103 1 ADTFS=1;
104 1
105 1 EA = 1;
106 1
107 1 /* wait until DRDY to be low */
108 1 do{
109 2 delay(50);
110 2 clear_watchdog();
111 2 }while(ADDRDY);
112 1 }
113
114 /* whenever there is a change in the ambient operating temperature or
supply voltage, a calibration routine should be initiated. it should also
be initiated if there is a change in the selected gain,filter notch or
bipolar/unipolar input range. */
C51 COMPILER V3.20, SN-0 AD7710 07/11/02 14:13:06 PAGE 3
118 /* control register
MD2 MD1 MD0 G2 G1 G0 CH PD WL IO BO B/U
0 0 1 # # # # 0 0 0 0 #
FS11 .............................. FS0
0 0
*/
124 /* set channel gain
* ch is 0 or 1
* gain is 0~7,stand for 2^gain
*/
128 void set_mode(BYTE ch,struct ad7710_ch *param)
129 {
130 1 ctrl_byte[0]=(param->cal_mode<<5) + (param->scale<<2) + (ch?2:0);
131 1 ctrl_byte[1]=(param->unipolar?0x10:0x00) + param->hi_cutoff;
132 1 ctrl_byte[2]=param->low_cutoff; /* changed by zychen */
133 1
134 1 write_ctrl_reg();
135 1 }
136
137 #if 0
/*似乎读取另一个通道值之前一定要进行校正,不然读到的值不对。
既然如此,就在每次读数据之前触发校正,因此就不需要下面这个函
数了。
*/
void init_7710(struct ad7710_ch *ch0,struct ad7710_ch *ch1)
{
/* 校正 */
set_mode(0,ch0);
set_mode(1,ch1);
/* 转入正常工作状态 */
ch0->cal_mode = 0;/*normal mode*/
ch1->cal_mode = 0;
set_mode(0,ch0);
set_mode(1,ch1);
}
#endif
C51 COMPILER V3.20, SN-0 AD7710 07/11/02 14:13:06 PAGE 4
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
CANLAMP. . . . . . . . . . . . . . . . ABSBIT ----- BIT 0096H 1
P1 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0090H 1
P2 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A0H 1
P3 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B0H 1
T0 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B4H 1
AC . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D6H 1
T1 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B5H 1
T2 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0090H 1
EA . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AFH 1
DQ . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0097H 1
T2IE . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CDH 1
RD . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B7H 1
ES . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00ACH 1
RI . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0098H 1
INT0 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B2H 1
CY . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D7H 1
BGEN . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CBH 1
TI . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0099H 1
INT1 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B3H 1
T2IP . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CEH 1
PS . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BCH 1
T2EX . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0091H 1
OV . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D2H 1
C_T2 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00C9H 1
WR . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B6H 1
_?delay. . . . . . . . . . . . . . . . EXTERN CODE PROC ----- -----
WDCS . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0090H 1
ADSCLK . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B1H 1
_set_mode. . . . . . . . . . . . . . . PUBLIC CODE PROC ----- -----
ch . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
param. . . . . . . . . . . . . . . . * REG * DATA PTR 0001H 3
WDSI . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0091H 1
ADDRDY . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B3H 1
data_word. . . . . . . . . . . . . . . PUBLIC DATA U_INT 0000H 2
X25045SCK. . . . . . . . . . . . . . . ABSBIT ----- BIT 0092H 1
IE0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0089H 1
IE1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008BH 1
clear_watchdog . . . . . . . . . . . . EXTERN CODE PROC ----- -----
ad7710_ch. . . . . . . . . . . . . . . * TAG * ----- STRUCT ----- 6
cal_mode . . . . . . . . . . . . . . MEMBER ----- U_CHAR 0000H 1
scale. . . . . . . . . . . . . . . . MEMBER ----- U_INT 0001H 2
unipolar . . . . . . . . . . . . . . MEMBER ----- U_CHAR 0003H 1
hi_cutoff. . . . . . . . . . . . . . MEMBER ----- U_CHAR 0004H 1
low_cutoff . . . . . . . . . . . . . MEMBER ----- U_CHAR 0005H 1
read_ad. . . . . . . . . . . . . . . . PUBLIC CODE PROC ----- -----
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0003H 1
mask . . . . . . . . . . . . . . . . * REG * DATA U_INT 0004H 2
CP_RL2 . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00C8H 1
ET0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A9H 1
ET1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00ABH 1
TF0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008DH 1
ET2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00ADH 1
TF1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008FH 1
TF2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CFH 1
RB8. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009AH 1
EX0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A8H 1
IT0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0088H 1
C51 COMPILER V3.20, SN-0 AD7710 07/11/02 14:13:06 PAGE 5
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
ctrl_byte. . . . . . . . . . . . . . . PUBLIC DATA ARRAY 0002H 3
TB8. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009BH 1
EX1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AAH 1
IT1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008AH 1
P. . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D0H 1
SM0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009FH 1
SM1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009EH 1
SM2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009DH 1
PT0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B9H 1
PT1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BBH 1
RS0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D3H 1
PT2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BDH 1
TR0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008CH 1
RS1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D4H 1
TR1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008EH 1
TR2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CAH 1
PX0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B8H 1
PX1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BAH 1
REN. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009CH 1
write_ctrl_reg . . . . . . . . . . . . PUBLIC CODE PROC ----- -----
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
j. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
mask . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
CANCS. . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A7H 1
HC245G . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A6H 1
RXD. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B0H 1
X25045CS . . . . . . . . . . . . . . . ABSBIT ----- BIT 0090H 1
TXD. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B1H 1
ADRFS. . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0095H 1
T2RSE. . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CCH 1
ADTFS. . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B4H 1
ADSDATA. . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B0H 1
F0 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D5H 1
X25045SI . . . . . . . . . . . . . . . ABSBIT ----- BIT 0091H 1
ADA0 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0094H 1
X25045SO . . . . . . . . . . . . . . . ABSBIT ----- BIT 0093H 1
WDSCK. . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0092H 1
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 213 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 5 ----
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 + -