📄 main.lis
字号:
.module main.c
.area text(rom, con, rel)
0000 .dbfile F:\USING0~1\motor_line\main.c
0000 .dbfunc e delay _delay fV
0000 ; i -> R20,R21
0000 ; n -> R16,R17
.even
0000 _delay::
0000 0E940000 xcall push_gset1
0004 .dbline -1
0004 .dbline 4
0004 ; #include "main.h"
0004 ;
0004 ; void delay(unsigned int n) //N ms延时函数
0004 ; {
0004 09C0 xjmp L3
0006 L2:
0006 .dbline 7
0006 4427 clr R20
0008 5527 clr R21
000A 02C0 xjmp L8
000C L5:
000C .dbline 7
000C L6:
000C .dbline 7
000C 4F5F subi R20,255 ; offset = 1
000E 5F4F sbci R21,255
0010 L8:
0010 .dbline 7
0010 4D37 cpi R20,125
0012 E0E0 ldi R30,0
0014 5E07 cpc R21,R30
0016 D0F3 brlo L5
0018 L3:
0018 .dbline 6
0018 ; unsigned int i;
0018 ; while(n--)
0018 1801 movw R2,R16
001A 0150 subi R16,1
001C 1040 sbci R17,0
001E 2220 tst R2
0020 91F7 brne L2
0022 3320 tst R3
0024 81F7 brne L2
0026 X0:
0026 .dbline -2
0026 L1:
0026 0E940000 xcall pop_gset1
002A .dbline 0 ; func end
002A 0895 ret
002C .dbsym r i 20 i
002C .dbsym r n 16 i
002C .dbend
002C .dbfunc e ReadPin _ReadPin fc
002C ; i -> R16
.even
002C _ReadPin::
002C .dbline -1
002C .dbline 11
002C ; for (i=0;i<125;i++);
002C ; }
002C ;
002C ; unsigned char ReadPin(void)
002C ; {
002C .dbline 16
002C ; unsigned char i;
002C ;
002C ; /* 定义上拉电阻和设置高电平输出 */
002C ; /* 为端口引脚定义方向 */
002C ; PORTC = 0XFF;
002C 8FEF ldi R24,255
002E 85BB out 0x15,R24
0030 .dbline 17
0030 ; DDRC = 0X00;
0030 2224 clr R2
0032 24BA out 0x14,R2
0034 .dbline 19
0034 ; /* 为了同步插入nop 指令*/
0034 ; _NOP();
0034 0000 nop
0036 .dbline 21
0036 ; /* 读取端口引脚*/
0036 ; i = PINC;
0036 03B3 in R16,0x13
0038 .dbline -2
0038 L9:
0038 .dbline 0 ; func end
0038 0895 ret
003A .dbsym r i 16 c
003A .dbend
003A .dbfunc e car_turn _car_turn fV
003A ; mes -> R20
.even
003A _car_turn::
003A 0E940000 xcall push_gset1
003E 402F mov R20,R16
0040 .dbline -1
0040 .dbline 25
0040 ; }
0040 ;
0040 ; void car_turn(unsigned char mes)
0040 ; {
0040 .dbline 26
0040 ; switch(mes)
0040 5527 clr R21
0042 473E cpi R20,231
0044 E0E0 ldi R30,0
0046 5E07 cpc R21,R30
0048 71F1 breq L17
004A 87EE ldi R24,231
004C 90E0 ldi R25,0
004E 8417 cp R24,R20
0050 9507 cpc R25,R21
0052 6CF0 brlt L21
0054 L20:
0054 4F3C cpi R20,207
0056 E0E0 ldi R30,0
0058 5E07 cpc R21,R30
005A 41F1 breq L18
005C 4F3C cpi R20,207
005E E0E0 ldi R30,0
0060 5E07 cpc R21,R30
0062 54F1 brlt L11
0064 L22:
0064 4F3D cpi R20,223
0066 E0E0 ldi R30,0
0068 5E07 cpc R21,R30
006A D1F0 breq L16
006C 25C0 xjmp L11
006E L21:
006E 473F cpi R20,247
0070 E0E0 ldi R30,0
0072 5E07 cpc R21,R30
0074 79F0 breq L14
0076 87EF ldi R24,247
0078 90E0 ldi R25,0
007A 8417 cp R24,R20
007C 9507 cpc R25,R21
007E 2CF0 brlt L24
0080 L23:
0080 4F3E cpi R20,239
0082 E0E0 ldi R30,0
0084 5E07 cpc R21,R30
0086 49F0 breq L15
0088 17C0 xjmp L11
008A L24:
008A 4F3F cpi R20,255
008C E0E0 ldi R30,0
008E 5E07 cpc R21,R30
0090 81F0 breq L19
0092 12C0 xjmp L11
0094 X1:
0094 .dbline 27
0094 ; {
0094 L14:
0094 .dbline 28
0094 ; case 0xf7: for_left(); break;
0094 0E940000 xcall _for_left
0098 .dbline 28
0098 11C0 xjmp L12
009A L15:
009A .dbline 30
009A ;
009A ; case 0xef: forward(); break;
009A 0E940000 xcall _forward
009E .dbline 30
009E 0EC0 xjmp L12
00A0 L16:
00A0 .dbline 32
00A0 ;
00A0 ; case 0xdf: for_right(); break;
00A0 0E940000 xcall _for_right
00A4 .dbline 32
00A4 0BC0 xjmp L12
00A6 L17:
00A6 .dbline 34
00A6 ;
00A6 ; case 0xe7: for_left(); break;
00A6 0E940000 xcall _for_left
00AA .dbline 34
00AA 08C0 xjmp L12
00AC L18:
00AC .dbline 36
00AC ;
00AC ; case 0xcf: for_right(); break;
00AC 0E940000 xcall _for_right
00B0 .dbline 36
00B0 05C0 xjmp L12
00B2 L19:
00B2 .dbline 38
00B2 ;
00B2 ; case 0xff: backward(); break;
00B2 0E940000 xcall _backward
00B6 .dbline 38
00B6 02C0 xjmp L12
00B8 L11:
00B8 .dbline 40
00B8 0E940000 xcall _forward
00BC .dbline 40
00BC L12:
00BC .dbline -2
00BC L10:
00BC 0E940000 xcall pop_gset1
00C0 .dbline 0 ; func end
00C0 0895 ret
00C2 .dbsym r mes 20 c
00C2 .dbend
00C2 .dbfunc e main _main fV
00C2 ; pin -> R20
.even
00C2 _main::
00C2 .dbline -1
00C2 .dbline 47
00C2 ;
00C2 ; default: forward(); break;
00C2 ;
00C2 ; }
00C2 ; }
00C2 ;
00C2 ;
00C2 ; void main()
00C2 ; {
00C2 .dbline 48
00C2 ; unsigned char pin = 0x00;
00C2 4427 clr R20
00C4 03C0 xjmp L27
00C6 L26:
00C6 .dbline 50
00C6 .dbline 51
00C6 B2DF xcall _ReadPin
00C8 402F mov R20,R16
00CA .dbline 52
00CA B7DF xcall _car_turn
00CC .dbline 53
00CC L27:
00CC .dbline 49
00CC FCCF xjmp L26
00CE X2:
00CE .dbline -2
00CE L25:
00CE .dbline 0 ; func end
00CE 0895 ret
00D0 .dbsym r pin 20 c
00D0 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -