⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 modem.lis

📁 微程序控制器采用ATMEL AVR MEGA162
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 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 + -