📄 8.lst
字号:
03E9 D0F1 RCALL _risemotor
(0100) delay_ms(1200);
03EA EB00 LDI R16,0xB0
03EB E014 LDI R17,4
03EC D17B RCALL _delay_ms
(0101) risemotor('s');
03ED E703 LDI R16,0x73
03EE E010 LDI R17,0
03EF D0EB RCALL _risemotor
(0102)
(0103) }break;
03F0 C0E6 RJMP 0x04D7
(0104) case PUSH2GO:
(0105) {
(0106) pushmotor2('g'); //推块电机下
03F1 E607 LDI R16,0x67
03F2 E010 LDI R17,0
03F3 D107 RCALL _pushmotor2
(0107) delay_ms(2000);
03F4 ED00 LDI R16,0xD0
03F5 E017 LDI R17,7
03F6 D171 RCALL _delay_ms
(0108) pushmotor2('s');
03F7 E703 LDI R16,0x73
03F8 E010 LDI R17,0
03F9 D101 RCALL _pushmotor2
(0109) }break;
03FA C0DC RJMP 0x04D7
(0110) case PUSH2BACK:
(0111) {
(0112) pushmotor2('b'); //推块电机下
03FB E602 LDI R16,0x62
03FC E010 LDI R17,0
03FD D0FD RCALL _pushmotor2
(0113) delay_ms(2000);
03FE ED00 LDI R16,0xD0
03FF E017 LDI R17,7
0400 D167 RCALL _delay_ms
(0114) pushmotor2('s');
0401 E703 LDI R16,0x73
0402 E010 LDI R17,0
0403 D0F7 RCALL _pushmotor2
(0115) }break;
0404 C0D2 RJMP 0x04D7
(0116) case PUSH1GO:
(0117) {
(0118) pushmotor1('g'); //推块电机上
0405 E607 LDI R16,0x67
0406 E010 LDI R17,0
0407 D113 RCALL _pushmotor1
(0119) delay_ms(1500);
0408 ED0C LDI R16,0xDC
0409 E015 LDI R17,5
040A D15D RCALL _delay_ms
(0120) pushmotor1('s');
040B E703 LDI R16,0x73
040C E010 LDI R17,0
040D D10D RCALL _pushmotor1
(0121)
(0122) }break;
040E C0C8 RJMP 0x04D7
(0123)
(0124)
(0125) case PID_RESET : // 系统复位(RESET)
(0126) {
(0127) L_PIDInit ();
040F DC33 RCALL _L_PIDInit
(0128) TCNT0 = 0;
0410 2422 CLR R2
0411 BE22 OUT 0x32,R2
(0129) num_H = 0;
(0130) Num_Speed = 0;
0412 92200060 STS 0x60,R2
0414 2433 CLR R3
0415 92300062 STS 0x62,R3
0417 92200061 STS 0x61,R2
(0131) //write7279(DECODE1+0,5);
(0132) }break;
0419 C0BD RJMP 0x04D7
(0133) case FREE_STOP:
(0134) {
(0135) TCCR2 = 0x00; //start计数器2不工作
041A 2422 CLR R2
041B BC25 OUT 0x25,R2
(0136) PID_choice = 0xff;
(0137) //write7279(DECODE1+7,1);
(0138) free_stop ( );
041C EF8F LDI R24,0xFF
041D 93800063 STS 0x63,R24
041F D2C0 RCALL _free_stop
(0139) }break;
0420 C0B6 RJMP 0x04D7
(0140) case SPEED_SET :
(0141) {
(0142) temp_int = rev_buf[1];
(0143) temp_int <<= 8;
(0144) temp_int += rev_buf[2];
(0145) L_sPID.vi_Ref = temp_int;
(0146) //dis_data(0, 7,L_sPID.vi_Ref);
(0147) PID_choice = SPEED_SET;
(0148) TCCR2 = 0x07; //start选择分频源1024
0421 90A00068 LDS R10,0x68
0423 24BB CLR R11
0424 2CBA MOV R11,R10
0425 24AA CLR R10
0426 90200069 LDS R2,0x69
0428 2433 CLR R3
0429 0CA2 ADD R10,R2
042A 1CB3 ADC R11,R3
042B 92B00080 STS _L_sPID+1,R11
042D 92A0007F STS _L_sPID,R10
042F E880 LDI R24,0x80
0430 93800063 STS 0x63,R24
0432 E087 LDI R24,7
0433 BD85 OUT 0x25,R24
(0149) }break;
0434 C0A2 RJMP 0x04D7
(0150) case DISTANCE_SET :
(0151) {
(0152) temp_long = rev_buf[1];
(0153) temp_long <<= 8;
(0154)
(0155) temp_long += rev_buf[2];
(0156) temp_long <<= 8;
(0157)
(0158) temp_long += rev_buf[3];
(0159) temp_long <<= 8;
(0160)
(0161) temp_long += rev_buf[4];
(0162)
(0163) L_sPID.si_Ref = temp_long;
0435 90200068 LDS R2,0x68
0437 2433 CLR R3
0438 2444 CLR R4
0439 2455 CLR R5
043A 01FE MOVW R30,R28
043B 8220 STD Z+0,R2
043C 8231 STD Z+1,R3
043D 8242 STD Z+2,R4
043E 8253 STD Z+3,R5
043F E088 LDI R24,0x8
0440 E090 LDI R25,0
0441 01FE MOVW R30,R28
0442 8020 LDD R2,Z+0
0443 8031 LDD R3,Z+1
0444 8042 LDD R4,Z+2
0445 8053 LDD R5,Z+3
0446 938A ST R24,-Y
0447 0181 MOVW R16,R2
0448 0192 MOVW R18,R4
0449 D376 RCALL lsl32
044A 01FE MOVW R30,R28
044B 8300 STD Z+0,R16
044C 8311 STD Z+1,R17
044D 8322 STD Z+2,R18
044E 8333 STD Z+3,R19
044F 90200069 LDS R2,0x69
0451 2433 CLR R3
0452 2444 CLR R4
0453 2455 CLR R5
0454 01FE MOVW R30,R28
0455 8060 LDD R6,Z+0
0456 8071 LDD R7,Z+1
0457 8082 LDD R8,Z+2
0458 8093 LDD R9,Z+3
0459 0C62 ADD R6,R2
045A 1C73 ADC R7,R3
045B 1C84 ADC R8,R4
045C 1C95 ADC R9,R5
045D 01FE MOVW R30,R28
045E 8260 STD Z+0,R6
045F 8271 STD Z+1,R7
0460 8282 STD Z+2,R8
0461 8293 STD Z+3,R9
0462 E088 LDI R24,0x8
0463 E090 LDI R25,0
0464 01FE MOVW R30,R28
0465 8020 LDD R2,Z+0
0466 8031 LDD R3,Z+1
0467 8042 LDD R4,Z+2
0468 8053 LDD R5,Z+3
0469 938A ST R24,-Y
046A 0181 MOVW R16,R2
046B 0192 MOVW R18,R4
046C D353 RCALL lsl32
046D 01FE MOVW R30,R28
046E 8300 STD Z+0,R16
046F 8311 STD Z+1,R17
0470 8322 STD Z+2,R18
0471 8333 STD Z+3,R19
0472 9020006A LDS R2,0x6A
0474 2433 CLR R3
0475 2444 CLR R4
0476 2455 CLR R5
0477 01FE MOVW R30,R28
0478 8060 LDD R6,Z+0
0479 8071 LDD R7,Z+1
047A 8082 LDD R8,Z+2
047B 8093 LDD R9,Z+3
047C 0C62 ADD R6,R2
047D 1C73 ADC R7,R3
047E 1C84 ADC R8,R4
047F 1C95 ADC R9,R5
0480 01FE MOVW R30,R28
0481 8260 STD Z+0,R6
0482 8271 STD Z+1,R7
0483 8282 STD Z+2,R8
0484 8293 STD Z+3,R9
0485 E088 LDI R24,0x8
0486 E090 LDI R25,0
0487 01FE MOVW R30,R28
0488 8020 LDD R2,Z+0
0489 8031 LDD R3,Z+1
048A 8042 LDD R4,Z+2
048B 8053 LDD R5,Z+3
048C 938A ST R24,-Y
048D 0181 MOVW R16,R2
048E 0192 MOVW R18,R4
048F D330 RCALL lsl32
0490 01FE MOVW R30,R28
0491 8300 STD Z+0,R16
0492 8311 STD Z+1,R17
0493 8322 STD Z+2,R18
0494 8333 STD Z+3,R19
0495 9020006B LDS R2,0x6B
0497 2433 CLR R3
0498 2444 CLR R4
0499 2455 CLR R5
049A 01FE MOVW R30,R28
049B 8060 LDD R6,Z+0
049C 8071 LDD R7,Z+1
049D 8082 LDD R8,Z+2
049E 8093 LDD R9,Z+3
049F 0C62 ADD R6,R2
04A0 1C73 ADC R7,R3
04A1 1C84 ADC R8,R4
04A2 1C95 ADC R9,R5
04A3 01FE MOVW R30,R28
04A4 8260 STD Z+0,R6
04A5 8271 STD Z+1,R7
04A6 8282 STD Z+2,R8
04A7 8293 STD Z+3,R9
04A8 01FE MOVW R30,R28
04A9 8020 LDD R2,Z+0
04AA 8031 LDD R3,Z+1
04AB 8042 LDD R4,Z+2
04AC 8053 LDD R5,Z+3
04AD 92300084 STS 0x84,R3
04AF 92200083 STS 0x83,R2
04B1 92500086 STS 0x86,R5
04B3 92400085 STS 0x85,R4
(0164)
(0165) //dis_data(0, 7, temp_long);
(0166)
(0167) //dis_data(0, 7,L_sPID.si_Ref);
(0168)
(0169) PID_choice = DISTANCE_SET;
(0170)
(0171) TCCR2 = 0x07; //start选择分频源1024
04B5 E980 LDI R24,0x90
04B6 93800063 STS 0x63,R24
04B8 E087 LDI R24,7
04B9 BD85 OUT 0x25,R24
(0172) }break;
(0173) default:break;
(0174)
(0175) }//end switch
(0176)
(0177) }//end if
(0178) }
04BA C01C RJMP 0x04D7
(0179) else //从机发送数据
(0180) {
(0181) if (i < data_long)
04BB 9020007E LDS R2,0x7E
04BD 9030007B LDS R3,0x7B
04BF 1432 CP R3,R2
04C0 F468 BCC 0x04CE
(0182) {
(0183) SPDR = send_buf[i];
04C1 E781 LDI R24,0x71
04C2 E090 LDI R25,0
04C3 2DE3 MOV R30,R3
04C4 27FF CLR R31
04C5 0FE8 ADD R30,R24
04C6 1FF9 ADC R31,R25
04C7 8020 LDD R2,Z+0
04C8 B82F OUT 0x0F,R2
(0184) i++;
04C9 2D83 MOV R24,R3
04CA 5F8F SUBI R24,0xFF
04CB 9380007B STS 0x7B,R24
(0185) }
04CD C009 RJMP 0x04D7
(0186) else
(0187) {
(0188) i = 0;
(0189) start_trans_flag = 0;
(0190) data_long = 0;
(0191) com_flag = 0x00;
04CE 2422 CLR R2
04CF 9220007B STS 0x7B,R2
04D1 9220007C STS 0x7C,R2
04D3 9220007E STS 0x7E,R2
04D5 9220007D STS 0x7D,R2
(0192)
(0193) /*send_buf[0] = 8;
(0194) send_buf[1] = 7;
(0195) send_buf[2] = 6;
(0196) send_buf[3] = 5;
(0197) send_buf[4] = 4;
(0198) send_buf[5] = 3;
(0199) send_buf[6] = 2;
(0200) send_buf[7] = 1;*/
(0201) }//end if
(0202)
(0203) }
(0204)
(0205) }
(0206)
(0207) }
04D7 9624 ADIW R28,4
04D8 D272 RCALL pop_gset4
04D9 D2CF RCALL pop_lset
04DA 9518 RETI
_risemotor:
m --> R16
04DB D271 RCALL push_gset1
(0208)
(0209) void risemotor(unsigned char m)
(0210) {
(0211) switch(m)
04DC 2F40 MOV R20,R16
04DD 2755 CLR R21
04DE 3647 CPI R20,0x67
04DF E0E0 LDI R30,0
04E0 075E CPC R21,R30
04E1 F079 BEQ 0x04F1
04E2 E687 LDI R24,0x67
04E3 E090 LDI R25,0
04E4 1784 CP R24,R20
04E5 0795 CPC R25,R21
04E6 F02C BLT 0x04EC
04E7 3642 CPI R20,0x62
04E8 E0E0 LDI R30,0
04E9 075E CPC R21,R30
04EA F049 BEQ 0x04F4
04EB C00D RJMP 0x04F9
04EC 3743 CPI R20,0x73
04ED E0E0 LDI R30,0
04EE 075E CPC R21,R30
04EF F039 BEQ 0x04F7
04F0 C008 RJMP 0x04F9
(0212) {case 'g':PORTD&=~0x40;PORTD|=0x80;break;
04F1 9896 CBI 0x12,6
04F2 9A97 SBI 0x12,7
04F3 C005 RJMP 0x04F9
(0213) case 'b':PORTD|=0x40;PORTD|=0x80;break;
04F4 9A96 SBI 0x12,6
04F5 9A97 SBI 0x12,7
04F6 C002 RJMP 0x04F9
(0214) case 's': PORTD&=~0x40;PORTD&=~0x80;break;
04F7 9896 CBI 0x12,6
04F8 9897 CBI 0x12,7
(0215) default:break;
(0216) }
(0217) }
04F9 D256 RCALL pop_gset1
04FA 9508 RET
_pushmotor2:
m --> R16
04FB D251 RCALL push_gset1
(0218)
(0219) void pushmotor2(unsigned char m)
(0220) {
(0221) switch(m)
04FC 2F40 MOV R20,R16
04FD 2755 CLR R21
04FE 3647 CPI R20,0x67
04FF E0E0 LDI R30,0
0500 075E CPC R21,R30
0501 F079 BEQ 0x0511
0502 E687 LDI R24,0x67
0503 E090 LDI R25,0
0504 1784 CP R24,R20
0505 0795 CPC R25,R21
0506 F02C BLT 0x050C
0507 3642 CPI R20,0x62
0508 E0E0 LDI R30,0
0509 075E CPC R21,R30
050A F049 BEQ 0x0514
050B C00D RJMP 0x0519
050C 3743 CPI R20,0x73
050D E0E0 LDI R30,0
050E 075E CPC R21,R30
050F F039 BEQ 0x0517
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -