?? ad9225.lst
字號:
C51 COMPILER V7.50 AD9225 08/18/2007 19:09:17 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE AD9225
OBJECT MODULE PLACED IN .\AD9225.obj
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE ..\AD9225\AD9225.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\AD
-9225.lst) OBJECT(.\AD9225.obj)
line level source
1 #include"AD9225.h"
2 #include<SST\SST89x5x4.h>
3 #include<intrins.h>
4
5 #define SAMTIME 65
6
7 float GetScope()
8 {
9 1 unsigned char tempP0[SAMTIME],tempP2[SAMTIME];
10 1 unsigned char i,j,N,MeasureTime;
11 1 unsigned int temp[SAMTIME];
12 1 float d[SAMTIME];
13 1 float Scope,max,min;
14 1 bit flag;
15 1 AD9225Clk=0;
16 1 flag=1;
17 1 while(flag){
18 2 MeasureTime++;
19 2 for(i=0;i<SAMTIME;i++){
20 3 temp[i]=0;
21 3 tempP0[i]=0;
22 3 tempP2[i]=0;
23 3 Scope=0;
24 3 }
25 2 for(i=0;i<SAMTIME;i++){ //GetAD
26 3 AD9225Clk=1;
27 3 tempP0[i]=P0;
28 3 AD9225Clk=0;
29 3 tempP2[i]=P2;
30 3 }
31 2 for(i=0;i<SAMTIME;i++){
32 3 tempP2[i]&=0x1F; //屏蔽P2.6,P2.7
33 3 temp[i]|=tempP2[i];
34 3 temp[i]<<=8;
35 3 temp[i]|=tempP0[i];
36 3 }
37 2 for(i=0,j=0;i<SAMTIME;i++){
38 3 if(temp[i]<4096&&temp[i]>512){
39 4 d[j]=temp[i]*4.0/4096;
40 4 j++;
41 4 }
42 3 }
43 2 N=j;
44 2 min=4;
45 2 max=0.5;
46 2 for(i=0;i<N;i++){
47 3 if(d[i]<min)
48 3 min=d[i];
49 3 if(d[i]>max)
50 3 max=d[i];
51 3 }
52 2 if(MeasureTime>2){
53 3 Scope=(max-min)*1.0374;
54 3 flag=0;
C51 COMPILER V7.50 AD9225 08/18/2007 19:09:17 PAGE 2
55 3 }
56 2 }
57 1 return Scope;
58 1 }
59
60 unsigned int* GetAD(unsigned char T) //T次
61 {
62 1 unsigned char i;
63 1 unsigned char tempP0[5],tempP2[5];
64 1 unsigned int temp[5];
65 1 for(i=0;i<2;i++){
66 2 AD9225Clk=1;
67 2 tempP0[i]=P0;
68 2 AD9225Clk=0;
69 2 tempP2[i]=P2;
70 2 }
71 1 for(i=0;i<T;i++){
72 2 tempP2[i]&=0x1F; //屏蔽P2.6,P2.7
73 2 temp[i]|=tempP2[i];
74 2 temp[i]<<=8;
75 2 temp[i]|=tempP0[i];
76 2 }
77 1 return temp;
78 1 }
79
80 /************************************
81 采樣兩次,所得幅度差與間隔1.2uS的比值
82 *************************************/
83
84 float GetSlope()
85 {
86 1 unsigned char data i;
87 1 unsigned char data tempP0[2],tempP2[2];
88 1 unsigned int temp[2];
89 1 float Slope;
90 1 bit flag=1;
91 1 AD9225Clk=0;
92 1 while(flag){
93 2 AD9225Clk=1;
94 2 tempP0[0]=P0;
95 2 AD9225Clk=0;
96 2 tempP2[0]=P2;
97 2 AD9225Clk=1;
98 2 tempP0[1]=P0;
99 2 AD9225Clk=0;
100 2 tempP0[1]=P2;
101 2 for(i=0;i<2;i++){
102 3 tempP2[i]&=0x1F; //屏蔽P2.6,P2.7
103 3 temp[i]|=tempP2[i];
104 3 temp[i]<<=8;
105 3 temp[i]|=tempP0[i];
106 3 }
107 2 if((temp[1]>512)&&(temp[1]<4096)&&(temp[0]>512)&&(temp[0]<4096)){
108 3 if(temp[1]>temp[0]){
109 4 Slope=(temp[1]-temp[0])*4.0/4096;
110 4 Slope=Slope/1.2;
111 4 flag=0;
112 4 }
113 3 }
114 2 }
115 1 return Slope;
116 1 }
C51 COMPILER V7.50 AD9225 08/18/2007 19:09:17 PAGE 3
117 /************************************
118 根據統計規律求占空比,然后求斜率
119 *************************************/
120 /*
121 unsigned int* GetLAD()
122 {
123 unsigned char i;
124 unsigned char data tempP0[2],tempP2[2];
125 unsigned int temp[2];
126 for(i=0;i<2;i++){
127 AD9225Clk=1;
128 tempP0[i]=P0;
129 AD9225Clk=0;
130 tempP2[i]=P2;
131 }
132 for(i=0;i<2;i++){
133 tempP2[i]&=0x1F; //屏蔽P2.6,P2.7
134 temp[i]|=tempP2[i];
135 temp[i]<<=8;
136 temp[i]|=tempP0[i];
137 }
138 return temp;
139 }
140
141 float GetSlope()
142 {
143 unsigned char tempP0[SAMTIME],tempP2[SAMTIME];
144 unsigned char i,j,N,MeasureTime;
145 static int Up,Down;
146 unsigned int temp[SAMTIME];
147 float d[SAMTIME];
148 float Scope,max,min,Slope;
149 bit flag;
150 unsigned char T;
151 if(T==30){
152 T=0;
153 Up=0;
154 Down=0;
155 }
156 T++;
157 AD9225Clk=0;
158 flag=1;
159 while(flag){
160 MeasureTime++;
161 for(i=0;i<SAMTIME;i++){
162 temp[i]=0;
163 tempP0[i]=0;
164 tempP2[i]=0;
165 Scope=0;
166 }
167 for(i=0;i<SAMTIME;i++){ //GetAD
168 AD9225Clk=1;
169 tempP0[i]=P0;
170 AD9225Clk=0;
171 tempP2[i]=P2;
172 }
173 for(i=0;i<SAMTIME;i++){
174 tempP2[i]&=0x1F; //屏蔽P2.6,P2.7
175 temp[i]|=tempP2[i];
176 temp[i]<<=8;
177 temp[i]|=tempP0[i];
178 }
C51 COMPILER V7.50 AD9225 08/18/2007 19:09:17 PAGE 4
179 for(i=0,j=0;i<SAMTIME;i++){
180 if(temp[i]<4096&&temp[i]>512){
181 d[j]=temp[i]*4.0/4096;
182 j++;
183 }
184 }
185 N=j;
186 min=4;
187 max=0.5;
188 for(i=0;i<N;i++){
189 if(d[i]<min)
190 min=d[i];
191 if(d[i]>max)
192 max=d[i];
193 }
194 for(i=0;i<N;i++){
195 if(d[i]<d[i+1])
196 Up++;
197 else
198 Down++;
199 }
200 if(MeasureTime>2){
201 Scope=(max-min)*1.036944;
202 flag=0;
203 }
204 }
205 Slope=Scope*(Up+Down)/Up;
206 return Slope;
207 }
208 */
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1278 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 566
PDATA SIZE = ---- ----
DATA SIZE = ---- 5
IDATA SIZE = ---- ----
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -