📄 main.s
字号:
.module main.c
.area text(rom, con, rel)
.dbfile F:\USING0~1\motor\main.c
.dbfunc e ReadPin _ReadPin fc
; i -> R16
.even
_ReadPin::
.dbline -1
.dbline 4
; #include "main.h"
;
; unsigned char ReadPin(void)
; {
.dbline 9
; unsigned char i;
;
; /* 定义上拉电阻和设置高电平输出 */
; /* 为端口引脚定义方向 */
; PORTC = 0XFF;
ldi R24,255
out 0x15,R24
.dbline 10
; DDRC = 0X00;
clr R2
out 0x14,R2
.dbline 12
; /* 为了同步插入nop 指令*/
; _NOP();
nop
.dbline 14
; /* 读取端口引脚*/
; i = PINC;
in R16,0x13
.dbline -2
L1:
.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 18
; }
;
; void car_turn(unsigned char mes)
; {
.dbline 19
; switch(mes)
clr R21
cpi R20,248
ldi R30,0
cpc R21,R30
breq L6
cpi R20,249
ldi R30,0
cpc R21,R30
breq L7
cpi R20,250
ldi R30,0
cpc R21,R30
breq L8
cpi R20,251
ldi R30,0
cpc R21,R30
brne X1
xjmp L9
X1:
cpi R20,252
ldi R30,0
cpc R21,R30
brne X2
xjmp L10
X2:
cpi R20,253
ldi R30,0
cpc R21,R30
brne X3
xjmp L11
X3:
cpi R20,254
ldi R30,0
cpc R21,R30
brne X4
xjmp L12
X4:
cpi R20,255
ldi R30,0
cpc R21,R30
brne X5
xjmp L13
X5:
xjmp L4
X0:
.dbline 20
; {
L6:
.dbline 21
; case 0xf8: forward(); break;
xcall _forward
.dbline 21
xjmp L4
L7:
.dbline 23
;
; case 0xf9: {
.dbline 24
; back_left();
xcall _back_left
.dbline 25
; delay(1000);
ldi R16,1000
ldi R17,3
xcall _delay
.dbline 26
; car_stop();
xcall _car_stop
.dbline 27
; delay(1000);
ldi R16,1000
ldi R17,3
xcall _delay
.dbline 28
; for_right();
xcall _for_right
.dbline 29
; delay(1000);
ldi R16,1000
ldi R17,3
xcall _delay
.dbline 30
; }; break;
.dbline 30
.dbline 30
xjmp L4
L8:
.dbline 32
;
; case 0xfa: {
.dbline 33
; backward();
xcall _backward
.dbline 34
; delay(1000);
ldi R16,1000
ldi R17,3
xcall _delay
.dbline 35
; for_left();
xcall _for_left
.dbline 36
; delay(1000);
ldi R16,1000
ldi R17,3
xcall _delay
.dbline 37
; }; break;
.dbline 37
.dbline 37
xjmp L4
L9:
.dbline 40
;
;
; case 0xfb: {
.dbline 41
; back_left();
xcall _back_left
.dbline 42
; delay(1000);
ldi R16,1000
ldi R17,3
xcall _delay
.dbline 43
; car_stop();
xcall _car_stop
.dbline 44
; delay(1000);
ldi R16,1000
ldi R17,3
xcall _delay
.dbline 45
; for_right();
xcall _for_right
.dbline 46
; delay(1000);
ldi R16,1000
ldi R17,3
xcall _delay
.dbline 47
; }; break;
.dbline 47
.dbline 47
xjmp L4
L10:
.dbline 49
;
; case 0xfc: {
.dbline 50
; back_right();
xcall _back_right
.dbline 51
; delay(1000);
ldi R16,1000
ldi R17,3
xcall _delay
.dbline 52
; car_stop();
xcall _car_stop
.dbline 53
; delay(1000);
ldi R16,1000
ldi R17,3
xcall _delay
.dbline 54
; for_left();
xcall _for_left
.dbline 55
; delay(1000);
ldi R16,1000
ldi R17,3
xcall _delay
.dbline 56
; }; break;
.dbline 56
.dbline 56
xjmp L4
L11:
.dbline 58
;
; case 0xfd: forward(); break;
xcall _forward
.dbline 58
xjmp L4
L12:
.dbline 60
;
; case 0xfe: {
.dbline 61
; back_right();
xcall _back_right
.dbline 62
; delay(1000);
ldi R16,1000
ldi R17,3
xcall _delay
.dbline 63
; car_stop();
xcall _car_stop
.dbline 64
; delay(1000);
ldi R16,1000
ldi R17,3
xcall _delay
.dbline 65
; for_left();
xcall _for_left
.dbline 66
; delay(1000);
ldi R16,1000
ldi R17,3
xcall _delay
.dbline 67
; }; break;
.dbline 67
.dbline 67
xjmp L4
L13:
.dbline 69
.dbline 70
xcall _backward
.dbline 71
ldi R16,1000
ldi R17,3
xcall _delay
.dbline 72
xcall _for_left
.dbline 73
ldi R16,1000
ldi R17,3
xcall _delay
.dbline 74
.dbline 74
.dbline 76
L4:
.dbline -2
L2:
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 83
;
; case 0xff: {
; backward();
; delay(1000);
; for_left();
; delay(1000);
; } break;
;
; default: break;
;
; }
; }
;
;
; void main()
; {
.dbline 84
; unsigned char pin = 0x00;
clr R20
xjmp L16
L15:
.dbline 86
.dbline 87
xcall _ReadPin
mov R20,R16
.dbline 88
xcall _car_turn
.dbline 89
L16:
.dbline 85
xjmp L15
X6:
.dbline -2
L14:
.dbline 0 ; func end
ret
.dbsym r pin 20 c
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -