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

📄 modem.lis

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