📄 at.lis
字号:
0094 0EC0 xjmp L1
0096 L14:
0096 .dbline 82
0096 ; case AT_Disc1 : return SendDebugRStr(ATStageStr8);
0096 00E0 ldi R16,<_ATStageStr8
0098 10E0 ldi R17,>_ATStageStr8
009A 0E940000 xcall _SendDebugRStr
009E 09C0 xjmp L1
00A0 L15:
00A0 .dbline 83
00A0 ; case AT_Disc2 : return SendDebugRStr(ATStageStr9);
00A0 00E0 ldi R16,<_ATStageStr9
00A2 10E0 ldi R17,>_ATStageStr9
00A4 0E940000 xcall _SendDebugRStr
00A8 04C0 xjmp L1
00AA L4:
00AA .dbline 84
00AA ; default : return SendDebugRStr(ATStageStr10);
00AA 00E0 ldi R16,<_ATStageStr10
00AC 10E0 ldi R17,>_ATStageStr10
00AE 0E940000 xcall _SendDebugRStr
00B2 .dbline -2
00B2 L1:
00B2 0E940000 xcall pop_gset1
00B6 .dbline 0 ; func end
00B6 0895 ret
00B8 .dbend
00B8 .dbfunc e AT_Stage _AT_Stage fV
00B8 ; Stage -> R20
.even
00B8 _AT_Stage::
00B8 0E940000 xcall push_gset1
00BC 402F mov R20,R16
00BE .dbline -1
00BE .dbline 93
00BE ; }
00BE ; }
00BE ;
00BE ; #endif
00BE ;
00BE ; //*************************************************************************************
00BE ;
00BE ; void AT_Stage(T_AT_Stage Stage)
00BE ; { // set the AT modem stage
00BE .dbline 94
00BE ; if (AT.Stage == Stage) return; // no change
00BE 20900300 lds R2,_AT+3
00C2 2416 cp R2,R20
00C4 09F4 brne L17
00C6 .dbline 94
00C6 0CC0 xjmp L16
00C8 L17:
00C8 .dbline 96
00C8 ; //
00C8 ; AT.Stage = Stage; //
00C8 40930300 sts _AT+3,R20
00CC .dbline 97
00CC ; AT.Retries = 0; //
00CC 2224 clr R2
00CE 20920000 sts _AT,R2
00D2 .dbline 98
00D2 ; u16_Put(&AT.Retry_Timer, 0); // send next thing asap
00D2 2227 clr R18
00D4 3327 clr R19
00D6 00E0 ldi R16,<_AT+1
00D8 10E0 ldi R17,>_AT+1
00DA 0E940000 xcall _u16_Put
00DE .dbline 101
00DE ;
00DE ; #ifdef Debug
00DE ; AT_DisplayStage();
00DE 90DF xcall _AT_DisplayStage
00E0 .dbline -2
00E0 L16:
00E0 0E940000 xcall pop_gset1
00E4 .dbline 0 ; func end
00E4 0895 ret
00E6 .dbsym r Stage 20 c
00E6 .dbend
00E6 .dbfunc e AT_Start _AT_Start fc
.even
00E6 _AT_Start::
00E6 .dbline -1
00E6 .dbline 106
00E6 ; #endif
00E6 ; }
00E6 ;
00E6 ; bool AT_Start(void)
00E6 ; { // start a connection attempt
00E6 .dbline 108
00E6 ; // call this from the executive when you want to connect
00E6 ; if (AT.Stage != AT_Idle) return false; // already busy with the modem
00E6 20900300 lds R2,_AT+3
00EA 2220 tst R2
00EC 11F0 breq L23
00EE .dbline 108
00EE 0027 clr R16
00F0 09C0 xjmp L22
00F2 L23:
00F2 .dbline 110
00F2 ; #ifdef WindowsPPP
00F2 ; AT_Stage(AT_PPP); //
00F2 05E0 ldi R16,5
00F4 E1DF xcall _AT_Stage
00F6 .dbline 111
00F6 ; PPP_Start(PPP_Rom_Username, PPP_Rom_Password); // start a PPP session
00F6 20E0 ldi R18,<_PPP_Rom_Password
00F8 30E0 ldi R19,>_PPP_Rom_Password
00FA 00E0 ldi R16,<_PPP_Rom_Username
00FC 10E0 ldi R17,>_PPP_Rom_Username
00FE 0E940000 xcall _PPP_Start
0102 .dbline 112
0102 ; return true; //
0102 01E0 ldi R16,1
0104 .dbline -2
0104 L22:
0104 .dbline 0 ; func end
0104 0895 ret
0106 .dbend
0106 .dbfunc e AT_End _AT_End fV
.even
0106 _AT_End::
0106 .dbline -1
0106 .dbline 126
0106 ; #else
0106 ; AT_Stage(AT_DialInit1); //
0106 ; //
0106 ; MainBufferWr_Rx = 0; //
0106 ; MainBufferWr_Tx = 0; //
0106 ; UART1_RxBufferRd = 0; //
0106 ; UART1_RxBufferWr = 0; //
0106 ; //
0106 ; return true; //
0106 ; #endif
0106 ; }
0106 ;
0106 ; void AT_End(void)
0106 ; { // terminate a connection
0106 .dbline 127
0106 ; if (PPP.Stage != PPPS_None)
0106 20900900 lds R2,_PPP+9
010A 2220 tst R2
010C 19F0 breq L27
010E .dbline 128
010E ; { // terminate the PPP first
010E .dbline 129
010E ; PPP_End();
010E 0E940000 xcall _PPP_End
0112 .dbline 130
0112 ; return;
0112 02C0 xjmp L26
0114 L27:
0114 .dbline 134
0114 ; }
0114 ;
0114 ; #ifdef WindowsPPP
0114 ; AT_Stage(AT_Idle);
0114 0027 clr R16
0116 D0DF xcall _AT_Stage
0118 .dbline -2
0118 L26:
0118 .dbline 0 ; func end
0118 0895 ret
011A .dbend
011A .dbfunc e AT_AddNewRxByte _AT_AddNewRxByte fV
011A ; c -> R0
.even
011A _AT_AddNewRxByte::
011A .dbline -1
011A .dbline 161
011A ; #else
011A ; switch (AT.Stage)
011A ; {
011A ; case AT_Idle : break;
011A ; case AT_DialInit1 : AT_Stage(AT_Idle);
011A ; break;
011A ; case AT_DialInit2 : AT_Stage(AT_Idle);
011A ; break;
011A ; case AT_DialInit3 : AT_Stage(AT_Idle);
011A ; break;
011A ; case AT_Dial : AT_Stage(AT_Disc2);
011A ; break;
011A ; case AT_PPP : PPP_End();
011A ; break;
011A ; case AT_Disc1 : break; // already trying to disconnect
011A ; case AT_Disc2 : break; // already trying to disconnect
011A ; default : AT_Stage(AT_Idle);
011A ; break;
011A ; }
011A ; #endif
011A ; }
011A ;
011A ; //*************************************************************************************
011A ; // call this when we have a new byte received from the modem - call from the executive
011A ;
011A ; void AT_AddNewRxByte(u8 c)
011A ; {
011A .dbline -2
011A L30:
011A .dbline 0 ; func end
011A 0895 ret
011C .dbsym l c 0 c
011C .dbend
011C .dbfunc e AT_10ms_Timer _AT_10ms_Timer fV
.even
011C _AT_10ms_Timer::
011C .dbline -1
011C .dbline 249
011C ; #ifndef WindowsPPP
011C ; bool ok = false;
011C ; bool error = false;
011C ; bool ring = false;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -