📄 sl3010_4.s
字号:
.byte 35,34
.byte 'B,64
.byte 64,35
.byte 34,33
.byte 'A,40
.byte 'H,35
.byte 37,'E
.byte 64,64
.byte 0,0
.dbsym e sound_stop _sound_stop A[24:24]kc
_sound_left::
.byte 'h,38
.byte 37,35
.byte 34,19
.byte 18,'A
.byte 'A,'A
.byte 35,37
.byte 40,'H
.byte 40,41
.byte 42,41
.byte 38,'E
.byte 'E,'E
.byte 0,0
.dbsym e sound_left _sound_left A[24:24]kc
.area text(rom, con, rel)
.dbfile E:\icc\iccavr\sl3010\sl3010_4\sl3010_4.c
.dbfunc e watchdog_init _watchdog_init fV
.even
_watchdog_init::
.dbline -1
.dbline 200
.dbline 201
wdr
.dbline 202
ldi R24,14
out 0x21,R24
.dbline -2
.dbline 203
L63:
.dbline 0 ; func end
ret
.dbend
.dbfunc e timer0_init _timer0_init fV
.even
_timer0_init::
.dbline -1
.dbline 209
.dbline 210
clr R2
out 0x33,R2
.dbline 211
ldi R24,61
out 0x32,R24
.dbline 212
ldi R24,5
out 0x33,R24
.dbline -2
.dbline 213
L64:
.dbline 0 ; func end
ret
.dbend
.area vector(rom, abs)
.org 14
rjmp _timer0_ovf_isr
.area text(rom, con, rel)
.dbfile E:\icc\iccavr\sl3010\sl3010_4\sl3010_4.c
.dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
.even
_timer0_ovf_isr::
rcall push_lset
rcall push_gset1
.dbline -1
.dbline 217
.dbline 218
ldi R24,61
out 0x32,R24
.dbline 219
lds R24,_t0_times
subi R24,255 ; addi 1
sts _t0_times,R24
.dbline 220
in R24,0x16
andi R24,15
sts _remote_in,R24
.dbline 221
mov R20,R24
clr R21
cpi R20,0
cpc R20,R21
breq L69
X7:
cpi R20,1
ldi R30,0
cpc R21,R30
breq L73
cpi R20,2
ldi R30,0
cpc R21,R30
breq L71
cpi R20,4
ldi R30,0
cpc R21,R30
breq L70
cpi R20,8
ldi R30,0
cpc R21,R30
breq L72
rjmp L66
X8:
.dbline 222
L69:
.dbline 224
clr R2
clr R3
sts _rst_time+1,R3
sts _rst_time,R2
.dbline 225
rjmp L67
L70:
.dbline 227
clr R2
clr R3
sts _rst_time+1,R3
sts _rst_time,R2
.dbline 228
rjmp L67
L71:
.dbline 230
clr R2
clr R3
sts _rst_time+1,R3
sts _rst_time,R2
.dbline 231
rjmp L67
L72:
.dbline 233
lds R24,_rst_time
lds R25,_rst_time+1
adiw R24,1
sts _rst_time+1,R25
sts _rst_time,R24
.dbline 234
rjmp L67
L73:
.dbline 236
clr R2
clr R3
sts _rst_time+1,R3
sts _rst_time,R2
.dbline 237
L66:
L67:
.dbline 239
ldi R24,400
ldi R25,1
lds R2,_rst_time
lds R3,_rst_time+1
cp R24,R2
cpc R25,R3
brsh L74
.dbline 240
.dbline 241
ldi R24,255
out 0x1b,R24
.dbline 242
rcall _watchdog_init
L76:
.dbline 243
L77:
.dbline 243
rjmp L76
X9:
.dbline 244
L74:
.dbline 245
lds R24,_gzsl
cpi R24,136
brne L79
.dbline 246
.dbline 247
lds R24,_t0_times
cpi R24,10
brne L81
.dbline 248
.dbline 249
lds R24,_timers
subi R24,255 ; addi 1
sts _timers,R24
.dbline 250
clr R2
sts _t0_times,R2
.dbline 251
ldi R24,<_led_data
ldi R25,>_led_data
lds R2,_timers
clr R3
add R2,R24
adc R3,R25
mov R30,R2
mov R31,R3
lpm
sts _pa,R0
.dbline 252
mov R24,R0
cpi R24,10
brne L83
.dbline 252
.dbline 252
clr R2
sts _timers,R2
.dbline 252
L83:
.dbline 253
lds R2,_pa
out 0x1b,R2
.dbline 254
L81:
.dbline 255
L79:
.dbline 256
lds R24,_gzsl
cpi R24,51
breq X13
rjmp L85
X13:
.dbline 257
.dbline 258
rcall _sw_touch
.dbline 259
lds R24,_t0_times
cpi R24,8
breq X14
rjmp L87
X14:
.dbline 260
.dbline 261
clr R2
sts _t0_times,R2
.dbline 262
in R24,0x16
andi R24,15
sts _remote_in,R24
.dbline 263
mov R2,R24
sts _sound_1,R2
.dbline 264
lds R3,_sound_2
cp R3,R24
breq L89
.dbline 265
.dbline 265
clr R2
clr R3
sts _sound_add+1,R3
sts _sound_add,R2
.dbline 265
mov R2,R24
sts _sound_2,R2
.dbline 265
L89:
.dbline 266
lds R20,_remote_in
clr R21
cpi R20,0
cpc R20,R21
breq L94
X10:
cpi R20,1
ldi R30,0
cpc R21,R30
brne X15
rjmp L98
X15:
cpi R20,2
ldi R30,0
cpc R21,R30
breq L96
cpi R20,4
ldi R30,0
cpc R21,R30
breq L95
cpi R20,8
ldi R30,0
cpc R21,R30
breq L97
rjmp L91
X11:
.dbline 267
L94:
.dbline 269
rcall _forward
.dbline 270
clr R2
clr R3
sts _sound_add+1,R3
sts _sound_add,R2
.dbline 271
sts _temp1,R2
.dbline 272
rjmp L92
L95:
.dbline 274
rcall _turn_right
.dbline 275
ldi R24,<_sound_right
ldi R25,>_sound_right
lds R2,_sound_add
lds R3,_sound_add+1
add R2,R24
adc R3,R25
mov R30,R2
mov R31,R3
lpm
sts _temp1,R0
.dbline 276
rjmp L92
L96:
.dbline 278
rcall _backward
.dbline 279
ldi R24,<_sound_back
ldi R25,>_sound_back
lds R2,_sound_add
lds R3,_sound_add+1
add R2,R24
adc R3,R25
mov R30,R2
mov R31,R3
lpm
sts _temp1,R0
.dbline 280
rjmp L92
L97:
.dbline 282
; stop(); //停止运动
rcall _stop
.dbline 283
; temp1=sound_stop[sound_add];
ldi R24,<_sound_stop
ldi R25,>_sound_stop
lds R2,_sound_add
lds R3,_sound_add+1
add R2,R24
adc R3,R25
mov R30,R2
mov R31,R3
lpm
sts _temp1,R0
.dbline 284
; break;
rjmp L92
L98:
.dbline 286
; case 0x01: // < D >
; turn_left(); //左转
rcall _turn_left
.dbline 287
; temp1=sound_left[sound_add];
ldi R24,<_sound_left
ldi R25,>_sound_left
lds R2,_sound_add
lds R3,_sound_add+1
add R2,R24
adc R3,R25
mov R30,R2
mov R31,R3
lpm
sts _temp1,R0
.dbline 288
; break;
L91:
L92:
.dbline 290
; }
; }
L87:
.dbline 291
; }
L85:
.dbline 292
; if(gzsl == 0x11)
lds R24,_gzsl
cpi R24,17
brne L99
.dbline 293
; {
.dbline 294
; if(t0_times == delay_time1) //delay_time1*25ms
lds R2,_delay_time1
lds R3,_delay_time1+1
lds R4,_t0_times
clr R5
cp R4,R2
cpc R5,R3
brne L101
.dbline 295
; {
.dbline 296
; t0_times = 0;
clr R2
sts _t0_times,R2
.dbline 297
; gzsl = 0x22;
ldi R24,34
sts _gzsl,R24
.dbline 298
; forward();
rcall _forward
.dbline 299
; }
L101:
.dbline 300
; }
L99:
.dbline 301
; if(gzsl == 0x22)
lds R24,_gzsl
cpi R24,34
brne L103
.dbline 302
; {
.dbline 303
; if(t0_times == delay_time2) //delay_time2*25ms
lds R2,_delay_time2
lds R3,_delay_time2+1
lds R4,_t0_times
clr R5
cp R4,R2
cpc R5,R3
brne L105
.dbline 304
; {
.dbline 305
; t0_times = 0;
clr R2
sts _t0_times,R2
.dbline 306
; gzsl = 0x11;
ldi R24,17
sts _gzsl,R24
.dbline 307
; turn_right();
rcall _turn_right
.dbline 308
; }
L105:
.dbline 309
; }
L103:
.dbline 310
; if(gzsl == 0x44)
lds R24,_gzsl
cpi R24,68
breq X16
rjmp L107
X16:
.dbline 311
; {
.dbline 312
; sw_touch();
rcall _sw_touch
.dbline 313
; pc = PINC & 0xE0;
in R24,0x13
andi R24,224
sts _pc,R24
.dbline 314
; if(pc == 0xE0)
cpi R24,224
brne L109
.dbline 315
; {
.dbline 316
; stop();
rcall _stop
.dbline 317
; t0_times = 0;timers = 0x22;
clr R2
sts _t0_times,R2
.dbline 317
ldi R24,34
sts _timers,R24
.dbline 318
; temp1=EEPROMread((int)&sound[sound_add]);
ldi R24,<_sound
ldi R25,>_sound
lds R16,_sound_add
lds R17,_sound_add+1
add R16,R24
adc R17,R25
rcall _EEPROMread
sts _temp1,R16
.dbline 319
; }
L109:
.dbline 320
; if(pc == 0x40 || pc == 0x80 || pc == 0x20 || pc == 0xc0 || pc == 0x60)
lds R24,_pc
cpi R24,64
breq L116
cpi R24,128
breq L116
cpi R24,32
breq L116
cpi R24,192
breq L116
cpi R24,96
brne L111
L116:
.dbline 321
; {
.dbline 322
; timers=0x55;
ldi R24,85
sts _timers,R24
.dbline 323
; t0_times = 0;
clr R2
sts _t0_times,R2
.dbline 324
; }
L111:
.dbline 325
; if(timers == 0x55)
lds R24,_timers
cpi R24,85
brne L117
.dbline 326
; {
.dbline 327
; if(t0_times < 16) //16*25ms=400ms
lds R24,_t0_times
cpi R24,16
brsh L119
.dbline 328
; {
.dbline 329
; backward();
rcall _backward
.dbline 330
; temp1=sound_back[sound_add];
ldi R24,<_sound_back
ldi R25,>_sound_back
lds R2,_sound_add
lds R3,_sound_add+1
add R2,R24
adc R3,R25
mov R30,R2
mov R31,R3
lpm
sts _temp1,R0
.dbline 331
; }
L119:
.dbline 332
; if(t0_times > 16 && t0_times < 24) //8*25ms=200ms
ldi R24,16
lds R2,_t0_times
cp R24,R2
brsh L121
mov R24,R2
cpi R24,24
brsh L121
.dbline 333
; {
.dbline 334
; turn_left();
rcall _turn_left
.dbline 335
; temp1=sound_back[sound_add];
ldi R24,<_sound_back
ldi R25,>_sound_back
lds R2,_sound_add
lds R3,_sound_add+1
add R2,R24
adc R3,R25
mov R30,R2
mov R31,R3
lpm
sts _temp1,R0
.dbline 336
; }
L121:
.dbline 337
; if(t0_times == 24)
lds R24,_t0_times
cpi R24,24
brne L123
.dbline 338
; {
.dbline 339
; timers = 0;
clr R2
sts _timers,R2
.dbline 340
; t0_times = 0;
sts _t0_times,R2
.dbline 341
; }
L123:
.dbline 342
; }
L117:
.dbline 343
; if(timers != 0x55 && timers != 0x22)
lds R24,_timers
cpi R24,85
breq L125
cpi R24,34
breq L125
.dbline 344
; {
.dbline 345
; forward();
rcall _forward
.dbline 346
; temp1 = 0;
clr R2
sts _temp1,R2
.dbline 347
; }
L125:
.dbline 348
; }
L107:
.dbline 349
; if(gzsl == 0x55)
lds R24,_gzsl
cpi R24,85
breq X17
rjmp L127
X17:
.dbline 350
; {
.dbline 351
; if(t0_times == 4) //4*25ms=100ms 扫描一次
lds R24,_t0_times
cpi R24,4
breq X18
rjmp L129
X18:
.dbline 352
; {
.dbline 353
; t0_times = 0;
clr R2
sts _t0_times,R2
.dbline 354
; remote_in = PINB & 0x0F;
in R24,0x16
andi R24,15
sts _remote_in,R24
.dbline 355
; switch (remote_in)
mov R20,R24
clr R21
cpi R20,1
ldi R30,0
cpc R21,R30
breq L137
cpi R20,2
ldi R30,0
cpc R21,R30
breq L135
cpi R20,4
ldi R30,0
cpc R21,R30
breq L134
cpi R20,8
ldi R30,0
cpc R21,R30
breq L136
rjmp L131
X12:
.dbline 356
; {//检测遥控器是否有键按下
L134:
.dbline 358
; case 0x04: // < A >
; sound_add=0;
clr R2
clr R3
sts _sound_add+1,R3
sts _sound_add,R2
.dbline 359
; sound_1 = 0x11;
ldi R24,17
sts _sound_1,R24
.dbline 360
; break;
rjmp L132
L135:
.dbline 362
; case 0x02: // < B >
; sound_add=0;
clr R2
clr R3
sts _sound_add+1,R3
sts _sound_add,R2
.dbline 363
; sound_1 = 0x22;
ldi R24,34
sts _sound_1,R24
.dbline 364
; break;
rjmp L132
L136:
.dbline 366
; case 0x08: // < C >
; sound_add=0;
clr R2
clr R3
sts _sound_add+1,R3
sts _sound_add,R2
.dbline 367
; sound_1 = 0x33;
ldi R24,51
sts _sound_1,R24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -