📄 main.lst
字号:
__start:
__text_start:
003A E5CF LDI R28,0x5F
003B E0D4 LDI R29,4
003C BFCD OUT 0x3D,R28
003D BFDE OUT 0x3E,R29
003E 51C0 SUBI R28,0x10
003F 40D0 SBCI R29,0
0040 EA0A LDI R16,0xAA
0041 8308 STD Y+0,R16
0042 2400 CLR R0
0043 E6E0 LDI R30,0x60
0044 E0F0 LDI R31,0
0045 E010 LDI R17,0
0046 36E1 CPI R30,0x61
0047 07F1 CPC R31,R17
0048 F011 BEQ 0x004B
0049 9201 ST R0,Z+
004A CFFB RJMP 0x0046
004B 8300 STD Z+0,R16
004C E7E4 LDI R30,0x74
004D E0F0 LDI R31,0
004E E6A0 LDI R26,0x60
004F E0B0 LDI R27,0
0050 E010 LDI R17,0
0051 37E4 CPI R30,0x74
0052 07F1 CPC R31,R17
0053 F021 BEQ 0x0058
0054 95C8 LPM
0055 9631 ADIW R30,1
0056 920D ST R0,X+
0057 CFF9 RJMP 0x0051
0058 940E013C CALL _main
_exit:
005A CFFF RJMP _exit
_motor_left_forward:
speed --> R16
005B 98C4 CBI 0x18,4
005C 9AC5 SBI 0x18,5
005D 2300 TST R16
005E F009 BEQ 0x0060
005F BF0C OUT 0x3C,R16
0060 B789 IN R24,0x39
0061 6083 ORI R24,3
0062 BF89 OUT 0x39,R24
0063 9508 RET
_motor_left_backward:
speed --> R16
0064 9AC4 SBI 0x18,4
0065 98C5 CBI 0x18,5
0066 2300 TST R16
0067 F009 BEQ 0x0069
0068 BF0C OUT 0x3C,R16
0069 B789 IN R24,0x39
006A 6083 ORI R24,3
006B BF89 OUT 0x39,R24
006C 9508 RET
_motor_left_speed_set:
speed --> R16
006D 2300 TST R16
006E F009 BEQ 0x0070
006F BF0C OUT 0x3C,R16
0070 9508 RET
_motor_left_stop:
0071 98C4 CBI 0x18,4
0072 98C5 CBI 0x18,5
0073 B789 IN R24,0x39
0074 7F8D ANDI R24,0xFD
0075 BF89 OUT 0x39,R24
0076 9508 RET
_motor_left_quick_stop:
0077 9AC4 SBI 0x18,4
0078 9AC5 SBI 0x18,5
0079 B789 IN R24,0x39
007A 7F8D ANDI R24,0xFD
007B BF89 OUT 0x39,R24
007C 9508 RET
_motor_right_forward:
speed --> R16
007D 9AC1 SBI 0x18,1
007E 98C2 CBI 0x18,2
007F 2300 TST R16
0080 F021 BEQ 0x0085
0081 BD03 OUT 0x23,R16
0082 B422 IN R2,0x22
0083 FC20 SBRC R2,0
0084 CFFD RJMP 0x0082
0085 9508 RET
_motor_right_backward:
speed --> R16
0086 98C1 CBI 0x18,1
0087 9AC2 SBI 0x18,2
0088 2300 TST R16
0089 F021 BEQ 0x008E
008A BD03 OUT 0x23,R16
008B B422 IN R2,0x22
008C FC20 SBRC R2,0
008D CFFD RJMP 0x008B
008E 9508 RET
_motor_right_speed_set:
speed --> R16
008F 2300 TST R16
0090 F021 BEQ 0x0095
0091 BF0C OUT 0x3C,R16
0092 B422 IN R2,0x22
0093 FC20 SBRC R2,0
0094 CFFD RJMP 0x0092
0095 9508 RET
_motor_right_stop:
0096 98C1 CBI 0x18,1
0097 98C2 CBI 0x18,2
0098 B789 IN R24,0x39
0099 778F ANDI R24,0x7F
009A BF89 OUT 0x39,R24
009B 9508 RET
_motor_right_quick_stop:
009C 9AC1 SBI 0x18,1
009D 9AC2 SBI 0x18,2
009E B789 IN R24,0x39
009F 778F ANDI R24,0x7F
00A0 BF89 OUT 0x39,R24
00A1 9508 RET
_straight:
00A2 DFF9 RCALL _motor_right_quick_stop
00A3 EF0E LDI R16,0xFE
00A4 DFB6 RCALL _motor_left_forward
00A5 9508 RET
_turn_left:
00A6 EF0E LDI R16,0xFE
00A7 DFB3 RCALL _motor_left_forward
00A8 E500 LDI R16,0x50
00A9 DFD3 RCALL _motor_right_forward
00AA 9508 RET
_turn_right:
00AB EF0E LDI R16,0xFE
00AC DFAE RCALL _motor_left_forward
00AD E500 LDI R16,0x50
00AE DFD7 RCALL _motor_right_backward
00AF 9508 RET
_straight_back:
00B0 DFEB RCALL _motor_right_quick_stop
00B1 EF0E LDI R16,0xFE
00B2 DFB1 RCALL _motor_left_backward
00B3 9508 RET
_stop:
00B4 DFC2 RCALL _motor_left_quick_stop
00B5 DFE6 RCALL _motor_right_quick_stop
00B6 9508 RET
_mic_turn_right:
00B7 EA00 LDI R16,0xA0
00B8 DFA2 RCALL _motor_left_forward
00B9 E300 LDI R16,0x30
00BA DFCB RCALL _motor_right_backward
00BB 9508 RET
_mic_turn_left:
00BC EA00 LDI R16,0xA0
00BD DF9D RCALL _motor_left_forward
00BE E300 LDI R16,0x30
00BF DFBD RCALL _motor_right_forward
00C0 9508 RET
_flag_test:
temp --> R20
00C1 940E01A4 CALL push_gset1
00C3 B349 IN R20,0x19
00C4 704F ANDI R20,0xF
00C5 2755 CLR R21
00C6 3040 CPI R20,0
00C7 E0E0 LDI R30,0
00C8 075E CPC R21,R30
00C9 F154 BLT 0x00F4
00CA E08F LDI R24,0xF
00CB E090 LDI R25,0
00CC 1784 CP R24,R20
00CD 0795 CPC R25,R21
00CE F12C BLT 0x00F4
00CF E002 LDI R16,2
00D0 E010 LDI R17,0
00D1 019A MOVW R18,R20
00D2 940E018C CALL empy16s
00D4 01F8 MOVW R30,R16
00D5 E584 LDI R24,0x54
00D6 E090 LDI R25,0
00D7 0FE8 ADD R30,R24
00D8 1FF9 ADC R31,R25
00D9 9005 LPM R0,Z+
00DA 9014 LPM R1,0(Z)
00DB 01F0 MOVW R30,R0
00DC 9409 IJMP
00DD 2422 CLR R2
00DE 92200060 STS flag,R2
00E0 C013 RJMP 0x00F4
00E1 E081 LDI R24,1
00E2 93800060 STS flag,R24
00E4 C00F RJMP 0x00F4
00E5 E082 LDI R24,2
00E6 93800060 STS flag,R24
00E8 C00B RJMP 0x00F4
00E9 E083 LDI R24,3
00EA 93800060 STS flag,R24
00EC C007 RJMP 0x00F4
00ED E084 LDI R24,4
00EE 93800060 STS flag,R24
00F0 C003 RJMP 0x00F4
00F1 E085 LDI R24,5
00F2 93800060 STS flag,R24
00F4 940E01A7 CALL pop_gset1
00F6 9508 RET
_timer0_ovf_isr:
00F7 938A ST R24,-Y
00F8 B78F IN R24,0x3F
00F9 938A ST R24,-Y
00FA E081 LDI R24,1
00FB BF82 OUT 0x32,R24
00FC 9189 LD R24,Y+
00FD BF8F OUT 0x3F,R24
00FE 9189 LD R24,Y+
00FF 9518 RETI
_timer0_comp_isr:
0100 9518 RETI
_timer2_ovf_isr:
0101 938A ST R24,-Y
0102 B78F IN R24,0x3F
0103 938A ST R24,-Y
0104 E081 LDI R24,1
0105 BD84 OUT 0x24,R24
0106 9189 LD R24,Y+
0107 BF8F OUT 0x3F,R24
0108 9189 LD R24,Y+
0109 9518 RETI
_timer2_comp_isr:
010A 9518 RETI
_Delay100us:
i --> R20
n --> R16
010B 940E01A4 CALL push_gset1
010D E943 LDI R20,0x93
010E C006 RJMP 0x0115
010F 2F84 MOV R24,R20
0110 5081 SUBI R24,1
0111 2F48 MOV R20,R24
0112 2388 TST R24
0113 F7D9 BNE 0x010F
0114 950A DEC R16
0115 2300 TST R16
0116 F7C1 BNE 0x010F
0117 940E01A7 CALL pop_gset1
0119 9508 RET
_Delay1ms:
n --> R20
011A 940E01A4 CALL push_gset1
011C 01A8 MOVW R20,R16
011D C004 RJMP 0x0122
011E E00A LDI R16,0xA
011F DFEB RCALL _Delay100us
0120 5041 SUBI R20,1
0121 4050 SBCI R21,0
0122 3040 CPI R20,0
0123 0745 CPC R20,R21
0124 F7C9 BNE 0x011E
0125 940E01A7 CALL pop_gset1
0127 9508 RET
_Delay1s:
n --> R20
0128 940E01A4 CALL push_gset1
012A 01A8 MOVW R20,R16
012B E208 LDI R16,0x28
012C E010 LDI R17,0
012D 019A MOVW R18,R20
012E 940E018C CALL empy16s
0130 01A8 MOVW R20,R16
0131 C004 RJMP 0x0136
0132 EF0A LDI R16,0xFA
0133 DFD7 RCALL _Delay100us
0134 5041 SUBI R20,1
0135 4050 SBCI R21,0
0136 3040 CPI R20,0
0137 0745 CPC R20,R21
0138 F7C9 BNE 0x0132
0139 940E01A7 CALL pop_gset1
013B 9508 RET
FILE: C:\DOCUME~1\Administrator\桌面\小车寻迹\main.c
(0001) /*******************************************************************************
(0002) ** 文件名:main.c 工程主文件
(0003) *******************************************************************************/
(0004) #include "config.h"
(0005)
(0006) volatile uint8 flag; //小车状态
(0007) //0未偏 1左偏 2右偏 3前出线 4后出线 5脱轨
(0008) /*void main(void)
(0009) {
(0010) init_devices();
(0011) straight();
(0012)
(0013) flag_test(); //测试小车状态
(0014) while(1) //没有脱轨
(0015) {
(0016) flag_test();
(0017) switch(flag)
(0018) {
(0019) case 0: //正常情况将速度设成相等
(0020) motor_right_speed_set(0xFE);
(0021) motor_left_speed_set(0xFE);
(0022) break;
(0023) case 1:
(0024) mic_turn_right();
(0025) break;
(0026) case 2:
(0027) mic_turn_left();
(0028) break;
(0029) case 3:
(0030) break;
(0031) case 4:
(0032) break;
(0033) case 5:
(0034) stop();
(0035) break;
(0036) default:
(0037) break;
(0038) }
(0039) }
(0040) }/end main*/
(0041)
(0042) // moto test *****************************************************************
(0043)
(0044) void main(void)
(0045) {
(0046) init_devices();
_main:
013C 940E017E CALL _init_devices
013E C009 RJMP 0x0148
(0047) while(1)
(0048) {
(0049) motor_left_forward(0xa0);
013F EA00 LDI R16,0xA0
0140 940E005B CALL _motor_left_forward
(0050) //Delay1ms(100);
(0051) //motor_right_forward(0xa0);
(0052)
(0053) //straight();
(0054) //Delay1ms(100);
(0055) //turn_left();
(0056) //Delay1ms(100);
(0057) //turn_right();
(0058) //Delay1ms(100);
(0059)
(0060) //straight_back();
(0061) //Delay1ms(500);
(0062) //mic_turn_left();
(0063) //Delay1ms(100);
(0064)
(0065) //mic_turn_right();
(0066) //Delay1ms(100);
(0067) stop();
0142 940E00B4 CALL _stop
(0068) Delay1ms(500);
FILE: <library>
0144 EF04 LDI R16,0xF4
0145 E011 LDI R17,1
0146 940E011A CALL _Delay1ms
0148 CFF6 RJMP 0x013F
0149 9508 RET
_port_init:
014A 2422 CLR R2
014B BA2B OUT 0x1B,R2
014C BA2A OUT 0x1A,R2
014D BA28 OUT 0x18,R2
014E EF8F LDI R24,0xFF
014F BB87 OUT 0x17,R24
0150 BA25 OUT 0x15,R2
0151 BA24 OUT 0x14,R2
0152 BA22 OUT 0x12,R2
0153 E880 LDI R24,0x80
0154 BB81 OUT 0x11,R24
0155 9508 RET
_timer0_init:
0156 2422 CLR R2
0157 BE23 OUT 0x33,R2
0158 E081 LDI R24,1
0159 BF82 OUT 0x32,R24
015A E686 LDI R24,0x66
015B BF8C OUT 0x3C,R24
015C E68C LDI R24,0x6C
015D BF83 OUT 0x33,R24
015E 9508 RET
_timer1_init:
015F 2422 CLR R2
0160 BC2E OUT 0x2E,R2
0161 E48C LDI R24,0x4C
0162 BD8D OUT 0x2D,R24
0163 E081 LDI R24,1
0164 BD8C OUT 0x2C,R24
0165 EB83 LDI R24,0xB3
0166 BD8B OUT 0x2B,R24
0167 EF8F LDI R24,0xFF
0168 BD8A OUT 0x2A,R24
0169 EB83 LDI R24,0xB3
016A BD89 OUT 0x29,R24
016B EF8F LDI R24,0xFF
016C BD88 OUT 0x28,R24
016D EB83 LDI R24,0xB3
016E BD87 OUT 0x27,R24
016F EF8F LDI R24,0xFF
0170 BD86 OUT 0x26,R24
0171 BC2F OUT 0x2F,R2
0172 E082 LDI R24,2
0173 BD8E OUT 0x2E,R24
0174 9508 RET
_timer2_init:
0175 2422 CLR R2
0176 BC25 OUT 0x25,R2
0177 E081 LDI R24,1
0178 BD84 OUT 0x24,R24
0179 E686 LDI R24,0x66
017A BD83 OUT 0x23,R24
017B E68E LDI R24,0x6E
017C BD85 OUT 0x25,R24
017D 9508 RET
_init_devices:
017E 94F8 BCLR 7
017F DFCA RCALL _port_init
0180 DFF4 RCALL _timer2_init
0181 DFD4 RCALL _timer0_init
0182 B785 IN R24,0x35
0183 6082 ORI R24,2
0184 BF85 OUT 0x35,R24
0185 B78B IN R24,0x3B
0186 6C80 ORI R24,0xC0
0187 BF8B OUT 0x3B,R24
0188 E483 LDI R24,0x43
0189 BF89 OUT 0x39,R24
018A 9478 BSET 7
018B 9508 RET
empy16s:
018C 920A ST R0,-Y
018D 921A ST R1,-Y
018E 938A ST R24,-Y
018F 939A ST R25,-Y
0190 9F02 MUL R16,R18
0191 01C0 MOVW R24,R0
0192 9F12 MUL R17,R18
0193 0D90 ADD R25,R0
0194 9F03 MUL R16,R19
0195 0D90 ADD R25,R0
0196 018C MOVW R16,R24
0197 9199 LD R25,Y+
0198 9189 LD R24,Y+
0199 9019 LD R1,Y+
019A 9009 LD R0,Y+
019B 9508 RET
push_gset5:
019C 92FA ST R15,-Y
019D 92EA ST R14,-Y
push_gset4:
019E 92DA ST R13,-Y
019F 92CA ST R12,-Y
push_gset3:
01A0 92BA ST R11,-Y
01A1 92AA ST R10,-Y
push_gset2:
01A2 937A ST R23,-Y
01A3 936A ST R22,-Y
push_gset1:
01A4 935A ST R21,-Y
01A5 934A ST R20,-Y
01A6 9508 RET
pop_gset1:
01A7 E0E1 LDI R30,1
pop:
01A8 9149 LD R20,Y+
01A9 9159 LD R21,Y+
01AA FDE0 SBRC R30,0
01AB 9508 RET
01AC 9169 LD R22,Y+
01AD 9179 LD R23,Y+
01AE FDE1 SBRC R30,1
01AF 9508 RET
01B0 90A9 LD R10,Y+
01B1 90B9 LD R11,Y+
01B2 FDE2 SBRC R30,2
01B3 9508 RET
01B4 90C9 LD R12,Y+
01B5 90D9 LD R13,Y+
01B6 FDE3 SBRC R30,3
01B7 9508 RET
01B8 90E9 LD R14,Y+
01B9 90F9 LD R15,Y+
01BA 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -