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

📄 avrsms_com.s90

📁 SMS傳送Sourcode,compiler with C,AT command
💻 S90
📖 第 1 页 / 共 3 页
字号:
//////////////////////////////////////////////////////////////////////////////
//                                                                           /
//                                                     24/Sep/2005  02:15:51 /
// 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\ /
//                    AVRSMS_com.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_com.c"                                         /
//    List file    =  C:\Documents and Settings\vemund\Desktop\AVRGSM\Debug\ /
//                    List\AVRSMS_com.s90                                    /
//                                                                           /
//                                                                           /
//////////////////////////////////////////////////////////////////////////////

        NAME AVRSMS_com

        RTMODEL "__64bit_doubles", "disabled"
        RTMODEL "__cpu", "3"
        RTMODEL "__cpu_name", "ATmega128"
        RTMODEL "__enhanced_core", "enabled"
        RTMODEL "__has_elpm", "true"
        RTMODEL "__memory_model", "2"
        RTMODEL "__no_rampd", "enabled"
        RTMODEL "__rt_version", "3"

        RSEG CSTACK:DATA:NOROOT(0)
        RSEG RSTACK:DATA:NOROOT(0)

        EXTERN ?EPILOGUE_B4_L09
        EXTERN ?PROLOGUE4_L09
        EXTERN ?SS_DIVMOD_L02
        EXTERN ?need_segment_init

        PUBWEAK `?<Segment init: NEAR_I>`
        PUBWEAK `?<Segment init: NEAR_Z>`
        PUBWEAK `??INTVEC 72`
        PUBLIC CMTI
        PUBLIC COM_gets
        FUNCTION COM_gets,0203H
        LOCFRAME RSTACK, 2, STACK
        PUBLIC COM_init
        FUNCTION COM_init,021203H
        LOCFRAME RSTACK, 2, STACK
        PUBLIC COM_put_integer
        FUNCTION COM_put_integer,021203H
        LOCFRAME CSTACK, 9, STACK
        LOCFRAME RSTACK, 4, STACK
        PUBLIC COM_putchar
        FUNCTION COM_putchar,0203H
        LOCFRAME RSTACK, 2, STACK
        PUBLIC COM_puts
        FUNCTION COM_puts,021203H
        LOCFRAME CSTACK, 2, STACK
        LOCFRAME RSTACK, 2, STACK
        PUBLIC COM_putsf
        FUNCTION COM_putsf,021203H
        LOCFRAME CSTACK, 2, STACK
        LOCFRAME RSTACK, 2, STACK
        PUBLIC COM_rx_off
        FUNCTION COM_rx_off,0203H
        LOCFRAME RSTACK, 2, STACK
        PUBLIC COM_rx_on
        FUNCTION COM_rx_on,0203H
        LOCFRAME RSTACK, 2, STACK
        PUBLIC COM_rx_reset
        FUNCTION COM_rx_reset,0203H
        LOCFRAME RSTACK, 2, STACK
        PUBLIC COM_setSearchString
        FUNCTION COM_setSearchString,0203H
        LOCFRAME RSTACK, 2, STACK
        PUBLIC COM_trim
        FUNCTION COM_trim,0203H
        LOCFRAME RSTACK, 2, STACK
        PUBLIC CR_LF
        PUBLIC OK
        PUBLIC READY
        PUBLIC USART0_RX_interrupt
        FUNCTION USART0_RX_interrupt,0233H
        LOCFRAME CSTACK, 10, STACK
        LOCFRAME RSTACK, 2, STACK
        PUBWEAK _A_UBRR0H
        PUBWEAK _A_UBRR0L
        PUBWEAK _A_UCSR0A
        PUBWEAK _A_UCSR0B
        PUBWEAK _A_UCSR0C
        PUBWEAK _A_UDR0
        PUBWEAK __?EEARH
        PUBWEAK __?EEARL
        PUBWEAK __?EECR
        PUBWEAK __?EEDR
        PUBLIC rx_ack
        PUBLIC rx_overflow
        PUBLIC searchFor
        PUBLIC searchStrings
        
        CFI Names cfiNames0
        CFI StackFrame CFA_Y Y DATA
        CFI StackFrame CFA_SP SP DATA
        CFI VirtualResource ?RetPad:1, ?RetHigh:8, ?RetLow:8, ?Ret:17
        CFI Resource R0:8, R1:8, R2:8, R3:8, R4:8, R5:8, R6:8, R7:8, R8:8, R9:8
        CFI Resource R10:8, R11:8, R12:8, R13:8, R14:8, R15:8, R16:8, R17:8
        CFI Resource R18:8, R19:8, R20:8, R21:8, R22:8, R23:8, R24:8, R25:8
        CFI Resource R26:8, R27:8, R28:8, R29:8, R30:8, R31:8
        CFI Resource ?RetHighByteMask:8, SP:16, SPH:8, SPL:8, Y:16
        CFI ResourceParts ?Ret ?RetHigh, ?RetLow, ?RetPad
        CFI ResourceParts SP SPH, SPL
        CFI ResourceParts Y R29, R28
        CFI EndNames cfiNames0
        
        CFI Common cfiCommon0 Using cfiNames0
        CFI CodeAlign 1
        CFI DataAlign 1
        CFI ReturnAddress ?Ret CODE
        CFI CFA_Y Y+0
        CFI CFA_SP SP+2
        CFI ?RetPad 0
        CFI ?RetHigh and(load(1, DATA, sub(CFA_SP, 1)), ?RetHighByteMask)
        CFI ?RetLow Frame(CFA_SP, 0)
        CFI ?Ret Concat
        CFI R0 Undefined
        CFI R1 Undefined
        CFI R2 Undefined
        CFI R3 Undefined
        CFI R4 SameValue
        CFI R5 SameValue
        CFI R6 SameValue
        CFI R7 SameValue
        CFI R8 SameValue
        CFI R9 SameValue
        CFI R10 SameValue
        CFI R11 SameValue
        CFI R12 SameValue
        CFI R13 SameValue
        CFI R14 SameValue
        CFI R15 SameValue
        CFI R16 Undefined
        CFI R17 Undefined
        CFI R18 Undefined
        CFI R19 Undefined
        CFI R20 Undefined
        CFI R21 Undefined
        CFI R22 Undefined
        CFI R23 Undefined
        CFI R24 SameValue
        CFI R25 SameValue
        CFI R26 SameValue
        CFI R27 SameValue
        CFI R28 Undefined
        CFI R29 Undefined
        CFI R30 Undefined
        CFI R31 Undefined
        CFI ?RetHighByteMask SameValue
        CFI SPH Undefined
        CFI SPL Undefined
        CFI EndCommon cfiCommon0
        
        
        CFI Common cfiCommon1 Using cfiNames0
        CFI CodeAlign 1
        CFI DataAlign 1
        CFI ReturnAddress ?Ret CODE
        CFI CFA_Y Y+0
        CFI CFA_SP SP+2
        CFI ?RetPad 0
        CFI ?RetHigh and(load(1, DATA, sub(CFA_SP, 1)), ?RetHighByteMask)
        CFI ?RetLow Frame(CFA_SP, 0)
        CFI ?Ret Concat
        CFI R0 SameValue
        CFI R1 SameValue
        CFI R2 SameValue
        CFI R3 SameValue
        CFI R4 SameValue
        CFI R5 SameValue
        CFI R6 SameValue
        CFI R7 SameValue
        CFI R8 SameValue
        CFI R9 SameValue
        CFI R10 SameValue
        CFI R11 SameValue
        CFI R12 SameValue
        CFI R13 SameValue
        CFI R14 SameValue
        CFI R15 SameValue
        CFI R16 SameValue
        CFI R17 SameValue
        CFI R18 SameValue
        CFI R19 SameValue
        CFI R20 SameValue
        CFI R21 SameValue
        CFI R22 SameValue
        CFI R23 SameValue
        CFI R24 SameValue
        CFI R25 SameValue
        CFI R26 SameValue
        CFI R27 SameValue
        CFI R28 Undefined
        CFI R29 Undefined
        CFI R30 SameValue
        CFI R31 SameValue
        CFI ?RetHighByteMask SameValue
        CFI SPH Undefined
        CFI SPL Undefined
        CFI EndCommon cfiCommon1
        
// C:\Documents and Settings\vemund\Desktop\AVRGSM\Files\AVRSMS_com.c
//    1 /*! \file ********************************************************************
//    2 *
//    3 * Atmel Corporation
//    4 *
//    5 * - File              : AVRSMS_com.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 //Includes
//   21 
//   22 #ifdef S_SPLINT_S
//   23   #include"splint.h"
//   24 #endif
//   25 
//   26 #include<iom128.h>
//   27 #include<inavr.h>
//   28 #include"AVRSMS_com.h"
//   29 

        RSEG NEAR_Z:DATA:NOROOT(0)
        REQUIRE `?<Segment init: NEAR_Z>`
//   30 int rx_overflow, rx_ack;  //Extern readable variables
rx_overflow:
        DS 2

        RSEG NEAR_Z:DATA:NOROOT(0)
        REQUIRE `?<Segment init: NEAR_Z>`
rx_ack:
        DS 2

        RSEG NEAR_Z:DATA:NOROOT(0)
        REQUIRE `?<Segment init: NEAR_Z>`
//   31 static unsigned char searchStr, rx_buffer[RX_BUFFER_SIZE];
??searchStr:
        DS 1

        RSEG NEAR_Z:DATA:NOROOT(0)
        REQUIRE `?<Segment init: NEAR_Z>`
??rx_buffer:
        DS 256

        RSEG NEAR_Z:DATA:NOROOT(0)
        REQUIRE `?<Segment init: NEAR_Z>`
//   32 static int rx_i, rx_wr_i;
??rx_i:
        DS 2

        RSEG NEAR_Z:DATA:NOROOT(0)
        REQUIRE `?<Segment init: NEAR_Z>`
??rx_wr_i:
        DS 2

        RSEG NEAR_F:CODE:NOROOT(0)
//   33 const unsigned char __flash OK[]                      = "OK\r\n";
OK:
        DB "OK\015\012"

        RSEG NEAR_F:CODE:NOROOT(0)
//   34 const unsigned char __flash CMTI[]                    = "+CMTI: ";
CMTI:
        DB "+CMTI: "

        RSEG NEAR_F:CODE:NOROOT(0)
//   35 const unsigned char __flash READY[]                   = "> ";
READY:
        DB "> "

        RSEG NEAR_F:CODE:NOROOT(0)
//   36 const unsigned char __flash CR_LF[]                   = "\r\n";
CR_LF:
        DB "\015\012"

        RSEG NEAR_Z:DATA:NOROOT(0)
        REQUIRE `?<Segment init: NEAR_Z>`
//   37 const unsigned char __flash *searchFor;
searchFor:
        DS 2

        RSEG NEAR_I:DATA:NOROOT(0)
        REQUIRE `?<Segment init: NEAR_I>`
//   38 const unsigned char __flash *searchStrings[4] = {OK, CMTI, READY, CR_LF};
searchStrings:
        DS 8
        REQUIRE `?<Initializer for searchStrings>`
//   39 
//   40 
//   41 /*! \brief USART initialization
//   42  *
//   43  *  \param    input     Desired baudrate...see datasheet
//   44  *
//   45  *  \retval             void
//   46  *
//   47  */

        RSEG CODE:CODE:NOROOT(1)
//   48 void COM_init( unsigned int baudrate )
COM_init:
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function COM_init
//   49 {
//   50     UBRR0H = (unsigned char) (baudrate>>8);             //Setting baudrate
        FUNCALL COM_init, COM_rx_reset
        LOCFRAME RSTACK, 2, STACK
        MOVW	R19:R18, R17:R16
        MOV	R18, R19
        STS	144, R18
//   51     UBRR0L = (unsigned char) baudrate;                  //Setting baudrate
        OUT	0x09, R16
//   52 	
//   53     UCSR0B = ( 1 << RXEN0 ) | ( 1 << TXEN0 );       //Enable receiver and transmitter
        LDI	R16, 24
        OUT	0x0A, R16
//   54     UCSR0C = ( 1 << USBS0 ) | ( 1 << UCSZ01 ) | ( 1 << UCSZ00 );  //8N1...see Datasheet for more information
        LDI	R16, 14
        STS	149, R16
//   55 
//   56     COM_rx_reset();                                     //Reset buffers etc.
        RCALL	COM_rx_reset
//   57 }//end COM_Init
        RET
        CFI EndBlock cfiBlock0
//   58 
//   59 

        RSEG CODE:CODE:NOROOT(1)
//   60 void COM_rx_reset( void )
COM_rx_reset:
        CFI Block cfiBlock1 Using cfiCommon0
        CFI Function COM_rx_reset
//   61 {
//   62     UCSR0B &= ~(1<<RXCIE0);       // Disable RX interrupt
        CBI	0x0A, 0x07
//   63     rx_i = rx_wr_i = 0;           //Init variables
        LDI	R16, 0
        LDI	R17, 0
        LDI	R30, LOW(??rx_wr_i)
        LDI	R31, (??rx_wr_i) >> 8
        ST	Z, R16
        STD	Z+1, R17
        LDI	R30, LOW(??rx_i)
        LDI	R31, (??rx_i) >> 8
        ST	Z, R16
        STD	Z+1, R17
//   64     rx_overflow = rx_ack = 0;     //Zero overflow flag
        LDI	R16, 0
        LDI	R17, 0
        LDI	R30, LOW(rx_ack)
        LDI	R31, (rx_ack) >> 8
        ST	Z, R16
        STD	Z+1, R17
        LDI	R30, LOW(rx_overflow)
        LDI	R31, (rx_overflow) >> 8
        ST	Z, R16
        STD	Z+1, R17
//   65     rx_buffer[ rx_wr_i ] = '\0';  //Buffer init.
        LDI	R16, 0
        LDI	R30, LOW(??rx_wr_i)
        LDI	R31, (??rx_wr_i) >> 8
        LD	R18, Z
        LDD	R19, Z+1
        MOVW	R31:R30, R19:R18
        SUBI	R30, LOW((-(??rx_buffer) & 0xFFFF))
        SBCI	R31, (-(??rx_buffer) & 0xFFFF) >> 8
        ST	Z, R16
//   66 }
        RET
        CFI EndBlock cfiBlock1
//   67 
//   68 

        RSEG CODE:CODE:NOROOT(1)
//   69 void COM_rx_on( void )
COM_rx_on:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -