📄 main.s
字号:
.module main.c
.area data(ram, con, rel)
_PhoneNum::
.blkb 12
.area idata
.byte 49,51,55,49,51,53,50,54,52,55,50,0
.area data(ram, con, rel)
.dbfile D:\MyProject\SMS-MC55\Code\窃听器delay/var.h
.dbsym e PhoneNum _PhoneNum A[12:12]c
_RxIndexTail::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile D:\MyProject\SMS-MC55\Code\窃听器delay/var.h
.dbsym e RxIndexTail _RxIndexTail c
_RxStatus:
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile D:\MyProject\SMS-MC55\Code\窃听器delay/var.h
.dbsym s RxStatus _RxStatus c
_TxStatus:
.blkb 1
.area idata
.byte 1
.area data(ram, con, rel)
.dbfile D:\MyProject\SMS-MC55\Code\窃听器delay/var.h
.dbsym s TxStatus _TxStatus c
_OkFlag:
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile D:\MyProject\SMS-MC55\Code\窃听器delay/var.h
.dbsym s OkFlag _OkFlag c
_CallInFlag:
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile D:\MyProject\SMS-MC55\Code\窃听器delay/var.h
.dbsym s CallInFlag _CallInFlag c
_NoCarrierFlag:
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile D:\MyProject\SMS-MC55\Code\窃听器delay/var.h
.dbsym s NoCarrierFlag _NoCarrierFlag c
_BusyFlag:
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile D:\MyProject\SMS-MC55\Code\窃听器delay/var.h
.dbsym s BusyFlag _BusyFlag c
_DettqFlag:
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile D:\MyProject\SMS-MC55\Code\窃听器delay/var.h
.dbsym s DettqFlag _DettqFlag c
_release:
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile D:\MyProject\SMS-MC55\Code\窃听器delay/var.h
.dbsym s release _release c
_CallOut:
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile D:\MyProject\SMS-MC55\Code\窃听器delay/var.h
.dbsym s CallOut _CallOut c
_error:
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile D:\MyProject\SMS-MC55\Code\窃听器delay/var.h
.dbsym s error _error c
_PhoneNumData:
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile D:\MyProject\SMS-MC55\Code\窃听器delay/var.h
.dbsym s PhoneNumData _PhoneNumData c
.area lit(rom, con, rel)
_At::
.byte 'A,'T,0
.dbsym e At _At A[3:3]kc
_Ata::
.byte 'A,'T,'A,0
.dbsym e Ata _Ata A[4:4]kc
_Ath::
.byte 'A,'T,'H,0
.dbsym e Ath _Ath A[4:4]kc
_Ate0::
.byte 'A,'T,'E,48,0
.dbsym e Ate0 _Ate0 A[5:5]kc
_Atv0::
.byte 'A,'T,'V,48,0
.dbsym e Atv0 _Atv0 A[5:5]kc
_Atx0::
.byte 'A,'T,'X,48,0
.dbsym e Atx0 _Atx0 A[5:5]kc
_Atf::
.byte 'A,'T,38,'F,0
.dbsym e Atf _Atf A[5:5]kc
_Atclip::
.byte 'A,'T,43,'C,'L,'I,'P,61,49,0
.dbsym e Atclip _Atclip A[10:10]kc
_Atcsq::
.byte 'A,'T,43,'C,'S,'Q,0
.dbsym e Atcsq _Atcsq A[7:7]kc
_Atssyn::
.byte 'A,'T,94,'S,'S,'Y,'N,'C,61,49,0
.dbsym e Atssyn _Atssyn A[11:11]kc
_Atsmso::
.byte 'A,'T,94,'S,'M,'S,'O,0
.dbsym e Atsmso _Atsmso A[8:8]kc
_Atsnfs::
.byte 'A,'T,94,'S,'N,'F,'S,61,52,0
.dbsym e Atsnfs _Atsnfs A[10:10]kc
_Atsnfi::
.byte 'A,'T,94,'S,'N,'F,'I,61,52,44,51,50,55,54,55,0
.dbsym e Atsnfi _Atsnfi A[16:16]kc
_Atcnmi::
.byte 'A,'T,43,'C,'N,'M,'I,61,49,44,49,44,48,44,48,44
.byte 49,0
.dbsym e Atcnmi _Atcnmi A[18:18]kc
_Atsnfo::
.byte 'A,'T,94,'S,'N,'F,'O,61,51,44,49,54,51,56,52,44
.byte 49,54,51,56,52,44,49,54,51,56,52,44,49,54,51,56
.byte 52,44,49,54,51,56,52,44,52,44,48,0
.dbsym e Atsnfo _Atsnfo A[44:44]kc
_Atcmgf::
.byte 'A,'T,43,'C,'M,'G,'F,61,48,0
.dbsym e Atcmgf _Atcmgf A[10:10]kc
_Atcmgs::
.byte 'A,'T,43,'C,'M,'G,'S,61,0
.dbsym e Atcmgs _Atcmgs A[9:9]kc
_Atcmgr::
.byte 'A,'T,43,'C,'M,'G,'R,61,49,0
.dbsym e Atcmgr _Atcmgr A[10:10]kc
_Atcmgl::
.byte 'A,'T,43,'C,'M,'G,'L,61,48,0
.dbsym e Atcmgl _Atcmgl A[10:10]kc
_Atcmgd::
.byte 'A,'T,43,'C,'M,'G,'D,61,0
.dbsym e Atcmgd _Atcmgd A[9:9]kc
_Atsnfpt::
.byte 'A,'T,94,'S,'N,'F,'P,'T,61,48,0
.dbsym e Atsnfpt _Atsnfpt A[11:11]kc
_Atclck1::
.byte 'A,'T,43,'C,'L,'C,'K,61,34,'S,'C,34,44,49,44,0
.dbsym e Atclck1 _Atclck1 A[16:16]kc
_Atcpin::
.byte 'A,'T,43,'C,'P,'I,'N,63,0
.dbsym e Atcpin _Atcpin A[9:9]kc
_Atclck2::
.byte 'A,'T,43,'C,'L,'C,'K,61,34,'S,'C,34,44,50,0
.dbsym e Atclck2 _Atclck2 A[15:15]kc
_Atcpwd::
.byte 'A,'T,43,'C,'P,'W,'D,61,34,'S,'C,34,44,0
.dbsym e Atcpwd _Atcpwd A[14:14]kc
_Atclck0::
.byte 'A,'T,43,'C,'L,'C,'K,61,34,'S,'C,34,44,48,44,0
.dbsym e Atclck0 _Atclck0 A[16:16]kc
_Atcpinc::
.byte 'A,'T,43,'C,'P,'I,'N,61,0
.dbsym e Atcpinc _Atcpinc A[9:9]kc
_Atsblk::
.byte 'A,'T,94,'S,'B,'L,'K,0
.dbsym e Atsblk _Atsblk A[8:8]kc
_Atccfc::
.byte 'A,'T,94,'C,'C,'F,'C,61,0
.dbsym e Atccfc _Atccfc A[9:9]kc
_SMSin::
.byte 43,'C,'M,'T,'I,58,32,34,'S,'M,34,44,32,49,0
.dbsym e SMSin _SMSin A[15:15]kc
_Atd::
.byte 'A,'T,'D,0
.dbsym e Atd _Atd A[4:4]kc
.area vector(rom, abs)
.org 22
rjmp _uart0_rx_isr
.area lit(rom, con, rel)
.area text(rom, con, rel)
.dbfile D:\MyProject\SMS-MC55\Code\窃听器delay/var.h
.dbfile D:\MyProject\SMS-MC55\Code\窃听器delay\main.c
.dbfunc e uart0_rx_isr _uart0_rx_isr fV
; j -> R16
; i -> R16
.even
_uart0_rx_isr::
st -y,R2
st -y,R3
st -y,R16
st -y,R24
st -y,R25
st -y,R30
st -y,R31
in R2,0x3f
st -y,R2
.dbline -1
.dbline 18
; ////////////////////////////////////////////////////////////////////////////////
; // ICC-AVR application builder : 2006-6-25 下午 06:02:39
; // Target : M8
; // Crystal: 3.6864Mhz
; // Author: Anwarye
; // Title: Detcetaphone
; ////////////////////////////////////////////////////////////////////////////////
;
; #include <iom8v.h>
; #include <macros.h>
; #include "var.h"
;
; #define XTAL == 3.6864M
;
; ////////////////////////////////////////////////////////////////////////////////
; #pragma interrupt_handler uart0_rx_isr:12
; void uart0_rx_isr(void)
; {
.dbline 20
; unsigned char i,j;
; if(UDR == 0x0A)
in R24,0xc
cpi R24,10
brne L2
.dbline 21
; {
.dbline 22
; return; // 收到0x0A直接丢弃
rjmp L1
L2:
.dbline 25
; }
;
; i = RxIndex;
lds R16,_RxIndex
.dbline 26
; j = RxIndex-1;
lds R16,_RxIndex
subi R16,1
.dbline 27
; if((RxBuf[0] == 0x30) && (RxBuf[1] == 0x0D))
lds R24,_RxBuf
cpi R24,48
brne L4
lds R24,_RxBuf+1
cpi R24,13
brne L4
.dbline 28
; {
.dbline 29
; RxIndexTail = RxIndex; // 保存接收缓冲指针尾
lds R2,_RxIndex
sts _RxIndexTail,R2
.dbline 30
; RxIndex = 0; // 接收缓冲指针归零
clr R2
sts _RxIndex,R2
.dbline 31
; RxStatus = 1; // 接收完成标志置位
ldi R24,1
sts _RxStatus,R24
.dbline 32
; OkFlag = 1;
sts _OkFlag,R24
.dbline 33
; error = 0;
sts _error,R2
.dbline 34
; return;
rjmp L1
L4:
.dbline 36
; }
; if((RxBuf[0] == 0x32) && (RxBuf[1] == 0x0D)) // 收到来电信号,来电标志置位
lds R24,_RxBuf
cpi R24,50
brne L7
lds R24,_RxBuf+1
cpi R24,13
brne L7
.dbline 37
; {
.dbline 38
; CallInFlag = 1; // 置电话呼入标志
ldi R24,1
sts _CallInFlag,R24
.dbline 39
; RxIndex = 0;
clr R2
sts _RxIndex,R2
.dbline 40
; RxStatus = 1;
sts _RxStatus,R24
.dbline 41
; OkFlag = 1;
sts _OkFlag,R24
.dbline 42
; return;
rjmp L1
L7:
.dbline 44
; }
; else if((RxBuf[0] == 0x33) && (RxBuf[1] == 0x0D)) // 被叫号码忙 或者挂机 主叫挂机
lds R24,_RxBuf
cpi R24,51
brne L10
lds R24,_RxBuf+1
cpi R24,13
brne L10
.dbline 45
; {
.dbline 46
; BusyFlag = 1; // 置电话呼入标志
ldi R24,1
sts _BusyFlag,R24
.dbline 47
; RxIndex = 0;
clr R2
sts _RxIndex,R2
.dbline 48
; RxStatus = 1;
sts _RxStatus,R24
.dbline 49
; OkFlag = 1;
sts _OkFlag,R24
.dbline 50
; return;
rjmp L1
L10:
.dbline 52
; }
; else if((RxBuf[0] == 0x37) && (RxBuf[1] == 0x0D)) // 收到来电信号,来电标志置位
lds R24,_RxBuf
cpi R24,55
brne L13
lds R24,_RxBuf+1
cpi R24,13
brne L13
.dbline 53
; {
.dbline 54
; NoCarrierFlag = 1; // 置电话呼入标志 NO CARRIER
ldi R24,1
sts _NoCarrierFlag,R24
.dbline 55
; RxIndex = 0;
clr R2
sts _RxIndex,R2
.dbline 56
; RxStatus = 1;
sts _RxStatus,R24
.dbline 57
; OkFlag = 1;
sts _OkFlag,R24
.dbline 58
; return;
rjmp L1
L13:
.dbline 60
; }
; else if((RxBuf[0] == 0x34) && (RxBuf[1] == 0x0D)) // 收到来电信号,来电标志置位
lds R24,_RxBuf
cpi R24,52
brne L16
lds R24,_RxBuf+1
cpi R24,13
brne L16
.dbline 61
; {
.dbline 62
; RxIndex = 0;
clr R2
sts _RxIndex,R2
.dbline 63
; RxStatus = 1;
ldi R24,1
sts _RxStatus,R24
.dbline 64
; OkFlag = 1;
sts _OkFlag,R24
.dbline 65
; error = 1;
sts _error,R24
.dbline 66
; return;
rjmp L1
L16:
.dbline 69
; }
; else
; {
.dbline 71
;
; RxBuf[RxIndex++] = UDR; // 继续接收数据放入接收缓冲
lds R2,_RxIndex
clr R3
mov R24,R2
subi R24,255 ; addi 1
sts _RxIndex,R24
ldi R24,<_RxBuf
ldi R25,>_RxBuf
mov R30,R2
clr R31
add R30,R24
adc R31,R25
in R2,0xc
std z+0,R2
.dbline 72
; RxStatus = 0; // 串口接收中
clr R2
sts _RxStatus,R2
.dbline 74
; // return; // 结束接收,直接跳出
; }
.dbline -2
L1:
ld R2,y+
out 0x3f,R2
ld R31,y+
ld R30,y+
ld R25,y+
ld R24,y+
ld R16,y+
ld R3,y+
ld R2,y+
.dbline 0 ; func end
reti
.dbsym r j 16 c
.dbsym r i 16 c
.dbend
.area vector(rom, abs)
.org 26
rjmp _uart0_tx_isr
.area text(rom, con, rel)
.dbfile D:\MyProject\SMS-MC55\Code\窃听器delay\main.c
.dbfunc e uart0_tx_isr _uart0_tx_isr fV
.even
_uart0_tx_isr::
st -y,R2
st -y,R24
st -y,R25
st -y,R30
st -y,R31
in R2,0x3f
st -y,R2
.dbline -1
.dbline 80
; }
;
; ////////////////////////////////////////////////////////////////////////////////
; #pragma interrupt_handler uart0_tx_isr:14
; void uart0_tx_isr(void)
; {
.dbline 82
;
; if(!TxStatus) // 本帧数据未发完,则继续发送
lds R2,_TxStatus
tst R2
brne L20
.dbline 83
; {
.dbline 85
; //while ( !(UCSRA & (1<<UDRE)) ); // 等待UDR空
; UDR = TxBuf[TxIndex];
ldi R24,<_TxBuf
ldi R25,>_TxBuf
lds R30,_TxIndex
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
out 0xc,R2
.dbline 86
; }
L20:
.dbline 87
; if((TxBuf[TxIndex] == 0x0D) || (TxBuf[TxIndex] == 0x1A)) // 本帧数据发送结束
ldi R24,<_TxBuf
ldi R25,>_TxBuf
lds R30,_TxIndex
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,13
breq L24
ldi R24,<_TxBuf
ldi R25,>_TxBuf
lds R30,_TxIndex
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,26
brne L22
L24:
.dbline 88
; {
.dbline 89
; TxStatus = 1; // 发送完成状态标志置位
ldi R24,1
sts _TxStatus,R24
.dbline 90
; TxIndex = 0; // 发送缓冲区指针归零
clr R2
sts _TxIndex,R2
.dbline 91
; UCSRB &= ~((1<<TXCIE));//|(1<<TXEN)); // 关发送中断
cbi 0xa,6
.dbline 92
; return;
rjmp L19
L22:
.dbline 94
; }
; TxIndex++;
lds R24,_TxIndex
subi R24,255 ; addi 1
sts _TxIndex,R24
.dbline -2
L19:
ld R2,y+
out 0x3f,R2
ld R31,y+
ld R30,y+
ld R25,y+
ld R24,y+
ld R2,y+
.dbline 0 ; func end
reti
.dbend
.dbfunc e CheckRx _CheckRx fc
; j -> R18
; i -> R16
.even
_CheckRx::
.dbline -1
.dbline 97
; }
; unsigned char CheckRx(void)
; {
.dbline 99
; unsigned char i,j;
; i = RxIndex;
lds R16,_RxIndex
.dbline 100
; j = RxIndex - 1;
lds R18,_RxIndex
subi R18,1
.dbline 101
; if(( RxBuf[j] == 0x30) && (RxBuf[i] == 0x0D))
ldi R24,<_RxBuf
ldi R25,>_RxBuf
mov R30,R18
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,48
brne L26
ldi R24,<_RxBuf
ldi R25,>_RxBuf
mov R30,R16
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,13
brne L26
.dbline 102
; {
.dbline 103
; RxIndex = 0;
clr R2
sts _RxIndex,R2
.dbline 104
; return (1);
ldi R16,1
rjmp L25
L26:
.dbline 107
; }
; else
; {
.dbline 108
; return (0);
clr R16
.dbline -2
L25:
.dbline 0 ; func end
ret
.dbsym r j 18 c
.dbsym r i 16 c
.dbend
.dbfunc e ClearRxBuf _ClearRxBuf fV
; i -> R16
.even
_ClearRxBuf::
.dbline -1
.dbline 115
; }
; }
; /*-----------------------------------------------------------------------*/
; /////////////////////////// 清除接收缓冲 ////////////////////////////////
; /*-----------------------------------------------------------------------*/
; void ClearRxBuf(void)
; {
.dbline 117
; unsigned char i;
; for(i=0;i<128;i++)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -