📄 modem.lis
字号:
007E _ModemBuffNotEmpty::
007E .dbline -1
007E .dbline 65
007E ;
007E ; }
007E ;
007E ; BYTE ModemBuffNotEmpty (void)
007E ; {
007E .dbline 66
007E ; return !(mDataSlot == mEmptySlot);
007E 20900500 lds R2,_mEmptySlot
0082 30900400 lds R3,_mDataSlot
0086 3214 cp R3,R2
0088 19F0 breq L16
008A 01E0 ldi R16,1
008C 10E0 ldi R17,0
008E 02C0 xjmp L17
0090 L16:
0090 0027 clr R16
0092 1127 clr R17
0094 L17:
0094 .dbline -2
0094 L15:
0094 .dbline 0 ; func end
0094 0895 ret
0096 .dbend
0096 .dbfunc e ModemBuffFlush _ModemBuffFlush fV
.even
0096 _ModemBuffFlush::
0096 .dbline -1
0096 .dbline 71
0096 ; }
0096 ;
0096 ;
0096 ; void ModemBuffFlush (void)
0096 ; {
0096 .dbline 72
0096 ; mDataSlot = mEmptySlot;
0096 20900500 lds R2,_mEmptySlot
009A 20920400 sts _mDataSlot,R2
009E .dbline -2
009E L18:
009E .dbline 0 ; func end
009E 0895 ret
00A0 .dbend
00A0 .dbfunc e Waitfor _Waitfor fc
00A0 ; c -> R20
00A0 ; Offset -> R22
00A0 ; Time -> R10
00A0 ; String -> R12,R13
.even
00A0 _Waitfor::
00A0 0E940000 xcall push_gset4
00A4 A22E mov R10,R18
00A6 6801 movw R12,R16
00A8 .dbline -1
00A8 .dbline 78
00A8 ; }
00A8 ;
00A8 ;
00A8 ;
00A8 ; BYTE Waitfor (char *String, BYTE Time)
00A8 ; {
00A8 .dbline 79
00A8 ; BYTE c = 0;
00A8 4427 clr R20
00AA .dbline 80
00AA ; BYTE Offset = 0;
00AA 6627 clr R22
00AC 1BC0 xjmp L21
00AE L20:
00AE .dbline 83
00AE ;
00AE ; while (Time-- > 0)
00AE ; {
00AE .dbline 84
00AE ; DelayM (100); // Wait =~ 150 mSec
00AE 04E6 ldi R16,100
00B0 0E940000 xcall _DelayM
00B4 14C0 xjmp L24
00B6 L23:
00B6 .dbline 86
00B6 ; while (ModemBuffNotEmpty())
00B6 ; { // Wait for characters
00B6 .dbline 87
00B6 ; c = ModemGetch (); // Extract a character from FIFO
00B6 22D0 xcall _ModemGetch
00B8 402F mov R20,R16
00BA .dbline 88
00BA ; if (c == String [Offset])
00BA E62F mov R30,R22
00BC FF27 clr R31
00BE EC0D add R30,R12
00C0 FD1D adc R31,R13
00C2 2080 ldd R2,z+0
00C4 0215 cp R16,R2
00C6 51F4 brne L26
00C8 .dbline 89
00C8 ; { // Is C a part of the string?
00C8 .dbline 90
00C8 ; Offset++; // Compare with next character
00C8 6395 inc R22
00CA .dbline 91
00CA ; if (String [Offset] == 0)
00CA E62F mov R30,R22
00CC FF27 clr R31
00CE EC0D add R30,R12
00D0 FD1D adc R31,R13
00D2 2080 ldd R2,z+0
00D4 2220 tst R2
00D6 19F4 brne L27
00D8 .dbline 92
00D8 ; { // is this the end of string?
00D8 .dbline 93
00D8 ; return True; // match = True
00D8 01E0 ldi R16,1
00DA 0DC0 xjmp L19
00DC X0:
00DC .dbline 95
00DC ; }
00DC ; }
00DC L26:
00DC .dbline 97
00DC ; else // c does not belong to String
00DC ; Offset = 0; // Reset String pointer
00DC 6627 clr R22
00DE L27:
00DE .dbline 98
00DE L24:
00DE .dbline 85
00DE CFDF xcall _ModemBuffNotEmpty
00E0 0023 tst R16
00E2 49F7 brne L23
00E4 .dbline 100
00E4 L21:
00E4 .dbline 82
00E4 2A2C mov R2,R10
00E6 3324 clr R3
00E8 822D mov R24,R2
00EA 8150 subi R24,1
00EC A82E mov R10,R24
00EE 4424 clr R4
00F0 4214 cp R4,R2
00F2 E8F2 brlo L20
00F4 .dbline 101
00F4 ; }
00F4 ;
00F4 ; }
00F4 ; return False;
00F4 0027 clr R16
00F6 .dbline -2
00F6 L19:
00F6 0E940000 xcall pop_gset4
00FA .dbline 0 ; func end
00FA 0895 ret
00FC .dbsym r c 20 c
00FC .dbsym r Offset 22 c
00FC .dbsym r Time 10 c
00FC .dbsym r String 12 pc
00FC .dbend
00FC .dbfunc e ModemGetch _ModemGetch fc
00FC ; c -> R16
.even
00FC _ModemGetch::
00FC .dbline -1
00FC .dbline 106
00FC ; }
00FC ;
00FC ;
00FC ; BYTE ModemGetch (void)
00FC ; {
00FC .dbline 107
00FC ; BYTE c = 0;
00FC 0027 clr R16
00FE .dbline 108
00FE ; if (mDataSlot != mEmptySlot)
00FE 20900500 lds R2,_mEmptySlot
0102 30900400 lds R3,_mDataSlot
0106 3214 cp R3,R2
0108 C1F0 breq L31
010A .dbline 109
010A ; {
010A .dbline 110
010A ; c = ModemBuffer [mDataSlot];
010A 20900A00 lds R2,_ModemBuffer
010E 30900B00 lds R3,_ModemBuffer+1
0112 E0910400 lds R30,_mDataSlot
0116 FF27 clr R31
0118 E20D add R30,R2
011A F31D adc R31,R3
011C 0081 ldd R16,z+0
011E .dbline 111
011E ; mDataSlot++;
011E 80910400 lds R24,_mDataSlot
0122 8F5F subi R24,255 ; addi 1
0124 80930400 sts _mDataSlot,R24
0128 .dbline 112
0128 ; if (mDataSlot > MODEM_BUFFER_SIZE)
0128 8AEF ldi R24,250
012A 20900400 lds R2,_mDataSlot
012E 8215 cp R24,R2
0130 18F4 brsh L33
0132 .dbline 113
0132 ; mDataSlot = 0;
0132 2224 clr R2
0134 20920400 sts _mDataSlot,R2
0138 L33:
0138 .dbline 114
0138 ; return(c);
0138 01C0 xjmp L30
013A L31:
013A .dbline 116
013A ; }
013A ; else {
013A .dbline 117
013A ; return (BYTE)0x00;
013A 0027 clr R16
013C .dbline -2
013C L30:
013C .dbline 0 ; func end
013C 0895 ret
013E .dbsym r c 16 c
013E .dbend
.area bss(ram, con, rel)
0000 .dbfile F:\mydoc\avrproject\icc\big162\gpseep\modem.c
0000 _OutBuffer::
0000 .blkb 10
000A .dbsym e OutBuffer _OutBuffer A[10:10]c
000A _InBuffer::
000A .blkb 256
010A .dbsym e InBuffer _InBuffer A[256:256]c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -