📄 modem.lst
字号:
555
556 00456 143E JMP MAIN
557
558 00457 _SEND_DTMF:
559
560 00457 143E JMP MAIN
561
562
563
564 ;=======================806 send data to mcu===================
565 00458 _I2C_SEND_MCU: ;SEND DATA TO MCU
566 00458 0E87 JBS 0X07,CLOCK
567 00459 143E JMP MAIN
568 0045A 0EC7 JBS 0X07,DATA
569 0045B 143E JMP MAIN
570
571 0045C 0807 BC 0X07,DSR ;require connect
572 0045D 00E7 CLR COUNTER_5MS
573 0045E 0A2B BS I2C_FLAG,WAIT_BUSY
574 0045F _WAIT_BUSY_DOWN:
575 0045F 0CAB JBC I2C_FLAG,mcu_over_time ;OVERTIME CONTROL
576 00460 149A JMP _send_fail_con_again ;DELAY 30MS ,THEN CON AGAIN
577
578 00461 0C47 JBC 0X07,BUSY
579 00462 145F JMP _WAIT_BUSY_DOWN
580 00463 082B BC I2C_FLAG,WAIT_BUSY
581 00464 00E7 CLR COUNTER_5MS
582 00465 0A6B BS I2C_FLAG,WAIT_START
583
584 00466 _WAIT_START:
585 00466 0CAB JBC I2C_FLAG,MCU_OVER_TIME ;OVERTIME CONTROL
586 00467 149A JMP _send_fail_con_again ;DELAY 30MS ,THEN CON AGAIN
587
588 00468 0E87 JBS 0X07,CLOCK
589 00469 149A JMP _send_fail_con_again
590 0046A 0CC7 JBC 0X07,DATA
591 0046B 1466 JMP _WAIT_START
592
593 0046C 086B BC I2C_FLAG,WAIT_START
594 0046D 00E7 CLR COUNTER_5MS
595 0046E 0011 DISI ;WHEN COMU, DIABLE INT
596
597
598 0046F 1158 CALL I2C_REC_BYTE
599
600 00470 0414 MOV A,I2C_TEMP
601 00471 1A1F AND A,@0B00011111
602 00472 0050 MOV 0X10,A
603 00473 0650 RRC 0X10
604 00474 1890 MOV A,@0X90
605 00475 004C MOV 0X0C,A
606 00476 040D MOV A,0X0D
607 00477 0310 XOR A,0X10
608 00478 0E83 JBS 0X03,2
609 00479 149A JMP _send_fail_con_again
610 0047A 0E14 JBS I2C_TEMP,0 ;READ 1/WRITE 0
611 0047B 149A JMP _send_fail_con_again
612
613 0047C 1175 CALL I2C_SEND_ACK
614
615 0047D 0017 IOR 0X07
616 0047E 1AF7 AND A,@0B11110111 ;SET DATA AS OUTPUT
617 0047F 0017 IOR 0X07
618 00480 00D3 clr i2c_send_total
619
620 00481 _I2C_SEND_LOOP:
621 00481 0413 mov a,i2c_send_total
622 00482 004C mov 0x0c,a
623 00483 040D mov a,0x0d
624 00484 0054 mov i2c_temp,a
625
626 00485 1183 CALL I2C_SEND_BYTE
627 00486 1192 CALL I2C_REC_ACK
628
629 00487 0553 inc i2c_send_total
630
631 00488 0413 mov a,i2c_send_total ;IF NO ACK,DON'T REC END BIT
632 00489 032A xor a,i2c_total
633 0048A 0E83 jbs 0x03,2
634 0048B 1497 jmp _send_not_complete
635
636 0048C 0960 BC STA_FLAG,IN_I2C_SEND ;send complete
637 0048D 0807 BC 0X07,DSR
638 0048E 0017 IOR 0X07
639 0048F 190C OR A,@0B00001100
640 00490 0017 IOR 0X07
641 00491 00D4 clr i2c_temp
642 00492 00D2 clr i2c_bit_cont
643 00493 00D3 clr i2c_send_total
644 00494 00EA clr i2c_total
645 00495 0010 eni
646 00496 143E jmp main
647
648 00497 _send_not_complete:
649 00497 0EEB jbs i2c_flag,no_ack
650 00498 1481 jmp _i2c_send_loop
651 00499 149A jmp _send_fail_con_again
652
653
654 0049A _send_fail_con_again:
655 0049A 00EB clr i2c_flag
656 0049B 0807 BC 0X07,DSR
657 0049C 0017 ior 0x07
658 0049D 190C or a,@0b00001100
659 0049E 0007 iow 0x07
660 0049F 0401 mov a,0x01 ;reset i2c_total
661 004A0 004C mov 0x0c,a
662 004A1 040D mov a,0x0d
663 004A2 1F03 add a,@0x03
664 004A3 006A mov i2c_total,a
665 ;DELAY 30MS
666 004A4 143E JMP MAIN
667
668
669 ;=====================806 receive mcu data==========================
670 004A5 _I2C_REC_MCU:
671
672 004A5 00E7 CLR COUNTER_5MS ;wait start bit
673 004A6 0A6B BS I2C_FLAG,WAIT_START
674
675 004A7 _wait_start1:
676 004A7 0CAB JBC I2C_FLAG,MCU_OVER_TIME ;OVERTIME CONTROL
677 004A8 152F JMP _rec_fail
678
679 004A9 0E87 JBS 0X07,CLOCK
680 004AA 152F JMP _rec_fail
681 004AB 0CC7 JBC 0X07,DATA
682 004AC 14A7 JMP _WAIT_START1
683
684 004AD 086B BC I2C_FLAG,WAIT_START
685 004AE 00E7 CLR COUNTER_5MS
686 004AF 0011 DISI
687
688 004B0 00D3 clr i2c_rec_total
689 004B1 00D5 clr i2c_checksum
690 004B2 00EA clr i2c_total
691
692 004B3 _rec_byte_loop: ;rec loop start
693 004B3 1158 call i2c_rec_byte
694
695 004B4 0D2B jbc i2c_flag,end_bit
696 004B5 152F jmp _rec_fail ;rec end_bit , as fail
697
698 004B6 0553 inc i2c_rec_total ;inc
699
700 004B7 0413 mov a,i2c_rec_total
701 004B8 1B01 xor a,@0x01
702 004B9 0C83 jbc 0x03,2
703 004BA 14C0 jmp _rec_judge_add
704
705 ; mov a,i2c_rec_total ;rec instruction
706 ; xor a,@0x02
707 ; jbc 0x03,2
708 ; jmp _rec_instruction
709
710 004BB 0413 mov a,i2c_rec_total ;rec data total
711 004BC 1B03 xor a,@0x03
712 004BD 0C83 jbc 0x03,2
713 004BE 14CD jmp _rec_length
714 004BF 14D6 jmp _rec_save
715
716 004C0 _rec_judge_add:
717 004C0 0414 mov a,i2c_temp ;check 806 add
718 004C1 1A1F and a,@0B00011111
719 004C2 0050 mov 0x10,a
720 004C3 0650 RRC 0X10
721 004C4 1890 MOV A,@0X90
722 004C5 004C MOV 0X0C,A
723 004C6 040D MOV A,0X0D
724 004C7 0310 XOR A,0X10
725 004C8 0E83 JBS 0X03,2
726 004C9 152F JMP _rec_fail
727 004CA 0C14 jbc i2c_temp,0 ;check "r /w" bit,READ 1/WRITE 0
728 004CB 152F jmp _rec_fail
729 004CC 14D6 jmp _rec_save
730
731 004CD _rec_length:
732 004CD 1840 mov a,@0x40 ;if instruction =0x05,no data length
733 004CE 004C mov 0x0c,a
734 004CF 040D mov a,0x0d
735 004D0 1B05 xor a,@0x05
736 004D1 0C83 jbc 0x03,2
737 004D2 14EC jmp _rec_ok
738
739 004D3 0414 mov a,i2c_temp ;get all byte total
740 004D4 1F03 add a,@0x03
741 004D5 006A mov i2c_total,a
742
743 004D6 _rec_save:
744 004D6 0193 deca i2c_rec_total ;save to cid ram 0x40-0x7f
745 004D7 1F40 add a,@0x40
746 004D8 004C mov 0x0c,a
747 004D9 0414 mov a,i2c_temp
748 004DA 004D mov 0x0d,a
749
750 004DB 0413 mov a,i2c_rec_total ;judge if the last byte
751 004DC 1D02 sub a,@0x02
752 004DD 0C03 jbc 0x03,0
753 004DE 14E8 jmp _rec_checksum
754
755 004DF 0413 mov a,i2c_rec_total ;last byte, judge checksum
756 004E0 032A xor a,i2c_total
757 004E1 0E83 jbs 0x03,2
758 004E2 14E8 jmp _rec_checksum
759 004E3 0414 mov a,i2c_temp
760 004E4 0315 xor a,i2c_checksum
761 004E5 0E83 jbs 0x03,2
762 004E6 152F jmp _rec_fail
763 004E7 14EC jmp _rec_ok
764
765 004E8 _rec_checksum:
766 004E8 0414 mov a,i2c_temp
767 004E9 03D5 add i2c_checksum,a
768
769 004EA _rec_loop_ack:
770 004EA 1175 CALL I2C_SEND_ACK
771 004EB 14B3 jmp _rec_byte_loop ;rec loop end
772
773
774 004EC _rec_ok:
775 004EC 1175 call i2c_send_ack
776 004ED 08AB bc i2c_flag,mcu_over_time
777 004EE 0807 BC 0X07,DSR
778 004EF 09A0 bc sta_flag,in_i2c_rec
779 004F0 0017 ior 0x07
780 004F1 190C or a,@0b00001100
781 004F2 0007 iow 0x07
782
783 004F3 1842 mov a,@0x42
784 004F4 004C mov 0x0c,a
785 004F5 040D mov a,0x0d
786 004F6 0020 tbl
787 004F7 152E jmp _rec_command_err
788 004F8 1500 jmp _dtmf_send_reset
789 004F9 150E jmp _fsk_send_reset
790 004FA 152E jmp _rec_io_control
791 004FB 152E jmp _rec_output
792 004FC 152E jmp _rec_input_inquire
793 004FD 152E jmp _on_off_control
794 004FE 152E jmp _fsk_send_parameter
795 004FF 152E jmp _not_use
796
797 00500 _dtmf_send_reset: ;send dtmf
798 00500 1844 mov a,@0x44
799 00501 004C mov 0x0c,a
800 00502 040D MOV A,0X0D
801
802 00503 09C3 BC 0X03,7 ;IOCX PAGE 0
803 00504 1136 CALL DAIL_DTMF_HIGH ;high frequency ,high voltage
804 00505 000E IOW 0X0E ;tone generator2 is 2DB higher than 1
805
806 00506 040D MOV A,0X0D
807 00507 1147 CALL DAIL_DTMF_LOW
808 00508 000D IOW 0X0D ;low frequency, low voltage
809
810 00509 1860 MOV A,@0B01100000
811 0050A 0243 OR 0X03,A
812
813 ; bs dtmf_flag,dtmf_send_start
814 0050B 0B20 bs sta_flag,in_send_dtmf
815 0050C 09A0 bc sta_flag,in_i2c_rec
816 0050D 143E jmp main
817
818
819 0050E _fsk_send_reset: ;send fsk
820
821 0050E 0CE0 jbc sta_flag,in_send_fsk
822 0050F 143E jmp main
823
824 00510 08C5 BC 0X05,3
825 00511 08CA BC 0X0A,3
826 00512 001F IOR 0X0F
827 00513 1ABE AND A,@0B10111110 ;disable fsk,tcc
828 00514 000F IOW 0X0F
829 ;
830 00515 1844 MOV A,@0X44 ;SET START VALUE
831 00516 004C mov 0x0c,a
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -