📄 uarttest.lst
字号:
(0100) {
(0101) for(i=0;i<ccnt;i++)
0203 2766 CLR R22
0204 C03E RJMP 0x0243
(0102) {
(0103) cmd_buff[i].cmd=cmd_buff[i+1].cmd;
0205 E083 LDI R24,3
0206 9F86 MUL R24,R22
0207 E087 LDI R24,7
0208 E091 LDI R25,1
0209 01F0 MOVW R30,R0
020A 0FE8 ADD R30,R24
020B 1FF9 ADC R31,R25
020C 8020 LDD R2,Z+0
020D E084 LDI R24,4
020E E091 LDI R25,1
020F 01F0 MOVW R30,R0
0210 0FE8 ADD R30,R24
0211 1FF9 ADC R31,R25
0212 8220 STD Z+0,R2
(0104) cmd_buff[i].dat1=cmd_buff[i+1].cmd;
0213 E083 LDI R24,3
0214 9F86 MUL R24,R22
0215 E087 LDI R24,7
0216 E091 LDI R25,1
0217 01F0 MOVW R30,R0
0218 0FE8 ADD R30,R24
0219 1FF9 ADC R31,R25
021A 8020 LDD R2,Z+0
021B E085 LDI R24,5
021C E091 LDI R25,1
021D 01F0 MOVW R30,R0
021E 0FE8 ADD R30,R24
021F 1FF9 ADC R31,R25
0220 8220 STD Z+0,R2
(0105) cmd_buff[i].dat2=cmd_buff[i+1].cmd;
0221 E083 LDI R24,3
0222 9F86 MUL R24,R22
0223 E087 LDI R24,7
0224 E091 LDI R25,1
0225 01F0 MOVW R30,R0
0226 0FE8 ADD R30,R24
0227 1FF9 ADC R31,R25
0228 8020 LDD R2,Z+0
0229 E086 LDI R24,6
022A E091 LDI R25,1
022B 01F0 MOVW R30,R0
022C 0FE8 ADD R30,R24
022D 1FF9 ADC R31,R25
022E 8220 STD Z+0,R2
(0106)
(0107) putchar('[');putchar(('0'+ccnt));
022F E50B LDI R16,0x5B
0230 E010 LDI R17,0
0231 940E036D CALL _putchar
0233 91000103 LDS R16,ccnt
0235 2711 CLR R17
0236 5D00 SUBI R16,0xD0
0237 4F1F SBCI R17,0xFF
0238 940E036D CALL _putchar
(0108) Send_Str(":proCMD] A");
023A E700 LDI R16,0x70
023B E011 LDI R17,1
023C D061 RCALL _Send_Str
(0109) putchar(cmd_buff[0].cmd);
023D 91000104 LDS R16,cmd_buff
023F 2711 CLR R17
0240 940E036D CALL _putchar
0242 9563 INC R22
0243 90200103 LDS R2,ccnt
0245 1562 CP R22,R2
0246 F408 BCC 0x0248
0247 CFBD RJMP 0x0205
(0110)
(0111) }
(0112) ccnt--;
0248 2D82 MOV R24,R2
0249 5081 SUBI R24,1
024A 93800103 STS ccnt,R24
(0113)
(0114) switch(cmd_buff[0].cmd)
024C 91400104 LDS R20,cmd_buff
024E 2755 CLR R21
024F 3540 CPI R20,0x50
0250 E0E0 LDI R30,0
0251 075E CPC R21,R30
0252 F139 BEQ 0x027A
0253 E580 LDI R24,0x50
0254 E090 LDI R25,0
0255 1784 CP R24,R20
0256 0795 CPC R25,R21
0257 F02C BLT 0x025D
0258 3443 CPI R20,0x43
0259 E0E0 LDI R30,0
025A 075E CPC R21,R30
025B F071 BEQ 0x026A
025C C021 RJMP 0x027E
025D 3547 CPI R20,0x57
025E E0E0 LDI R30,0
025F 075E CPC R21,R30
0260 F069 BEQ 0x026E
0261 3548 CPI R20,0x58
0262 E0E0 LDI R30,0
0263 075E CPC R21,R30
0264 F069 BEQ 0x0272
0265 3549 CPI R20,0x59
0266 E0E0 LDI R30,0
0267 075E CPC R21,R30
0268 F069 BEQ 0x0276
0269 C014 RJMP 0x027E
(0115) {
(0116) case CONNECT:Send_Str("connect A");break;
026A E606 LDI R16,0x66
026B E011 LDI R17,1
026C D031 RCALL _Send_Str
026D C013 RJMP 0x0281
(0117) case WAIT :Send_Str("waiting A");break;
026E E50C LDI R16,0x5C
026F E011 LDI R17,1
0270 D02D RCALL _Send_Str
0271 C00F RJMP 0x0281
(0118) case MOVEX :Send_Str("movex A");break;
0272 E504 LDI R16,0x54
0273 E011 LDI R17,1
0274 D029 RCALL _Send_Str
0275 C00B RJMP 0x0281
(0119) case MOVEY :Send_Str("movey A");break;
0276 E40C LDI R16,0x4C
0277 E011 LDI R17,1
0278 D025 RCALL _Send_Str
0279 C007 RJMP 0x0281
(0120) case MOVEXY :Send_Str("movexy A");break;
027A E403 LDI R16,0x43
027B E011 LDI R17,1
027C D021 RCALL _Send_Str
027D C003 RJMP 0x0281
(0121) default:Send_Str("Inlegal Command!A");break;
027E E301 LDI R16,0x31
027F E011 LDI R17,1
0280 D01D RCALL _Send_Str
(0122) }
(0123) }
0281 940E031A CALL pop_gset2
0283 9508 RET
_ReceivePro:
0284 940E033F CALL push_lset
(0124) }
(0125)
(0126) #pragma interrupt_handler ReceivePro:19
(0127) void ReceivePro(void) //串口接受中断服务程序
(0128) {
(0129) buff[bcnt]=UDR0;
0286 E88A LDI R24,0x8A
0287 E091 LDI R25,1
0288 91E00100 LDS R30,bcnt
028A 27FF CLR R31
028B 0FE8 ADD R30,R24
028C 1FF9 ADC R31,R25
028D B02C IN R2,0x0C
028E 8220 STD Z+0,R2
(0130) bcnt++;
028F 91800100 LDS R24,bcnt
0291 5F8F SUBI R24,0xFF
0292 93800100 STS bcnt,R24
(0131) bcnt=bcnt%(BUFFLEN);
0294 E218 LDI R17,0x28
0295 2F08 MOV R16,R24
0296 940E0302 CALL mod8u
0298 93000100 STS bcnt,R16
(0132)
(0133) showbuff();
029A DE11 RCALL _showbuff
029B 940E0356 CALL pop_lset
029D 9518 RETI
_Send_Str:
str --> R20
029E 940E0328 CALL push_gset1
02A0 01A8 MOVW R20,R16
(0134) //putchar('['); putchar('H'); putchar(':');putchar(bhead/10+'0');putchar(bhead%10+'0');putchar(']');
(0135) //putchar('['); putchar('b'); putchar(':');putchar(bcnt/10+'0');putchar(bcnt%10+'0');putchar(']');
(0136) }
(0137)
(0138) void Send_Str(uchar * str) //串口发送程序
(0139) {
02A1 C006 RJMP 0x02A8
(0140) while(*str!=EOS)
(0141) {
(0142) putchar(*(str++));
02A2 01FA MOVW R30,R20
02A3 9101 LD R16,Z+
02A4 01AF MOVW R20,R30
02A5 2711 CLR R17
02A6 940E036D CALL _putchar
02A8 01FA MOVW R30,R20
02A9 8180 LDD R24,Z+0
02AA 3481 CPI R24,0x41
02AB F7B1 BNE 0x02A2
02AC 940E032B CALL pop_gset1
02AE 9508 RET
(0143) }
(0144) }
(0145) void USART_Init(unsigned int baud) //串口初始化
(0146) {
(0147) UBRR0H=0;//(uchar) (baud>>8);
_USART_Init:
baud --> R16
02AF 2422 CLR R2
02B0 92200090 STS 0x90,R2
(0148) UBRR0L=51;//(uchar) baud;
02B2 E383 LDI R24,0x33
02B3 B989 OUT 0x09,R24
(0149)
(0150) UCSR0B=(1<<RXCIE0)|(1<<RXEN0)|(1<<TXEN0);
02B4 E988 LDI R24,0x98
02B5 B98A OUT 0x0A,R24
(0151) UCSR0C=0x06;
02B6 E086 LDI R24,6
02B7 93800095 STS 0x95,R24
02B9 9508 RET
(0152) }
(0153)
(0154) void main()
(0155) {
(0156) DDRB=0XFF;
_main:
02BA EF8F LDI R24,0xFF
02BB BB87 OUT 0x17,R24
(0157) PORTB=0X01;
02BC E081 LDI R24,1
02BD BB88 OUT 0x18,R24
(0158)
(0159) USART_Init(0X06);
02BE E006 LDI R16,6
02BF E010 LDI R17,0
02C0 DFEE RCALL _USART_Init
(0160) _SEI();
02C1 9478 BSET 7
(0161)
(0162) showbuff();
02C2 DDE9 RCALL _showbuff
02C3 C002 RJMP 0x02C6
(0163)
(0164) //Send_Str("C=connect W=wait X=movex Y=movey P=movexy A");
(0165) while(1) {
(0166) Cmd_buffPro();
02C4 DE13 RCALL _Cmd_buffPro
(0167) Cmd_pro();
FILE: <library>
02C5 DF35 RCALL _Cmd_pro
02C6 CFFD RJMP 0x02C4
02C7 9508 RET
mod16s:
02C8 9468 BSET 6
02C9 92DA ST R13,-Y
02CA 2ED1 MOV R13,R17
02CB C004 RJMP 0x02D0
div16s:
02CC 94E8 BCLR 6
02CD 92DA ST R13,-Y
02CE 2ED1 MOV R13,R17
02CF 26D3 EOR R13,R19
02D0 FF17 SBRS R17,7
02D1 C004 RJMP 0x02D6
02D2 9510 COM R17
02D3 9500 COM R16
02D4 5F0F SUBI R16,0xFF
02D5 4F1F SBCI R17,0xFF
02D6 FF37 SBRS R19,7
02D7 C004 RJMP 0x02DC
02D8 9530 COM R19
02D9 9520 COM R18
02DA 5F2F SUBI R18,0xFF
02DB 4F3F SBCI R19,0xFF
02DC 940E02E9 CALL xdiv16u
02DE FED7 SBRS R13,7
02DF C004 RJMP 0x02E4
02E0 9510 COM R17
02E1 9500 COM R16
02E2 5F0F SUBI R16,0xFF
02E3 4F1F SBCI R17,0xFF
02E4 90D9 LD R13,Y+
02E5 9508 RET
mod16u:
02E6 9468 BSET 6
02E7 C001 RJMP xdiv16u
div16u:
02E8 94E8 BCLR 6
xdiv16u:
02E9 92EA ST R14,-Y
02EA 92FA ST R15,-Y
02EB 938A ST R24,-Y
02EC 24EE CLR R14
02ED 24FF CLR R15
02EE E180 LDI R24,0x10
02EF 0F00 LSL R16
02F0 1F11 ROL R17
02F1 1CEE ROL R14
02F2 1CFF ROL R15
02F3 16E2 CP R14,R18
02F4 06F3 CPC R15,R19
02F5 F018 BCS 0x02F9
02F6 1AE2 SUB R14,R18
02F7 0AF3 SBC R15,R19
02F8 9503 INC R16
02F9 958A DEC R24
02FA F7A1 BNE 0x02EF
02FB F416 BRTC 0x02FE
02FC 2D0E MOV R16,R14
02FD 2D1F MOV R17,R15
02FE 9189 LD R24,Y+
02FF 90F9 LD R15,Y+
0300 90E9 LD R14,Y+
0301 9508 RET
mod8u:
0302 9468 BSET 6
0303 C001 RJMP xdiv8u
div8u:
0304 94E8 BCLR 6
xdiv8u:
0305 932A ST R18,-Y
0306 92FA ST R15,-Y
0307 92EA ST R14,-Y
0308 24FF CLR R15
0309 24EE CLR R14
030A E120 LDI R18,0x10
030B 0F00 LSL R16
030C 1CFF ROL R15
030D 1CEE ROL R14
030E 16E1 CP R14,R17
030F F010 BCS 0x0312
0310 1AE1 SUB R14,R17
0311 9503 INC R16
0312 952A DEC R18
0313 F7B9 BNE 0x030B
0314 F40E BRTC 0x0316
0315 2D0E MOV R16,R14
0316 90E9 LD R14,Y+
0317 90F9 LD R15,Y+
0318 9129 LD R18,Y+
0319 9508 RET
pop_gset2:
031A E0E2 LDI R30,2
031B 940C032C JMP pop
pop_gset4:
031D E0E8 LDI R30,0x8
031E 940C032C JMP pop
push_gset5:
0320 92FA ST R15,-Y
0321 92EA ST R14,-Y
push_gset4:
0322 92DA ST R13,-Y
0323 92CA ST R12,-Y
push_gset3:
0324 92BA ST R11,-Y
0325 92AA ST R10,-Y
push_gset2:
0326 937A ST R23,-Y
0327 936A ST R22,-Y
push_gset1:
0328 935A ST R21,-Y
0329 934A ST R20,-Y
032A 9508 RET
pop_gset1:
032B E0E1 LDI R30,1
pop:
032C 9149 LD R20,Y+
032D 9159 LD R21,Y+
032E FDE0 SBRC R30,0
032F 9508 RET
0330 9169 LD R22,Y+
0331 9179 LD R23,Y+
0332 FDE1 SBRC R30,1
0333 9508 RET
0334 90A9 LD R10,Y+
0335 90B9 LD R11,Y+
0336 FDE2 SBRC R30,2
0337 9508 RET
0338 90C9 LD R12,Y+
0339 90D9 LD R13,Y+
033A FDE3 SBRC R30,3
033B 9508 RET
033C 90E9 LD R14,Y+
033D 90F9 LD R15,Y+
033E 9508 RET
push_lset:
033F 93FA ST R31,-Y
0340 93EA ST R30,-Y
0341 93BA ST R27,-Y
0342 93AA ST R26,-Y
0343 939A ST R25,-Y
0344 938A ST R24,-Y
0345 933A ST R19,-Y
0346 932A ST R18,-Y
0347 931A ST R17,-Y
0348 930A ST R16,-Y
0349 929A ST R9,-Y
034A 928A ST R8,-Y
034B 927A ST R7,-Y
034C 926A ST R6,-Y
034D 925A ST R5,-Y
034E 924A ST R4,-Y
034F 923A ST R3,-Y
0350 922A ST R2,-Y
0351 921A ST R1,-Y
0352 920A ST R0,-Y
0353 B60F IN R0,0x3F
0354 920A ST R0,-Y
0355 9508 RET
pop_lset:
0356 9009 LD R0,Y+
0357 BE0F OUT 0x3F,R0
0358 9009 LD R0,Y+
0359 9019 LD R1,Y+
035A 9029 LD R2,Y+
035B 9039 LD R3,Y+
035C 9049 LD R4,Y+
035D 9059 LD R5,Y+
035E 9069 LD R6,Y+
035F 9079 LD R7,Y+
0360 9089 LD R8,Y+
0361 9099 LD R9,Y+
0362 9109 LD R16,Y+
0363 9119 LD R17,Y+
0364 9129 LD R18,Y+
0365 9139 LD R19,Y+
0366 9189 LD R24,Y+
0367 9199 LD R25,Y+
0368 91A9 LD R26,Y+
0369 91B9 LD R27,Y+
036A 91E9 LD R30,Y+
036B 91F9 LD R31,Y+
036C 9508 RET
_putchar:
036D 940E0328 CALL push_gset1
036F 2F40 MOV R20,R16
0370 902001B2 LDS R2,_textmode
0372 903001B3 LDS R3,_textmode+1
0374 2022 TST R2
0375 F411 BNE 0x0378
0376 2033 TST R3
0377 F021 BEQ 0x037C
0378 304A CPI R20,0xA
0379 F411 BNE 0x037C
037A E00D LDI R16,0xD
037B DFF1 RCALL _putchar
037C 9B5D SBIS 0x0B,5
037D CFFE RJMP 0x037C
037E B94C OUT 0x0C,R20
037F 2F04 MOV R16,R20
0380 2711 CLR R17
0381 940E032B CALL pop_gset1
0383 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -