📄 avrsms_api.s90
字号:
// 166
// 167 //Abort
// 168 else
// 169 {
// 170 return -1; //Acknowledge != "> "
??API_sendmsg_2:
LDI R16, 255
LDI R17, 255
??API_sendmsg_1:
ADIW R29:R28, 4
CFI CFA_Y Y+4
LDI R30, 4
JMP ?EPILOGUE_B4_L09
CFI EndBlock cfiBlock2
// 171 }
// 172 }
// 173 }
// 174
// 175
RSEG CODE:CODE:NOROOT(1)
// 176 int API_readmsg( int ind )
API_readmsg:
CFI Block cfiBlock3 Using cfiCommon0
CFI Function API_readmsg
// 177 {
FUNCALL API_readmsg, COM_rx_reset
LOCFRAME CSTACK, 4, STACK
LOCFRAME RSTACK, 2, STACK
FUNCALL API_readmsg, COM_setSearchString
LOCFRAME CSTACK, 4, STACK
LOCFRAME RSTACK, 2, STACK
FUNCALL API_readmsg, COM_putsf
LOCFRAME CSTACK, 4, STACK
LOCFRAME RSTACK, 2, STACK
FUNCALL API_readmsg, COM_put_integer
LOCFRAME CSTACK, 4, STACK
LOCFRAME RSTACK, 2, STACK
FUNCALL API_readmsg, COM_putsf
LOCFRAME CSTACK, 4, STACK
LOCFRAME RSTACK, 2, STACK
FUNCALL API_readmsg, COM_rx_on
LOCFRAME CSTACK, 4, STACK
LOCFRAME RSTACK, 2, STACK
FUNCALL API_readmsg, API_check_acknowledge
LOCFRAME CSTACK, 4, STACK
LOCFRAME RSTACK, 2, STACK
FUNCALL API_readmsg, TOOLS__decodeCMGR
LOCFRAME CSTACK, 4, STACK
LOCFRAME RSTACK, 2, STACK
FUNCALL API_readmsg, ZIP_decompress
LOCFRAME CSTACK, 4, STACK
LOCFRAME RSTACK, 2, STACK
CALL ?PROLOGUE4_L09
CFI R27 Frame(CFA_Y, -1)
CFI R26 Frame(CFA_Y, -2)
CFI R25 Frame(CFA_Y, -3)
CFI R24 Frame(CFA_Y, -4)
CFI CFA_Y Y+4
MOVW R27:R26, R17:R16
// 178 //Local variables
// 179 unsigned char *encodedmsg;
// 180 int i;
// 181
// 182 //Init
// 183 //encodedmsg = '\0';
// 184 i = 0;
// 185
// 186 COM_rx_reset( ); //Reset system
CALL COM_rx_reset
// 187 COM_setSearchString( 0 ); //Set OK to be search string
LDI R16, 0
CALL COM_setSearchString
// 188 COM_putsf( AT_CMGR ); //Delete message
LDI R16, LOW(AT_CMGR)
LDI R17, (AT_CMGR) >> 8
CALL COM_putsf
// 189 COM_put_integer( ind ); //@index
MOVW R17:R16, R27:R26
CALL COM_put_integer
// 190 COM_putsf( CRLF ); //CR+LF
LDI R16, LOW(CRLF)
LDI R17, (CRLF) >> 8
CALL COM_putsf
// 191 COM_rx_on( ); //Receiver on
CALL COM_rx_on
// 192
// 193 if( API_check_acknowledge() > 0 ) //Delete = OK
RCALL API_check_acknowledge
CPI R16, 1
SBCI R17, 0
BRLT ??API_readmsg_0
// 194 {
// 195 encodedmsg = TOOLS__decodeCMGR( ind );
MOVW R17:R16, R27:R26
CALL TOOLS__decodeCMGR
// 196 i = ZIP_decompress( encodedmsg, msgbuff );
LDI R18, LOW(msgbuff)
LDI R19, (msgbuff) >> 8
CALL ZIP_decompress
// 197
// 198 //COM_puts( msgbuff );
// 199
// 200 return 1;
LDI R16, 1
LDI R17, 0
RJMP ??API_readmsg_1
// 201 }
// 202
// 203 else
// 204 {
// 205 return 0; //Not successful delete
??API_readmsg_0:
LDI R16, 0
LDI R17, 0
??API_readmsg_1:
LDI R30, 4
JMP ?EPILOGUE_B4_L09
CFI EndBlock cfiBlock3
// 206 }
// 207 }
// 208
// 209
// 210 //Will check response from phone...if\r\nOK\r\n is received...everything is fine...else an error har occured
RSEG CODE:CODE:NOROOT(1)
// 211 int API_check_acknowledge( void )
API_check_acknowledge:
CFI Block cfiBlock4 Using cfiCommon0
CFI Function API_check_acknowledge
// 212 {
FUNCALL API_check_acknowledge, COM_rx_off
LOCFRAME CSTACK, 2, STACK
LOCFRAME RSTACK, 2, STACK
FUNCALL API_check_acknowledge, COM_rx_reset
LOCFRAME CSTACK, 2, STACK
LOCFRAME RSTACK, 2, STACK
ST -Y, R27
CFI R27 Frame(CFA_Y, -1)
CFI CFA_Y Y+1
ST -Y, R26
CFI R26 Frame(CFA_Y, -2)
CFI CFA_Y Y+2
// 213 static unsigned int i, ii; //Loal variables
// 214
// 215 for( i = 0; ( rx_ack == 0 ) && ( i < 65535 ); i++ ) //Wait loop
LDI R16, 0
LDI R17, 0
LDI R30, LOW(??i)
LDI R31, (??i) >> 8
ST Z, R16
STD Z+1, R17
RJMP ??API_check_acknowledge_0
// 216 {
// 217 for( ii = 0; ii < 10; ii++ )
??API_check_acknowledge_1:
LDI R30, LOW(??ii)
LDI R31, (??ii) >> 8
LD R16, Z
LDD R17, Z+1
SUBI R16, 255
SBCI R17, 255
ST Z, R16
STD Z+1, R17
??API_check_acknowledge_2:
LDI R26, LOW(??ii)
LDI R27, (??ii) >> 8
LD R30, X+
LD R31, X
SBIW R31:R30, 10
BRCS ??API_check_acknowledge_1
LDI R30, LOW(??i)
LDI R31, (??i) >> 8
LD R16, Z
LDD R17, Z+1
SUBI R16, 255
SBCI R17, 255
ST Z, R16
STD Z+1, R17
??API_check_acknowledge_0:
LDI R30, LOW(rx_ack)
LDI R31, (rx_ack) >> 8
LD R16, Z
LDD R17, Z+1
OR R16, R17
BRNE ??API_check_acknowledge_3
LDI R30, LOW(??i)
LDI R31, (??i) >> 8
LD R16, Z
LDD R17, Z+1
CPI R16, 255
LDI R18, 255
CPC R17, R18
BRCC ??API_check_acknowledge_3
LDI R16, 0
LDI R17, 0
LDI R30, LOW(??ii)
LDI R31, (??ii) >> 8
ST Z, R16
STD Z+1, R17
RJMP ??API_check_acknowledge_2
// 218 {
// 219 ;
// 220 }
// 221 }
// 222
// 223 if( rx_ack > 0 ) //Everything worked out fine...rx turned off
??API_check_acknowledge_3:
LDI R26, LOW(rx_ack)
LDI R27, (rx_ack) >> 8
LD R30, X+
LD R31, X
SBIW R31:R30, 1
BRLT ??API_check_acknowledge_4
// 224 {
// 225 rx_ack = 0; //Reset flag
LDI R16, 0
LDI R17, 0
LDI R30, LOW(rx_ack)
LDI R31, (rx_ack) >> 8
ST Z, R16
STD Z+1, R17
// 226 return 1;
LDI R16, 1
LDI R17, 0
RJMP ??API_check_acknowledge_5
// 227 }
// 228 else //A timeout could result from no acknowledge, wrong acknowledge or buffer overrun
// 229 {
// 230 COM_rx_off( ); //Receiver off
??API_check_acknowledge_4:
CALL COM_rx_off
// 231 COM_rx_reset( ); //Reset buffer and interrupt routine
CALL COM_rx_reset
// 232 return 0; //Timed out, or wrong acknowledge from phone
LDI R16, 0
LDI R17, 0
??API_check_acknowledge_5:
LD R26, Y+
CFI R26 SameValue
CFI CFA_Y Y+1
LD R27, Y+
CFI R27 SameValue
CFI CFA_Y Y+0
RET
CFI EndBlock cfiBlock4
// 233 }
// 234
// 235 }
RSEG NEAR_Z:DATA:NOROOT(0)
REQUIRE `?<Segment init: NEAR_Z>`
??i:
DS 2
RSEG NEAR_Z:DATA:NOROOT(0)
REQUIRE `?<Segment init: NEAR_Z>`
??ii:
DS 2
ASEGN ABSOLUTE:DATA:NOROOT,01cH
__?EECR:
ASEGN ABSOLUTE:DATA:NOROOT,01dH
__?EEDR:
ASEGN ABSOLUTE:DATA:NOROOT,01eH
__?EEARL:
ASEGN ABSOLUTE:DATA:NOROOT,01fH
__?EEARH:
RSEG NEAR_ID:CODE:NOROOT(0)
`?<Initializer for <Constant "E170381C0E87C3E17`:
DB 45H, 31H, 37H, 30H, 33H, 38H, 31H, 43H
DB 30H, 45H, 38H, 37H, 43H, 33H, 45H, 31H
DB 37H, 30H, 33H, 38H, 31H, 43H, 30H, 45H
DB 38H, 37H, 43H, 33H, 45H, 31H, 37H, 30H
DB 33H, 38H, 31H, 43H, 30H, 45H, 38H, 37H
DB 43H, 33H, 45H, 31H, 37H, 30H, 33H, 38H
DB 31H, 43H, 30H, 45H, 38H, 37H, 43H, 33H
DB 45H, 31H, 37H, 30H, 33H, 38H, 31H, 43H
DB 30H, 45H, 38H, 37H, 43H, 33H, 45H, 31H
DB 37H, 30H, 33H, 38H, 31H, 43H, 30H, 45H
DB 38H, 37H, 43H, 33H, 45H, 31H, 37H, 30H
DB 33H, 38H, 31H, 43H, 30H, 45H, 38H, 37H
DB 43H, 33H, 45H, 31H, 37H, 30H, 33H, 38H
DB 31H, 43H, 30H, 45H, 38H, 37H, 43H, 33H
DB 45H, 31H, 37H, 30H, 31H, 38H, 0
RSEG INITTAB:CODE:NOROOT(0)
`?<Segment init: NEAR_I>`:
DW SFE(NEAR_I) - SFB(NEAR_I)
DW SFB(NEAR_I)
DP SFB(NEAR_ID)
REQUIRE ?need_segment_init
RSEG INITTAB:CODE:NOROOT(0)
`?<Segment init: NEAR_Z>`:
DW SFE(NEAR_Z) - SFB(NEAR_Z)
DW SFB(NEAR_Z)
DP 0
REQUIRE ?need_segment_init
RSEG NEAR_ID:CODE:NOROOT(0)
`?<Initializer for ziped>`:
DW `?<Constant "E170381C0E87C3E170381...">`
END
//
// 572 bytes in segment CODE
// 14 bytes in segment INITTAB
// 105 bytes in segment NEAR_F
// 121 bytes in segment NEAR_I
// 121 bytes in segment NEAR_ID
// 165 bytes in segment NEAR_Z
//
// 798 bytes of CODE memory (+ 14 bytes shared)
// 286 bytes of DATA memory
//
//Errors: none
//Warnings: 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -