?? debug.lst
字號:
522 4 sms_deliver.PDUData[0]='P';
523 4 sms_deliver.PDUData[1]='R';
524 4 }
525 3 if(sms_deliver.PDUData[0]=='P')
526 3 sms_deliver.PDUData[strlen(sms_deliver.PDUData)]=',' ; //蔬菜信息間隔逗號
527 3 strcat(sms_deliver.PDUData,vege_type); //保存此條菜價信息
528 3 strcat(sms_deliver.PDUData,vege_price);
529 3 info_count++; //信息條數(shù)加1
530 3 write_cmd(0x01) ; //清除當(dāng)前顯示
531 3 put_string(0x90," ") ; //第二行第一列
532 3 for(i=0;i<1;i++)
533 3 {
534 4 put_string(0x90,"該信息存儲成功。") ; //間隔160ms閃爍顯示"該信息存儲成功"
535 4 delay_500ms();
536 4 write_cmd(0x01);
537 4 delay_160ms();
538 4 }
539 3 vege_type[0]=vege_type[1]=vege_price[0]=vege_price[1]
540 3 =vege_price[2]=vege_price[3]=vege_price[4]='\0';
541 3 if(strlen(sms_deliver.PDUData)<40) //未滿
542 3 {
543 4 display_type=0;
544 4 type_screen();
545 4 }
546 3 else //信息已滿
547 3 {
548 4 write_cmd(0x01); //消除當(dāng)前顯示
549 4 put_string(0x90," ");
550 4 put_string(0x90,"信息已滿!"); //間隔160ms閃爍顯示
551 4 for(i=0;i<2;i++)
C51 COMPILER V7.02a DEBUG 04/01/2005 10:28:51 PAGE 10
552 4 delay_1s();
553 4 write_cmd(0x01);
554 4 display_type=2;
555 4 info_screen();
556 4 }
557 3 }
558 2 }
559 1 return;
560 1 }
561
562 //PAGEDOWN鍵的響應(yīng)函數(shù)
563 void key_pageup()
564 {
565 1 char idata page_count , x;
566 1 if(display_type==0) //如果是品種界面顯示,就響應(yīng)按鍵顯示相應(yīng)的界面
567 1 {
568 2 if(vege_page_index==0)
569 2 vege_page_index=9;
570 2 else
571 2 vege_page_index--;
572 2 type_screen();
573 2 return;
574 2 }
575 1 if(display_type==2) //蔬菜信息界面
576 1 {
577 2 if(info_count>3) //如果信息數(shù)大于3條
578 2 {
579 3 page_count=0;
580 3 x=info_count;
581 3 while(x>0)
582 3 {
583 4 page_count++;
584 4 x-=3;
585 4 }
586 3 info_page_index=(info_page_index==0)?(page_count-1):(info_page_index-1) ;
587 3 info_screen();
588 3 }
589 2 return;
590 2 }
591 1 return;
592 1 }
593
594 //PAGEDOWN鍵的響應(yīng)函數(shù)
595 void key_pagedown()
596 {
597 1 char idata page_count , x;
598 1 if(display_type==0) //如果是品種界面顯示,就響應(yīng)按鍵顯示相應(yīng)的界面
599 1 {
600 2 if(vege_page_index==9)
601 2 vege_page_index=0;
602 2 else
603 2 vege_page_index++;
604 2 type_screen();
605 2 return;
606 2 }
607 1 if(display_type==2) //蔬菜信息界面
608 1 {
609 2 if(info_count>3)
610 2 {
611 3 page_count=0;
612 3 x=info_count;
613 3 while(x>0)
C51 COMPILER V7.02a DEBUG 04/01/2005 10:28:51 PAGE 11
614 3 {
615 4 page_count++;
616 4 x-=3;
617 4 }
618 3 info_page_index=( (info_page_index==page_count-1)?0:info_page_index+1 ) ;
619 3 info_screen();
620 3 }
621 2 return;
622 2 }
623 1 }
624 //發(fā)送鍵的響應(yīng)函數(shù)
625 void key_send()
626 {
627 1 uchar idata i,j,flag=2; // flag: 0(信息發(fā)送成功) 1(發(fā)送失敗) 2(沒有返回值)
628 1 if(display_type==0)
629 1 {
630 2 if(info_count!=0)
631 2 {
632 3 display_type=2;
633 3 info_screen();
634 3 return;
635 3 }
636 2 else
637 2 {
638 3 put_string(0x9d,"無信息"); //沒有存蔬菜信息
639 3 delay_160ms();
640 3 put_string(0x9d," ");
641 3 put_string(0x9d,vege_type);
642 3 }
643 2 }
644 1 else if(display_type==2)
645 1 {
646 2 write_cmd(0x01);
647 2 put_string(0x90," ");
648 2 put_string(0x90,"信息發(fā)送中...");
649 2 memset(RcvBuf,0,sizeof(RcvBuf));
650 2 receive_SMS(); //receive SMS,judge the center_phone change
651 2 delay();
652 2 //如果不成功就再發(fā),最多發(fā)三次,再不成功就放棄
653 2 for(i=0;i<3;i++)
654 2 {
655 3 send_response(); //send SMS
656 3 delay_1s(); delay_1s(); delay_1s();
657 3 for(j=0; j<30;j++)
658 3 {
659 4 if( RcvBuf[j]=='O'&&RcvBuf[j+1]=='K' ) //返回的"OK"
660 4 { flag=0 ; break; } //0: 發(fā)送成功
661 4 else if( RcvBuf[j]=='E'&&RcvBuf[j+1]=='R'&&RcvBuf[j+2]=='R'
662 4 &&RcvBuf[j+3]=='O'&&RcvBuf[j+4]=='R' ) //返回的"ERROR"
663 4 { flag=1 ; break; } //1: 發(fā)送失敗
664 4 }
665 3 if(flag==0) break; //發(fā)送成功,跳出循環(huán)
666 3 }
667 2 if( flag==0 )
668 2 {
669 3 write_cmd(0x01); //清除當(dāng)前顯示
670 3 put_string(0x90," ");
671 3 put_string(0x90,"發(fā)送成功");
672 3 delay_1s();
673 3 delay_1s();
674 3 //清除各全局變量
675 3 memset(sms_deliver.PDUData,0,sizeof(sms_deliver.PDUData));
C51 COMPILER V7.02a DEBUG 04/01/2005 10:28:51 PAGE 12
676 3 info_count=0;
677 3 info_page_index=0;
678 3 memset(vege_type,'\0',sizeof(vege_type));
679 3 memset(vege_price,'\0',sizeof(vege_price));
680 3 }
681 2 if( flag==1&&i==3) //第三次發(fā)返回的還是ERROR
682 2 {
683 3 write_cmd(0x01); //清除當(dāng)前顯示
684 3 put_string(0x90," ");
685 3 put_string(0x90,"失敗,沒信號");
686 3 delay_1s();
687 3 delay_1s();
688 3 }
689 2 display_type=0;
690 2 type_screen(); //返回蔬菜品種界面
691 2 }
692 1 }
693
694 //program to process keys when pressed////
695 void key_int() interrupt 2
696 {
697 1 int idata t; //延時變量;
698 1 uchar idata keycode; //鍵盤碼;
699 1 uchar idata scancode; //掃描碼;
700 1 uchar idata flag=0xff; //鍵是否釋放標(biāo)志;
701 1 //延時去抖動
702 1 t=4000;
703 1 while(t--); //延時10ms;
704 1 if(INT1==1)
705 1 return; //如果中斷引腳為高電平,為抖動,則跳出;
706 1 EX1=0; //關(guān)閉中斷,開始處理鍵盤;
707 1 //掃描被按下的鍵的位置
708 1 scancode=0xef; //給出第一行的鍵盤掃描碼,進(jìn)行逐行掃描;
709 1 while(scancode!=0xff)
710 1 {
711 2 P1=scancode; //輸入掃描碼,掃描第一行;
712 2 keycode=P1; //數(shù)據(jù)送到鍵碼,看是否本行有鍵按下;
713 2 if((keycode&0x0f)!=0x0f)
714 2 break; //有鍵按下,退出循環(huán);
715 2 else
716 2 scancode=(keycode<<1)|0x0f ; //否則,更新掃描碼換下一行繼續(xù)掃描;
717 2 } //當(dāng)掃描碼變?yōu)?xff時,不滿足循環(huán)條件則退出循環(huán);
718 1 //判斷鍵是否被釋放//
719 1 P1=0x0f;
720 1 while(1)
721 1 {
722 2 if(INT1==1) //INT1=1時,鍵釋放
723 2 {
724 3 flag=~flag;
725 3 if(flag==0) //鍵釋放標(biāo)志為零則跳出循環(huán)
726 3 break;
727 3 }
728 2 }
729 1 //確定鍵值,轉(zhuǎn)到相應(yīng)的處理程序//
730 1 keycode=~keycode;
731 1 switch(keycode)
732 1 {
733 2 case 0x28:key_num(0);break;
734 2 case 0x12:key_num(1);break;
735 2 case 0x22:key_num(2);break;
736 2 case 0x42:key_num(3);break;
737 2 case 0x82:key_num(4);break;
C51 COMPILER V7.02a DEBUG 04/01/2005 10:28:51 PAGE 13
738 2 case 0x14:key_num(5);break;
739 2 case 0x24:key_num(6);break;
740 2 case 0x44:key_num(7);break;
741 2 case 0x84:key_num(8);break;
742 2 case 0x18:key_num(9);break;
743 2 case 0x48:key_dot();break;
744 2 case 0x11:key_cancel();break;
745 2 case 0x81:key_confirm();break;
746 2 case 0x21:key_pageup();break;
747 2 case 0x41:key_pagedown();break;
748 2 case 0x88:key_send();break;
749 2 default:break;
750 2 }
751 1 EX1=1; //重新打開中斷,可以接受新的中斷
752 1 }
753
754 //////////////////////////////////////////////////////////////////////////////////
755 //////////////////以下程序為與手機(jī)模塊相關(guān)的程序//////////////////////////////////
756 //////////////////////////////////////////////////////////////////////////////////
757 void GSM_int(void) interrupt 4
758 {
759 1 EA=0;
760 1 delay();
761 1 if(RI==1) //data received
762 1 {
763 2 RI=0;
764 2 RcvBuf[RcvIndex]=SBUF;
765 2 RcvIndex++;
766 2 if(RcvIndex>4)
767 2 {
768 3 if(SBUF==LF)
769 3 {
770 4 LFCount++;
771 4 if(RcvBuf[RcvIndex-3]=='K' ||RcvBuf[RcvIndex-3]=='R')
772 4 {
773 5 if(RcvBuf[6]=='L'&&RcvBuf[2]=='+')
774 5 {
775 6 bListEnd=1;
776 6 listchar_count=RcvIndex;
777 6 memcpy(ListBuf,RcvBuf,sizeof(RcvBuf));
778 6 }
779 5 bResponsed=1;
780 5 RcvIndex=0;
781 5 LFCount=0;
782 5 }
783 4 }
784 3 }
785 2 else
786 2 if(RcvBuf[RcvIndex-2]==PROMPT)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -