?? smd380.lst
字號:
C51 COMPILER V7.50 SMD380 03/07/2008 14:30:01 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE SMD380
OBJECT MODULE PLACED IN smd380.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE smd380.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2
3
4 #include <REG51F.H>
5 #include <intrins.h>
6 #include <math.h>
7
8
9
10 typedef unsigned char Byte;
11 typedef bit bool;
12 typedef signed int sint;
13 typedef unsigned int Word;
14 typedef unsigned int uint;
15 typedef signed long slong;
16
17
18
19 #define uchar unsigned char
20 #define uint unsigned int
21
22 #define Nop_() _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
23
24
25
26
27
28
29
30
31 //SMD380
32
33 sbit CSB_380 = P2^5;
34 sbit SCK_380 = P0^4;
35 sbit SDO_380 = P3^0;
36 sbit SDI_380 = P3^1;
37
38
39
40
41
42 typedef union
43 { unsigned int i;
44 float f;
45 } value;
46
47
48 //----------------------------------------------------------------------------------
49 // modul-var
50 //----------------------------------------------------------------------------------
51 enum {TEMP,HUMI};
52
53 value humi_val,temp_val;
54 value humi_val_buf,temp_val_buf;
55
C51 COMPILER V7.50 SMD380 03/07/2008 14:30:01 PAGE 2
56
57 const float code pi=3.1415926;
58 float dew_point;
59
60
61 #define noACK 0
62 #define ACK 1
63 //adr command r/w
64 #define STATUS_REG_W 0x06 //000 0011 0
65 #define STATUS_REG_R 0x07 //000 0011 1
66 #define MEASURE_TEMP 0x03 //000 0001 1
67 #define MEASURE_HUMI 0x05 //000 0010 1
68 #define RESET 0x1e //000 1111 0
69
70
71
72 idata float angle;
73
74 idata unsigned int heading,heading_buff;
75 idata unsigned int OffsetAngle;
76 idata unsigned int OffsetAngleBuf;
77 idata unsigned char ModuleStatus=0;
78 idata unsigned char cnt1=0,cnt2;
79 idata unsigned char CharTmp1;
80
81 idata unsigned char smd380_add,smd380_data,smd380_buff[18];
82
83
84
85
86
87 void Delay10us(Word n);
88
89
90
91
92
93
94
95
96 /*-----------------------延時-----------------------*/
97
98 void Delay10us(Word n) //delay n 10us
99 {
100 1 Word t,cnt;
101 1 for(t=0;t<n;t++)
102 1 for(cnt=0;cnt<5;cnt++);
103 1 }
104
105
106
107 void read_smd380(void)
108 {
109 1 idata unsigned char i,j,z;
110 1 z=smd380_data;
111 1 //smd380_add+=1;
112 1 //smd380_add=0x9a;
113 1 j=smd380_add|0x80;
114 1 CSB_380=1;
115 1 SCK_380=1;
116 1 SDI_380=1;
117 1 SDO_380=1;
C51 COMPILER V7.50 SMD380 03/07/2008 14:30:01 PAGE 3
118 1 Delay10us(2);
119 1 CSB_380=0;
120 1 Delay10us(2);
121 1
122 1 SCK_380=0;
123 1 for(i=0;i<8;i++)
124 1 {
125 2 SCK_380=0;
126 2 z=0;
127 2 if(j&0x80) SDI_380 = 1;
128 2 else SDI_380 = 0;
129 2
130 2 z=0;
131 2 z=0;
132 2 SCK_380=1;
133 2 j <<=1;
134 2 z=0;
135 2
136 2 }
137 1 j=0;
138 1 for(i=0;i<8;i++)
139 1 {
140 2 SCK_380=0;
141 2
142 2 if(SDO_380==1) j |= 0x01;
143 2 else j |= 0x00;
144 2 SCK_380=1;
145 2 j <<=1;
146 2
147 2 }
148 1 SCK_380=1;
149 1 CSB_380=1;
150 1 smd380_data=j;
151 1
152 1
153 1
154 1
155 1 }
156
157
158
159
160 main()
161 {
162 1 uchar i;
163 1 uchar disp_buff[6]; /* 定義顯示緩沖區 */
164 1 uint z;
165 1 bit acce_bit;
166 1 float angle_x,x_value;
167 1
168 1
169 1 P2M1=0X00;
170 1 P2M2=0X00;
171 1 P1M1=0X2C;
172 1 P1M2=0X2C;
173 1 P0M1=0X00;
174 1 P0M2=0X00;
175 1 P3M1=0X00;
176 1 P3M2=0X00;
177 1
178 1 disp_buff[0]=0x70;
179 1 disp_buff[1]=0xD8;
C51 COMPILER V7.50 SMD380 03/07/2008 14:30:01 PAGE 4
180 1 disp_buff[2]=0x80;
181 1 disp_buff[3]=0xE0;
182 1 disp_buff[4]=0xF8;
183 1 disp_buff[5]=0xF0;
184 1 disp_buff[5]=0xF0;
185 1 PT0AD=0X00;
186 1 TRIM=0;
187 1
188 1
189 1
190 1 while(1)
191 1 {
192 2
193 2 //X:smd380_buff[3];Y:smd380_buff[5];Z:smd380_buff[7];
194 2
195 2
196 2 for(i=0;i<16;i++)
197 2 {
198 3 smd380_add=i;
199 3 read_smd380();
200 3 smd380_buff[i]=smd380_data;
201 3
202 3 }
203 2
204 2
205 2 acce_bit=1; // acce_bit=1角度為正,acce_bit=0角度為負
206 2 if(smd380_buff[3]>0x7f)
207 2 {
208 3 smd380_buff[3]=0x100-smd380_buff[3];
209 3 acce_bit=0;
210 3 }
211 2 x_value=smd380_buff[3]*8;
212 2 x_value=x_value/1024.000;
213 2 angle_x=asin(x_value)*180.0/pi; //angle_x為角度值,acce_bit=1角度為正,acce_bit=0角度為負
214 2
215 2
216 2 for(z=0;z<2;z++)
217 2 {
218 3 Delay10us(2);
219 3 }
220 2
221 2 smd380_data=0;
222 2 i=0;
223 2 }
224 1
225 1
226 1
227 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 346 ----
CONSTANT SIZE = 4 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 20 15
IDATA SIZE = 36 3
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 + -