📄 main.lis
字号:
011A .dbline 45
011A ; back_right();
011A 0E940000 xcall _back_right
011E .dbline 46
011E ; delay(1000);
011E 08EE ldi R16,1000
0120 13E0 ldi R17,3
0122 0E940000 xcall _delay
0126 .dbline 47
0126 ; for_left();
0126 0E940000 xcall _for_left
012A .dbline 48
012A ; delay(1000);
012A 08EE ldi R16,1000
012C 13E0 ldi R17,3
012E 0E940000 xcall _delay
0132 .dbline 50
0132 ;
0132 ; }; break;
0132 .dbline 50
0132 .dbline 50
0132 31C0 xjmp L4
0134 L11:
0134 .dbline 52
0134 ;
0134 ; case 0x05: forward(); break;
0134 0E940000 xcall _forward
0138 .dbline 52
0138 2EC0 xjmp L4
013A L12:
013A .dbline 54
013A ;
013A ; case 0x06: {
013A .dbline 55
013A ; back_right();
013A 0E940000 xcall _back_right
013E .dbline 56
013E ; delay(1000);
013E 08EE ldi R16,1000
0140 13E0 ldi R17,3
0142 0E940000 xcall _delay
0146 .dbline 57
0146 ; for_left();
0146 0E940000 xcall _for_left
014A .dbline 58
014A ; delay(1000);
014A 08EE ldi R16,1000
014C 13E0 ldi R17,3
014E 0E940000 xcall _delay
0152 .dbline 60
0152 ;
0152 ; }; break;
0152 .dbline 60
0152 .dbline 60
0152 21C0 xjmp L4
0154 L13:
0154 .dbline 62
0154 ;
0154 ; case 0x07: {
0154 .dbline 63
0154 ; backward();
0154 0E940000 xcall _backward
0158 .dbline 64
0158 ; delay(1000);
0158 08EE ldi R16,1000
015A 13E0 ldi R17,3
015C 0E940000 xcall _delay
0160 .dbline 65
0160 ; for_left();
0160 0E940000 xcall _for_left
0164 .dbline 66
0164 ; delay(1000);
0164 08EE ldi R16,1000
0166 13E0 ldi R17,3
0168 0E940000 xcall _delay
016C .dbline 67
016C ; }; break;
016C .dbline 67
016C .dbline 67
016C 14C0 xjmp L4
016E L14:
016E .dbline 71
016E ;
016E ; /**************************以下为检测黑线时的执行函数************************************/
016E ;
016E ; case 0x30: for_left(); break;
016E 0E940000 xcall _for_left
0172 .dbline 71
0172 11C0 xjmp L4
0174 L15:
0174 .dbline 73
0174 ;
0174 ; case 0x28: forward(); break;
0174 0E940000 xcall _forward
0178 .dbline 73
0178 0EC0 xjmp L4
017A L16:
017A .dbline 75
017A ;
017A ; case 0x18: for_right(); break;
017A 0E940000 xcall _for_right
017E .dbline 75
017E 0BC0 xjmp L4
0180 L17:
0180 .dbline 77
0180 ;
0180 ; case 0x20: for_left(); break;
0180 0E940000 xcall _for_left
0184 .dbline 77
0184 08C0 xjmp L4
0186 L18:
0186 .dbline 79
0186 ;
0186 ; case 0x08: for_right(); break;
0186 0E940000 xcall _for_right
018A .dbline 79
018A 05C0 xjmp L4
018C L19:
018C .dbline 81
018C ;
018C ; case 0x38: backward(); break;
018C 0E940000 xcall _backward
0190 .dbline 81
0190 02C0 xjmp L4
0192 L3:
0192 .dbline 83
0192 0E940000 xcall _forward
0196 .dbline 83
0196 L4:
0196 .dbline -2
0196 L2:
0196 0E940000 xcall pop_gset1
019A .dbline 0 ; func end
019A 0895 ret
019C .dbsym r mes 20 c
019C .dbend
019C .dbfunc e main _main fV
019C ; mesg -> R20
019C ; mesc -> R22
019C ; pin -> R10
.even
019C _main::
019C 2297 sbiw R28,2
019E .dbline -1
019E .dbline 91
019E ;
019E ; default: forward(); break;
019E ;
019E ;
019E ; }
019E ; }
019E ;
019E ;
019E ; void main()
019E ; {
019E .dbline 94
019E ; unsigned char mesg,mesc;
019E ; unsigned char pin;
019E ; init_lcd(); //初始化液晶
019E 0E940000 xcall _init_lcd
01A2 .dbline 95
01A2 ; LCD_write_string(0,0,"auto car"); //显示信息
01A2 80E0 ldi R24,<L26
01A4 90E0 ldi R25,>L26
01A6 9983 std y+1,R25
01A8 8883 std y+0,R24
01AA 2227 clr R18
01AC 0027 clr R16
01AE 0E940000 xcall _LCD_write_string
01B2 .dbline 96
01B2 ; LCD_write_string(0,1,"ATMega 16");
01B2 80E0 ldi R24,<L27
01B4 90E0 ldi R25,>L27
01B6 9983 std y+1,R25
01B8 8883 std y+0,R24
01BA 21E0 ldi R18,1
01BC 0027 clr R16
01BE 0E940000 xcall _LCD_write_string
01C2 12C0 xjmp L29
01C4 L28:
01C4 .dbline 99
01C4 ;
01C4 ; while(1)
01C4 ; {
01C4 .dbline 100
01C4 ; pin = 0x00; //初始化引脚信息
01C4 AA24 clr R10
01C6 .dbline 101
01C6 ; mesg = 0x00;
01C6 4427 clr R20
01C8 .dbline 102
01C8 ; mesc = 0x00;
01C8 6627 clr R22
01CA .dbline 103
01CA ; pin = ReadPin(); //读取引脚信息
01CA 1ADF xcall _ReadPin
01CC A02E mov R10,R16
01CE .dbline 104
01CE ; mesc|= pin&0x07; //屏蔽光电传感器干扰,检测障碍物
01CE 8A2D mov R24,R10
01D0 8770 andi R24,7
01D2 682B or R22,R24
01D4 .dbline 105
01D4 ; mesg|= pin&0x38; //屏蔽超声波干扰,检测黑线
01D4 8A2D mov R24,R10
01D6 8873 andi R24,56
01D8 482B or R20,R24
01DA .dbline 106
01DA ; if(mesc)
01DA 6623 tst R22
01DC 19F0 breq L31
01DE .dbline 107
01DE ; car_turn(mesc);
01DE 062F mov R16,R22
01E0 16DF xcall _car_turn
01E2 02C0 xjmp L32
01E4 L31:
01E4 .dbline 109
01E4 ; else
01E4 ; car_turn(mesg);
01E4 042F mov R16,R20
01E6 13DF xcall _car_turn
01E8 L32:
01E8 .dbline 110
01E8 L29:
01E8 .dbline 98
01E8 EDCF xjmp L28
01EA X18:
01EA .dbline -2
01EA L25:
01EA 2296 adiw R28,2
01EC .dbline 0 ; func end
01EC 0895 ret
01EE .dbsym r mesg 20 c
01EE .dbsym r mesc 22 c
01EE .dbsym r pin 10 c
01EE .dbend
.area data(ram, con, rel)
0000 .dbfile F:\USING0~1\LINEAN~1\main.c
0000 L27:
0000 .blkb 10
.area idata
0000 41544D65676120313600 .byte 'A,'T,'M,'e,'g,'a,32,49,54,0
.area data(ram, con, rel)
000A .dbfile F:\USING0~1\LINEAN~1\main.c
000A L26:
000A .blkb 9
.area idata
000A 6175746F2063617200 .byte 'a,'u,'t,'o,32,'c,'a,'r,0
.area data(ram, con, rel)
0013 .dbfile F:\USING0~1\LINEAN~1\main.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -