📄 家庭无线报警系统.lst
字号:
05B3 120A27 882 LCALL FS
05B6 1205ED 883 LCALL CSJHM;调用存向SIM卡存入手机号码
05B9 7422 884 MOV A,#22H;"
05BB 120A27 885 LCALL FS
05BE 120406 886 LCALL HC
05C1 120656 887 LCALL PDOK
05C4 60DE 888 JZ DDH
889 ;写入密码
890 ;AT+CPBW=2,"8F 66 8F 86 62 A5 8B 66"
05C6 891 XMM:
05C6 120429 892 LCALL CPBW
05C9 7432 893 MOV A,#"2"
05CB 120A27 894 LCALL FS
05CE 742C 895 MOV A,#",";
05D0 120A27 896 LCALL FS
05D3 7422 897 MOV A,#22H;"
05D5 120A27 898 LCALL FS
899 ;写入"******"6个汉字 从内存5CH-73H一共24个内存
05D8 7B18 900 MOV R3,#24;定义发送的数据总长度为24个
05DA 785C 901 MOV R0,#5CH;数据从内存的5CH开始
05DC 120A3F 902 LCALL HZSZ;调用发送内存数据的子程序
05DF 7422 903 MOV A,#22H
05E1 120A27 904 LCALL FS
05E4 120406 905 LCALL HC
05E7 120656 906 LCALL PDOK
05EA 60DA 907 JZ XMM
05EC 22 908 RET
909 ;向SIM卡存入手机号码时要每两位调反一下
05ED 910 CSJHM:
05ED E575 911 MOV A,75H
05EF 120A27 912 LCALL FS
05F2 E574 913 MOV A,74H
05F4 120A27 914 LCALL FS
05F7 E577 915 MOV A,77H
05F9 120A27 916 LCALL FS
A51 MACRO ASSEMBLER 糭____线__綺蟔__ 01/23/2008 12:02:46 PAGE 15
05FC E576 917 MOV A,76H
05FE 120A27 918 LCALL FS
0601 E579 919 MOV A,79H
0603 120A27 920 LCALL FS
0606 E578 921 MOV A,78H
0608 120A27 922 LCALL FS
060B E57B 923 MOV A,7BH
060D 120A27 924 LCALL FS
0610 E57A 925 MOV A,7AH
0612 120A27 926 LCALL FS
0615 E57D 927 MOV A,7DH
0617 120A27 928 LCALL FS
061A E57C 929 MOV A,7CH
061C 120A27 930 LCALL FS
061F E57F 931 MOV A,7FH
0621 120A27 932 LCALL FS
0624 22 933 RET
0625 934 JCDYH:
0625 C298 935 CLR RI;清除有串口数据标志
0627 1209DA 936 LCALL PDRI;2秒内检测串口是否有数据返回?
062A E599 937 MOV A,SBUF;将串口寄存器中接收到的数据给A
062C B40D23 938 CJNE A,#0DH,WD;判断串口数据
062F C298 939 CLR RI;软件清除串口中断标记
0631 1209DA 940 LCALL PDRI;等待下一个串口数据
0634 E599 941 MOV A,SBUF;将串口寄存器中接收到的数据给A
0636 B40A19 942 CJNE A,#0AH,WD;判断串口数据
0639 C298 943 CLR RI;软件清除串口中断标记
063B 1209DA 944 LCALL PDRI;等待下一个串口数据
063E E599 945 MOV A,SBUF;将串口寄存器中接收到的数据给A
0640 B43E0F 946 CJNE A,#3EH,WD;判断串口数据
0643 C298 947 CLR RI;软件清除串口中断标记
0645 1209DA 948 LCALL PDRI;等待下一个串口数据
0648 E599 949 MOV A,SBUF;将串口寄存器中接收到的数据给A
064A B42005 950 CJNE A,#20H,WD;判断串口数据
064D C298 951 CLR RI;软件清除串口中断标记
952 ;判断手机是不是回答>代码? 0D 0A 3E 20
064F 74FF 953 MOV A,#0FFH;检测到>,对A置1
0651 22 954 RET
0652 E4 955 WD:CLR A;没有检测到>,对A清零
0653 C298 956 CLR RI;清除有串口数据标志
0655 22 957 RET
958 ;检测手机是否回答OK?
0656 959 PDOK:
0656 120671 960 LCALL PDDA;检测手机是否回答0D/0A
0659 1209DA 961 LCALL PDRI;等待下一个串口数据
065C E599 962 MOV A,SBUF;将串口寄存器中接收到的数据给A
065E B44F27 963 CJNE A,#4FH,SB;判断串口数据 O
0661 C298 964 CLR RI;软件清除串口中断标记
0663 1209DA 965 LCALL PDRI;等待下一个串口数据
0666 E599 966 MOV A,SBUF;将串口寄存器中接收到的数据给A
0668 B44B1D 967 CJNE A,#4BH,SB;判断串口数据 K
066B 120671 968 LCALL PDDA;检测手机是否回答0D/0A
969 ;判断是不是手机回答的OK代码? 0D 0A 4F 4B 0D 0A
066E 74FF 970 MOV A,#0FFH;检测到OK,对A置1
0670 22 971 RET
972 ;检测手机是否回答0D/0A?
0671 973 PDDA:
0671 C298 974 CLR RI;清除有串口数据标志
0673 1209DA 975 LCALL PDRI;2秒内检测串口是否有数据返回?
0676 E599 976 MOV A,SBUF;将串口寄存器中接收到的数据给A
0678 B40D0D 977 CJNE A,#0DH,SB;判断串口数据
067B C298 978 CLR RI;软件清除串口中断标记
067D 1209DA 979 LCALL PDRI;等待下一个串口数据
0680 E599 980 MOV A,SBUF;将串口寄存器中接收到的数据给A
0682 B40A03 981 CJNE A,#0AH,SB;判断串口数据
0685 C298 982 CLR RI;软件清除串口中断标记
A51 MACRO ASSEMBLER 糭____线__綺蟔__ 01/23/2008 12:02:46 PAGE 16
0687 22 983 RET
0688 E4 984 SB:CLR A;没有检测到OK,对A清零
0689 C298 985 CLR RI;清除有串口数据标志
068B 22 986 RET
987 ;发送AT+CLCC,来电显示
988 ;00 43 00 4C 00 43 00 43
068C 989 CLCC:
068C 1203F8 990 LCALL ATC
068F 744C 991 MOV A,#4CH
0691 120A27 992 LCALL FS
0694 7443 993 MOV A,#43H
0696 120A27 994 LCALL FS
0699 7443 995 MOV A,#43H
069B 120A27 996 LCALL FS
069E 120406 997 LCALL HC;回车!
06A1 22 998 RET
999 ;发送AT+CPAS查询手机状态子程序 AT+CPAS 报告移动设备的错误 +CMEERROR:﹤XXX﹥
1000 ;+CMSERROR:﹤XXX﹥ ERROR
06A2 1001 CPAS:
06A2 1203F8 1002 LCALL ATC;发AT+C
06A5 7450 1003 MOV A,#50H;P
06A7 120A27 1004 LCALL FS
06AA 7441 1005 MOV A,#41H;A
06AC 120A27 1006 LCALL FS
06AF 7453 1007 MOV A,#53H;S
06B1 120A27 1008 LCALL FS
06B4 120406 1009 LCALL HC;回车!
1010 ;手机状态子程序
1011 ;跳过9个内存
06B7 7B09 1012 MOV R3,#9;定义接收数据的总长度 0D 0A 2B 43 50 41 53 3A 20 33 0D 0A
06B9 120A08 1013 LCALL TGSJ;调用接收串口数据子程序
06BC 7825 1014 MOV R0,#25H;数据在内存的存放位置
06BE C298 1015 CLR RI;软件清除串口中断标记
06C0 1209DA 1016 LCALL PDRI;等待下一个串口数据
06C3 E599 1017 MOV A,SBUF;将串口寄存器中接收到的数据给A
06C5 F6 1018 MOV @R0,A;收到33
06C6 08 1019 INC R0;内存单元地址
1020 ;跳过8个内存
06C7 7B08 1021 MOV R3,#8;定义接收数据的总长度
06C9 120A08 1022 LCALL TGSJ;调用接收串口数据子程序
06CC 22 1023 RET
1024 ;发送AT+CMGS=R7 R6 R5,发送短信
1025 ;00 43 00 4D 00 47 00 53 00 3D
06CD 1026 CMGS:
06CD 1203F8 1027 LCALL ATC
06D0 744D 1028 MOV A,#"M";M
06D2 120A27 1029 LCALL FS
06D5 7447 1030 MOV A,#"G";G
06D7 120A27 1031 LCALL FS
06DA 7453 1032 MOV A,#"S";S
06DC 120A27 1033 LCALL FS
06DF 743D 1034 MOV A,#"=";=
06E1 120A27 1035 LCALL FS
06E4 EF 1036 MOV A,R7
06E5 120A27 1037 LCALL FS
06E8 EE 1038 MOV A,R6
06E9 120A27 1039 LCALL FS
06EC ED 1040 MOV A,R5
06ED 6003 1041 JZ TGA
06EF 120A27 1042 LCALL FS
06F2 1043 TGA:
06F2 120406 1044 LCALL HC;回车!
06F5 120625 1045 LCALL JCDYH;调用等待手机回答“>”的子程序
06F8 5009 1046 JNC CSJ;检测到>,转入CSJ
06FA 9007D0 1047 MOV DPTR,#2000;延时2秒
06FD 120A56 1048 LCALL DelayXmS
A51 MACRO ASSEMBLER 糭____线__綺蟔__ 01/23/2008 12:02:46 PAGE 17
0700 0206CD 1049 LJMP CMGS
0703 1050 CSJ:
0703 900BFC 1051 MOV DPTR,#TAB11
0706 780C 1052 MOV R0,#12
0708 120714 1053 LCALL DXZT;调用发固定的短信字头0011000D9168子程序
070B 7874 1054 MOV R0,#74H;手机号码存放首址
070D 12071F 1055 LCALL JSFSJ;调用发送短信接收方手机号码子程序13906079959
0710 120728 1056 LCALL DYZXSJ;调用下部固定数据0008A9
0713 22 1057 RET
1058 ;发送短信固定字头0011000D9168子程序
0714 1059 DXZT:;0011000D9168
0714 7B00 1060 MOV R3,#0
0716 1061 FZT:
0716 EB 1062 MOV A,R3
0717 93 1063 MOVC A,@A+DPTR
0718 120A27 1064 LCALL FS
071B 0B 1065 INC R3
071C D8F8 1066 DJNZ R0,FZT
071E 22 1067 RET
1068 ;发送短信接收方手机号码子程序
071F 1069 JSFSJ:
071F E6 1070 MOV A,@R0
0720 120A27 1071 LCALL FS
0723 08 1072 INC R0
0724 B880F8 1073 CJNE R0,#80H,JSFSJ
0727 22 1074 RET
1075 ;发送短信中间固定数据000801子程序
0728 1076 DYZXSJ:
0728 7430 1077 MOV A,#"0"
072A 120A27 1078 LCALL FS
072D 7430 1079 MOV A,#"0"
072F 120A27 1080 LCALL FS
0732 7430 1081 MOV A,#"0"
0734 120A27 1082 LCALL FS
0737 7438 1083 MOV A,#"8"
0739 120A27 1084 LCALL FS
073C 7430 1085 MOV A,#"0"
073E 120A27 1086 LCALL FS
0741 7431 1087 MOV A,#"1"
0743 120A27 1088 LCALL FS
0746 22 1089 RET
1090 ;短信发送检测,+CMGS: 138
0747 1091 FSCG:
0747 C298 1092 CLR RI;清除有串口数据标志
0749 1209F1 1093 LCALL PDDXRI;5秒内检测串口是否有数据返回?
074C E599 1094 MOV A,SBUF;将串口寄存器中接收到的数据给A
074E B40D48 1095 CJNE A,#0DH,SBB;判断串口数据
0751 C298 1096 CLR RI;软件清除串口中断标记
0753 1209DA 1097 LCALL PDRI;等待下一个串口数据
0756 E599 1098 MOV A,SBUF;将串口寄存器中接收到的数据给A
0758 B40A3E 1099 CJNE A,#0AH,SBB;判断串口数据
075B C298 1100 CLR RI;软件清除串口中断标记
075D 1209DA 1101 LCALL PDRI;等待下一个串口数据
0760 E599 1102 MOV A,SBUF;将串口寄存器中接
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -