📄 modem.lis
字号:
.module modem.c
.area data(ram, con, rel)
0000 _In::
0000 .blkw 1
.area idata
0000 0A00 .word _InBuffer
.area data(ram, con, rel)
0002 .dbfile F:\mydoc\avrproject\icc\big162\gpseep\modem.c
0002 .dbsym e In _In pc
0002 _Out::
0002 .blkw 1
.area idata
0002 0000 .word _OutBuffer
.area data(ram, con, rel)
0004 .dbfile F:\mydoc\avrproject\icc\big162\gpseep\modem.c
0004 .dbsym e Out _Out pc
0004 _mDataSlot::
0004 .blkb 1
.area idata
0004 00 .byte 0
.area data(ram, con, rel)
0005 .dbfile F:\mydoc\avrproject\icc\big162\gpseep\modem.c
0005 .dbsym e mDataSlot _mDataSlot c
0005 _mEmptySlot::
0005 .blkb 1
.area idata
0005 00 .byte 0
.area data(ram, con, rel)
0006 .dbfile F:\mydoc\avrproject\icc\big162\gpseep\modem.c
0006 .dbsym e mEmptySlot _mEmptySlot c
0006 _mTest::
0006 .blkb 1
.area idata
0006 00 .byte 0
.area data(ram, con, rel)
0007 .dbfile F:\mydoc\avrproject\icc\big162\gpseep\modem.c
0007 .dbsym e mTest _mTest c
0007 _oTest::
0007 .blkb 1
.area idata
0007 00 .byte 0
.area data(ram, con, rel)
0008 .dbfile F:\mydoc\avrproject\icc\big162\gpseep\modem.c
0008 .dbsym e oTest _oTest c
0008 _firstTest::
0008 .blkb 1
.area idata
0008 00 .byte 0
.area data(ram, con, rel)
0009 .dbfile F:\mydoc\avrproject\icc\big162\gpseep\modem.c
0009 .dbsym e firstTest _firstTest c
0009 _isAdd::
0009 .blkb 1
.area idata
0009 00 .byte 0
.area data(ram, con, rel)
000A .dbfile F:\mydoc\avrproject\icc\big162\gpseep\modem.c
000A .dbsym e isAdd _isAdd c
000A _ModemBuffer::
000A .blkw 1
.area idata
000A 0A00 .word _InBuffer
.area data(ram, con, rel)
000C .dbfile F:\mydoc\avrproject\icc\big162\gpseep\modem.c
000C .dbsym e ModemBuffer _ModemBuffer pc
.area text(rom, con, rel)
0000 .dbfile F:\mydoc\avrproject\icc\big162\gpseep\modem.c
0000 .dbfunc e ProcModemReceive _ProcModemReceive fV
0000 ; c -> R16
.even
0000 _ProcModemReceive::
0000 .dbline -1
0000 .dbline 31
0000 ; #include "Modem.h"
0000 ;
0000 ; #include "sci.h"
0000 ; #include <string.h>
0000 ; #define MODEM_BUFFER_SIZE 250 // Size of Modem Buffer
0000 ; BYTE InBuffer[256];
0000 ;
0000 ; BYTE OutBuffer[10];
0000 ;
0000 ; BYTE *In = &InBuffer[0];
0000 ; BYTE *Out = &OutBuffer[0];
0000 ;
0000 ; // Byte pointers of the ring buffer (FIFO)
0000 ; volatile BYTE mDataSlot = 0; // Points to the next available character
0000 ; volatile BYTE mEmptySlot = 0; // Points to next available slot of the FIFO
0000 ; volatile BYTE mTest = 0;
0000 ; volatile BYTE oTest = 0;
0000 ; volatile BYTE firstTest = 0;
0000 ; volatile BYTE isAdd = 0;
0000 ; void addoid(void);
0000 ; void strtob(void);
0000 ; BYTE *ModemBuffer = &InBuffer[0];
0000 ; extern BYTE *pordid;
0000 ; extern BYTE ordidStr[];
0000 ; extern BYTE looptimeStr[];
0000 ; extern BYTE *plooptime;
0000 ;
0000 ; extern DWORD ii,kk;
0000 ;
0000 ; void ProcModemReceive (BYTE c)
0000 ; {
0000 .dbline 32
0000 ; ModemBuffer [mEmptySlot++] = c;
0000 20900500 lds R2,_mEmptySlot
0004 3324 clr R3
0006 822D mov R24,R2
0008 8F5F subi R24,255 ; addi 1
000A 80930500 sts _mEmptySlot,R24
000E 40900A00 lds R4,_ModemBuffer
0012 50900B00 lds R5,_ModemBuffer+1
0016 E22D mov R30,R2
0018 FF27 clr R31
001A E40D add R30,R4
001C F51D adc R31,R5
001E 0083 std z+0,R16
0020 .dbline 33
0020 ; if (mEmptySlot > MODEM_BUFFER_SIZE) {
0020 8AEF ldi R24,250
0022 20900500 lds R2,_mEmptySlot
0026 8215 cp R24,R2
0028 18F4 brsh L2
002A .dbline 33
002A .dbline 34
002A ; mEmptySlot = 0;
002A 2224 clr R2
002C 20920500 sts _mEmptySlot,R2
0030 .dbline 35
0030 ; }
0030 L2:
0030 .dbline 36
0030 ; if(c == '['){
0030 0B35 cpi R16,91
0032 21F4 brne L4
0034 .dbline 36
0034 .dbline 37
0034 ; firstTest=1;
0034 81E0 ldi R24,1
0036 80930800 sts _firstTest,R24
003A .dbline 38
003A ; return;
003A 1AC0 xjmp L1
003C L4:
003C .dbline 39
003C ; }else if(c == ']'){
003C 0D35 cpi R16,93
003E 21F4 brne L6
0040 .dbline 39
0040 .dbline 40
0040 ; mTest=0;
0040 2224 clr R2
0042 20920600 sts _mTest,R2
0046 .dbline 41
0046 ; return;
0046 14C0 xjmp L1
0048 L6:
0048 .dbline 42
0048 ; }else if(firstTest==1){
0048 80910800 lds R24,_firstTest
004C 8130 cpi R24,1
004E 61F4 brne L8
0050 .dbline 42
0050 .dbline 43
0050 ; if(c == '$'){
0050 0432 cpi R16,36
0052 39F4 brne L10
0054 .dbline 43
0054 .dbline 44
0054 ; mTest=1;
0054 81E0 ldi R24,1
0056 80930600 sts _mTest,R24
005A .dbline 45
005A ; firstTest=0;
005A 2224 clr R2
005C 20920800 sts _firstTest,R2
0060 .dbline 46
0060 ; return;
0060 07C0 xjmp L1
0062 L10:
0062 .dbline 47
0062 ; }else{
0062 .dbline 48
0062 ; firstTest=0;
0062 2224 clr R2
0064 20920800 sts _firstTest,R2
0068 .dbline 49
0068 ; }
0068 .dbline 50
0068 ; }
0068 L8:
0068 .dbline 52
0068 20900600 lds R2,_mTest
006C 2220 tst R2
006E 01F0 breq L12
0070 .dbline 52
0070 .dbline 54
0070 L12:
0070 .dbline -2
0070 L1:
0070 .dbline 0 ; func end
0070 0895 ret
0072 .dbsym r c 16 c
0072 .dbend
0072 .dbfunc e ModemInit _ModemInit fV
.even
0072 _ModemInit::
0072 .dbline -1
0072 .dbline 58
0072 ;
0072 ; if(mTest){
0072 ;
0072 ; }
0072 ; }
0072 ;
0072 ; void ModemInit (void)
0072 ; {
0072 .dbline 59
0072 ; mDataSlot = 0; // Initialize FIFO Modem pointers
0072 2224 clr R2
0074 20920400 sts _mDataSlot,R2
0078 .dbline 60
0078 ; mEmptySlot = 0;
0078 20920500 sts _mEmptySlot,R2
007C .dbline -2
007C L14:
007C .dbline 0 ; func end
007C 0895 ret
007E .dbend
007E .dbfunc e ModemBuffNotEmpty _ModemBuffNotEmpty fc
.even
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -