?? cny_car.s
字號:
.module cny_car.c
.area text(rom, con, rel)
.dbfile e:/ICC/include/sl3010.c
.dbfunc e port_init _port_init fV
.even
_port_init::
.dbline -1
.dbline 80
; //cny_car 探測白底黑線,沿著黑線運動
; #include <io8515v.h>
; #include <macros.h>
; #include <sl3010.c>
;
; unsigned char cny_in;
;
; #define cny_delayms 50
;
; void cny_car()
; {
; unsigned char cny_times;
; port_init();
; start_up:
; mic_startup();
;
; while(1)
; {
; // sw_touch();
;
; cny_in = PINC & 0xe0;
; if(cny_in == 0x00 || cny_in == 0x40 || cny_in == 0xa0)
; {//前行
; forward(); //前行
; cny_times = 0x00;
; }
; if(cny_in == 0x20 || cny_in == 0x60)
; {//慢速右轉
; turn_right_s(); //慢速右轉
; delay_ms(cny_delayms);
; cny_times = 0x00;
; }
; if(cny_in == 0x80 || cny_in == 0xc0)
; {//慢速左轉
; turn_left_s(); //慢速左轉
; delay_ms(cny_delayms);
; cny_times = 0x00;
; }
; if(cny_in == 0xe0)
; {//前行--探測多次都為 0xe0 ,停止運行
; forward();
; cny_times++;
; delay_ms(10);
; if(cny_times == 0x64)
; {
; stop(); //停止運動//熄滅指示燈
; goto start_up;
; }
; }
; }
; }
;
; void main()
; {
; cny_car();
; }
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
.dbline 81
;
ldi R24,255
out 0x1a,R24
.dbline 81
out 0x1b,R24
.dbline 82
;
ldi R24,128
out 0x17,R24
.dbline 82
ldi R24,255
out 0x18,R24
.dbline 83
;
ldi R24,1
out 0x14,R24
.dbline 83
ldi R24,255
out 0x15,R24
.dbline 84
;
ldi R24,240
out 0x11,R24
.dbline 84
ldi R24,255
out 0x12,R24
.dbline -2
.dbline 85
;
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e delay_us _delay_us fV
; time -> R16,R17
.even
_delay_us::
.dbline -1
.dbline 88
;
;
;
L3:
.dbline 90
;
;
.dbline 91
;
subi R16,1
sbci R17,0
.dbline 92
;
L4:
.dbline 93
;
ldi R24,1
ldi R25,0
cp R24,R16
cpc R25,R17
brlt L3
.dbline -2
.dbline 94
;
L2:
.dbline 0 ; func end
ret
.dbsym r time 16 I
.dbend
.dbfunc e delay_ms _delay_ms fV
; time -> R20,R21
.even
_delay_ms::
rcall push_gset1
mov R20,R16
mov R21,R17
.dbline -1
.dbline 97
;
;
;
rjmp L8
L7:
.dbline 99
.dbline 100
ldi R16,1000
ldi R17,3
rcall _delay_us
.dbline 101
subi R20,1
sbci R21,0
.dbline 102
L8:
.dbline 98
;
cpi R20,0
cpc R20,R21
brne L7
X0:
.dbline -2
.dbline 103
;
;
;
;
;
L6:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r time 20 i
.dbend
.dbfunc e turn_right _turn_right fV
.even
_turn_right::
.dbline -1
.dbline 106
;
;
;
.dbline 107
;
ldi R24,96
out 0x12,R24
.dbline 108
;
ldi R24,204
out 0x1b,R24
.dbline -2
.dbline 109
;
L10:
.dbline 0 ; func end
ret
.dbend
.dbfunc e turn_left _turn_left fV
.even
_turn_left::
.dbline -1
.dbline 112
;
;
;
.dbline 113
;
ldi R24,144
out 0x12,R24
.dbline 114
;
ldi R24,51
out 0x1b,R24
.dbline -2
.dbline 115
;
L11:
.dbline 0 ; func end
ret
.dbend
.dbfunc e turn_right_s _turn_right_s fV
.even
_turn_right_s::
.dbline -1
.dbline 117
;
;
.dbline 118
;
ldi R24,32
out 0x12,R24
.dbline 119
;
ldi R24,207
out 0x1b,R24
.dbline -2
.dbline 120
;
L12:
.dbline 0 ; func end
ret
.dbend
.dbfunc e turn_left_s _turn_left_s fV
.even
_turn_left_s::
.dbline -1
.dbline 123
;
;
;
.dbline 124
;
ldi R24,128
out 0x12,R24
.dbline 125
;
ldi R24,243
out 0x1b,R24
.dbline -2
.dbline 126
;
L13:
.dbline 0 ; func end
ret
.dbend
.dbfunc e backward _backward fV
.even
_backward::
.dbline -1
.dbline 129
;
;
;
.dbline 130
;
ldi R24,80
out 0x12,R24
.dbline 131
;
ldi R24,60
out 0x1b,R24
.dbline -2
.dbline 132
;
L14:
.dbline 0 ; func end
ret
.dbend
.dbfunc e forward _forward fV
.even
_forward::
.dbline -1
.dbline 135
;
;
;
.dbline 136
;
ldi R24,160
out 0x12,R24
.dbline 137
;
ldi R24,195
out 0x1b,R24
.dbline -2
.dbline 138
;
L15:
.dbline 0 ; func end
ret
.dbend
.dbfunc e stop _stop fV
.even
_stop::
.dbline -1
.dbline 141
;
;
;
.dbline 142
;
ldi R24,255
out 0x12,R24
.dbline 143
;
out 0x1b,R24
.dbline -2
.dbline 144
;
L16:
.dbline 0 ; func end
ret
.dbend
.dbfunc e sw_touch _sw_touch fV
; remote_in -> R22
; sw_in -> R20
.even
_sw_touch::
rcall push_gset2
.dbline -1
.dbline 160
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
.dbline 163
;
;
;
in R20,0x13
andi R20,16
.dbline 164
;
brne L18
.dbline 165
;
.dbline 166
;
rcall _backward
.dbline 167
;
ldi R16,250
ldi R17,0
rcall _delay_ms
.dbline 169
;
;
lds R24,_work_status
cpi R24,112
brne L20
.dbline 170
;
.dbline 171
;
rcall _stop
rjmp L23
L22:
.dbline 173
.dbline 174
ldi R24,85
out 0x1b,R24
.dbline 175
ldi R16,250
ldi R17,0
rcall _delay_ms
.dbline 176
ldi R24,170
out 0x1b,R24
.dbline 177
ldi R16,250
ldi R17,0
rcall _delay_ms
.dbline 178
L23:
.dbline 172
;
rjmp L22
X1:
.dbline 179
;
;
;
;
;
;
;
L20:
.dbline 181
;
;
rcall _turn_left
.dbline 182
;
ldi R16,250
ldi R17,0
rcall _delay_ms
.dbline 183
;
L18:
.dbline 185
;
;
in R20,0x16
andi R20,112
.dbline 186
;
cpi R20,80
brne L25
.dbline 187
;
.dbline 188
;
rcall _forward
.dbline 189
;
ldi R16,250
ldi R17,0
rcall _delay_ms
.dbline 191
;
;
rcall _turn_left
.dbline 192
;
ldi R16,250
ldi R17,0
rcall _delay_ms
.dbline 193
;
L25:
.dbline 194
;
cpi R20,48
brne L27
.dbline 195
;
.dbline 196
;
rcall _backward
.dbline 197
;
ldi R16,250
ldi R17,0
rcall _delay_ms
.dbline 199
;
;
rcall _turn_left
.dbline 200
;
ldi R16,250
ldi R17,0
rcall _delay_ms
.dbline 201
;
L27:
.dbline 202
;
cpi R20,96
brne L29
.dbline 203
;
.dbline 204
;
rcall _backward
.dbline 205
;
ldi R16,250
ldi R17,0
rcall _delay_ms
.dbline 207
;
;
rcall _turn_left
.dbline 208
;
ldi R16,250
ldi R17,0
rcall _delay_ms
.dbline 209
;
L29:
.dbline 210
;
cpi R20,32
brne L31
.dbline 211
;
.dbline 212
;
rcall _stop
.dbline 213
;
ldi R16,1000
ldi R17,3
rcall _delay_ms
rjmp L34
L33:
.dbline 215
;
;
.dbline 216
;
in R20,0x13
andi R20,16
.dbline 217
;
brne L36
.dbline 218
;
.dbline 218
rjmp L35
L36:
.dbline 219
;
ldi R24,85
out 0x1b,R24
.dbline 220
;
ldi R16,250
ldi R17,0
rcall _delay_ms
.dbline 221
;
ldi R24,170
out 0x1b,R24
.dbline 222
;
ldi R16,250
ldi R17,0
rcall _delay_ms
.dbline 223
;
in R22,0x16
andi R22,15
.dbline 224
;
breq L38
.dbline 225
;
.dbline 225
rjmp L35
L38:
.dbline 226
L34:
.dbline 214
rjmp L33
L35:
.dbline 227
L31:
.dbline -2
.dbline 228
;
;
;
L17:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r remote_in 22 c
.dbsym r sw_in 20 c
.dbend
.dbfunc e mic_startup _mic_startup fV
; mic_in -> R16
.even
_mic_startup::
.dbline -1
.dbline 231
;
;
;
rjmp L42
L41:
.dbline 235
;
;
;
;
.dbline 236
;
in R16,0x13
andi R16,8
.dbline 237
;
brne L44
.dbline 237
.dbline 237
rjmp L43
L44:
.dbline 238
L42:
.dbline 234
rjmp L41
L43:
.dbline -2
.dbline 239
;
;
L40:
.dbline 0 ; func end
ret
.dbsym r mic_in 16 c
.dbend
.dbfunc e remote_auto_time _remote_auto_time fV
; remote_in -> R16
.even
_remote_auto_time::
.dbline -1
.dbline 256
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
.dbline 258
;
;
in R16,0x16
andi R16,15
.dbline 259
;
clr R17
cpi R16,0
cpc R16,R17
brne X4
rjmp L48
X4:
X2:
cpi R16,1
ldi R30,0
cpc R17,R30
brne X5
rjmp L59
X5:
cpi R16,2
ldi R30,0
cpc R17,R30
breq L53
cpi R16,4
ldi R30,0
cpc R17,R30
breq L50
cpi R16,8
ldi R30,0
cpc R17,R30
breq L56
rjmp L47
X3:
.dbline 260
;
L50:
.dbline 262
;
;
lds R24,_delay_time2
lds R25,_delay_time2+1
sbiw R24,50
sts _delay_time2+1,R25
sts _delay_time2,R24
.dbline 263
;
cpi R24,50
ldi R30,0
cpc R25,R30
breq X6
rjmp L48
X6:
.dbline 264
;
.dbline 264
ldi R24,100
ldi R25,0
sts _delay_time2+1,R25
sts _delay_time2,R24
.dbline 264
.dbline 265
;
rjmp L48
L53:
.dbline 267
;
;
lds R24,_delay_time1
lds R25,_delay_time1+1
adiw R24,50
sts _delay_time1+1,R25
sts _delay_time1,R24
.dbline 268
;
cpi R24,2
ldi R30,8
cpc R25,R30
brne L48
.dbline 269
;
.dbline 269
ldi R24,2000
ldi R25,7
sts _delay_time1+1,R25
sts _delay_time1,R24
.dbline 269
.dbline 270
;
rjmp L48
L56:
.dbline 272
;
;
lds R24,_delay_time1
lds R25,_delay_time1+1
sbiw R24,50
sts _delay_time1+1,R25
sts _delay_time1,R24
.dbline 273
;
cpi R24,50
ldi R30,0
cpc R25,R30
brne L48
.dbline 274
;
.dbline 274
ldi R24,100
ldi R25,0
sts _delay_time1+1,R25
sts _delay_time1,R24
.dbline 274
.dbline 275
;
rjmp L48
L59:
.dbline 277
;
;
lds R24,_delay_time2
lds R25,_delay_time2+1
adiw R24,50
sts _delay_time2+1,R25
sts _delay_time2,R24
.dbline 278
;
cpi R24,2
ldi R30,8
cpc R25,R30
brne L48
.dbline 279
;
.dbline 279
ldi R24,2000
ldi R25,7
sts _delay_time2+1,R25
sts _delay_time2,R24
.dbline 279
.dbline 280
;
.dbline 282
;
;
L47:
L48:
.dbline -2
.dbline 284
;
;
L46:
.dbline 0 ; func end
ret
.dbsym r remote_in 16 c
.dbend
.dbfile E:\icc\iccavr\sl3010\cny_car\cny_car.c
.dbfunc e cny_car _cny_car fV
; cny_times -> R20
.even
_cny_car::
rcall push_gset1
.dbline -1
.dbline 11
.dbline 13
rcall _port_init
L64:
.dbline 15
rcall _mic_startup
rjmp L66
L65:
.dbline 18
.dbline 21
in R24,0x13
andi R24,224
sts _cny_in,R24
.dbline 22
tst R24
breq L71
cpi R24,64
breq L71
cpi R24,160
brne L68
L71:
.dbline 23
.dbline 24
rcall _forward
.dbline 25
clr R20
.dbline 26
L68:
.dbline 27
lds R24,_cny_in
cpi R24,32
breq L74
cpi R24,96
brne L72
L74:
.dbline 28
.dbline 29
rcall _turn_right_s
.dbline 30
ldi R16,50
ldi R17,0
rcall _delay_ms
.dbline 31
clr R20
.dbline 32
L72:
.dbline 33
lds R24,_cny_in
cpi R24,128
breq L77
cpi R24,192
brne L75
L77:
.dbline 34
.dbline 35
rcall _turn_left_s
.dbline 36
ldi R16,50
ldi R17,0
rcall _delay_ms
.dbline 37
clr R20
.dbline 38
L75:
.dbline 39
lds R24,_cny_in
cpi R24,224
brne L78
.dbline 40
.dbline 41
rcall _forward
.dbline 42
inc R20
.dbline 43
ldi R16,10
ldi R17,0
rcall _delay_ms
.dbline 44
cpi R20,100
brne L80
.dbline 45
.dbline 46
rcall _stop
.dbline 47
rjmp L64
L80:
.dbline 49
L78:
.dbline 50
L66:
.dbline 17
rjmp L65
X7:
.dbline -2
.dbline 51
L63:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r cny_times 20 c
.dbend
.dbfunc e main _main fV
.even
_main::
.dbline -1
.dbline 54
.dbline 55
.dbline -2
.dbline 56
L82:
.dbline 0 ; func end
rjmp _cny_car
.dbend
.area bss(ram, con, rel)
.dbfile E:\icc\iccavr\sl3010\cny_car\cny_car.c
_cny_in::
.blkb 1
.dbsym e cny_in _cny_in c
_delay_time2::
.blkb 2
.dbfile e:/ICC/include/sl3010.c
.dbsym e delay_time2 _delay_time2 i
_delay_time1::
.blkb 2
.dbsym e delay_time1 _delay_time1 i
_work_status::
.blkb 1
.dbsym e work_status _work_status c
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -