?? 800.lst
字號:
664 //void AT_T(void)
665 // {
666
667 // }
668 /*************************************************************
669 發送短信
670 dat: 目的地號碼指針地址
671 *************************************************************/
C51 COMPILER V7.00 800 08/08/2006 18:57:28 PAGE 12
672 void Send_CMGS(uchar *dat)
673 {
674 1 Send_AA(AT_CMGS_,10);
675 1 Send_AA(dat,11);
676 1 }
677 /*************************************************************
678 查找字符串,號
679 **************************************************************/
680 uchar Lookup(uchar *dat,uchar len)
681 {
682 1 uchar i,j;
683 1 i=0;
684 1 j=0;
685 1 do
686 1 {
687 2 if(*(dat+i)==0x2C)
688 2 {
689 3 j+=1;
690 3 }
691 2 i++;
692 2 }
693 1 while(j!=len);
694 1 return(i);
695 1 }
696 /***************************************************************
697
698 ****************************************************************/
699 /* 打開 ISP,IAP 功能 */
700 void ISP_IAP_enable(void)
701 {
702 1 EA = 0; /* 關中斷 */
703 1 ISP_CONTR = ISP_CONTR & 0x18; /* 0001,1000 */
704 1 ISP_CONTR = ISP_CONTR | WAIT_TIME;
705 1 ISP_CONTR = ISP_CONTR | 0x80; /* 1000,0000 */
706 1 }
707
708 /**********************************************************
709 關閉 ISP,IAP 功能
710 ************************************************************/
711 void ISP_IAP_disable(void)
712 {
713 1 ISP_CONTR = ISP_CONTR & 0x7f; /* 0111,1111 */
714 1 ISP_TRIG = 0x00;
715 1 EA = 1; /* 開中斷 */
716 1 }
717
718 /***********************************************************
719 字節讀
720 ***********************************************************/
721 uchar byte_read(uint byte_addr)
722 {
723 1 ISP_ADDRH = (uchar)(byte_addr >> 8);
724 1 ISP_ADDRL = (uchar)(byte_addr & 0x00ff);
725 1
726 1 ISP_CMD = ISP_CMD & 0xf8; /* 1111,1000 */
727 1 ISP_CMD = ISP_CMD | 0x01; /* 0000,0001 */
728 1
729 1 ISP_IAP_enable();
730 1
731 1 ISP_TRIG = 0x46;
732 1 ISP_TRIG = 0xb9;
733 1 _nop_();
C51 COMPILER V7.00 800 08/08/2006 18:57:28 PAGE 13
734 1
735 1 ISP_IAP_disable();
736 1 return (ISP_DATA);
737 1 }
738
739 /* 扇區擦除 */
740 void sector_erase(uint sector_addr)
741 {
742 1 uint get_sector_addr = 0;
743 1 get_sector_addr = (sector_addr & 0xfe00); /* 1111,1110,0000,0000; 取扇區地址 */
744 1 ISP_ADDRH = (uchar)(get_sector_addr >> 8);
745 1 ISP_ADDRL = 0x00;
746 1
747 1 ISP_CMD = ISP_CMD & 0xf8; /* 1111,1000 */
748 1 ISP_CMD = ISP_CMD | 0x03; /* 0000,0011 */
749 1
750 1 ISP_IAP_enable();
751 1 ISP_TRIG = 0x46; /* 觸發ISP_IAP命令 */
752 1 ISP_TRIG = 0xb9; /* 觸發ISP_IAP命令 */
753 1 _nop_();
754 1
755 1 ISP_IAP_disable();
756 1 // return OK;
757 1 }
758
759 /* 字節編程 */
760 void byte_program(uint byte_addr, uchar original_data)
761 {
762 1 ISP_ADDRH = (uchar)(byte_addr >> 8);
763 1 ISP_ADDRL = (uchar)(byte_addr & 0x00ff);
764 1
765 1 ISP_CMD = ISP_CMD & 0xf8; /* 1111,1000 */
766 1 ISP_CMD = ISP_CMD | 0x02; /* 0000,0010 */
767 1 ISP_DATA = original_data;
768 1
769 1 ISP_IAP_enable();
770 1 ISP_TRIG = 0x46; /* 觸發ISP_IAP命令 */
771 1 ISP_TRIG = 0xb9; /* 觸發ISP_IAP命令 */
772 1 _nop_();
773 1
774 1 ISP_IAP_disable();
775 1 // return OK;
776 1 }
777 /***********************************************************
778 寫密碼
779 ************************************************************/
780 bit Write_SN(uchar *dat,uchar *SN_)
781 {
782 1 uchar i;
783 1 bit num=1;
784 1
785 1 sector_erase(0x2800); //
786 1 delay_ms(50);
787 1 for(i=0;i<6;i++) //寫入密碼=》EEPROM
788 1 {
789 2 byte_program((0x2800+i),*(dat+i));
790 2 delay_ms(50);
791 2 }
792 1 for(i=0;i<6;i++) //寫入密碼=》RAM
793 1 {
794 2 *(SN_+i)=byte_read(0x2800+i);
795 2 delay_ms(50);
C51 COMPILER V7.00 800 08/08/2006 18:57:28 PAGE 14
796 2 }
797 1 for(i=0;i<6;i++)
798 1 {
799 2 if(byte_read(0x2800+i)!=*(SN_+i))
800 2 {
801 3 num=0;
802 3 }
803 2 }
804 1 if(num==0)
805 1 {
806 2 return(0);
807 2 }
808 1 else
809 1 return(1);
810 1 }
811 /*************************************************************
812 寫電話號碼入EEPROM
813 **************************************************************/
814 bit Write_ATT(uchar *dat,uint addr)
815 {
816 1 uchar i;
817 1 bit num=1;
818 1 sector_erase(addr); //
819 1 delay_ms(50);
820 1 for(i=0;i<11;i++) //寫入密碼=》EEPROM
821 1 {
822 2 byte_program((addr+i),*(dat+i));
823 2 delay_ms(50);
824 2 }
825 1 for(i=0;i<11;i++)
826 1 {
827 2 if(byte_read(addr+i)!=*(dat+i))
828 2 {
829 3 num=0;
830 3 }
831 2 }
832 1 if(num==0)
833 1 {
834 2 return(0);
835 2 }
836 1 else
837 1 return(1);
838 1 }
839 /***************************************************************
840 ADC0,ADC1
841 P1.0,P1.1 為開漏模式
842 ****************************************************************/
843 /*
844 void ADC_inp(void)
845 {
846 P1M0=0x03;
847 P1M1=0x03;
848 }
849 /***************************************************************
850 P1.0,P1.1 為51標準模式
851 ****************************************************************/
852 /*
853 void ADC_io(void)
854 {
855 P1M0=0x00;
856 P1M1=0x00;
857 }
C51 COMPILER V7.00 800 08/08/2006 18:57:28 PAGE 15
858 /***************************************************************
859 ****************************************************************/
860 /*
861 void ADC_read(uchar dat)
862 {
863 ADC_CONTR=ADC_CONTR|dat; /*選舉AD輸入通道
864 delay_ms(2);
865 ADC_CONTR=ADC_CONTR|0x08; /*起動AD轉換器
866 delay_us(100);
867 while((ADC_CONTR&0x10)==0);
868 // delay_ms(10);
869 ADC_CONTR=ADC_CONTR&0xE7;
870 delay_ms(600);
871 ADCdata=ADC_DATA;
872 Send_one_Byte(ADCdata);
873 initial_UART();
874 } */
875 /****************************************************************
876 *****************************************************************/
877
C51 COMPILER V7.00 800 08/08/2006 18:57:28 PAGE 16
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
CCF2 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00DAH 1
DC_IO. . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B2H 1
AT_CMGR_ . . . . . . . . . . . . . . . PUBLIC CODE ARRAY 005CH 11
CCF3 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00DBH 1
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -