📄 avrsms_api.lst
字号:
##############################################################################
# #
# 24/Sep/2005 02:15:52 #
# IAR Atmel AVR C/C++ Compiler V4.10A/W32, Evaluation Version #
# Copyright 1996-2005 IAR Systems. All rights reserved. #
# #
# Source file = C:\Documents and Settings\vemund\Desktop\AVRGSM\Files\A #
# VRSMS_api.c #
# Command line = --cpu=m128 -ms -o "C:\Documents and #
# Settings\vemund\Desktop\AVRGSM\Debug\Obj\" -lCN #
# "C:\Documents and Settings\vemund\Desktop\AVRGSM\Debug\ #
# List\" -lA "C:\Documents and #
# Settings\vemund\Desktop\AVRGSM\Debug\List\" -y #
# --initializers_in_flash -z3 --no_cse --no_inline #
# --no_code_motion --no_cross_call --no_clustering #
# --no_tbaa --debug -DENABLE_BIT_DEFINITIONS -e -I #
# D:\Programs\iar\avr\INC\ -I #
# D:\Programs\iar\avr\INC\CLIB\ --eeprom_size 4096 #
# "C:\Documents and Settings\vemund\Desktop\AVRGSM\Files\ #
# AVRSMS_api.c" #
# List file = C:\Documents and Settings\vemund\Desktop\AVRGSM\Debug\L #
# ist\AVRSMS_api.lst #
# Object file = C:\Documents and Settings\vemund\Desktop\AVRGSM\Debug\O #
# bj\AVRSMS_api.r90 #
# #
# #
##############################################################################
C:\Documents and Settings\vemund\Desktop\AVRGSM\Files\AVRSMS_api.c
1 /*! \file ********************************************************************
2 *
3 * Atmel Corporation
4 *
5 * - File : AVRSMS_api.c
6 * - Compiler : IAR EWAAVR 3.20C
7 *
8 * - Support mail : avr@atmel.com
9 *
10 * - Supported devices : The example is written for ATmega169
11 *
12 *
13 * - AppNote : AVR323 - Interfacing Cellphones
14 *
15 * - Description : Example of how to use AVR Butterfly as Mobilephone controller
16 *
17 * $Revision: 1.1 $
18 * $Date: Tuesday, November 08, 2005 12:26:18 UTC $
19 *****************************************************************************/
20 #ifdef S_SPLINT_S
21 #include"splint.h"
22 #endif
23
24 //Includes
25 #include<inavr.h>
26 #include"AVRSMS_com.h"
27 #include"AVRSMS_zip.h"
28 #include"AVRSMS_header.h"
\ In segment NEAR_F, align 1, keep-with-next
\ unsigned char const __flash PDU_HEADER[25]
\ PDU_HEADER:
\ 00000000 303031303030 DB 48, 48, 48, 49, 48, 48, 48, 65, 56, 49, 55, 52, 51, 57, 48, 50, 49
\ 413031383437
\ 3933323031
\ 00000011 343830343030 DB 56, 52, 52, 48, 48, 48, 48, 0
\ 0030
29 #include"AVRSMS_tools.h"
30
31
32 //Private function prototype
33 int API_check_acknowledge( void );
34
35
36 extern int rx_ack; //Variable from AVRSMS_com.c
37
38
39 //AT-Command set used
\ In segment NEAR_F, align 1, keep-with-next
40 const unsigned char __flash ATE0[] = "ATE0\r\n"; //Echo off
\ ATE0:
\ 00000000 544130450A0D DB "ATE0\015\012"
\ 00
\ In segment NEAR_F, align 1, keep-with-next
41 const unsigned char __flash AT_CNMI[] = "AT+CNMI=1,1,,,1\r\n"; //Identification of new sms
\ AT_CNMI:
\ 00000000 5441432B4D4E DB "AT+CNMI=1,1,,,1\015\012"
\ 3D492C312C31
\ 2C2C0D31000A
\ In segment NEAR_F, align 1, keep-with-next
42 const unsigned char __flash AT_CPMS[] = "AT+CPMS=\"ME\",\"ME\",\"ME\"\r\n"; //Preferred storage
\ AT_CPMS:
\ 00000000 5441432B4D50 DB "AT+CPMS=\"ME\",\"ME\",\"ME\"\015\012"
\ 3D534D222245
\ 222C454D2C22
\ 4D2222450A0D
\ 00
\ In segment NEAR_F, align 1, keep-with-next
43 const unsigned char __flash AT_CMGD[] = "AT+CMGD="; //Delete message at index
\ AT_CMGD:
\ 00000000 5441432B474D DB "AT+CMGD="
\ 3D4400
\ In segment NEAR_F, align 1, keep-with-next
44 const unsigned char __flash AT_CMGR[] = "AT+CMGR="; //Read from index //Echo off
\ AT_CMGR:
\ 00000000 5441432B474D DB "AT+CMGR="
\ 3D5200
\ In segment NEAR_F, align 1, keep-with-next
45 const unsigned char __flash AT_CMGS[] = "AT+CMGS="; //Echo off
\ AT_CMGS:
\ 00000000 5441432B474D DB "AT+CMGS="
\ 3D5300
\ In segment NEAR_F, align 1, keep-with-next
46 const unsigned char __flash CRLF[] = "\r\n"; //Carrige return Line feed
\ CRLF:
\ 00000000 0A0D00 DB "\015\012"
47
48
\ In segment NEAR_Z, align 1, keep-with-next
\ 00000000 REQUIRE `?<Segment init: NEAR_Z>`
49 unsigned char msgbuff[161];
\ msgbuff:
\ 00000000 DS 161
\ In segment NEAR_I, align 1, keep-with-next
\ 00000000 REQUIRE `?<Segment init: NEAR_I>`
50 unsigned char *ziped = "E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E170381C0E87C3E17018";
\ ziped:
\ 00000000 DS 2
\ 00000002 REQUIRE `?<Initializer for ziped>`
51
52 //Phone setup
\ In segment CODE, align 2, keep-with-next
53 int API_phoneinit( void )
\ API_phoneinit:
54 {
55 COM_rx_reset( ); //Reset system
\ 00000000 ........ CALL COM_rx_reset
56 COM_setSearchString( 0 ); //Set OK to be search string
\ 00000004 E000 LDI R16, 0
\ 00000006 ........ CALL COM_setSearchString
57 COM_putsf( ATE0 ); //Send turn echo off
\ 0000000A .... LDI R16, LOW(ATE0)
\ 0000000C .... LDI R17, (ATE0) >> 8
\ 0000000E ........ CALL COM_putsf
58 COM_rx_on( ); //Receiver on
\ 00000012 ........ CALL COM_rx_on
59
60 if( API_check_acknowledge() > 0 ) //Echo off = OK
\ 00000016 .... RCALL API_check_acknowledge
\ 00000018 3001 CPI R16, 1
\ 0000001A 4010 SBCI R17, 0
\ 0000001C F0EC BRLT ??API_phoneinit_0
61 {
62 COM_putsf(AT_CPMS); //Send preferred storage
\ 0000001E .... LDI R16, LOW(AT_CPMS)
\ 00000020 .... LDI R17, (AT_CPMS) >> 8
\ 00000022 ........ CALL COM_putsf
63 COM_rx_on( ); //Receiver on
\ 00000026 ........ CALL COM_rx_on
64
65 if( API_check_acknowledge() > 0 ) //Preferred storage = OK
\ 0000002A .... RCALL API_check_acknowledge
\ 0000002C 3001 CPI R16, 1
\ 0000002E 4010 SBCI R17, 0
\ 00000030 F084 BRLT ??API_phoneinit_1
66 {
67 COM_putsf(AT_CNMI); //Send preferred indication of new messages
\ 00000032 .... LDI R16, LOW(AT_CNMI)
\ 00000034 .... LDI R17, (AT_CNMI) >> 8
\ 00000036 ........ CALL COM_putsf
68 COM_rx_on( ); //Receiver on
\ 0000003A ........ CALL COM_rx_on
69
70 if( API_check_acknowledge() > 0 ) //Preferred indication = OK
\ 0000003E .... RCALL API_check_acknowledge
\ 00000040 3001 CPI R16, 1
\ 00000042 4010 SBCI R17, 0
\ 00000044 F01C BRLT ??API_phoneinit_2
71 {
72 return 1;
\ 00000046 E001 LDI R16, 1
\ 00000048 E010 LDI R17, 0
\ 0000004A 9508 RET
73 }
74
75 else //Preferred indication != OK
76 {
77 return -2;
\ ??API_phoneinit_2:
\ 0000004C EF0E LDI R16, 254
\ 0000004E EF1F LDI R17, 255
\ 00000050 9508 RET
78 }
79 }
80
81 else //Preferred storage != OK
82 {
83 return -1;
\ ??API_phoneinit_1:
\ 00000052 EF0F LDI R16, 255
\ 00000054 EF1F LDI R17, 255
\ 00000056 9508 RET
84 }
85 }
86
87 else //Echo off != OK
88 {
89 return 0;
\ ??API_phoneinit_0:
\ 00000058 E000 LDI R16, 0
\ 0000005A E010 LDI R17, 0
\ 0000005C 9508 RET
90 }
91 }
92
93
\ In segment CODE, align 2, keep-with-next
94 int API_deletemsg( int index ) //Delete message from index
\ API_deletemsg:
95 {
\ 00000000 939A ST -Y, R25
\ 00000002 938A ST -Y, R24
\ 00000004 01C8 MOVW R25:R24, R17:R16
96 COM_rx_reset( ); //Reset system
\ 00000006 ........ CALL COM_rx_reset
97 COM_setSearchString( 0 ); //Set OK to be search string
\ 0000000A E000 LDI R16, 0
\ 0000000C ........ CALL COM_setSearchString
98 COM_putsf( AT_CMGD ); //Delete message
\ 00000010 .... LDI R16, LOW(AT_CMGD)
\ 00000012 .... LDI R17, (AT_CMGD) >> 8
\ 00000014 ........ CALL COM_putsf
99 COM_put_integer( index ); //@index
\ 00000018 018C MOVW R17:R16, R25:R24
\ 0000001A ........ CALL COM_put_integer
100 COM_putsf( CRLF ); //CR+LF
\ 0000001E .... LDI R16, LOW(CRLF)
\ 00000020 .... LDI R17, (CRLF) >> 8
\ 00000022 ........ CALL COM_putsf
101 COM_rx_on( ); //Receiver on
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -