?? at.s
字號:
.module at.c
.area lit(rom, con, rel)
_ATStageStr1::
.byte 10,42,42,42,32,'A,'T,32,'S,'t,'a,'g,'e,58,32,0
.dbfile C:\AVR\AT-Modem__PPP__UDP__IC\at.c
.dbsym e ATStageStr1 _ATStageStr1 A[16:16]kc
_ATStageStr2::
.byte 'I,'d,'l,'e,10,0
.dbsym e ATStageStr2 _ATStageStr2 A[6:6]kc
_ATStageStr3::
.byte 'D,'i,'a,'l,32,'I,'n,'i,'t,32,49,10,0
.dbsym e ATStageStr3 _ATStageStr3 A[13:13]kc
_ATStageStr4::
.byte 'D,'i,'a,'l,32,'I,'n,'i,'t,32,50,10,0
.dbsym e ATStageStr4 _ATStageStr4 A[13:13]kc
_ATStageStr5::
.byte 'D,'i,'a,'l,32,'I,'n,'i,'t,32,51,10,0
.dbsym e ATStageStr5 _ATStageStr5 A[13:13]kc
_ATStageStr6::
.byte 'D,'i,'a,'l,'i,'n,'g,10,0
.dbsym e ATStageStr6 _ATStageStr6 A[9:9]kc
_ATStageStr7::
.byte 'P,'P,'P,10,0
.dbsym e ATStageStr7 _ATStageStr7 A[5:5]kc
_ATStageStr8::
.byte 'D,'i,'s,'c,32,49,10,0
.dbsym e ATStageStr8 _ATStageStr8 A[8:8]kc
_ATStageStr9::
.byte 'D,'i,'s,'c,32,50,10,0
.dbsym e ATStageStr9 _ATStageStr9 A[8:8]kc
_ATStageStr10::
.byte 'U,'n,'k,'n,'o,'w,'n,10,0
.dbsym e ATStageStr10 _ATStageStr10 A[9:9]kc
_ATStageStr20::
.byte 42,42,42,32,'A,'T,32,'R,'e,'t,'r,'y,32,'F,'a,'i
.byte 'l,10,0
.dbsym e ATStageStr20 _ATStageStr20 A[19:19]kc
_ATDialTermStr::
.byte 'A,'T,10,0
.dbsym e ATDialTermStr _ATDialTermStr A[4:4]kc
.area text(rom, con, rel)
.dbfile C:\AVR\AT-Modem__PPP__UDP__IC\at.c
.dbfunc e AT_DisplayStage _AT_DisplayStage fc
.even
_AT_DisplayStage::
xcall push_gset1
.dbline -1
.dbline 72
; // this bit takes care of the AT modem dialing etc
;
; /*
; * Copyright (C) 2003-2004 by Clive Moss All rights reserved.
; *
; * Help & Contributions from D.J.Armstrong
;
; * Redistribution and use in source and binary forms, with or without
; * modification, are permitted provided that the following conditions
; * are met:
; *
; * 1. Redistributions of source code must retain the above copyright
; * notice, this list of conditions and the following disclaimer.
; * 2. Redistributions in binary form must reproduce the above copyright
; * notice, this list of conditions and the following disclaimer in the
; * documentation and/or other materials provided with the distribution.
; * 3. Neither the name of the copyright holders nor the names of
; * contributors may be used to endorse or promote products derived
; * from this software without specific prior written permission.
; *
; * THIS SOFTWARE IS PROVIDED BY CLIVE MOSS 'AS IS' AND ANY EXPRESS OR
; * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
; * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
; * ARE DISCLAIMED.
; * IN NO EVENT SHALL CLIVE MOSS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
; * INDIRECT, INCIDENTAL,SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
; * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
; * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
; * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
; * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
; * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
; * SUCH DAMAGE.
; */
;
; //#ifdef CPU_eZ8
; // #pragma stkck // enable stack checking
; //#endif
;
; #include <string.h>
; #include <stdlib.h>
; #include <stdio.h>
; #include <ctype.h>
;
; #include "common.h"
; #include "at.h"
; #include "ppp.h"
;
; //*************************************************************************************
;
; #ifdef Debug
; flash char ATStageStr1[] = "\n*** AT Stage: ";
; flash char ATStageStr2[] = "Idle\n";
; flash char ATStageStr3[] = "Dial Init 1\n";
; flash char ATStageStr4[] = "Dial Init 2\n";
; flash char ATStageStr5[] = "Dial Init 3\n";
; flash char ATStageStr6[] = "Dialing\n";
; flash char ATStageStr7[] = "PPP\n";
; flash char ATStageStr8[] = "Disc 1\n";
; flash char ATStageStr9[] = "Disc 2\n";
; flash char ATStageStr10[] = "Unknown\n";
; flash char ATStageStr20[] = "*** AT Retry Fail\n";
; flash char ATDialTermStr[] = "AT\n";
; #endif
;
; T_AT AT;
;
; //*************************************************************************************
;
; #ifdef Debug
;
; bool AT_DisplayStage(void)
; {
.dbline 73
; if(!SendDebugRStr(ATStageStr1)) return false;
ldi R16,<_ATStageStr1
ldi R17,>_ATStageStr1
xcall _SendDebugRStr
tst R16
brne L2
.dbline 73
clr R16
xjmp L1
L2:
.dbline 74
; switch (AT.Stage)
lds R20,_AT+3
clr R21
cpi R20,0
cpc R20,R21
breq L8
X0:
cpi R20,1
ldi R30,0
cpc R21,R30
breq L9
cpi R20,2
ldi R30,0
cpc R21,R30
breq L10
cpi R20,3
ldi R30,0
cpc R21,R30
breq L11
cpi R20,4
ldi R30,0
cpc R21,R30
breq L12
cpi R20,5
ldi R30,0
cpc R21,R30
breq L13
cpi R20,6
ldi R30,0
cpc R21,R30
breq L14
cpi R20,7
ldi R30,0
cpc R21,R30
breq L15
xjmp L4
X1:
.dbline 75
; {
L8:
.dbline 76
; case AT_Idle : return SendDebugRStr(ATStageStr2);
ldi R16,<_ATStageStr2
ldi R17,>_ATStageStr2
xcall _SendDebugRStr
xjmp L1
L9:
.dbline 77
; case AT_DialInit1 : return SendDebugRStr(ATStageStr3);
ldi R16,<_ATStageStr3
ldi R17,>_ATStageStr3
xcall _SendDebugRStr
xjmp L1
L10:
.dbline 78
; case AT_DialInit2 : return SendDebugRStr(ATStageStr4);
ldi R16,<_ATStageStr4
ldi R17,>_ATStageStr4
xcall _SendDebugRStr
xjmp L1
L11:
.dbline 79
; case AT_DialInit3 : return SendDebugRStr(ATStageStr5);
ldi R16,<_ATStageStr5
ldi R17,>_ATStageStr5
xcall _SendDebugRStr
xjmp L1
L12:
.dbline 80
; case AT_Dial : return SendDebugRStr(ATStageStr6);
ldi R16,<_ATStageStr6
ldi R17,>_ATStageStr6
xcall _SendDebugRStr
xjmp L1
L13:
.dbline 81
; case AT_PPP : return SendDebugRStr(ATStageStr7);
ldi R16,<_ATStageStr7
ldi R17,>_ATStageStr7
xcall _SendDebugRStr
xjmp L1
L14:
.dbline 82
; case AT_Disc1 : return SendDebugRStr(ATStageStr8);
ldi R16,<_ATStageStr8
ldi R17,>_ATStageStr8
xcall _SendDebugRStr
xjmp L1
L15:
.dbline 83
; case AT_Disc2 : return SendDebugRStr(ATStageStr9);
ldi R16,<_ATStageStr9
ldi R17,>_ATStageStr9
xcall _SendDebugRStr
xjmp L1
L4:
.dbline 84
; default : return SendDebugRStr(ATStageStr10);
ldi R16,<_ATStageStr10
ldi R17,>_ATStageStr10
xcall _SendDebugRStr
.dbline -2
L1:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbend
.dbfunc e AT_Stage _AT_Stage fV
; Stage -> R20
.even
_AT_Stage::
xcall push_gset1
mov R20,R16
.dbline -1
.dbline 93
; }
; }
;
; #endif
;
; //*************************************************************************************
;
; void AT_Stage(T_AT_Stage Stage)
; { // set the AT modem stage
.dbline 94
; if (AT.Stage == Stage) return; // no change
lds R2,_AT+3
cp R2,R20
brne L17
.dbline 94
xjmp L16
L17:
.dbline 96
; //
; AT.Stage = Stage; //
sts _AT+3,R20
.dbline 97
; AT.Retries = 0; //
clr R2
sts _AT,R2
.dbline 98
; u16_Put(&AT.Retry_Timer, 0); // send next thing asap
clr R18
clr R19
ldi R16,<_AT+1
ldi R17,>_AT+1
xcall _u16_Put
.dbline 101
;
; #ifdef Debug
; AT_DisplayStage();
xcall _AT_DisplayStage
.dbline -2
L16:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r Stage 20 c
.dbend
.dbfunc e AT_Start _AT_Start fc
.even
_AT_Start::
.dbline -1
.dbline 106
; #endif
; }
;
; bool AT_Start(void)
; { // start a connection attempt
.dbline 108
; // call this from the executive when you want to connect
; if (AT.Stage != AT_Idle) return false; // already busy with the modem
lds R2,_AT+3
tst R2
breq L23
.dbline 108
clr R16
xjmp L22
L23:
.dbline 110
; #ifdef WindowsPPP
; AT_Stage(AT_PPP); //
ldi R16,5
xcall _AT_Stage
.dbline 111
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -