📄 motor.lis
字号:
007E 89BF out 0x39,R24
0080 .dbline -2
0080 L30:
0080 .dbline 0 ; func end
0080 0895 ret
0082 .dbend
0082 .dbfunc e motor_right_quick_stop _motor_right_quick_stop fV
.even
0082 _motor_right_quick_stop::
0082 .dbline -1
0082 .dbline 108
0082 ; }
0082 ;
0082 ; //右电机急停
0082 ; void motor_right_quick_stop(void)
0082 ; {
0082 .dbline 109
0082 ; motor_en1;
0082 C19A sbi 0x18,1
0084 .dbline 110
0084 ; motor_en2;
0084 C29A sbi 0x18,2
0086 .dbline 111
0086 ; T2_UEN;
0086 89B7 in R24,0x39
0088 8F77 andi R24,127
008A 89BF out 0x39,R24
008C .dbline -2
008C L31:
008C .dbline 0 ; func end
008C 0895 ret
008E .dbend
008E .dbfunc e straight _straight fV
.even
008E _straight::
008E .dbline -1
008E .dbline 117
008E ; }
008E ;
008E ; /**********************小车动作*****************************/
008E ;
008E ; void straight(void) //直行
008E ; {motor_right_quick_stop();
008E .dbline 117
008E F9DF xcall _motor_right_quick_stop
0090 .dbline 118
0090 ; motor_left_forward(0xfe);
0090 0EEF ldi R16,254
0092 B6DF xcall _motor_left_forward
0094 .dbline -2
0094 L32:
0094 .dbline 0 ; func end
0094 0895 ret
0096 .dbend
0096 .dbfunc e turn_left _turn_left fV
.even
0096 _turn_left::
0096 .dbline -1
0096 .dbline 124
0096 ; // motor_right_forward(0xfe);
0096 ;
0096 ; }
0096 ;
0096 ; void turn_left(void) //左转
0096 ; {
0096 .dbline 125
0096 ; motor_left_forward(0xfe);
0096 0EEF ldi R16,254
0098 B3DF xcall _motor_left_forward
009A .dbline 126
009A ; motor_right_forward(0x50);
009A 00E5 ldi R16,80
009C D3DF xcall _motor_right_forward
009E .dbline -2
009E L33:
009E .dbline 0 ; func end
009E 0895 ret
00A0 .dbend
00A0 .dbfunc e turn_right _turn_right fV
.even
00A0 _turn_right::
00A0 .dbline -1
00A0 .dbline 130
00A0 ; }
00A0 ;
00A0 ; void turn_right(void) //右转
00A0 ; {
00A0 .dbline 131
00A0 ; motor_left_forward(0xfe);
00A0 0EEF ldi R16,254
00A2 AEDF xcall _motor_left_forward
00A4 .dbline 132
00A4 ; motor_right_backward(0x50);
00A4 00E5 ldi R16,80
00A6 D7DF xcall _motor_right_backward
00A8 .dbline -2
00A8 L34:
00A8 .dbline 0 ; func end
00A8 0895 ret
00AA .dbend
00AA .dbfunc e straight_back _straight_back fV
.even
00AA _straight_back::
00AA .dbline -1
00AA .dbline 136
00AA ; }
00AA ;
00AA ; void straight_back(void) //直回
00AA ; {motor_right_quick_stop();
00AA .dbline 136
00AA EBDF xcall _motor_right_quick_stop
00AC .dbline 137
00AC ; motor_left_backward(0xfe);
00AC 0EEF ldi R16,254
00AE B1DF xcall _motor_left_backward
00B0 .dbline -2
00B0 L35:
00B0 .dbline 0 ; func end
00B0 0895 ret
00B2 .dbend
00B2 .dbfunc e stop _stop fV
.even
00B2 _stop::
00B2 .dbline -1
00B2 .dbline 142
00B2 ; //motor_right_backward(0x77);
00B2 ; }
00B2 ;
00B2 ; void stop(void) //急停
00B2 ; {
00B2 .dbline 143
00B2 ; motor_left_quick_stop();
00B2 C2DF xcall _motor_left_quick_stop
00B4 .dbline 144
00B4 ; motor_right_quick_stop();
00B4 E6DF xcall _motor_right_quick_stop
00B6 .dbline -2
00B6 L36:
00B6 .dbline 0 ; func end
00B6 0895 ret
00B8 .dbend
00B8 .dbfunc e mic_turn_right _mic_turn_right fV
.even
00B8 _mic_turn_right::
00B8 .dbline -1
00B8 .dbline 148
00B8 ; }
00B8 ;
00B8 ; void mic_turn_right(void) //向右微调
00B8 ; {
00B8 .dbline 149
00B8 ; motor_left_forward(0xa0);
00B8 00EA ldi R16,160
00BA A2DF xcall _motor_left_forward
00BC .dbline 150
00BC ; motor_right_backward(0x30);
00BC 00E3 ldi R16,48
00BE CBDF xcall _motor_right_backward
00C0 .dbline -2
00C0 L37:
00C0 .dbline 0 ; func end
00C0 0895 ret
00C2 .dbend
00C2 .dbfunc e mic_turn_left _mic_turn_left fV
.even
00C2 _mic_turn_left::
00C2 .dbline -1
00C2 .dbline 154
00C2 ; }
00C2 ;
00C2 ; void mic_turn_left(void) //向左微调
00C2 ; {
00C2 .dbline 155
00C2 ; motor_left_forward(0xa0);
00C2 00EA ldi R16,160
00C4 9DDF xcall _motor_left_forward
00C6 .dbline 156
00C6 ; motor_right_forward(0x30);
00C6 00E3 ldi R16,48
00C8 BDDF xcall _motor_right_forward
00CA .dbline -2
00CA L38:
00CA .dbline 0 ; func end
00CA 0895 ret
00CC .dbend
00CC .dbfunc e flag_test _flag_test fV
.area func_lit(rom, con, rel)
0000 L49:
0000 9600 .word `L48
0002 8600 .word `L44
0004 8A00 .word `L45
0006 9200 .word `L47
0008 8A00 .word `L45
000A 8A00 .word `L45
000C 8600 .word `L44
000E 8600 .word `L44
0010 8600 .word `L44
0012 8A00 .word `L45
0014 8600 .word `L44
0016 8A00 .word `L45
0018 8E00 .word `L46
001A 8A00 .word `L45
001C 8600 .word `L44
001E 8200 .word `L43
.area text(rom, con, rel)
00CC .dbfile C:\DOCUME~1\Administrator.1B4135EF7FF9405\桌面\智能小车案\code\motor.c
00CC ; temp -> R20
.even
00CC _flag_test::
00CC 0E940000 xcall push_gset1
00D0 .dbline -1
00D0 .dbline 160
00D0 ; }
00D0 ;
00D0 ; void flag_test(void) //测试小车状态
00D0 ; {
00D0 .dbline 162
00D0 ; uint8 temp;
00D0 ; temp = PINA&0x0f; //PINA的低四位
00D0 49B3 in R20,0x19
00D2 4F70 andi R20,15
00D4 .dbline 163
00D4 ; switch(temp)
00D4 5527 clr R21
00D6 4030 cpi R20,0
00D8 E0E0 ldi R30,0
00DA 5E07 cpc R21,R30
00DC 54F1 brlt L41
00DE 8FE0 ldi R24,15
00E0 90E0 ldi R25,0
00E2 8417 cp R24,R20
00E4 9507 cpc R25,R21
00E6 2CF1 brlt L41
00E8 02E0 ldi R16,2
00EA 10E0 ldi R17,0
00EC 9A01 movw R18,R20
00EE 0E940000 xcall empy16s
00F2 F801 movw R30,R16
00F4 80E0 ldi R24,<L49
00F6 90E0 ldi R25,>L49
00F8 E80F add R30,R24
00FA F91F adc R31,R25
00FC 0590 lpm R0,Z+
00FE 1490 lpm R1,Z
0100 F001 movw R30,R0
0102 0994 ijmp
0104 X0:
0104 .dbline 164
0104 ; {
0104 L43:
0104 .dbline 166
0104 ; case 0x0f:
0104 ; flag = 0; //未偏
0104 2224 clr R2
0106 20920000 sts _flag,R2
010A .dbline 167
010A ; break;
010A 13C0 xjmp L41
010C L44:
010C .dbline 174
010C ; case 0x01:
010C ; case 0x06:
010C ; case 0x07:
010C ; case 0x08:
010C ; case 0x0a:
010C ; case 0x0e:
010C ; flag = 1; //左偏
010C 81E0 ldi R24,1
010E 80930000 sts _flag,R24
0112 .dbline 175
0112 ; break;
0112 0FC0 xjmp L41
0114 L45:
0114 .dbline 182
0114 ; case 0x02:
0114 ; case 0x04:
0114 ; case 0x05:
0114 ; case 0x09:
0114 ; case 0x0b:
0114 ; case 0x0d:
0114 ; flag = 2; //右偏
0114 82E0 ldi R24,2
0116 80930000 sts _flag,R24
011A .dbline 183
011A ; break;
011A 0BC0 xjmp L41
011C L46:
011C .dbline 185
011C ; case 0x0c:
011C ; flag = 3; //前两出线
011C 83E0 ldi R24,3
011E 80930000 sts _flag,R24
0122 .dbline 186
0122 ; break;
0122 07C0 xjmp L41
0124 L47:
0124 .dbline 188
0124 ; case 0x03:
0124 ; flag = 4; //后两出线
0124 84E0 ldi R24,4
0126 80930000 sts _flag,R24
012A .dbline 189
012A ; break;
012A 03C0 xjmp L41
012C L48:
012C .dbline 191
012C 85E0 ldi R24,5
012E 80930000 sts _flag,R24
0132 .dbline 192
0132 .dbline 194
0132 L41:
0132 .dbline -2
0132 L39:
0132 0E940000 xcall pop_gset1
0136 .dbline 0 ; func end
0136 0895 ret
0138 .dbsym r temp 20 c
0138 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -