⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 at.s

📁 AVR单片机系统开发经典实例部分源程序
💻 S
📖 第 1 页 / 共 2 页
字号:
	.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 + -