📄 avrsms_com.s90
字号:
//////////////////////////////////////////////////////////////////////////////
// /
// 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 + -