📄 main.lis
字号:
007C 8333 cpi R24,51
007E 79F4 brne L10
0080 80912300 lds R24,_RxBuf+1
0084 8D30 cpi R24,13
0086 59F4 brne L10
0088 .dbline 45
0088 ; {
0088 .dbline 46
0088 ; BusyFlag = 1; // 置电话呼入标志
0088 81E0 ldi R24,1
008A 80931200 sts _BusyFlag,R24
008E .dbline 47
008E ; RxIndex = 0;
008E 2224 clr R2
0090 20922100 sts _RxIndex,R2
0094 .dbline 48
0094 ; RxStatus = 1;
0094 80930D00 sts _RxStatus,R24
0098 .dbline 49
0098 ; OkFlag = 1;
0098 80930F00 sts _OkFlag,R24
009C .dbline 50
009C ; return;
009C 38C0 rjmp L1
009E L10:
009E .dbline 52
009E ; }
009E ; else if((RxBuf[0] == 0x37) && (RxBuf[1] == 0x0D)) // 收到来电信号,来电标志置位
009E 80912200 lds R24,_RxBuf
00A2 8733 cpi R24,55
00A4 79F4 brne L13
00A6 80912300 lds R24,_RxBuf+1
00AA 8D30 cpi R24,13
00AC 59F4 brne L13
00AE .dbline 53
00AE ; {
00AE .dbline 54
00AE ; NoCarrierFlag = 1; // 置电话呼入标志 NO CARRIER
00AE 81E0 ldi R24,1
00B0 80931100 sts _NoCarrierFlag,R24
00B4 .dbline 55
00B4 ; RxIndex = 0;
00B4 2224 clr R2
00B6 20922100 sts _RxIndex,R2
00BA .dbline 56
00BA ; RxStatus = 1;
00BA 80930D00 sts _RxStatus,R24
00BE .dbline 57
00BE ; OkFlag = 1;
00BE 80930F00 sts _OkFlag,R24
00C2 .dbline 58
00C2 ; return;
00C2 25C0 rjmp L1
00C4 L13:
00C4 .dbline 60
00C4 ; }
00C4 ; else if((RxBuf[0] == 0x34) && (RxBuf[1] == 0x0D)) // 收到来电信号,来电标志置位
00C4 80912200 lds R24,_RxBuf
00C8 8433 cpi R24,52
00CA 79F4 brne L16
00CC 80912300 lds R24,_RxBuf+1
00D0 8D30 cpi R24,13
00D2 59F4 brne L16
00D4 .dbline 61
00D4 ; {
00D4 .dbline 62
00D4 ; RxIndex = 0;
00D4 2224 clr R2
00D6 20922100 sts _RxIndex,R2
00DA .dbline 63
00DA ; RxStatus = 1;
00DA 81E0 ldi R24,1
00DC 80930D00 sts _RxStatus,R24
00E0 .dbline 64
00E0 ; OkFlag = 1;
00E0 80930F00 sts _OkFlag,R24
00E4 .dbline 65
00E4 ; error = 1;
00E4 80931600 sts _error,R24
00E8 .dbline 66
00E8 ; return;
00E8 12C0 rjmp L1
00EA L16:
00EA .dbline 69
00EA ; }
00EA ; else
00EA ; {
00EA .dbline 71
00EA ;
00EA ; RxBuf[RxIndex++] = UDR; // 继续接收数据放入接收缓冲
00EA 20902100 lds R2,_RxIndex
00EE 3324 clr R3
00F0 822D mov R24,R2
00F2 8F5F subi R24,255 ; addi 1
00F4 80932100 sts _RxIndex,R24
00F8 80E0 ldi R24,<_RxBuf
00FA 90E0 ldi R25,>_RxBuf
00FC E22D mov R30,R2
00FE FF27 clr R31
0100 E80F add R30,R24
0102 F91F adc R31,R25
0104 2CB0 in R2,0xc
0106 2082 std z+0,R2
0108 .dbline 72
0108 ; RxStatus = 0; // 串口接收中
0108 2224 clr R2
010A 20920D00 sts _RxStatus,R2
010E .dbline 74
010E ; // return; // 结束接收,直接跳出
010E ; }
010E .dbline -2
010E L1:
010E 2990 ld R2,y+
0110 2FBE out 0x3f,R2
0112 F991 ld R31,y+
0114 E991 ld R30,y+
0116 9991 ld R25,y+
0118 8991 ld R24,y+
011A 0991 ld R16,y+
011C 3990 ld R3,y+
011E 2990 ld R2,y+
0120 .dbline 0 ; func end
0120 1895 reti
0122 .dbsym r j 16 c
0122 .dbsym r i 16 c
0122 .dbend
.area vector(rom, abs)
.org 26
001A 91C0 rjmp _uart0_tx_isr
.area text(rom, con, rel)
0122 .dbfile D:\MyProject\SMS-MC55\Code\窃听器delay\main.c
0122 .dbfunc e uart0_tx_isr _uart0_tx_isr fV
.even
0122 _uart0_tx_isr::
0122 2A92 st -y,R2
0124 8A93 st -y,R24
0126 9A93 st -y,R25
0128 EA93 st -y,R30
012A FA93 st -y,R31
012C 2FB6 in R2,0x3f
012E 2A92 st -y,R2
0130 .dbline -1
0130 .dbline 80
0130 ; }
0130 ;
0130 ; ////////////////////////////////////////////////////////////////////////////////
0130 ; #pragma interrupt_handler uart0_tx_isr:14
0130 ; void uart0_tx_isr(void)
0130 ; {
0130 .dbline 82
0130 ;
0130 ; if(!TxStatus) // 本帧数据未发完,则继续发送
0130 20900E00 lds R2,_TxStatus
0134 2220 tst R2
0136 49F4 brne L20
0138 .dbline 83
0138 ; {
0138 .dbline 85
0138 ; //while ( !(UCSRA & (1<<UDRE)) ); // 等待UDR空
0138 ; UDR = TxBuf[TxIndex];
0138 80E0 ldi R24,<_TxBuf
013A 90E0 ldi R25,>_TxBuf
013C E0910000 lds R30,_TxIndex
0140 FF27 clr R31
0142 E80F add R30,R24
0144 F91F adc R31,R25
0146 2080 ldd R2,z+0
0148 2CB8 out 0xc,R2
014A .dbline 86
014A ; }
014A L20:
014A .dbline 87
014A ; if((TxBuf[TxIndex] == 0x0D) || (TxBuf[TxIndex] == 0x1A)) // 本帧数据发送结束
014A 80E0 ldi R24,<_TxBuf
014C 90E0 ldi R25,>_TxBuf
014E E0910000 lds R30,_TxIndex
0152 FF27 clr R31
0154 E80F add R30,R24
0156 F91F adc R31,R25
0158 8081 ldd R24,z+0
015A 8D30 cpi R24,13
015C 51F0 breq L24
015E 80E0 ldi R24,<_TxBuf
0160 90E0 ldi R25,>_TxBuf
0162 E0910000 lds R30,_TxIndex
0166 FF27 clr R31
0168 E80F add R30,R24
016A F91F adc R31,R25
016C 8081 ldd R24,z+0
016E 8A31 cpi R24,26
0170 41F4 brne L22
0172 L24:
0172 .dbline 88
0172 ; {
0172 .dbline 89
0172 ; TxStatus = 1; // 发送完成状态标志置位
0172 81E0 ldi R24,1
0174 80930E00 sts _TxStatus,R24
0178 .dbline 90
0178 ; TxIndex = 0; // 发送缓冲区指针归零
0178 2224 clr R2
017A 20920000 sts _TxIndex,R2
017E .dbline 91
017E ; UCSRB &= ~((1<<TXCIE));//|(1<<TXEN)); // 关发送中断
017E 5698 cbi 0xa,6
0180 .dbline 92
0180 ; return;
0180 05C0 rjmp L19
0182 L22:
0182 .dbline 94
0182 ; }
0182 ; TxIndex++;
0182 80910000 lds R24,_TxIndex
0186 8F5F subi R24,255 ; addi 1
0188 80930000 sts _TxIndex,R24
018C .dbline -2
018C L19:
018C 2990 ld R2,y+
018E 2FBE out 0x3f,R2
0190 F991 ld R31,y+
0192 E991 ld R30,y+
0194 9991 ld R25,y+
0196 8991 ld R24,y+
0198 2990 ld R2,y+
019A .dbline 0 ; func end
019A 1895 reti
019C .dbend
019C .dbfunc e CheckRx _CheckRx fc
019C ; j -> R18
019C ; i -> R16
.even
019C _CheckRx::
019C .dbline -1
019C .dbline 97
019C ; }
019C ; unsigned char CheckRx(void)
019C ; {
019C .dbline 99
019C ; unsigned char i,j;
019C ; i = RxIndex;
019C 00912100 lds R16,_RxIndex
01A0 .dbline 100
01A0 ; j = RxIndex - 1;
01A0 20912100 lds R18,_RxIndex
01A4 2150 subi R18,1
01A6 .dbline 101
01A6 ; if(( RxBuf[j] == 0x30) && (RxBuf[i] == 0x0D))
01A6 80E0 ldi R24,<_RxBuf
01A8 90E0 ldi R25,>_RxBuf
01AA E22F mov R30,R18
01AC FF27 clr R31
01AE E80F add R30,R24
01B0 F91F adc R31,R25
01B2 8081 ldd R24,z+0
01B4 8033 cpi R24,48
01B6 71F4 brne L26
01B8 80E0 ldi R24,<_RxBuf
01BA 90E0 ldi R25,>_RxBuf
01BC E02F mov R30,R16
01BE FF27 clr R31
01C0 E80F add R30,R24
01C2 F91F adc R31,R25
01C4 8081 ldd R24,z+0
01C6 8D30 cpi R24,13
01C8 29F4 brne L26
01CA .dbline 102
01CA ; {
01CA .dbline 103
01CA ; RxIndex = 0;
01CA 2224 clr R2
01CC 20922100 sts _RxIndex,R2
01D0 .dbline 104
01D0 ; return (1);
01D0 01E0 ldi R16,1
01D2 01C0 rjmp L25
01D4 L26:
01D4 .dbline 107
01D4 ; }
01D4 ; else
01D4 ; {
01D4 .dbline 108
01D4 ; return (0);
01D4 0027 clr R16
01D6 .dbline -2
01D6 L25:
01D6 .dbline 0 ; func end
01D6 0895 ret
01D8 .dbsym r j 18 c
01D8 .dbsym r i 16 c
01D8 .dbend
01D8 .dbfunc e ClearRxBuf _ClearRxBuf fV
01D8 ; i -> R16
.even
01D8 _ClearRxBuf::
01D8 .dbline -1
01D8 .dbline 115
01D8 ; }
01D8 ; }
01D8 ; /*-----------------------------------------------------------------------*/
01D8 ; /////////////////////////// 清除接收缓冲 ////////////////////////////////
01D8 ; /*-----------------------------------------------------------------------*/
01D8 ; void ClearRxBuf(void)
01D8 ; {
01D8 .dbline 117
01D8 ; unsigned char i;
01D8 ; for(i=0;i<128;i++)
01D8 0027 clr R16
01DA 09C0 rjmp L32
01DC L29:
01DC .dbline 118
01DC .dbline 119
01DC 80E0 ldi R24,<_RxBuf
01DE 90E0 ldi R25,>_RxBuf
01E0 E02F mov R30,R16
01E2 FF27 clr R31
01E4 E80F add R30,R24
01E6 F91F adc R31,R25
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -