?? yj.lst
字號:
159 5 {
160 6 //SendDat(cRcv_Data1[i]);
161 6 }
162 5 if(cRcv_Data1[iRcv_Nmb_Max-7]==0x20)
163 5 {
164 6 command=0x20; //receive正確的命令
165 6 }
166 5 }
167 4 else
168 4 {
169 5 cRcv_Stat1=0;
170 5
171 5 }
172 4
173 4 }
174 3 else
175 3 {
176 4 if(iRcv_Nmb1>50)
177 4 {
178 5 cRcv_Stat1=0;
179 5
C51 COMPILER V8.02 YJ 06/20/2007 13:39:50 PAGE 4
180 5 }
181 4 iRcv_Nmb1++; //幀數據
182 4 }
183 3 break;
184 3
185 3 default:
186 3 cRcv_Stat1=0;
187 3 break;
188 3
189 3 }
190 2
191 2 RI=0;
192 2 }
193 1 }
194
195 void PutOutData()
196 {
197 1 SendDat(DataPack.lHead[0]);//前導 00000000
198 1 SendDat(DataPack.lHead[1]);
199 1 SendDat(DataPack.lHead[2]);
200 1 SendDat(DataPack.lHead[3]);
201 1
202 1 SendDat(DataPack.iStart[0]); //起始位 02A6
203 1 SendDat(DataPack.iStart[1]);
204 1
205 1 SendDat(DataPack.cLength[0]); //長度 000b
206 1 SendDat(DataPack.cLength[1]);
207 1
208 1
209 1 SendDat(DataPack.iDestNum[0]); //目的站編號, 2 4000
210 1 SendDat(DataPack.iDestNum[1]);
211 1
212 1 SendDat(DataPack.iSourceNum[0]); //源站編號 2 0001
213 1 SendDat(DataPack.iSourceNum[1]);
214 1
215 1 SendDat(DataPack.cPackageType); //包類型=2Bh 1 21
216 1 SendDat(DataPack.cPackageCtrl); //包控制要求 1 00
217 1
218 1 SendDat(DataPack.iCmdSequenceNum[0]); //應答序列編號 2 0000
219 1 SendDat(DataPack.iCmdSequenceNum[1]);
220 1
221 1
222 1
223 1
224 1 //傳送數據
225 1 ////////////////////////////////////////////////////////////////////////////////////////////
226 1 SendDat(DataPack.cTData[0]); //溫度數據,2個字節 先送高位 后送低位
227 1 SendDat(DataPack.cTData[1]);
228 1
229 1 SendDat(DataPack.cHData); //濕度數據,1個字節
230 1 ////////////////////////////////////////////////////////////////////////////////////////////
231 1
232 1
233 1
234 1 SendDat(DataPack.iFcs[0]); //校驗FCS 1234
235 1 SendDat(DataPack.iFcs[1]);
236 1
237 1 SendDat(DataPack.iEnd[0]); //結束符 0D0A
238 1 SendDat(DataPack.iEnd[1]);
239 1
240 1 }
241
C51 COMPILER V8.02 YJ 06/20/2007 13:39:50 PAGE 5
242 void main()
243 {
244 1 uint TemperatureData;
245 1 uchar TemperatureMSB;
246 1 uchar TemperatureLSB;
247 1 uchar ADValue;
248 1
249 1 LED = 0; //初始化LED口
250 1
251 1 InitRXD();//初始化串行口并開啟中斷
252 1 InitT0();//初始化定時器0
253 1
254 1 DataPack.lHead[0]=0x00; //前導 00000000
255 1 DataPack.lHead[1]=0x00;
256 1 DataPack.lHead[2]=0x00;
257 1 DataPack.lHead[3]=0x00;
258 1
259 1 DataPack.iStart[0]=0x02; //起始位 02A6
260 1 DataPack.iStart[1]=0xA6;
261 1
262 1 DataPack.cLength[0]=0x00; //長度 000b
263 1 DataPack.cLength[1]=0x0b;
264 1
265 1 DataPack.iDestNum[0]=0x40; //目的站編號, 2 4000
266 1 DataPack.iDestNum[1]=0x00;
267 1
268 1 DataPack.iSourceNum[0]=0x00; //源站編號 2 0001
269 1 DataPack.iSourceNum[1]=0x01;
270 1
271 1 DataPack.cPackageType=0x21; //包類型=2Bh 1 21
272 1 DataPack.cPackageCtrl=0x00; //包控制要求 1 00
273 1
274 1 DataPack.iCmdSequenceNum[0]=0x00; //應答序列編號 2 0000
275 1 DataPack.iCmdSequenceNum[1]=0x00;
276 1
277 1
278 1
279 1 DataPack.iFcs[0]=0x12; //校驗FCS 1234
280 1 DataPack.iFcs[1]=0x34;
281 1
282 1 DataPack.iEnd[0]=0x0D; //結束符 0D0A
283 1 DataPack.iEnd[1]=0x0A;
284 1
285 1 while(1)
286 1 {
287 2
288 2 ADValue = ADConv();//得到濕度數據
289 2
290 2 TemperatureData=ReadTemperature();//得到溫度數據
291 2 TemperatureLSB=TemperatureData&0xFF;
292 2 TemperatureMSB=(TemperatureData>>8)&0xFF;
293 2
294 2 DataPack.cTData[0]=TemperatureMSB; //溫度數據,2個字節. 先送高位,后送低位
295 2 DataPack.cTData[1]=TemperatureLSB;
296 2
297 2 DataPack.cHData=ADValue; //濕度數據,1個字節
298 2
299 2 if( command==0x20 )
300 2
301 2 {
302 3 PutOutData();
303 3 command=0;
C51 COMPILER V8.02 YJ 06/20/2007 13:39:50 PAGE 6
304 3 }
305 2
306 2
307 2 }
308 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 952 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 35 65
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 + -