📄 1302_2.lst
字号:
289 {
290 1 BYTE day_data;
291 1 day_data = get_data->day;
292 1 day_buffer.shiwei = 0x30 + ((day_data >> 4) & 0x03);
293 1 day_buffer.gewei = 0x30 + (day_data & 0x0F);
294 1 }
295 //---------------------------------------------------------//
296 static void get_month_from_1302_data(data_1302 *get_data) //读取1302月数据
297 {
298 1 BYTE month_data;
299 1 month_data = get_data->month;
300 1 month_buffer.shiwei = 0x30 + ((month_data >> 4) & 0x01);
301 1 month_buffer.gewei = 0x30 + (month_data & 0x0F);
302 1 }
C51 COMPILER V7.08 1302_2 03/05/2007 16:38:05 PAGE 6
303
304 static void get_week_from_1302_data(data_1302 *get_data) //读取1302星期数据
305 {
306 1 BYTE week_data;
307 1 week_data = get_data->week;
308 1 week_buffer.gewei = 0x30 + (week_data & 0x07);
309 1 }
310
311 static void get_year_from_1302_data(data_1302 *get_data) //读取1302 年数据
312 {
313 1 BYTE year_data;
314 1 year_data = get_data->year;
315 1 year_buffer.shiwei = 0x30 + ((year_data >> 4) & 0x0F);
316 1 year_buffer.gewei = 0x30 + (year_data & 0x0F);
317 1 }
318
319 void get_date_from_1302_data(data_1302 *get_data) //读取1302日期数据
320 {
321 1 get_day_from_1302_data(get_data);
322 1 get_month_from_1302_data(get_data);
323 1 get_week_from_1302_data(get_data);
324 1 get_year_from_1302_data(get_data);
325 1 }
326 //---------------------------------------//
327 //-------------------------------------------------------------------//
328 //---------------------------------------++++++++++++++++++++++++++++==============================-------
------//
329
330 int set_code_to_display(BYTE key_value,BYTE *p)
331 {
332 1 BYTE num_address;
333 1 //lcd_clear_line(2);
334 1 lcd_Display_Lib_Chinese(0x90, 0xC7EB);//"请"
335 1 lcd_Display_Lib_Chinese(0x91, 0xCAE4);//"输"
336 1 lcd_Display_Lib_Chinese(0x92, 0xC8EB);//"入"
337 1 lcd_Display_Lib_Chinese(0x93, 0xC3DC);//"密"
338 1 lcd_Display_Lib_Chinese(0x94, 0xC2EB);//"码"
339 1 num_address = get_num_address_from_key_value(key_value);
340 1 if (num_address > 10) return; //invalid key
341 1 if (num_address == 10){ //back
342 2 if(set_code_struct.count > 0){
343 3 set_code_struct.count--;
344 3 }else{
345 3 set_code_struct.count = 0;
346 3 }
347 2 return;
348 2 }
349 1
350 1 switch (set_code_struct.count){
351 2 case 0:
352 2 if(num_address>=0&&num_address<=9)
353 2 {
354 3 set_code_struct.count++;
355 3 lcd_Display_Lib_Chinese(0x98, 0xa1f9);
356 3 if(num_address==p[0])
357 3 {
358 4 code_flag_struct.count++;
359 4 }
360 3 }
361 2 else
362 2 {
363 3 return;
C51 COMPILER V7.08 1302_2 03/05/2007 16:38:05 PAGE 7
364 3 }
365 2 break;
366 2 case 1:
367 2 if(num_address>=0&&num_address<=9)
368 2 { set_code_struct.count++;
369 3 lcd_Display_Lib_Chinese(0x99, 0xa1f9);
370 3 if(num_address==p[1])
371 3 {
372 4 code_flag_struct.count++;
373 4 }
374 3 }
375 2 break;
376 2 case 2:
377 2 if(num_address>=0&&num_address<=9)
378 2 { set_code_struct.count++;
379 3 lcd_Display_Lib_Chinese(0x9a, 0xa1f9);
380 3 if(num_address==p[2])
381 3 {
382 4 code_flag_struct.count++;
383 4 }
384 3 }
385 2 break;
386 2 case 3:
387 2 if(num_address>=0&&num_address<=9)
388 2 { set_code_struct.count++;
389 3 lcd_Display_Lib_Chinese(0x9b, 0xa1f9);
390 3 if(num_address==p[3])
391 3 {
392 4 code_flag_struct.count++;
393 4 }
394 3 }
395 2 break;
396 2 case 4:
397 2 if(num_address>=0&&num_address<=9)
398 2 { set_code_struct.count++;
399 3 lcd_Display_Lib_Chinese(0x9c, 0xa1f9);
400 3 if(num_address==p[4])
401 3 {
402 4 code_flag_struct.count++;
403 4 }
404 3 }
405 2 break;
406 2 case 5:
407 2 if(num_address>=0&&num_address<=9)
408 2 { set_code_struct.count=0;
409 3 lcd_Display_Lib_Chinese(0x9d, 0xa1f9);
410 3 if(num_address==p[5])
411 3 {
412 4 code_flag_struct.count++;
413 4 return 1;
414 4 }
415 3 }
416 2 break;
417 2 default:
418 2 break;
419 2 }
420 1 if(code_flag_struct.count==6)
421 1 {
422 2 // return 1;
423 2 }
424 1 else
425 1 return 0;
C51 COMPILER V7.08 1302_2 03/05/2007 16:38:05 PAGE 8
426 1 }
427
428
429
430 void set_time_to_display(BYTE key_value) //设置1302时间
431 {
432 1 BYTE num_address;
433 1 BYTE tem;
434 1
435 1 num_address = get_num_address_from_key_value(key_value);
436 1
437 1 if (num_address > 10) return; //invalid key
438 1 if (num_address == 10){ //back
439 2 if(set_time_struct.count > 0){
440 3 set_time_struct.count--;
441 3 }else{
442 3 set_time_struct.count = 0;
443 3 }
444 2 return;
445 2 }
446 1
447 1
448 1
449 1 switch (set_time_struct.count)
450 1 {
451 2 case 0:
452 2 if (num_address > 2) return; // >2
453 2 tem = data_to_1302.hour;
454 2 ((data_1302*)(set_time_struct.p_data))->hour &= (!(0x03 << 4));
455 2 tem = data_to_1302.hour;
456 2 ((data_1302*)(set_time_struct.p_data))->hour |= (num_address << 4);
457 2 tem = data_to_1302.hour;
458 2 hour_buffer.shiwei = 0x30 + num_address;
459 2 set_time_struct.count++;
460 2 break;
461 2 case 1:
462 2 ((data_1302*)(set_time_struct.p_data))->hour &= 0xF0;
463 2 ((data_1302*)(set_time_struct.p_data))->hour |= num_address;
464 2 hour_buffer.gewei = 0x30 + num_address;
465 2 set_time_struct.count++;
466 2 break;
467 2 case 2:
468 2 if (num_address > 5) return; // >5
469 2 ((data_1302*)(set_time_struct.p_data))->minute &= 0x8F;
470 2 ((data_1302*)(set_time_struct.p_data))->minute |= (num_address << 4);
471 2 minute_buffer.shiwei = 0x30 + num_address;
472 2 set_time_struct.count++;
473 2 break;
474 2 case 3:
475 2 ((data_1302*)(set_time_struct.p_data))->minute &= 0xF0;
476 2 ((data_1302*)(set_time_struct.p_data))->minute |= num_address;
477 2 minute_buffer.gewei = 0x30 + num_address;
478 2 set_time_struct.count++;
479 2 break;
480 2 case 4:
481 2 if (num_address > 5) return; // >5
482 2 ((data_1302*)(set_time_struct.p_data))->second &= 0x8F;
483 2 ((data_1302*)(set_time_struct.p_data))->second |= (num_address << 4);
484 2 second_buffer.shiwei = 0x30 + num_address;
485 2 set_time_struct.count++;
486 2 break;
487 2 case 5:
C51 COMPILER V7.08 1302_2 03/05/2007 16:38:05 PAGE 9
488 2 ((data_1302*)(set_time_struct.p_data))->second &= 0xF0;
489 2 ((data_1302*)(set_time_struct.p_data))->second |= num_address;
490 2 second_buffer.gewei = 0x30 + num_address;
491 2 set_time_struct.count++;
492 2 break;
493 2 default:
494 2 break;
495 2 }
496 1 }
497
498 void set_date_to_display(BYTE key_value) //设置1302日期
499 {
500 1 BYTE num_address;
501 1
502 1 num_address = get_num_address_from_key_value(key_value);
503 1
504 1 if (num_address > 10) return; //invalid key
505 1 if (num_address == 10){ //back
506 2 if(set_date_struct.count > 0){
507 3 set_date_struct.count--;
508 3 }else{
509 3 set_date_struct.count = 0;
510 3 }
511 2 return;
512 2 }
513 1
514 1 switch (set_date_struct.count){
515 2 //year
516 2 case 0:
517 2 ((data_1302*)(set_date_struct.p_data))->year &= 0x0F;
518 2 ((data_1302*)(set_date_struct.p_data))->year |= (num_address << 4);
519 2 year_buffer.shiwei = 0x30 + num_address;
520 2 set_date_struct.count++;
521 2 break;
522 2 case 1:
523 2 ((data_1302*)(set_date_struct.p_data))->year &= 0xF0;
524 2 ((data_1302*)(set_date_struct.p_data))->year |= num_address;
525 2 year_buffer.gewei = 0x30 + num_address;
526 2 set_date_struct.count++;
527 2 break;
528 2 //month
529 2 case 2:
530 2 if (num_address > 1) return; // >1
531 2 ((data_1302*)(set_date_struct.p_data))->month &= 0xEF;
532 2 ((data_1302*)(set_date_struct.p_data))->month |= (num_address << 4);
533 2 month_buffer.shiwei = 0x30 + num_address;
534 2 set_date_struct.count++;
535 2 break;
536 2 case 3:
537 2 ((data_1302*)(set_date_struct.p_data))->month &= 0xF0;
538 2 ((data_1302*)(set_date_struct.p_data))->month |= num_address;
539 2 month_buffer.gewei = 0x30 + num_address;
540 2 set_date_struct.count++;
541 2 break;
542 2 //day
543 2 case 4:
544 2 if (num_address > 3) return; // >3
545 2 ((data_1302*)(set_date_struct.p_data))->day &= 0xCF;
546 2 ((data_1302*)(set_date_struct.p_data))->day |= (num_address << 4);
547 2 day_buffer.shiwei = 0x30 + num_address;
548 2 set_date_struct.count++;
549 2 break;
C51 COMPILER V7.08 1302_2 03/05/2007 16:38:05 PAGE 10
550 2 case 5:
551 2 ((data_1302*)(set_date_struct.p_data))->day &= 0xF0;
552 2 ((data_1302*)(set_date_struct.p_data))->day |= num_address;
553 2 day_buffer.gewei = 0x30 + num_address;
554 2 set_date_struct.count++;
555 2 break;
556 2 //week
557 2 case 6:
558 2 if (num_address > 7) return; // >7
559 2 ((data_1302*)(set_date_struct.p_data))->week &= 0xF8;
560 2 ((data_1302*)(set_date_struct.p_data))->week |= num_address;
561 2 week_buffer.gewei = 0x30 + num_address;
562 2 set_date_struct.count++;
563 2 break;
564 2 default:
565 2 break;
566 2 }
567 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1941 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 40 12
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -