?? main.lst
字號:
209 4 lcd_printf_string("Set Freq", ROW(0x00)|LEN(0x08)|COL(0x00));
210 4 display_rf_channel();
211 4 break;
212 4
213 4 case SEND_STATUS:
214 4
215 4 lcd_printf_string("Send....", ROW(0x00)|LEN(0x08)|COL(0x00));
216 4 lcd_printf_string(" ", ROW(0x01)|LEN(0x08)|COL(0x00));
217 4
218 4 System_Mode = TEST_MODE;
219 4 ini_rf(); // 重新初始化,使7105進入直接模式
220 4 //ini_rf();
221 4 //ini_rf();
222 4 IE1 = 0;
223 4
224 4 while(1)
225 4 {
226 5 key_scan();
227 5 if(Key_Msg) // 按下任意鍵退出
228 5 {
229 6 Key_Msg = 0;
230 6 lcd_printf_string("COOLWAVE", ROW(0x00)|LEN(0x08)|COL(0x00));
231 6 lcd_printf_string(" A7105 ", ROW(0x01)|LEN(0x08)|COL(0x00));
232 6 System_Mode = NORMAL_MODE;
233 6 Rf_Mode_Cnt = REC_STATUS;
234 6 ini_rf();
235 6 ini_rf();
236 6 ini_rf();
237 6 IE1 = 0;
238 6 break;
239 6 }
240 5
C51 COMPILER V7.06 MAIN 10/29/2008 11:22:40 PAGE 5
241 5 }
242 4 break;
243 4
244 4 default:
245 4
246 4 break;
247 4 }
248 3
249 3 break;
250 3
251 3 case DEC_KEY:
252 3 switch(Rf_Mode_Cnt)
253 3 {
254 4 case SET_RF_RATE:
255 4 if(Rf_Rate_Cnt)
256 4 {
257 5 Rf_Rate_Cnt--;
258 5 }
259 4 //A7105_setup_data_rate(Rf_Rate_Cnt); // 設置 RF rate
260 4 display_rf_rate();
261 4 ini_rf();
262 4
263 4 break;
264 4
265 4 case SET_RF_CHANNEL:
266 4 if(Rf_Channel_Cnt)
267 4 {
268 5 Rf_Channel_Cnt--;
269 5 }
270 4 Rf_Rec_Channel = Rf_Channel_Cnt << 3;
271 4 //A7105_setup_channel(Rf_Rec_Channel); // 設置channel
272 4 display_rf_channel();
273 4 ini_rf();
274 4
275 4 break;
276 4
277 4 default:
278 4
279 4 break;
280 4 }
281 3 break;
282 3
283 3 case ADD_KEY:
284 3 switch(Rf_Mode_Cnt)
285 3 {
286 4 case SET_RF_RATE:
287 4 if(Rf_Rate_Cnt < 7)
288 4 {
289 5 Rf_Rate_Cnt++;
290 5 }
291 4 //A7105_setup_data_rate(Rf_Rate_Cnt); // 設置 RF rate
292 4 display_rf_rate();
293 4 ini_rf();
294 4
295 4 break;
296 4
297 4 case SET_RF_CHANNEL:
298 4 if(Rf_Channel_Cnt < 20)
299 4 {
300 5 Rf_Channel_Cnt++;
301 5 }
302 4 Rf_Rec_Channel = Rf_Channel_Cnt << 3;
C51 COMPILER V7.06 MAIN 10/29/2008 11:22:40 PAGE 6
303 4 //A7105_setup_channel(Rf_Rec_Channel); // 設置channel
304 4 display_rf_channel();
305 4 ini_rf();
306 4
307 4 break;
308 4
309 4 default:
310 4
311 4 break;
312 4 }
313 3 break;
314 3
315 3 case SEND_KEY: // 處理發送按鍵
316 3 Rf_Send_Buf[0] = RF_DOWN_CMD;
317 3 Rf_Send_Buf[1] = 0x08;
318 3 for(i=2; i<RF_DATA_PACKET_SIZE-1; i++)
319 3 {
320 4 Rf_Send_Buf[i] = rand();
321 4 }
322 3 Rf_Send_Buf[i] = 0xaa;
323 3 send_data_by_RF(RF_DATA_PACKET_SIZE); // 發送測試數據
324 3 lcd_printf_string("Wait Ack", ROW(0x00)|LEN(0x08)|COL(0x00));
325 3 lcd_printf_string(" ", ROW(0x01)|LEN(0x08)|COL(0x00));
326 3
327 3 TF0 = 0;
328 3 TH0 = 0x94;
329 3 TL0 = 0x00; // (65536 - 37888(0x9400))*12/33.177 = 10ms
330 3 Timer0_Cnt = 20; // 定時200ms
331 3 TR0 = 1; // enable timer0
332 3 Wait_Ack = 1; // 設置等待應答標志
333 3 break;
334 3
335 3 default:
336 3 break;
337 3 }
338 2 }
339 1 }
340
341
342 /**********************************************************
343 name: dispose_rf_data
344 input: none
345 output: none
346 describe: 處理接收到的RF數據
347 notice:
348 creat date: 2008-7-24
349 creator: dengyihong
350 **********************************************************/
351 void dispose_rf_data(void)
352 {
353 1 bit return_ack = 1;
354 1 U8 i = 0;
355 1
356 1 if(Rf_Rec_Buf[0] == RF_DOWN_CMD) // 是否為主機發送的數據
357 1 {
358 2 lcd_printf_string("Send Ack", ROW(0x00)|LEN(0x08)|COL(0x00));
359 2 lcd_printf_string(" ", ROW(0x01)|LEN(0x08)|COL(0x00));
360 2 Rf_Send_Buf[0] = RF_UP_CMD;
361 2 Rf_Send_Buf[1] = 0x08;
362 2 for(i=0; i<RF_DATA_PACKET_SIZE-3; i++)
363 2 {
364 3 Rf_Send_Buf[i+2] = Rf_Rec_Buf[i+2]; // 將接收到的數據返回作為應答
C51 COMPILER V7.06 MAIN 10/29/2008 11:22:40 PAGE 7
365 3 }
366 2 Rf_Send_Buf[i+2] = 0xaa; // 最后一個為無效數據
367 2 send_data_by_RF(RF_DATA_PACKET_SIZE); // 發送應答
368 2
369 2
370 2 Clr_Screen = 1; // 設置更新屏幕標志位
371 2 TF0 = 0;
372 2 TH0 = 0x94;
373 2 TL0 = 0x00; // (65536 - 37888(0x9400))*12/33.177 = 10ms
374 2 Timer0_Cnt = 20; // 準備延時200ms后返回到主屏顯示
375 2 TR0 = 1; // enable timer0
376 2 }
377 1 else if(Rf_Rec_Buf[0] == RF_UP_CMD) // 是否為子機返回的數據
378 1 {
379 2 if(Wait_Ack) // 是否在等待應答狀態
380 2 {
381 3 for(i=2; i<RF_DATA_PACKET_SIZE-1; i++)
382 3 {
383 4 if(Rf_Rec_Buf[i] != Rf_Send_Buf[i]) // 判斷接收到的應答是否有錯
384 4 {
385 5 return_ack = 0;
386 5 break;
387 5 }
388 4 }
389 3 if(return_ack) // 應答正確
390 3 {
391 4 lcd_printf_string("Succeed ", ROW(0x00)|LEN(0x08)|COL(0x00)); // 顯示通信成功
392 4 lcd_printf_string(" ", ROW(0x01)|LEN(0x08)|COL(0x00));
393 4 Wait_Ack = 0;
394 4
395 4 Clr_Screen = 1; // 設置更新屏幕標志位
396 4 TF0 = 0;
397 4 TH0 = 0x94;
398 4 TL0 = 0x00; // (65536 - 37888(0x9400))*12/33.177 = 10ms
399 4 Timer0_Cnt = 20; // 準備延時200ms后返回到主屏顯示
400 4 TR0 = 1; // enable timer0
401 4 }
402 3 }
403 2 }
404 1 }
405
406 /**********************************************************
407 name: display_rf_channel
408 input: none
409 output: none
410 describe: 顯示RF當前的channel
411 notice:
412 creat date: 2008-8-7
413 creator: dengyihong
414 **********************************************************/
415 void display_rf_channel(void)
416 {
417 1 switch(Rf_Channel_Cnt)
418 1 {
419 2 case 0:
420 2 lcd_printf_string(" 2.400G ", ROW(0x01)|LEN(0x08)|COL(0x00));
421 2 break;
422 2
423 2 case 1:
424 2 lcd_printf_string(" 2.404G ", ROW(0x01)|LEN(0x08)|COL(0x00));
425 2 break;
426 2
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -