📄 uarttest.lis
字号:
.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 + -