📄 mnet.lss
字号:
if(OutsideRingPre!=OutsideRingRd)
7c6: 80 91 cf 00 lds r24, 0x00CF
7ca: 89 17 cp r24, r25
7cc: 19 f0 breq .+6 ; 0x7d4 <OutsideTelRingCheck+0x2a>
{
OutsideRingPre=OutsideRingRd; //更新寄存值 OutsideRingRd: 1=Nothing 0=Ring
7ce: 90 93 cf 00 sts 0x00CF, r25
return;
7d2: 30 c0 rjmp .+96 ; 0x834 <OutsideTelRingCheck+0x8a>
}
mRot =1;
7d4: 31 e0 ldi r19, 0x01 ; 1
7d6: c0 91 dd 00 lds r28, 0x00DD
7da: 58 2f mov r21, r24
7dc: 68 eb ldi r22, 0xB8 ; 184
7de: 7b e0 ldi r23, 0x0B ; 11
7e0: 20 91 76 00 lds r18, 0x0076
7e4: 43 2f mov r20, r19
7e6: af ed ldi r26, 0xDF ; 223
7e8: b0 e0 ldi r27, 0x00 ; 0
7ea: fd 01 movw r30, r26
for(i=0;i<OutsideTelNum;i++)
{
Store_Flag= OutsideRingSave & mRot; //OutsideRingSave 1=Nothing 0=Ring
7ec: 9c 2f mov r25, r28
7ee: 93 23 and r25, r19
if(OutsideRingRd & mRot)
7f0: 85 2f mov r24, r21
7f2: 83 23 and r24, r19
7f4: 79 f0 breq .+30 ; 0x814 <OutsideTelRingCheck+0x6a>
{
if(Store_Flag)
7f6: 99 23 and r25, r25
7f8: 99 f0 breq .+38 ; 0x820 <OutsideTelRingCheck+0x76>
{
if(SetOutsideRing[i])
7fa: 80 81 ld r24, Z
7fc: 91 81 ldd r25, Z+1 ; 0x01
7fe: 00 97 sbiw r24, 0x00 ; 0
800: 79 f0 breq .+30 ; 0x820 <OutsideTelRingCheck+0x76>
{
if(!(--SetOutsideRing[i]))
802: 01 97 sbiw r24, 0x01 ; 1
804: 91 83 std Z+1, r25 ; 0x01
806: 80 83 st Z, r24
808: 89 2b or r24, r25
80a: 51 f4 brne .+20 ; 0x820 <OutsideTelRingCheck+0x76>
{
OutsideRingCheck &= ~mRot;
80c: 83 2f mov r24, r19
80e: 80 95 com r24
810: 28 23 and r18, r24
812: 06 c0 rjmp .+12 ; 0x820 <OutsideTelRingCheck+0x76>
}
}
}
else
{//振铃停止动作****************
}
}
else // on Ringing
{
if(Store_Flag)
814: 99 23 and r25, r25
816: 21 f0 breq .+8 ; 0x820 <OutsideTelRingCheck+0x76>
{//振铃动作****************
SetOutsideRing[i]=3000; //5s未检测到振铃,则认为振铃停止
818: 11 96 adiw r26, 0x01 ; 1
81a: 7c 93 st X, r23
81c: 6e 93 st -X, r22
OutsideRingCheck|=mRot;
81e: 23 2b or r18, r19
}
else
{
}
}
mRot<<= 1;
820: 33 0f add r19, r19
822: 41 50 subi r20, 0x01 ; 1
824: 32 96 adiw r30, 0x02 ; 2
826: 12 96 adiw r26, 0x02 ; 2
828: 47 ff sbrs r20, 7
82a: e0 cf rjmp .-64 ; 0x7ec <OutsideTelRingCheck+0x42>
82c: 20 93 76 00 sts 0x0076, r18
}
OutsideRingSave=OutsideRingRd; //更新寄存值
830: 50 93 dd 00 sts 0x00DD, r21
834: cf 91 pop r28
836: 08 95 ret
00000838 <TelOperateLoop>:
}
void TelOperateLoop(void)
{
fnTelRountineOut1();
838: 0e 94 ab 16 call 0x2d56 <fnTelRountineOut1>
fnTelRountineOut2();
83c: 0e 94 de 16 call 0x2dbc <fnTelRountineOut2>
fnTelRountineExt1();
840: 0e 94 22 0a call 0x1444 <fnTelRountineExt1>
fnTelRountineExt2();
844: 0e 94 78 16 call 0x2cf0 <fnTelRountineExt2>
fnTelRountineExt3();
848: 0e 94 3e 22 call 0x447c <fnTelRountineExt3>
fnTelRountineExt4();
84c: 0e 94 fe 27 call 0x4ffc <fnTelRountineExt4>
fnTelRountineExt5();
850: 0e 94 be 2d call 0x5b7c <fnTelRountineExt5>
fnTelRountineExt6();
854: 0e 94 80 33 call 0x6700 <fnTelRountineExt6>
fnTelRountineDoorphone();
858: 0e 94 65 17 call 0x2eca <fnTelRountineDoorphone>
85c: 08 95 ret
0000085e <DTMF_Decode>:
unsigned char DTMF_Decode(unsigned char DTMF_NUM)
{
unsigned char i;
if (DTMF_NUM==1)
85e: 81 30 cpi r24, 0x01 ; 1
860: 99 f4 brne .+38 ; 0x888 <__stack+0x29>
{
if(bit_is_clear(PINC,DTMF1_DV))
862: 9b 99 sbic 0x13, 3 ; 19
864: 05 c0 rjmp .+10 ; 0x870 <__stack+0x11>
{
i=mDTMF1_Pre;
866: 80 91 b4 00 lds r24, 0x00B4
mDTMF1_Pre =0;
86a: 10 92 b4 00 sts 0x00B4, r1
86e: 14 c0 rjmp .+40 ; 0x898 <__stack+0x39>
return i;
}else
{
SetBit(PORTC,EnDTMFCreate);
870: aa 9a sbi 0x15, 2 ; 21
...
nop();nop();nop();
nop();nop();nop();
mDTMF1_Pre=PINA & 0x0f;
87e: 89 b3 in r24, 0x19 ; 25
880: 8f 70 andi r24, 0x0F ; 15
882: 80 93 b4 00 sts 0x00B4, r24
886: 1a c0 rjmp .+52 ; 0x8bc <__stack+0x5d>
ClrBit(PORTC,EnDTMFCreate);
return 0;
}
}else if (DTMF_NUM==2)
888: 82 30 cpi r24, 0x02 ; 2
88a: e1 f4 brne .+56 ; 0x8c4 <__stack+0x65>
{
if(bit_is_clear(PINC,DTMF2_DV))
88c: 9c 99 sbic 0x13, 4 ; 19
88e: 06 c0 rjmp .+12 ; 0x89c <__stack+0x3d>
{
i=mDTMF2_Pre;
890: 80 91 7a 00 lds r24, 0x007A
mDTMF2_Pre =0;
894: 10 92 7a 00 sts 0x007A, r1
return i;
898: 99 27 eor r25, r25
89a: 08 95 ret
}else
{
SetBit(PORTC,EnDTMFCreate);
89c: aa 9a sbi 0x15, 2 ; 21
...
nop();nop();nop();
nop();nop();nop();
mDTMF2_Pre= (PINA & 0xf0)>>4 ;
8aa: 89 b3 in r24, 0x19 ; 25
8ac: 99 27 eor r25, r25
8ae: 24 e0 ldi r18, 0x04 ; 4
8b0: 96 95 lsr r25
8b2: 87 95 ror r24
8b4: 2a 95 dec r18
8b6: e1 f7 brne .-8 ; 0x8b0 <__stack+0x51>
8b8: 80 93 7a 00 sts 0x007A, r24
ClrBit(PORTC,EnDTMFCreate);
8bc: aa 98 cbi 0x15, 2 ; 21
return 0;
8be: 80 e0 ldi r24, 0x00 ; 0
8c0: 90 e0 ldi r25, 0x00 ; 0
8c2: 08 95 ret
}
}
return 0;
8c4: 80 e0 ldi r24, 0x00 ; 0
8c6: 90 e0 ldi r25, 0x00 ; 0
}
8c8: 08 95 ret
000008ca <fnExt1_Free>:
void fnExt1_Free(void) //0 内线空闲
{
8ca: cf 93 push r28
unsigned char i,j;
if (bit_is_clear(ExtTelStateCheck,cExt1Num)) return; //本内线提机
8cc: 80 91 86 00 lds r24, 0x0086
8d0: 80 ff sbrs r24, 0
8d2: 3b c0 rjmp .+118 ; 0x94a <fnExt1_Free+0x80>
Writesoundway(SigCallID,cExt1Num,OFF); //
8d4: 40 e0 ldi r20, 0x00 ; 0
8d6: 64 2f mov r22, r20
8d8: 83 e0 ldi r24, 0x03 ; 3
8da: 0e 94 73 03 call 0x6e6 <Writesoundway>
i = fnLinkLineIn_Ext(cExt1Num); // Get Line Out
8de: 80 e0 ldi r24, 0x00 ; 0
8e0: 0e 94 5a 0d call 0x1ab4 <fnLinkLineIn_Ext>
8e4: c8 2f mov r28, r24
if (!i)
8e6: 88 23 and r24, r24
8e8: b1 f4 brne .+44 ; 0x916 <fnExt1_Free+0x4c>
{
i= fnLinkExtLineY4Y5(cExt1Num);
8ea: 0e 94 80 0d call 0x1b00 <fnLinkExtLineY4Y5>
8ee: c8 2f mov r28, r24
if (!i) // Have not Y4Y5
8f0: 88 23 and r24, r24
8f2: 39 f0 breq .+14 ; 0x902 <fnExt1_Free+0x38>
{
Ext1_FunPt=4;//4 内线没连任何线
return;
}else // Get One of Y4 / Y5
{
j = fnLinkDTMF_Ext(i); // Get DTMF
8f4: 0e 94 a4 0d call 0x1b48 <fnLinkDTMF_Ext>
if (!j) // No any DTMF
8f8: 88 23 and r24, r24
8fa: 39 f4 brne .+14 ; 0x90a <fnExt1_Free+0x40>
{
fnCutOffY4Y5(i);
8fc: 8c 2f mov r24, r28
8fe: 0e 94 16 0d call 0x1a2c <fnCutOffY4Y5>
Ext1_FunPt=4;//4 内线没连任何线
902: 84 e0 ldi r24, 0x04 ; 4
904: 80 93 9f 00 sts 0x009F, r24
return;
908: 20 c0 rjmp .+64 ; 0x94a <fnExt1_Free+0x80>
}
}
mExt1_Link[0] =i;
90a: c0 93 ab 00 sts 0x00AB, r28
mExt1_Link[1] =j;
90e: 80 93 ac 00 sts 0x00AC, r24
Ext1_FunPt=3; //3 内线连DTMF
912: 83 e0 ldi r24, 0x03 ; 3
914: 12 c0 rjmp .+36 ; 0x93a <fnExt1_Free+0x70>
Ext1_dialtime=10000; //10s操作
}else
{
j = fnLinkDTMF_Ext(i-1); // Get DTMF
916: 81 50 subi r24, 0x01 ; 1
918: 0e 94 a4 0d call 0x1b48 <fnLinkDTMF_Ext>
mExt1_Link[0] =i;
91c: c0 93 ab 00 sts 0x00AB, r28
mExt1_Link[1] =j;
920: 80 93 ac 00 sts 0x00AC, r24
if (!j)
924: 88 23 and r24, r24
926: 41 f4 brne .+16 ; 0x938 <fnExt1_Free+0x6e>
{
Ext1_FunPt=2; //2 内线连外线
928: 82 e0 ldi r24, 0x02 ; 2
92a: 80 93 9f 00 sts 0x009F, r24
Ext1_dialtime = 0;
92e: 10 92 b7 00 sts 0x00B7, r1
932: 10 92 b6 00 sts 0x00B6, r1
936: 09 c0 rjmp .+18 ; 0x94a <fnExt1_Free+0x80>
}else
{
Ext1_FunPt=1; //1 内线连外线 + DTMF
938: 81 e0 ldi r24, 0x01 ; 1
93a: 80 93 9f 00 sts 0x009F, r24
Ext1_dialtime=10000; //10s操作
93e: 80 e1 ldi r24, 0x10 ; 16
940: 97 e2 ldi r25, 0x27 ; 39
942: 90 93 b7 00 sts 0x00B7, r25
946: 80 93 b6 00 sts 0x00B6, r24
94a: cf 91 pop r28
94c: 08 95 ret
0000094e <fnExt1_LinkLineOut_DTMF>:
return;
}
}
}
void fnExt1_LinkLineOut_DTMF(void) //1 内线连外线 + DTMF
{
94e: 1f 93 push r17
950: cf 93 push r28
unsigned char i,j;
if (bit_is_clear(ExtTelStateCheck,cExt1Num))
952: 80 91 86 00 lds r24, 0x0086
956: 80 fd sbrc r24, 0
958: 07 c0 rjmp .+14 ; 0x968 <fnExt1_LinkLineOut_DTMF+0x1a>
{
Ext1_FunPt=0; //0 fnExt1_Free 内线空闲
95a: 10 92 9f 00 sts 0x009F, r1
fnCutOffLineIn(mExt1_Link[0]);
95e: 80 91 ab 00 lds r24, 0x00AB
962: 0e 94 ec 0c call 0x19d8 <fnCutOffLineIn>
966: 69 c0 rjmp .+210 ; 0xa3a <fnExt1_LinkLineOut_DTMF+0xec>
fnCutOffDTMF(mExt1_Link[1]);
return;
}
if(!Ext1_dialtime)
968: 80 91 b6 00 lds r24, 0x00B6
96c: 90 91 b7 00 lds r25, 0x00B7
970: 00 97 sbiw r24, 0x00 ; 0
972: 71 f4 brne .+28 ; 0x990 <fnExt1_LinkLineOut_DTMF+0x42>
{
Ext1_FunPt=5; // fnExt1_Err
974: 85 e0 ldi r24, 0x05 ; 5
976: 80 93 9f 00 sts 0x009F, r24
fnCutOffLineIn(mExt1_Link[0]);
97a: 80 91 ab 00 lds r24, 0x00AB
97e: 0e 94 ec 0c call 0x19d8 <fnCutOffLineIn>
fnCutOffDTMF(mExt1_Link[1]);
982: 80 91 ac 00 lds r24, 0x00AC
986: 0e 94 38 0d call 0x1a70 <fnCutOffDTMF>
Writesoundway(Connect_Busy,cX_Ext1,ON); //;连接忙音
98a: 4f ef ldi r20, 0xFF ; 255
98c: 60 e0 ldi r22, 0x00 ; 0
98e: 23 c0 rjmp .+70 ; 0x9d6 <fnExt1_LinkLineOut_DTMF+0x88>
return;
}
Ext1_dialtime--;
990: 01 97 sbiw r24, 0x01 ; 1
992: 90 93 b7 00 sts 0x00B7, r25
996: 80 93 b6 00 sts 0x00B6, r24
mDTMF_In=DTMF_Decode(mExt1_Link[1]);
99a: 80 91 ac 00 lds r24, 0x00AC
99e: 0e 94 2f 04 call 0x85e <DTMF_Decode>
9a2: 80 93 c4 00 sts 0x00C4, r24
if (!mDTMF_In) return;
9a6: 88 23 and r24, r24
9a8: 09 f4 brne .+2 ; 0x9ac <fnExt1_LinkLineOut_DTMF+0x5e>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -