📄 main.s
字号:
.module main.c
.area text(rom, con, rel)
.dbfile F:\USING0~1\motor_line\main.c
.dbfunc e delay _delay fV
; i -> R20,R21
; n -> R16,R17
.even
_delay::
xcall push_gset1
.dbline -1
.dbline 4
; #include "main.h"
;
; void delay(unsigned int n) //N ms延时函数
; {
xjmp L3
L2:
.dbline 7
clr R20
clr R21
xjmp L8
L5:
.dbline 7
L6:
.dbline 7
subi R20,255 ; offset = 1
sbci R21,255
L8:
.dbline 7
cpi R20,125
ldi R30,0
cpc R21,R30
brlo L5
L3:
.dbline 6
; unsigned int i;
; while(n--)
movw R2,R16
subi R16,1
sbci R17,0
tst R2
brne L2
tst R3
brne L2
X0:
.dbline -2
L1:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbsym r n 16 i
.dbend
.dbfunc e ReadPin _ReadPin fc
; i -> R16
.even
_ReadPin::
.dbline -1
.dbline 11
; for (i=0;i<125;i++);
; }
;
; unsigned char ReadPin(void)
; {
.dbline 16
; unsigned char i;
;
; /* 定义上拉电阻和设置高电平输出 */
; /* 为端口引脚定义方向 */
; PORTC = 0XFF;
ldi R24,255
out 0x15,R24
.dbline 17
; DDRC = 0X00;
clr R2
out 0x14,R2
.dbline 19
; /* 为了同步插入nop 指令*/
; _NOP();
nop
.dbline 21
; /* 读取端口引脚*/
; i = PINC;
in R16,0x13
.dbline -2
L9:
.dbline 0 ; func end
ret
.dbsym r i 16 c
.dbend
.dbfunc e car_turn _car_turn fV
; mes -> R20
.even
_car_turn::
xcall push_gset1
mov R20,R16
.dbline -1
.dbline 25
; }
;
; void car_turn(unsigned char mes)
; {
.dbline 26
; switch(mes)
clr R21
cpi R20,231
ldi R30,0
cpc R21,R30
breq L17
ldi R24,231
ldi R25,0
cp R24,R20
cpc R25,R21
brlt L21
L20:
cpi R20,207
ldi R30,0
cpc R21,R30
breq L18
cpi R20,207
ldi R30,0
cpc R21,R30
brlt L11
L22:
cpi R20,223
ldi R30,0
cpc R21,R30
breq L16
xjmp L11
L21:
cpi R20,247
ldi R30,0
cpc R21,R30
breq L14
ldi R24,247
ldi R25,0
cp R24,R20
cpc R25,R21
brlt L24
L23:
cpi R20,239
ldi R30,0
cpc R21,R30
breq L15
xjmp L11
L24:
cpi R20,255
ldi R30,0
cpc R21,R30
breq L19
xjmp L11
X1:
.dbline 27
; {
L14:
.dbline 28
; case 0xf7: for_left(); break;
xcall _for_left
.dbline 28
xjmp L12
L15:
.dbline 30
;
; case 0xef: forward(); break;
xcall _forward
.dbline 30
xjmp L12
L16:
.dbline 32
;
; case 0xdf: for_right(); break;
xcall _for_right
.dbline 32
xjmp L12
L17:
.dbline 34
;
; case 0xe7: for_left(); break;
xcall _for_left
.dbline 34
xjmp L12
L18:
.dbline 36
;
; case 0xcf: for_right(); break;
xcall _for_right
.dbline 36
xjmp L12
L19:
.dbline 38
;
; case 0xff: backward(); break;
xcall _backward
.dbline 38
xjmp L12
L11:
.dbline 40
xcall _forward
.dbline 40
L12:
.dbline -2
L10:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r mes 20 c
.dbend
.dbfunc e main _main fV
; pin -> R20
.even
_main::
.dbline -1
.dbline 47
;
; default: forward(); break;
;
; }
; }
;
;
; void main()
; {
.dbline 48
; unsigned char pin = 0x00;
clr R20
xjmp L27
L26:
.dbline 50
.dbline 51
xcall _ReadPin
mov R20,R16
.dbline 52
xcall _car_turn
.dbline 53
L27:
.dbline 49
xjmp L26
X2:
.dbline -2
L25:
.dbline 0 ; func end
ret
.dbsym r pin 20 c
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -