📄 main.s
字号:
.module Main.c
.area data(ram, con, rel)
_lcnt::
.blkb 2
.area idata
.word 0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\自动往返小汽车\源程序\自动往返小车lcd版\Main.c
.dbsym e lcnt _lcnt I
_qcnt::
.blkb 2
.area idata
.word 0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\自动往返小汽车\源程序\自动往返小车lcd版\Main.c
.dbsym e qcnt _qcnt I
.area text(rom, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\自动往返小汽车\源程序\自动往返小车lcd版\Main.c
.dbfunc e main _main fV
.even
_main::
sbiw R28,2
.dbline -1
.dbline 25
; // main.c
; // 8/1/2005 written by MrLiu
; //
; // Project :自动往返电动小车
; // Target : 8515
; // Crystal : 8.0000Mhz
; //
;
; #include <io8515v.h>
; #include <macros.h>
;
; #include "CarInit.h"
; #include "1602LCD.h"
;
; #define CTRL_ZHENG PORTA|=0x80 // 控制正转
; #define CTRL_FAN PORTA&=0x7F // 控制反转
;
; // globals :
; int lcnt=0; // 线条数变量
; int qcnt=0; // 车轮转数变量
; int juli[3]; // 距离数组
; unsigned int time[3]; // 时间数组
;
; void main(void)
; {
.dbline 26
; LCD_init();
rcall _LCD_init
.dbline 27
; LCD_write_string(0,0,"TIME:00.0s") ;
ldi R24,<L2
ldi R25,>L2
std y+1,R25
std y+0,R24
clr R18
clr R16
rcall _LCD_write_string
.dbline 28
; LCD_write_string(0,1,"RACE:00.0m") ;
ldi R24,<L3
ldi R25,>L3
std y+1,R25
std y+0,R24
ldi R18,1
clr R16
rcall _LCD_write_string
.dbline 29
; init_devices(); // 设备初始化
rcall _init_devices
.dbline 30
; CTRL_ZHENG; // 控制正转
sbi 0x1b,7
rjmp L5
L4:
.dbline 33
; // 主循环
; while(lcnt<14)
; {
.dbline 34
; if(lcnt==3)
lds R24,_lcnt
lds R25,_lcnt+1
cpi R24,3
ldi R30,0
cpc R25,R30
brne L7
.dbline 35
; shiftl(); // 低速行驶
rcall _shiftl
rjmp L8
L7:
.dbline 36
; else if(lcnt==4)
lds R24,_lcnt
lds R25,_lcnt+1
cpi R24,4
ldi R30,0
cpc R25,R30
brne L9
.dbline 37
; shifth(); // 高速行驶
rcall _shifth
rjmp L10
L9:
.dbline 38
; else if(lcnt==6)
lds R24,_lcnt
lds R25,_lcnt+1
cpi R24,6
ldi R30,0
cpc R25,R30
brne L11
.dbline 39
; {
.dbline 40
; CTRL_FAN; // 反转制动
in R24,0x1b
andi R24,127
out 0x1b,R24
.dbline 41
; delay_nms(350);
ldi R16,350
ldi R17,1
rcall _delay_nms
.dbline 42
; stop();
rcall _stop
.dbline 43
; LCD_write_string(10,1,"(STOP)") ;
ldi R24,<L13
ldi R25,>L13
std y+1,R25
std y+0,R24
ldi R18,1
ldi R16,10
rcall _LCD_write_string
.dbline 44
; delay_nms(10000);
ldi R16,10000
ldi R17,39
rcall _delay_nms
.dbline 45
; LCD_write_string(10,1," ") ;
ldi R24,<L14
ldi R25,>L14
std y+1,R25
std y+0,R24
ldi R18,1
ldi R16,10
rcall _LCD_write_string
.dbline 46
; lcnt=7;
ldi R24,7
ldi R25,0
sts _lcnt+1,R25
sts _lcnt,R24
.dbline 47
; shifth(); // 高速行驶
rcall _shifth
.dbline 48
; }
rjmp L12
L11:
.dbline 49
; else if(lcnt==10)
lds R24,_lcnt
lds R25,_lcnt+1
cpi R24,10
ldi R30,0
cpc R25,R30
brne L15
.dbline 50
; shiftl(); // 低速行驶
rcall _shiftl
rjmp L16
L15:
.dbline 51
; else if(lcnt==11)
lds R24,_lcnt
lds R25,_lcnt+1
cpi R24,11
ldi R30,0
cpc R25,R30
brne L17
.dbline 52
; shifth(); // 高速行驶
rcall _shifth
rjmp L18
L17:
.dbline 53
; else if(lcnt>=13)
lds R24,_lcnt
lds R25,_lcnt+1
cpi R24,13
ldi R30,0
cpc R25,R30
brlt L19
.dbline 54
; {
.dbline 55
; CLI();
cli
.dbline 56
; CTRL_ZHENG; // 反转制动
sbi 0x1b,7
.dbline 57
; delay_nms(350);
ldi R16,350
ldi R17,1
rcall _delay_nms
.dbline 58
; stop();
rcall _stop
.dbline 59
; LCD_write_string(10,1,"(STOP)") ;
ldi R24,<L13
ldi R25,>L13
std y+1,R25
std y+0,R24
ldi R18,1
ldi R16,10
rcall _LCD_write_string
.dbline 60
; }
L19:
L18:
L16:
L12:
L10:
L8:
.dbline 61
L5:
.dbline 32
lds R24,_lcnt
lds R25,_lcnt+1
cpi R24,14
ldi R30,0
cpc R25,R30
brge X0
rjmp L4
X0:
.dbline -2
.dbline 62
; }
; }
L1:
adiw R28,2
.dbline 0 ; func end
ret
.dbend
.area bss(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\自动往返小汽车\源程序\自动往返小车lcd版\Main.c
_time::
.blkb 6
.dbsym e time _time A[6:3]i
_juli::
.blkb 6
.dbsym e juli _juli A[6:3]I
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\自动往返小汽车\源程序\自动往返小车lcd版\Main.c
L14:
.blkb 7
.area idata
.byte 32,32,32,32,32,32,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\自动往返小汽车\源程序\自动往返小车lcd版\Main.c
L13:
.blkb 7
.area idata
.byte 40,'S,'T,'O,'P,41,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\自动往返小汽车\源程序\自动往返小车lcd版\Main.c
L3:
.blkb 11
.area idata
.byte 'R,'A,'C,'E,58,48,48,46,48,'m,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\自动往返小汽车\源程序\自动往返小车lcd版\Main.c
L2:
.blkb 11
.area idata
.byte 'T,'I,'M,'E,58,48,48,46,48,'s,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\自动往返小汽车\源程序\自动往返小车lcd版\Main.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -