📄 uarttest.s
字号:
ldi R24,<_buff
ldi R25,>_buff
mov R30,R12
clr R31
add R30,R24
adc R31,R25
clr R2
std z+0,R2
.dbline 85
; }
.dbline 86
; }
.dbline 87
xjmp L15
L14:
.dbline 87
; }else{
.dbline 88
; if(f==0)buff[i]=INVAIL;
tst R22
brne L29
.dbline 88
ldi R24,<_buff
ldi R25,>_buff
mov R30,R12
clr R31
add R30,R24
adc R31,R25
clr R2
std z+0,R2
L29:
.dbline 89
; i++;
inc R12
.dbline 90
; i=i%BUFFLEN;bhead=i;
ldi R17,40
mov R16,R12
xcall mod8u
mov R12,R16
.dbline 90
sts _bhead,R12
.dbline 91
; }
L15:
.dbline 92
L12:
.dbline 51
cp R12,R10
breq X3
xjmp L11
X3:
.dbline -2
L10:
xcall pop_gset4
.dbline 0 ; func end
ret
.dbsym r j 20 c
.dbsym r t 20 c
.dbsym r f 22 c
.dbsym r tbend 10 c
.dbsym r i 12 c
.dbend
.dbfunc e Cmd_pro _Cmd_pro fV
; i -> R22
.even
_Cmd_pro::
xcall push_gset2
.dbline -1
.dbline 97
; }
;
; }
;
; void Cmd_pro(void)
; {uchar i;
.dbline 99
;
; if(ccnt>0)
clr R2
lds R3,_ccnt
cp R2,R3
brlo X5
xjmp L32
X5:
.dbline 100
; {
.dbline 101
; for(i=0;i<ccnt;i++)
clr R22
xjmp L37
L34:
.dbline 102
.dbline 103
ldi R24,3
mul R24,R22
ldi R24,<_cmd_buff+3
ldi R25,>_cmd_buff+3
movw R30,R0
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,<_cmd_buff
ldi R25,>_cmd_buff
movw R30,R0
add R30,R24
adc R31,R25
std z+0,R2
.dbline 104
ldi R24,3
mul R24,R22
ldi R24,<_cmd_buff+3
ldi R25,>_cmd_buff+3
movw R30,R0
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,<_cmd_buff+1
ldi R25,>_cmd_buff+1
movw R30,R0
add R30,R24
adc R31,R25
std z+0,R2
.dbline 105
ldi R24,3
mul R24,R22
ldi R24,<_cmd_buff+3
ldi R25,>_cmd_buff+3
movw R30,R0
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,<_cmd_buff+2
ldi R25,>_cmd_buff+2
movw R30,R0
add R30,R24
adc R31,R25
std z+0,R2
.dbline 107
ldi R16,91
ldi R17,0
xcall _putchar
.dbline 107
lds R16,_ccnt
clr R17
subi R16,208 ; offset = 48
sbci R17,255
xcall _putchar
.dbline 108
ldi R16,<L43
ldi R17,>L43
xcall _Send_Str
.dbline 109
lds R16,_cmd_buff
clr R17
xcall _putchar
.dbline 111
L35:
.dbline 101
inc R22
L37:
.dbline 101
lds R2,_ccnt
cp R22,R2
brsh X6
xjmp L34
X6:
.dbline 112
; {
; cmd_buff[i].cmd=cmd_buff[i+1].cmd;
; cmd_buff[i].dat1=cmd_buff[i+1].cmd;
; cmd_buff[i].dat2=cmd_buff[i+1].cmd;
;
; putchar('[');putchar(('0'+ccnt));
; Send_Str(":proCMD] A");
; putchar(cmd_buff[0].cmd);
;
; }
; ccnt--;
mov R24,R2
subi R24,1
sts _ccnt,R24
.dbline 114
;
; switch(cmd_buff[0].cmd)
lds R20,_cmd_buff
clr R21
cpi R20,80
ldi R30,0
cpc R21,R30
breq L55
ldi R24,80
ldi R25,0
cp R24,R20
cpc R25,R21
brlt L59
L58:
cpi R20,67
ldi R30,0
cpc R21,R30
breq L47
xjmp L44
L59:
cpi R20,87
ldi R30,0
cpc R21,R30
breq L49
cpi R20,88
ldi R30,0
cpc R21,R30
breq L51
cpi R20,89
ldi R30,0
cpc R21,R30
breq L53
xjmp L44
X4:
.dbline 115
; {
L47:
.dbline 116
; case CONNECT:Send_Str("connect A");break;
ldi R16,<L48
ldi R17,>L48
xcall _Send_Str
.dbline 116
xjmp L45
L49:
.dbline 117
; case WAIT :Send_Str("waiting A");break;
ldi R16,<L50
ldi R17,>L50
xcall _Send_Str
.dbline 117
xjmp L45
L51:
.dbline 118
; case MOVEX :Send_Str("movex A");break;
ldi R16,<L52
ldi R17,>L52
xcall _Send_Str
.dbline 118
xjmp L45
L53:
.dbline 119
; case MOVEY :Send_Str("movey A");break;
ldi R16,<L54
ldi R17,>L54
xcall _Send_Str
.dbline 119
xjmp L45
L55:
.dbline 120
; case MOVEXY :Send_Str("movexy A");break;
ldi R16,<L56
ldi R17,>L56
xcall _Send_Str
.dbline 120
xjmp L45
L44:
.dbline 121
; default:Send_Str("Inlegal Command!A");break;
ldi R16,<L57
ldi R17,>L57
xcall _Send_Str
.dbline 121
L45:
.dbline 123
L32:
.dbline -2
L31:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 22 c
.dbend
.area vector(rom, abs)
.org 72
jmp _ReceivePro
.area text(rom, con, rel)
.dbfile G:\我的毕设\指令处理程序\uarttest.c
.dbfunc e ReceivePro _ReceivePro fV
.even
_ReceivePro::
xcall push_lset
.dbline -1
.dbline 128
; }
; }
; }
;
; #pragma interrupt_handler ReceivePro:19
; void ReceivePro(void) //串口接受中断服务程序
; {
.dbline 129
; buff[bcnt]=UDR0;
ldi R24,<_buff
ldi R25,>_buff
lds R30,_bcnt
clr R31
add R30,R24
adc R31,R25
in R2,0xc
std z+0,R2
.dbline 130
; bcnt++;
lds R24,_bcnt
subi R24,255 ; addi 1
sts _bcnt,R24
.dbline 131
; bcnt=bcnt%(BUFFLEN);
ldi R17,40
mov R16,R24
xcall mod8u
sts _bcnt,R16
.dbline 133
;
; showbuff();
xcall _showbuff
.dbline -2
L60:
xcall pop_lset
.dbline 0 ; func end
reti
.dbend
.dbfunc e Send_Str _Send_Str fV
; str -> R20,R21
.even
_Send_Str::
xcall push_gset1
movw R20,R16
.dbline -1
.dbline 139
; //putchar('['); putchar('H'); putchar(':');putchar(bhead/10+'0');putchar(bhead%10+'0');putchar(']');
; //putchar('['); putchar('b'); putchar(':');putchar(bcnt/10+'0');putchar(bcnt%10+'0');putchar(']');
; }
;
; void Send_Str(uchar * str) //串口发送程序
; {
xjmp L63
L62:
.dbline 141
.dbline 142
movw R30,R20
ld R16,Z+
movw R20,R30
clr R17
xcall _putchar
.dbline 143
L63:
.dbline 140
; while(*str!=EOS)
movw R30,R20
ldd R24,z+0
cpi R24,65
brne L62
.dbline -2
L61:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r str 20 pc
.dbend
.dbfunc e USART_Init _USART_Init fV
; baud -> R16,R17
.even
_USART_Init::
.dbline -1
.dbline 146
; {
; putchar(*(str++));
; }
; }
; void USART_Init(unsigned int baud) //串口初始化
; {
.dbline 147
; UBRR0H=0;//(uchar) (baud>>8);
clr R2
sts 144,R2
.dbline 148
; UBRR0L=51;//(uchar) baud;
ldi R24,51
out 0x9,R24
.dbline 150
;
; UCSR0B=(1<<RXCIE0)|(1<<RXEN0)|(1<<TXEN0);
ldi R24,152
out 0xa,R24
.dbline 151
; UCSR0C=0x06;
ldi R24,6
sts 149,R24
.dbline -2
L65:
.dbline 0 ; func end
ret
.dbsym r baud 16 i
.dbend
.dbfunc e main _main fV
.even
_main::
.dbline -1
.dbline 155
; }
;
; void main()
; {
.dbline 156
; DDRB=0XFF;
ldi R24,255
out 0x17,R24
.dbline 157
; PORTB=0X01;
ldi R24,1
out 0x18,R24
.dbline 159
;
; USART_Init(0X06);
ldi R16,6
ldi R17,0
xcall _USART_Init
.dbline 160
; _SEI();
sei
.dbline 162
;
; showbuff();
xcall _showbuff
xjmp L68
L67:
.dbline 165
.dbline 166
xcall _Cmd_buffPro
.dbline 167
xcall _Cmd_pro
.dbline 168
L68:
.dbline 165
xjmp L67
X7:
.dbline -2
L66:
.dbline 0 ; func end
ret
.dbend
.area bss(ram, con, rel)
.dbfile G:\我的毕设\指令处理程序\uarttest.c
_buff::
.blkb 40
.dbsym e buff _buff A[40:40]c
.area data(ram, con, rel)
.dbfile G:\我的毕设\指令处理程序\uarttest.c
L57:
.blkb 18
.area idata
.byte 'I,'n,'l,'e,'g,'a,'l,32,'C,'o,'m,'m,'a,'n,'d,33
.byte 'A,0
.area data(ram, con, rel)
.dbfile G:\我的毕设\指令处理程序\uarttest.c
L56:
.blkb 9
.area idata
.byte 'm,'o,'v,'e,'x,'y,32,'A,0
.area data(ram, con, rel)
.dbfile G:\我的毕设\指令处理程序\uarttest.c
L54:
.blkb 8
.area idata
.byte 'm,'o,'v,'e,'y,32,'A,0
.area data(ram, con, rel)
.dbfile G:\我的毕设\指令处理程序\uarttest.c
L52:
.blkb 8
.area idata
.byte 'm,'o,'v,'e,'x,32,'A,0
.area data(ram, con, rel)
.dbfile G:\我的毕设\指令处理程序\uarttest.c
L50:
.blkb 10
.area idata
.byte 'w,'a,'i,'t,'i,'n,'g,32,'A,0
.area data(ram, con, rel)
.dbfile G:\我的毕设\指令处理程序\uarttest.c
L48:
.blkb 10
.area idata
.byte 'c,'o,'n,'n,'e,'c,'t,32,'A,0
.area data(ram, con, rel)
.dbfile G:\我的毕设\指令处理程序\uarttest.c
L43:
.blkb 11
.area idata
.byte 58,'p,'r,'o,'C,'M,'D,93,32,'A,0
.area data(ram, con, rel)
.dbfile G:\我的毕设\指令处理程序\uarttest.c
L9:
.blkb 5
.area idata
.byte 32,93,32,'A,0
.area data(ram, con, rel)
.dbfile G:\我的毕设\指令处理程序\uarttest.c
L2:
.blkb 10
.area idata
.byte 32,91,'B,'u,'f,'f,58,32,'A,0
.area data(ram, con, rel)
.dbfile G:\我的毕设\指令处理程序\uarttest.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -