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

📄 uarttest.lis

📁 AVR 128 单片机 串口 自定义指令处理程序
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module uarttest.c
                        .area data(ram, con, rel)
 0000           _bcnt::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile G:\我的毕设\指令处理程序\uarttest.c
 0001                   .dbsym e bcnt _bcnt c
 0001           _bhead::
 0001                   .blkb 1
                        .area idata
 0001 00                .byte 0
                        .area data(ram, con, rel)
 0002                   .dbfile G:\我的毕设\指令处理程序\uarttest.c
 0002                   .dbsym e bhead _bhead c
 0002           _bend::
 0002                   .blkb 1
                        .area idata
 0002 00                .byte 0
                        .area data(ram, con, rel)
 0003                   .dbfile G:\我的毕设\指令处理程序\uarttest.c
 0003                   .dbsym e bend _bend c
 0003           _ccnt::
 0003                   .blkb 1
                        .area idata
 0003 00                .byte 0
                        .area data(ram, con, rel)
 0004                   .dbfile G:\我的毕设\指令处理程序\uarttest.c
 0004                   .dbsym e ccnt _ccnt c
 0004           _cmd_buff::
 0004                   .blkb 1
                        .area idata
 0004 00                .byte 0
                        .area data(ram, con, rel)
 0005                   .dbfile G:\我的毕设\指令处理程序\uarttest.c
 0005                   .blkb 1
                        .area idata
 0005 00                .byte 0
                        .area data(ram, con, rel)
 0006                   .dbfile G:\我的毕设\指令处理程序\uarttest.c
 0006                   .blkb 1
                        .area idata
 0006 00                .byte 0
                        .area data(ram, con, rel)
 0007                   .dbfile G:\我的毕设\指令处理程序\uarttest.c
 0007                   .blkb 42
                        .area idata
 0007 00000000000000000000      .word 0,0,0,0,0
 0011 00000000000000000000      .word 0,0,0,0,0
 001B 00000000000000000000      .word 0,0,0,0,0
 0025 00000000000000000000      .word 0,0,0,0,0
 002F 0000              .byte 0,0
                        .area data(ram, con, rel)
 0031                   .dbfile G:\我的毕设\指令处理程序\uarttest.c
 0031                   .dbstruct 0 3 COMMAND
 0031                   .dbfield 0 cmd c
 0031                   .dbfield 1 dat1 c
 0031                   .dbfield 2 dat2 c
 0031                   .dbend
 0031                   .dbsym e cmd_buff _cmd_buff A[45:15]S[COMMAND]
                        .area text(rom, con, rel)
 0000                   .dbfile G:\我的毕设\指令处理程序\uarttest.c
 0000                   .dbfunc e showbuff _showbuff fV
 0000           ;              i -> R20
                        .even
 0000           _showbuff::
 0000 0E940000          xcall push_gset1
 0004                   .dbline -1
 0004                   .dbline 34
 0004           ; #include <iom128v.h>
 0004           ; #include <macros.h>
 0004           ; 
 0004           ; #define CMD              'O' 
 0004           ; #define END              'E'
 0004           ; #define INVAIL           0
 0004           ; #define READY    'R'
 0004           ; #define BUSY     'B'
 0004           ; 
 0004           ; 
 0004           ; #define CONNECT          'C'  //连接
 0004           ; #define WAIT     'W'  //等待
 0004           ; #define MOVEX    'X'  //X移位
 0004           ; #define MOVEY    'Y'  //Y移位
 0004           ; #define       MOVEXY     'P'  //X-Y移位
 0004           ; 
 0004           ; #define  uchar           unsigned char
 0004           ; #define  EOS     'A'
 0004           ; #define BUFFLEN          40
 0004           ; #define CMDLEN           5
 0004           ; 
 0004           ; struct COMMAND{                               //指令结构
 0004           ;                          uchar cmd;
 0004           ;                          uchar dat1;
 0004           ;                          uchar dat2;
 0004           ;                          };
 0004           ; 
 0004           ; uchar buff[BUFFLEN],bcnt=00,bhead=0,bend=0;     //接受数据缓存 及计数器
 0004           ; unsigned char ccnt=0;                                           //指令队列计数器
 0004           ; struct COMMAND        cmd_buff[15]={{0,0,0}};           //指令队列
 0004           ; 
 0004           ; void Send_Str(uchar * str);
 0004           ; 
 0004           ; void showbuff(void){
 0004                   .dbline 36
 0004           ;                                       char i;
 0004           ;                                       Send_Str(" [Buff: A");
 0004 00E0              ldi R16,<L2
 0006 10E0              ldi R17,>L2
 0008 EDD1              xcall _Send_Str
 000A                   .dbline 37
 000A           ;                                       for(i=0;i<BUFFLEN;i++)
 000A 4427              clr R20
 000C 19C0              xjmp L6
 000E           L3:
 000E                   .dbline 38
 000E           ;                                                       {
 000E                   .dbline 39
 000E           ;                                                       if(buff[i]==INVAIL) putchar('-');
 000E 80E0              ldi R24,<_buff
 0010 90E0              ldi R25,>_buff
 0012 E42F              mov R30,R20
 0014 FF27              clr R31
 0016 E80F              add R30,R24
 0018 F91F              adc R31,R25
 001A 2080              ldd R2,z+0
 001C 2220              tst R2
 001E 29F4              brne L7
 0020                   .dbline 39
 0020 0DE2              ldi R16,45
 0022 10E0              ldi R17,0
 0024 0E940000          xcall _putchar
 0028 0AC0              xjmp L8
 002A           L7:
 002A                   .dbline 40
 002A           ;                                                       else putchar(buff[i]);
 002A 80E0              ldi R24,<_buff
 002C 90E0              ldi R25,>_buff
 002E E42F              mov R30,R20
 0030 FF27              clr R31
 0032 E80F              add R30,R24
 0034 F91F              adc R31,R25
 0036 0081              ldd R16,z+0
 0038 1127              clr R17
 003A 0E940000          xcall _putchar
 003E           L8:
 003E                   .dbline 41
 003E           L4:
 003E                   .dbline 37
 003E 4395              inc R20
 0040           L6:
 0040                   .dbline 37
 0040 4832              cpi R20,40
 0042 28F3              brlo L3
 0044                   .dbline 42
 0044           ;                                                       }
 0044           ;                                       Send_Str(" ] A");
 0044 00E0              ldi R16,<L9
 0046 10E0              ldi R17,>L9
 0048 CDD1              xcall _Send_Str
 004A                   .dbline 43
 004A           ;                                       putchar(' ');
 004A 00E2              ldi R16,32
 004C 10E0              ldi R17,0
 004E 0E940000          xcall _putchar
 0052                   .dbline -2
 0052           L1:
 0052 0E940000          xcall pop_gset1
 0056                   .dbline 0 ; func end
 0056 0895              ret
 0058                   .dbsym r i 20 c
 0058                   .dbend
 0058                   .dbfunc e Cmd_buffPro _Cmd_buffPro fV
 0058           ;              j -> R20
 0058           ;              t -> R20
 0058           ;              f -> R22
 0058           ;          tbend -> R10
 0058           ;              i -> R12
                        .even
 0058           _Cmd_buffPro::
 0058 0E940000          xcall push_gset4
 005C                   .dbline -1
 005C                   .dbline 47
 005C           ;                                       }
 005C           ; 
 005C           ; void Cmd_buffPro(void)
 005C           ;        {uchar i,j=0,tbend,t=0,f=0;
 005C                   .dbline 47
 005C 4427              clr R20
 005E                   .dbline 47
 005E                   .dbline 47
 005E 6627              clr R22
 0060                   .dbline 48
 0060           ;         tbend=bcnt;
 0060 A0900000          lds R10,_bcnt
 0064                   .dbline 49
 0064           ;         i=bhead;
 0064 C0900100          lds R12,_bhead
 0068 14C1              xjmp L12
 006A           L11:
 006A                   .dbline 52
 006A           ;         
 006A           ;         while(i!=tbend)
 006A           ;               {tbend=bcnt;
 006A                   .dbline 52
 006A A0900000          lds R10,_bcnt
 006E                   .dbline 53
 006E           ;               if(buff[i]==CMD)
 006E 80E0              ldi R24,<_buff
 0070 90E0              ldi R25,>_buff
 0072 EC2D              mov R30,R12
 0074 FF27              clr R31
 0076 E80F              add R30,R24
 0078 F91F              adc R31,R25
 007A 8081              ldd R24,z+0
 007C 8F34              cpi R24,79
 007E 09F0              breq X0
 0080 F6C0              xjmp L14
 0082           X0:
 0082                   .dbline 54
 0082           ;                       {
 0082                   .dbline 55
 0082           ;                       f=1;
 0082 61E0              ldi R22,1
 0084                   .dbline 57
 0084           ;       
 0084           ;                       if(bhead<=tbend)
 0084 20900100          lds R2,_bhead
 0088 A214              cp R10,R2
 008A C8F0              brlo L16
 008C                   .dbline 58
 008C           ;                               {
 008C                   .dbline 59
 008C 28E2              ldi R18,40
 008E 30E0              ldi R19,0
 0090 0C2D              mov R16,R12
 0092 1127              clr R17
 0094 0B5F              subi R16,251  ; offset = 5
 0096 1F4F              sbci R17,255
 0098 0150              subi R16,1
 009A 1040              sbci R17,0
 009C 0E940000          xcall mod16s
 00A0 20900100          lds R2,_bhead
 00A4 3324              clr R3
 00A6 2016              cp R2,R16
 00A8 3106              cpc R3,R17
 00AA 3CF4              brge L18
 00AC 2A2C              mov R2,R10
 00AE 3324              clr R3
 00B0 0215              cp R16,R2
 00B2 1305              cpc R17,R3
 00B4 14F4              brge L18
 00B6                   .dbline 59
 00B6 41E0              ldi R20,1
 00B8 1AC0              xjmp L17
 00BA           L18:
 00BA                   .dbline 59
 00BA           ;                               if((((i+CMDLEN-1)%BUFFLEN>bhead)&&((i+CMDLEN-1)%BUFFLEN<tbend))) t=1;else t=0;
 00BA 4427              clr R20
 00BC                   .dbline 60
 00BC 18C0              xjmp L17
 00BE           L16:
 00BE                   .dbline 60
 00BE           ;                               }else {
 00BE                   .dbline 61
 00BE 28E2              ldi R18,40
 00C0 30E0              ldi R19,0
 00C2 0C2D              mov R16,R12
 00C4 1127              clr R17
 00C6 0B5F              subi R16,251  ; offset = 5
 00C8 1F4F              sbci R17,255
 00CA 0150              subi R16,1
 00CC 1040              sbci R17,0
 00CE 0E940000          xcall mod16s
 00D2 20900100          lds R2,_bhead
 00D6 3324              clr R3
 00D8 2016              cp R2,R16
 00DA 3106              cpc R3,R17
 00DC 2CF0              brlt L22
 00DE 2A2C              mov R2,R10
 00E0 3324              clr R3
 00E2 0215              cp R16,R2
 00E4 1305              cpc R17,R3
 00E6 14F4              brge L20
 00E8           L22:
 00E8                   .dbline 61
 00E8 41E0              ldi R20,1
 00EA 01C0              xjmp L21
 00EC           L20:
 00EC                   .dbline 61
 00EC           ;                                         if((((i+CMDLEN-1)%BUFFLEN>bhead)||((i+CMDLEN-1)%BUFFLEN<tbend))) t=1;else t=0;
 00EC 4427              clr R20
 00EE           L21:
 00EE                   .dbline 62
 00EE           ;                                         }
 00EE           L17:
 00EE                   .dbline 63
 00EE           ;                       if(t)
 00EE 4423              tst R20
 00F0 09F4              brne X1
 00F2 CFC0              xjmp L15
 00F4           X1:
 00F4                   .dbline 64
 00F4           ;                               {
 00F4                   .dbline 65
 00F4           ;                               if(buff[(i+CMDLEN-1)%BUFFLEN]==END)
 00F4 28E2              ldi R18,40
 00F6 30E0              ldi R19,0
 00F8 0C2D              mov R16,R12
 00FA 1127              clr R17
 00FC 0B5F              subi R16,251  ; offset = 5
 00FE 1F4F              sbci R17,255
 0100 0150              subi R16,1
 0102 1040              sbci R17,0
 0104 0E940000          xcall mod16s
 0108 F801              movw R30,R16
 010A 80E0              ldi R24,<_buff
 010C 90E0              ldi R25,>_buff
 010E E80F              add R30,R24
 0110 F91F              adc R31,R25
 0112 8081              ldd R24,z+0
 0114 8534              cpi R24,69
 0116 09F0              breq X2
 0118 A0C0              xjmp L25
 011A           X2:
 011A                   .dbline 66
 011A           ;                                       {
 011A                   .dbline 67
 011A           ;                                       f=0;
 011A 6627              clr R22
 011C                   .dbline 72
 011C           ;                                       
 011C           ;                                       //Send_Str(" [CMD] A");j++;
 011C           ;                                       //putchar(j+'0');
 011C           ;                                
 011C           ;                                       ccnt=ccnt+1;buff[i%BUFFLEN]=INVAIL;
 011C 80910300          lds R24,_ccnt
 0120 8F5F              subi R24,255    ; addi 1
 0122 80930300          sts _ccnt,R24

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -