📄 家庭无线报警系统.lst
字号:
0245 7B14 438 MOV R3,#20;定义接收数据的总长度
0247 120A08 439 LCALL TGSJ;调用接收串口数据子程序
440 ;**********************************************
024A 441 PDCX:;判断查询信息
024A 7A08 442 MOV R2,#8;要对比的字节数2*4=8
024C 7800 443 MOV R0,#00H;RAM内密码的起始地址00H
024E 900C10 444 MOV DPTR,#CX;查询67E58BE2
0251 1203B5 445 LCALL PDDXNR;调用判断短信内容
0254 B4FF17 446 CJNE A,#0FFH,PDJF;如果内容不是查询则调用判断解防
0257 C298 447 CLR RI;软件清除串口中断标记
0259 7B08 448 MOV R3,#8;跳过8个数据
025B 120A08 449 LCALL TGSJ;调用跳过串口数据子程序
025E 309705 450 JNB LED,DFASF;如果LED=0则发"系统已设防"
0261 120882 451 LCALL FAJF;调用发送"系统已解防"子程序
0264 6174 452 AJMP SCC
0266 120854 453 DFASF:LCALL FASF;调用发送"系统已设防"子程序
0269 6174 454 AJMP SCC
A51 MACRO ASSEMBLER 糭____线__綺蟔__ 01/23/2008 12:02:46 PAGE 8
455 ;**********************************************
026B 456 DPDSQ:
026B 1202F0 457 LCALL PDSQ;短信授权检测
458 ;**********************************************
459 ;检测"(解)防",PDU码--0489E39632
460 ;30 34 38 (39 45 33) 39 36 33 32
461 ;解防 89E39632
026E 462 PDJF:
026E 9003E8 463 MOV DPTR,#1000;延时1秒
0271 120A56 464 LCALL DelayXmS
0274 1204A6 465 LCALL CMGR;再次调用读短信子程序
0277 7B4A 466 MOV R3,#74;跳过74个数据
0279 120A08 467 LCALL TGSJ;调用跳过串口数据子程序
027C C298 468 CLR RI;软件清除串口中断标记
027E 1209DA 469 LCALL PDRI;等待下一个串口数据
0281 E599 470 MOV A,SBUF;将串口寄存器中接收到的数据给A
0283 B4386A 471 CJNE A,#38H,PDSQ;判断串口数据8
0286 C298 472 CLR RI;软件清除串口中断标记
0288 1209DA 473 LCALL PDRI;等待下一个串口数据
028B E599 474 MOV A,SBUF;将串口寄存器中接收到的数据给A
028D B43922 475 CJNE A,#39H,SHEFAN;判断串口数据9转为判断是否为(设)防 8BBE9632
0290 C298 476 CLR RI;软件清除串口中断标记
0292 1209DA 477 LCALL PDRI;等待下一个串口数据
0295 E599 478 MOV A,SBUF;将串口寄存器中接收到的数据给A
0297 B44556 479 CJNE A,#45H,PDSQ;判断串口数据E
029A C298 480 CLR RI;软件清除串口中断标记
029C 1209DA 481 LCALL PDRI;等待下一个串口数据
029F E599 482 MOV A,SBUF;将串口寄存器中接收到的数据给A
02A1 B4334C 483 CJNE A,#33H,PDSQ;判断串口数据3
02A4 C298 484 CLR RI;软件清除串口中断标记
02A6 1204E6 485 LCALL FANG;调用(防)接收串口数据子程序 判断是否有断的PDU 9632
02A9 602C 486 JZ SC;A=0则SC(删除短信)
02AB D297 487 SETB LED;解防
02AD 120882 488 LCALL FAJF
02B0 6174 489 AJMP SCC
490 ;**********************************************
491 ;检测"(设)防",PDU码--048BBE9632
492 ;30 34 38 (42 42 45) 39 36 33 32
02B2 493 SHEFAN:;(设)
02B2 E599 494 MOV A,SBUF;将串口寄存器中接收到的数据给A
02B4 B44239 495 CJNE A,#42H,PDSQ;判断串口数据B
02B7 C298 496 CLR RI;软件清除串口中断标记
02B9 1209DA 497 LCALL PDRI;等待下一个串口数据
02BC E599 498 MOV A,SBUF;将串口寄存器中接收到的数据给A
02BE B4422F 499 CJNE A,#42H,PDSQ;判断串口数据B
02C1 C298 500 CLR RI;软件清除串口中断标记
02C3 1209DA 501 LCALL PDRI;等待下一个串口数据
02C6 E599 502 MOV A,SBUF;将串口寄存器中接收到的数据给A
02C8 B44525 503 CJNE A,#45H,PDSQ;判断串口数据E
02CB C298 504 CLR RI;软件清除串口中断标记
02CD 1204E6 505 LCALL FANG;调用(防)接收串口数据子程序
02D0 6005 506 JZ SC
02D2 C297 507 CLR LED;设防
02D4 120854 508 LCALL FASF
02D7 509 SC:
02D7 6174 510 AJMP SCC
511 ;**********************************************
02D9 512 INTIT_MM:;密码初始化
02D9 7A0B 513 MOV R2,#11;要对比的字节数3*4=11
02DB 7800 514 MOV R0,#00H;RAM内密码的起始地址00H
02DD 900C18 515 MOV DPTR,#CCH;密码的表首址
02E0 1203B5 516 LCALL PDDXNR;调用判断短信内容
02E3 B4FFF1 517 CJNE A,#0FFH,SC;如果密码不对则调用删除短信
02E6 1208D4 518 LCALL MMCCH;调用密码初始化
02E9 12079D 519 LCALL FDX;发送授权成功的短信息通知客户!
02EC 1205C6 520 LCALL XMM;写入密码
A51 MACRO ASSEMBLER 糭____线__綺蟔__ 01/23/2008 12:02:46 PAGE 9
02EF 22 521 RET
522 ;**********************************************
02F0 523 PDSQ:;短信授权检测
524 ;如果电话号码不是默认值,就检测信息内容
02F0 9003E8 525 MOV DPTR,#1000
02F3 120A56 526 LCALL DelayXmS
02F6 1204A6 527 LCALL CMGR;再次调用读短信子程序
02F9 7B4A 528 MOV R3,#74;跳过74个数据
02FB 120A08 529 LCALL TGSJ;调用跳过串口数据子程序
530 ;校验"密码" "5BC67801"
02FE 7A08 531 MOV R2,#8;要对比的字节数2*4=8
0300 7800 532 MOV R0,#00H;RAM内密码的起始地址00H
0302 900C08 533 MOV DPTR,#MM;密码的表首址
0305 1203B5 534 LCALL PDDXNR;调用判断短信内容
0308 B4FF69 535 CJNE A,#0FFH,SCC;如果密码不对则调用删除短信
536 ;校验":" "003A"
030B C298 537 CLR RI;软件清除串口中断标记
030D 1209DA 538 LCALL PDRI;等待下一个串口数据
0310 E599 539 MOV A,SBUF;将串口寄存器中接收到的数据给A
0312 B4305F 540 CJNE A,#"0",SCC;判断串口数据 0
0315 C298 541 CLR RI;软件清除串口中断标记
0317 1209DA 542 LCALL PDRI;等待下一个串口数据
031A E599 543 MOV A,SBUF;将串口寄存器中接收到的数据给A
031C B43055 544 CJNE A,#"0",SCC;判断串口数据 0
031F C298 545 CLR RI;软件清除串口中断标记
0321 1209DA 546 LCALL PDRI;等待下一个串口数据
0324 E599 547 MOV A,SBUF;将串口寄存器中接收到的数据给A
0326 B4334B 548 CJNE A,#"3",SCC;判断串口数据 3
0329 C298 549 CLR RI;软件清除串口中断标记
032B 1209DA 550 LCALL PDRI;等待下一个串口数据
032E E599 551 MOV A,SBUF;将串口寄存器中接收到的数据给A
0330 B44141 552 CJNE A,#"A",SCC;判断串口数据 A
553 ;校验存放在5CH-73H的内存中密码"******"5BB65EAD62A58B667CFB7EDF
0333 7A18 554 MOV R2,#24;要对比的字节数6*4=24
0335 785C 555 MOV R0,#5CH;RAM内密码的起始地址5CH
0337 1203B5 556 LCALL PDDXNR;调用判断短信内容
033A B4FF9C 557 CJNE A,#0FFH,INTIT_MM;如果密码不对则调用删除短信
033D C298 558 CLR RI;软件清除串口中断标记
033F 1209DA 559 LCALL PDRI;等待下一个串口数据
0342 E599 560 MOV A,SBUF;将串口寄存器中接收到的数据给A
0344 B4362A 561 CJNE A,#36H,FSQR;判断串口数据 6
0347 C298 562 CLR RI;软件清除串口中断标记
0349 1209DA 563 LCALL PDRI;等待下一个串口数据
034C E599 564 MOV A,SBUF;将串口寄存器中接收到的数据给A
034E B43520 565 CJNE A,#35H,FSQR;判断串口数据 5
0351 C298 566 CLR RI;软件清除串口中断标记
0353 1209DA 567 LCALL PDRI;等待下一个串口数据
0356 E599 568 MOV A,SBUF;将串口寄存器中接收到的数据给A
0358 B43316 569 CJNE A,#33H,FSQR;判断串口数据 3
035B C298 570 CLR RI;软件清除串口中断标记
035D 1209DA 571 LCALL PDRI;等待下一个串口数据
0360 E599 572 MOV A,SBUF;将串口寄存器中接收到的数据给A
0362 B4390C 573 CJNE A,#39H,FSQR;判断串口数据 9
574 ;检测到"改"的汉字内码6539
575 ;密码"******"存放在5CH-73H的内存中
576 ;将"改"后面的两个汉字作为密码保存到单片机5CH-73H的内存中!
0365 7B18 577 MOV R3,#24;定义接收数据的总长度为24个
0367 785C 578 MOV R0,#5CH;数据从内存的5CH开始依次往后存放
0369 120A15 579 LCALL GPSSJ;调用接收串口数据子程序
036C 7B08 580 MOV R3,#8;跳过8个数据
036E 120A08 581 LCALL TGSJ;调用跳过串口数据子程序
0371 582 FSQR:
0371 120378 583 LCALL JPA
0374 584 SCC:;删除短信
0374 120990 585 LCALL SCJSDX
0377 22 586 RET
A51 MACRO ASSEMBLER 糭____线__綺蟔__ 01/23/2008 12:02:46 PAGE 10
0378 587 JPA:;把短信授权的手机号码存储起来
0378 9003E8 588 MOV DPTR,#1000
037B 120A56 589 LCALL DELAYXMS
037E 1204A6 590 LCALL CMGR;再次调用读短信子程序
0381 7B2A 591 MOV R3,#42;跳过42个数据
0383 120A08 592 LCALL TGSJ;调用跳过串口数据子程序
593 ;把短信授权的手机号码存储起来
594 ;手机号码存放在74H-7F的内存中
0386 7B0C 595 MOV R3,#12;定义接收手机号码的数据长度
0388 7874 596 MOV R0,#74H;数据在内存的存放位置
038A 120A15 597 LCALL GPSSJ;调用接收串口数据子程序
038D 9003E8 598 MOV DPTR,#1000
0390 120A56 599 LCALL DELAYXMS
600 ;校验短信授权的手机号码
0393 1204A6 601 LCALL CMGR;再次调用读短信子程序
0396 7B2A 602 MOV R3,#42;跳过42个数据
0398 120A08 603 LCALL TGSJ;调用跳过串口数据子程序
604 ; LCALL DXJC;检测电话号码
039B 7874 605 MOV R0,#74H
039D 7A0C 606 MOV R2,#12
039F 71B5 607 ACALL PDDXNR
03A1 60D5 608 JZ JPA
03A3 900064 609 MOV DPTR,#100
03A6 120A56 610 LCALL DELAYXMS
03A9 12079D 611 LCALL FDX;发送授权成功的短信息通知客户!
03AC 7003 612 JNZ JPA1
03AE 12079D 613 LCALL FDX;发送授权成功的短信息通知客户!
03B1 1205A4 614 JPA1:LCALL BCDM;保存授权电话号码及密码
03B4 22 615 RET
616
617
618
619
620
621
03B5 622 PDDXNR:;判断短信内容
03B5 7B00 623 MOV R3,#0;
03B7 624 ZPD:
03B7 B80006 625 CJNE R0,#00H,R_RAM;
03BA EB 626 MOV A,R3;
03BB 93 627 MOVC A,@A+DPTR;取要对比的对照码
03BC F5F0 628 MOV B,A;把对比码存入B
03BE 8003 629 JMP SCOM
03C0 630 R_RAM:
03C0 86F0 631 MOV B,@R0;
03C2 08 632 INC R0
03C3 633 SCOM:
03C3 C298 634 CLR RI
03C5 1209DA 635 LCALL PDRI
03C8 E599 636 MOV A,SBUF;接收串口数据
03CA B5F006 637 CJNE A,B,BYZ;如果不一至则A变0再反回
03CD 0B 638 INC R3
03CE DAE7 639 DJNZ R2,ZPD;如果要判断的
03D0 74FF 640 MOV A,#0FFH
03D2 22 641 RET
03D3 E4 642 BYZ:CLR A
03D4 22 643 RET
644 ;发送AT指令!
03D5 645 FAT:
03D5 7441 646 MOV A,#41H;将ASCII码A发送到串口去
03D7 120A27 647 LCALL FS
03DA 7454 648 MOV A,#54H;将ASCII码T发送到串口去
03DC 120A27 649 LCALL FS
03DF 22 650 RET
651 ;发送ATH,挂机
03E0 652 ATH:
A51 MACRO ASSEMBLER 糭____线__綺蟔__ 01/23/2008 12:02:46 PAGE 11
03E0 1203D5 653 LCALL FAT
03E3 7448 654 MOV A,#48H
03E5 120A27 655 LCALL FS
03E8 120406 656 LCALL HC;回车!
03EB 22 657 RET
658 ;发送ATA,应答
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -