📄 line.lst
字号:
__start:
__text_start:
002A E5CF LDI R28,0x5F
002B E0D4 LDI R29,4
002C BFCD OUT 0x3D,R28
002D BFDE OUT 0x3E,R29
002E 51C0 SUBI R28,0x10
002F 40D0 SBCI R29,0
0030 EA0A LDI R16,0xAA
0031 8308 STD Y+0,R16
0032 2400 CLR R0
0033 E6E0 LDI R30,0x60
0034 E0F0 LDI R31,0
0035 E010 LDI R17,0
0036 36E0 CPI R30,0x60
0037 07F1 CPC R31,R17
0038 F011 BEQ 0x003B
0039 9201 ST R0,Z+
003A CFFB RJMP 0x0036
003B 8300 STD Z+0,R16
003C E5E4 LDI R30,0x54
003D E0F0 LDI R31,0
003E E6A0 LDI R26,0x60
003F E0B0 LDI R27,0
0040 E010 LDI R17,0
0041 35E4 CPI R30,0x54
0042 07F1 CPC R31,R17
0043 F021 BEQ 0x0048
0044 95C8 LPM
0045 9631 ADIW R30,1
0046 920D ST R0,X+
0047 CFF9 RJMP 0x0041
0048 940E00AC CALL _main
_exit:
004A CFFF RJMP _exit
_delay:
i --> R20
n --> R16
004B 940E00DE CALL push_gset1
FILE: F:\USING0~1\motor_line\main.c
(0001) #include "main.h"
(0002)
(0003) void delay(unsigned int n) //N ms延时函数
(0004) {
004D C009 RJMP 0x0057
(0005) unsigned int i;
(0006) while(n--)
(0007) for (i=0;i<125;i++);
004E 2744 CLR R20
004F 2755 CLR R21
0050 C002 RJMP 0x0053
0051 5F4F SUBI R20,0xFF
0052 4F5F SBCI R21,0xFF
0053 374D CPI R20,0x7D
0054 E0E0 LDI R30,0
0055 075E CPC R21,R30
0056 F3D0 BCS 0x0051
0057 0118 MOVW R2,R16
0058 5001 SUBI R16,1
0059 4010 SBCI R17,0
005A 2022 TST R2
005B F791 BNE 0x004E
005C 2033 TST R3
005D F781 BNE 0x004E
005E 940E00E1 CALL pop_gset1
0060 9508 RET
(0008) }
(0009)
(0010) unsigned char ReadPin(void)
(0011) {
(0012) unsigned char i;
(0013)
(0014) /* 定义上拉电阻和设置高电平输出 */
(0015) /* 为端口引脚定义方向 */
(0016) PORTC = 0XFF;
_ReadPin:
i --> R16
0061 EF8F LDI R24,0xFF
0062 BB85 OUT 0x15,R24
(0017) DDRC = 0X00;
0063 2422 CLR R2
0064 BA24 OUT 0x14,R2
(0018) /* 为了同步插入nop 指令*/
(0019) _NOP();
0065 0000 NOP
(0020) /* 读取端口引脚*/
(0021) i = PINC;
0066 B303 IN R16,0x13
0067 9508 RET
_car_turn:
mes --> R20
0068 940E00DE CALL push_gset1
006A 2F40 MOV R20,R16
(0022) }
(0023)
(0024) void car_turn(unsigned char mes)
(0025) {
(0026) switch(mes)
006B 2755 CLR R21
006C 3E47 CPI R20,0xE7
006D E0E0 LDI R30,0
006E 075E CPC R21,R30
006F F171 BEQ 0x009E
0070 EE87 LDI R24,0xE7
0071 E090 LDI R25,0
0072 1784 CP R24,R20
0073 0795 CPC R25,R21
0074 F06C BLT 0x0082
0075 3C4F CPI R20,0xCF
0076 E0E0 LDI R30,0
0077 075E CPC R21,R30
0078 F141 BEQ 0x00A1
0079 3C4F CPI R20,0xCF
007A E0E0 LDI R30,0
007B 075E CPC R21,R30
007C F154 BLT 0x00A7
007D 3D4F CPI R20,0xDF
007E E0E0 LDI R30,0
007F 075E CPC R21,R30
0080 F0D1 BEQ 0x009B
0081 C025 RJMP 0x00A7
0082 3F47 CPI R20,0xF7
0083 E0E0 LDI R30,0
0084 075E CPC R21,R30
0085 F079 BEQ 0x0095
0086 EF87 LDI R24,0xF7
0087 E090 LDI R25,0
0088 1784 CP R24,R20
0089 0795 CPC R25,R21
008A F02C BLT 0x0090
008B 3E4F CPI R20,0xEF
008C E0E0 LDI R30,0
008D 075E CPC R21,R30
008E F049 BEQ 0x0098
008F C017 RJMP 0x00A7
0090 3F4F CPI R20,0xFF
0091 E0E0 LDI R30,0
0092 075E CPC R21,R30
0093 F081 BEQ 0x00A4
0094 C012 RJMP 0x00A7
(0027) {
(0028) case 0xf7: for_left(); break;
0095 940E00BD CALL _for_left
0097 C011 RJMP 0x00A9
(0029)
(0030) case 0xef: forward(); break;
0098 940E00B3 CALL _forward
009A C00E RJMP 0x00A9
(0031)
(0032) case 0xdf: for_right(); break;
009B 940E00C7 CALL _for_right
009D C00B RJMP 0x00A9
(0033)
(0034) case 0xe7: for_left(); break;
009E 940E00BD CALL _for_left
00A0 C008 RJMP 0x00A9
(0035)
(0036) case 0xcf: for_right(); break;
00A1 940E00C7 CALL _for_right
00A3 C005 RJMP 0x00A9
(0037)
(0038) case 0xff: backward(); break;
00A4 940E00B8 CALL _backward
00A6 C002 RJMP 0x00A9
(0039)
(0040) default: forward(); break;
00A7 940E00B3 CALL _forward
00A9 940E00E1 CALL pop_gset1
00AB 9508 RET
(0041)
(0042) }
(0043) }
(0044)
(0045)
(0046) void main()
(0047) {
(0048) unsigned char pin = 0x00;
_main:
pin --> R20
00AC 2744 CLR R20
00AD C003 RJMP 0x00B1
(0049) while(1)
(0050) {
(0051) pin = ReadPin();
00AE DFB2 RCALL _ReadPin
00AF 2F40 MOV R20,R16
(0052) car_turn(pin);
00B0 DFB7 RCALL _car_turn
00B1 CFFC RJMP 0x00AE
00B2 9508 RET
FILE: F:\USING0~1\motor_line\motor.c
(0001) #include "main.h"
(0002)
(0003) void forward(void)
(0004) {
(0005) DDRB=0XFF;
_forward:
00B3 EF8F LDI R24,0xFF
00B4 BB87 OUT 0x17,R24
(0006) PORTB=(0<<PB0)|(1<<PB1)|(1<<PB3)|(0<<PB4)|(0<<PB5)|(0<<PB6);
00B5 E08A LDI R24,0xA
00B6 BB88 OUT 0x18,R24
00B7 9508 RET
(0007) }
(0008)
(0009)
(0010) void backward(void)
(0011) {
(0012) DDRB=0XFF;
_backward:
00B8 EF8F LDI R24,0xFF
00B9 BB87 OUT 0x17,R24
(0013) PORTB=(1<<PB0)|(0<<PB1)|(1<<PB3)|(0<<PB4)|(0<<PB5)|(0<<PB6);
00BA E089 LDI R24,0x9
00BB BB88 OUT 0x18,R24
00BC 9508 RET
(0014) }
(0015)
(0016) void for_left(void)
(0017) {
(0018) DDRB=0XFF;
_for_left:
00BD EF8F LDI R24,0xFF
00BE BB87 OUT 0x17,R24
(0019) PORTB=(0<<PB0)|(1<<PB1)|(1<<PB3)|(1<<PB4)|(0<<PB5)|(1<<PB6);
00BF E58A LDI R24,0x5A
00C0 BB88 OUT 0x18,R24
00C1 9508 RET
(0020) }
(0021)
(0022) void back_left(void)
(0023) {
(0024) DDRB=0XFF;
_back_left:
00C2 EF8F LDI R24,0xFF
00C3 BB87 OUT 0x17,R24
(0025) PORTB=(1<<PB0)|(0<<PB1)|(1<<PB3)|(1<<PB4)|(0<<PB5)|(1<<PB6);
00C4 E589 LDI R24,0x59
00C5 BB88 OUT 0x18,R24
00C6 9508 RET
(0026) }
(0027)
(0028) void for_right(void)
(0029) {
(0030) DDRB=0XFF;
_for_right:
00C7 EF8F LDI R24,0xFF
00C8 BB87 OUT 0x17,R24
(0031) PORTB=(0<<PB0)|(1<<PB1)|(1<<PB3)|(0<<PB4)|(1<<PB5)|(1<<PB6);
00C9 E68A LDI R24,0x6A
00CA BB88 OUT 0x18,R24
00CB 9508 RET
(0032) }
(0033)
(0034) void back_right(void)
(0035) {
(0036) DDRB=0XFF;
_back_right:
00CC EF8F LDI R24,0xFF
00CD BB87 OUT 0x17,R24
(0037) PORTB=(1<<PB0)|(0<<PB1)|(1<<PB3)|(0<<PB4)|(1<<PB5)|(1<<PB6);
00CE E689 LDI R24,0x69
00CF BB88 OUT 0x18,R24
00D0 9508 RET
(0038) }
(0039)
(0040) void car_stop(void)
(0041) {
(0042) DDRB=0XFF;
_car_stop:
00D1 EF8F LDI R24,0xFF
00D2 BB87 OUT 0x17,R24
(0043) PORTB=(0<<PB0)|(0<<PB1)|(0<<PB3)|(0<<PB4)|(0<<PB5)|(0<<PB6);
FILE: <library>
00D3 2422 CLR R2
00D4 BA28 OUT 0x18,R2
00D5 9508 RET
push_gset5:
00D6 92FA ST R15,-Y
00D7 92EA ST R14,-Y
push_gset4:
00D8 92DA ST R13,-Y
00D9 92CA ST R12,-Y
push_gset3:
00DA 92BA ST R11,-Y
00DB 92AA ST R10,-Y
push_gset2:
00DC 937A ST R23,-Y
00DD 936A ST R22,-Y
push_gset1:
00DE 935A ST R21,-Y
00DF 934A ST R20,-Y
00E0 9508 RET
pop_gset1:
00E1 E0E1 LDI R30,1
pop:
00E2 9149 LD R20,Y+
00E3 9159 LD R21,Y+
00E4 FDE0 SBRC R30,0
00E5 9508 RET
00E6 9169 LD R22,Y+
00E7 9179 LD R23,Y+
00E8 FDE1 SBRC R30,1
00E9 9508 RET
00EA 90A9 LD R10,Y+
00EB 90B9 LD R11,Y+
00EC FDE2 SBRC R30,2
00ED 9508 RET
00EE 90C9 LD R12,Y+
00EF 90D9 LD R13,Y+
00F0 FDE3 SBRC R30,3
00F1 9508 RET
00F2 90E9 LD R14,Y+
00F3 90F9 LD R15,Y+
00F4 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -