📄 main.lis
字号:
.module Main.c
.area data(ram, con, rel)
0000 _lcnt::
0000 .blkb 2
.area idata
0000 0000 .word 0
.area data(ram, con, rel)
0002 .dbfile C:\DOCUME~1\Administrator\桌面\自动往返小汽车\源程序\自动往返小车lcd版\Main.c
0002 .dbsym e lcnt _lcnt I
0002 _qcnt::
0002 .blkb 2
.area idata
0002 0000 .word 0
.area data(ram, con, rel)
0004 .dbfile C:\DOCUME~1\Administrator\桌面\自动往返小汽车\源程序\自动往返小车lcd版\Main.c
0004 .dbsym e qcnt _qcnt I
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\Administrator\桌面\自动往返小汽车\源程序\自动往返小车lcd版\Main.c
0000 .dbfunc e main _main fV
.even
0000 _main::
0000 2297 sbiw R28,2
0002 .dbline -1
0002 .dbline 25
0002 ; // main.c
0002 ; // 8/1/2005 written by MrLiu
0002 ; //
0002 ; // Project :自动往返电动小车
0002 ; // Target : 8515
0002 ; // Crystal : 8.0000Mhz
0002 ; //
0002 ;
0002 ; #include <io8515v.h>
0002 ; #include <macros.h>
0002 ;
0002 ; #include "CarInit.h"
0002 ; #include "1602LCD.h"
0002 ;
0002 ; #define CTRL_ZHENG PORTA|=0x80 // 控制正转
0002 ; #define CTRL_FAN PORTA&=0x7F // 控制反转
0002 ;
0002 ; // globals :
0002 ; int lcnt=0; // 线条数变量
0002 ; int qcnt=0; // 车轮转数变量
0002 ; int juli[3]; // 距离数组
0002 ; unsigned int time[3]; // 时间数组
0002 ;
0002 ; void main(void)
0002 ; {
0002 .dbline 26
0002 ; LCD_init();
0002 00D0 rcall _LCD_init
0004 .dbline 27
0004 ; LCD_write_string(0,0,"TIME:00.0s") ;
0004 80E0 ldi R24,<L2
0006 90E0 ldi R25,>L2
0008 9983 std y+1,R25
000A 8883 std y+0,R24
000C 2227 clr R18
000E 0027 clr R16
0010 00D0 rcall _LCD_write_string
0012 .dbline 28
0012 ; LCD_write_string(0,1,"RACE:00.0m") ;
0012 80E0 ldi R24,<L3
0014 90E0 ldi R25,>L3
0016 9983 std y+1,R25
0018 8883 std y+0,R24
001A 21E0 ldi R18,1
001C 0027 clr R16
001E 00D0 rcall _LCD_write_string
0020 .dbline 29
0020 ; init_devices(); // 设备初始化
0020 00D0 rcall _init_devices
0022 .dbline 30
0022 ; CTRL_ZHENG; // 控制正转
0022 DF9A sbi 0x1b,7
0024 65C0 rjmp L5
0026 L4:
0026 .dbline 33
0026 ; // 主循环
0026 ; while(lcnt<14)
0026 ; {
0026 .dbline 34
0026 ; if(lcnt==3)
0026 80910000 lds R24,_lcnt
002A 90910100 lds R25,_lcnt+1
002E 8330 cpi R24,3
0030 E0E0 ldi R30,0
0032 9E07 cpc R25,R30
0034 11F4 brne L7
0036 .dbline 35
0036 ; shiftl(); // 低速行驶
0036 00D0 rcall _shiftl
0038 5BC0 rjmp L8
003A L7:
003A .dbline 36
003A ; else if(lcnt==4)
003A 80910000 lds R24,_lcnt
003E 90910100 lds R25,_lcnt+1
0042 8430 cpi R24,4
0044 E0E0 ldi R30,0
0046 9E07 cpc R25,R30
0048 11F4 brne L9
004A .dbline 37
004A ; shifth(); // 高速行驶
004A 00D0 rcall _shifth
004C 51C0 rjmp L10
004E L9:
004E .dbline 38
004E ; else if(lcnt==6)
004E 80910000 lds R24,_lcnt
0052 90910100 lds R25,_lcnt+1
0056 8630 cpi R24,6
0058 E0E0 ldi R30,0
005A 9E07 cpc R25,R30
005C 01F5 brne L11
005E .dbline 39
005E ; {
005E .dbline 40
005E ; CTRL_FAN; // 反转制动
005E 8BB3 in R24,0x1b
0060 8F77 andi R24,127
0062 8BBB out 0x1b,R24
0064 .dbline 41
0064 ; delay_nms(350);
0064 0EE5 ldi R16,350
0066 11E0 ldi R17,1
0068 00D0 rcall _delay_nms
006A .dbline 42
006A ; stop();
006A 00D0 rcall _stop
006C .dbline 43
006C ; LCD_write_string(10,1,"(STOP)") ;
006C 80E0 ldi R24,<L13
006E 90E0 ldi R25,>L13
0070 9983 std y+1,R25
0072 8883 std y+0,R24
0074 21E0 ldi R18,1
0076 0AE0 ldi R16,10
0078 00D0 rcall _LCD_write_string
007A .dbline 44
007A ; delay_nms(10000);
007A 00E1 ldi R16,10000
007C 17E2 ldi R17,39
007E 00D0 rcall _delay_nms
0080 .dbline 45
0080 ; LCD_write_string(10,1," ") ;
0080 80E0 ldi R24,<L14
0082 90E0 ldi R25,>L14
0084 9983 std y+1,R25
0086 8883 std y+0,R24
0088 21E0 ldi R18,1
008A 0AE0 ldi R16,10
008C 00D0 rcall _LCD_write_string
008E .dbline 46
008E ; lcnt=7;
008E 87E0 ldi R24,7
0090 90E0 ldi R25,0
0092 90930100 sts _lcnt+1,R25
0096 80930000 sts _lcnt,R24
009A .dbline 47
009A ; shifth(); // 高速行驶
009A 00D0 rcall _shifth
009C .dbline 48
009C ; }
009C 29C0 rjmp L12
009E L11:
009E .dbline 49
009E ; else if(lcnt==10)
009E 80910000 lds R24,_lcnt
00A2 90910100 lds R25,_lcnt+1
00A6 8A30 cpi R24,10
00A8 E0E0 ldi R30,0
00AA 9E07 cpc R25,R30
00AC 11F4 brne L15
00AE .dbline 50
00AE ; shiftl(); // 低速行驶
00AE 00D0 rcall _shiftl
00B0 1FC0 rjmp L16
00B2 L15:
00B2 .dbline 51
00B2 ; else if(lcnt==11)
00B2 80910000 lds R24,_lcnt
00B6 90910100 lds R25,_lcnt+1
00BA 8B30 cpi R24,11
00BC E0E0 ldi R30,0
00BE 9E07 cpc R25,R30
00C0 11F4 brne L17
00C2 .dbline 52
00C2 ; shifth(); // 高速行驶
00C2 00D0 rcall _shifth
00C4 15C0 rjmp L18
00C6 L17:
00C6 .dbline 53
00C6 ; else if(lcnt>=13)
00C6 80910000 lds R24,_lcnt
00CA 90910100 lds R25,_lcnt+1
00CE 8D30 cpi R24,13
00D0 E0E0 ldi R30,0
00D2 9E07 cpc R25,R30
00D4 6CF0 brlt L19
00D6 .dbline 54
00D6 ; {
00D6 .dbline 55
00D6 ; CLI();
00D6 F894 cli
00D8 .dbline 56
00D8 ; CTRL_ZHENG; // 反转制动
00D8 DF9A sbi 0x1b,7
00DA .dbline 57
00DA ; delay_nms(350);
00DA 0EE5 ldi R16,350
00DC 11E0 ldi R17,1
00DE 00D0 rcall _delay_nms
00E0 .dbline 58
00E0 ; stop();
00E0 00D0 rcall _stop
00E2 .dbline 59
00E2 ; LCD_write_string(10,1,"(STOP)") ;
00E2 80E0 ldi R24,<L13
00E4 90E0 ldi R25,>L13
00E6 9983 std y+1,R25
00E8 8883 std y+0,R24
00EA 21E0 ldi R18,1
00EC 0AE0 ldi R16,10
00EE 00D0 rcall _LCD_write_string
00F0 .dbline 60
00F0 ; }
00F0 L19:
00F0 L18:
00F0 L16:
00F0 L12:
00F0 L10:
00F0 L8:
00F0 .dbline 61
00F0 L5:
00F0 .dbline 32
00F0 80910000 lds R24,_lcnt
00F4 90910100 lds R25,_lcnt+1
00F8 8E30 cpi R24,14
00FA E0E0 ldi R30,0
00FC 9E07 cpc R25,R30
00FE 0CF4 brge X0
0100 92CF rjmp L4
0102 X0:
0102 .dbline -2
0102 .dbline 62
0102 ; }
0102 ; }
0102 L1:
0102 2296 adiw R28,2
0104 .dbline 0 ; func end
0104 0895 ret
0106 .dbend
.area bss(ram, con, rel)
0000 .dbfile C:\DOCUME~1\Administrator\桌面\自动往返小汽车\源程序\自动往返小车lcd版\Main.c
0000 _time::
0000 .blkb 6
0006 .dbsym e time _time A[6:3]i
0006 _juli::
0006 .blkb 6
000C .dbsym e juli _juli A[6:3]I
.area data(ram, con, rel)
0004 .dbfile C:\DOCUME~1\Administrator\桌面\自动往返小汽车\源程序\自动往返小车lcd版\Main.c
0004 L14:
0004 .blkb 7
.area idata
0004 20202020202000 .byte 32,32,32,32,32,32,0
.area data(ram, con, rel)
000B .dbfile C:\DOCUME~1\Administrator\桌面\自动往返小汽车\源程序\自动往返小车lcd版\Main.c
000B L13:
000B .blkb 7
.area idata
000B 2853544F502900 .byte 40,'S,'T,'O,'P,41,0
.area data(ram, con, rel)
0012 .dbfile C:\DOCUME~1\Administrator\桌面\自动往返小汽车\源程序\自动往返小车lcd版\Main.c
0012 L3:
0012 .blkb 11
.area idata
0012 524143453A30302E306D00 .byte 'R,'A,'C,'E,58,48,48,46,48,'m,0
.area data(ram, con, rel)
001D .dbfile C:\DOCUME~1\Administrator\桌面\自动往返小汽车\源程序\自动往返小车lcd版\Main.c
001D L2:
001D .blkb 11
.area idata
001D 54494D453A30302E307300 .byte 'T,'I,'M,'E,58,48,48,46,48,'s,0
.area data(ram, con, rel)
0028 .dbfile C:\DOCUME~1\Administrator\桌面\自动往返小汽车\源程序\自动往返小车lcd版\Main.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -