⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 diy0206_4.s

📁 双龙的积木式智能机器人C源程序
💻 S
📖 第 1 页 / 共 5 页
字号:
	.byte 'F,'F
	.byte 0,0
	.dbsym e sound_right _sound_right A[22:22]kc
_sound_back::
	.byte 42,44
	.byte 'M,'M
	.byte 'M,42
	.byte 44,'I
	.byte 'I,'I
	.byte 42,44
	.byte 45,'O
	.byte 45,'L
	.byte 29,24
	.byte 42,'I
	.byte 'I,'I
	.byte 0,0
	.dbsym e sound_back _sound_back A[24:24]kc
_sound_stop::
	.byte 35,36
	.byte 37,'D
	.byte 'E,36
	.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\diy02-6\8535\diy0206_4\diy0206_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
L70:
	.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
L71:
	.dbline 0 ; func end
	ret
	.dbend
	.area vector(rom, abs)
	.org 18
	rjmp _timer0_ovf_isr
	.area text(rom, con, rel)
	.dbfile E:\icc\iccavr\diy02-6\8535\diy0206_4\diy0206_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,240
	sts _remote_in,R24
	.dbline 221
	mov R20,R24
	clr R21
	cpi R20,32
	ldi R30,0
	cpc R21,R30
	breq L77
	ldi R24,32
	ldi R25,0
	cp R24,R20
	cpc R25,R21
	brlt L82
L81:
	cpi R20,0
	cpc R20,R21
	breq L76
X10:
	cpi R20,0
	ldi R30,0
	cpc R21,R30
	brlt L73
L83:
	cpi R20,16
	ldi R30,0
	cpc R21,R30
	breq L79
	rjmp L73
L82:
	cpi R20,64
	ldi R30,0
	cpc R21,R30
	breq L78
	cpi R20,64
	ldi R30,0
	cpc R21,R30
	brlt L73
L84:
	cpi R20,128
	ldi R30,0
	cpc R21,R30
	breq L80
	rjmp L73
X11:
	.dbline 222
L76:
	.dbline 224
	clr R2
	clr R3
	sts _rst_time+1,R3
	sts _rst_time,R2
	.dbline 225
	rjmp L74
L77:
	.dbline 227
	clr R2
	clr R3
	sts _rst_time+1,R3
	sts _rst_time,R2
	.dbline 228
	rjmp L74
L78:
	.dbline 230
	clr R2
	clr R3
	sts _rst_time+1,R3
	sts _rst_time,R2
	.dbline 231
	rjmp L74
L79:
	.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 L74
L80:
	.dbline 236
	clr R2
	clr R3
	sts _rst_time+1,R3
	sts _rst_time,R2
	.dbline 237
L73:
L74:
	.dbline 239
	ldi R24,400
	ldi R25,1
	lds R2,_rst_time
	lds R3,_rst_time+1
	cp R24,R2
	cpc R25,R3
	brsh L85
	.dbline 240
	.dbline 241
	ldi R24,255
	out 0x1b,R24
	.dbline 242
	rcall _watchdog_init
L87:
	.dbline 243
L88:
	.dbline 243
	rjmp L87
X12:
	.dbline 244
L85:
	.dbline 245
	lds R24,_gzsl
	cpi R24,136
	brne L90
	.dbline 246
	.dbline 247
	lds R24,_t0_times
	cpi R24,10
	brne L92
	.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 L94
	.dbline 252
	.dbline 252
	clr R2
	sts _timers,R2
	.dbline 252
L94:
	.dbline 253
	lds R2,_pa
	out 0x1b,R2
	.dbline 254
L92:
	.dbline 255
L90:
	.dbline 256
	lds R24,_gzsl
	cpi R24,51
	breq X16
	rjmp L96
X16:
	.dbline 257
	.dbline 258
	rcall _sw_touch
	.dbline 259
	lds R24,_t0_times
	cpi R24,8
	breq X17
	rjmp L98
X17:
	.dbline 260
	.dbline 261
	clr R2
	sts _t0_times,R2
	.dbline 262
	in R24,0x16
	andi R24,240
	sts _remote_in,R24
	.dbline 263
	mov R2,R24
	sts _sound_1,R2
	.dbline 264
	lds R3,_sound_2
	cp R3,R24
	breq L100
	.dbline 265
	.dbline 265
	clr R2
	clr R3
	sts _sound_add+1,R3
	sts _sound_add,R2
	.dbline 265
	lds R2,_sound_1
	sts _sound_2,R2
	.dbline 265
L100:
	.dbline 266
	lds R20,_remote_in
	clr R21
	cpi R20,32
	ldi R30,0
	cpc R21,R30
	breq L106
	ldi R24,32
	ldi R25,0
	cp R24,R20
	cpc R25,R21
	brlt L111
L110:
	cpi R20,0
	cpc R20,R21
	breq L105
X13:
	cpi R20,0
	ldi R30,0
	cpc R21,R30
	brge X18
	rjmp L102
X18:
L112:
	cpi R20,16
	ldi R30,0
	cpc R21,R30
	brne X19
	rjmp L108
X19:
	rjmp L102
L111:
	cpi R20,64
	ldi R30,0
	cpc R21,R30
	breq L107
	cpi R20,64
	ldi R30,0
	cpc R21,R30
	brge X20
	rjmp L102
X20:
L113:
	cpi R20,128
	ldi R30,0
	cpc R21,R30
	brne X21
	rjmp L109
X21:
	rjmp L102
X14:
	.dbline 267
L105:
	.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 L103
L106:
	.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 L103
L107:
	.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 L103
L108:
	.dbline 282
	rcall _stop
	.dbline 283
	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
	rjmp L103
L109:
	.dbline 286
	rcall _turn_left
	.dbline 287
	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;
L102:
L103:
	.dbline 290
;       	}
;       }
L98:
	.dbline 291
;    }
L96:
	.dbline 292
;  if(gzsl == 0x11)
	lds R24,_gzsl
	cpi R24,17
	brne L114
	.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 L116
	.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
; 	  }
L116:
	.dbline 300
;    } 
L114:
	.dbline 301
;  if(gzsl == 0x22)
	lds R24,_gzsl
	cpi R24,34
	brne L118
	.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 L120
	.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
; 	  }
L120:
	.dbline 309
;    } 
L118:
	.dbline 310
;  if(gzsl == 0x44)
	lds R24,_gzsl
	cpi R24,68
	breq X22
	rjmp L122
X22:
	.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 L124
	.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
; 	  }
L124:
	.dbline 320
; 	if(pc == 0x40 || pc == 0x80 || pc == 0x20 || pc == 0xc0 || pc == 0x60)
	lds R24,_pc
	cpi R24,64
	breq L131
	cpi R24,128
	breq L131
	cpi R24,32
	breq L131
	cpi R24,192
	breq L131
	cpi R24,96
	brne L126
L131:
	.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
; 	  }
L126:
	.dbline 325
; 	if(timers == 0x55)
	lds R24,_timers
	cpi R24,85
	brne L132
	.dbline 326
; 	  {
	.dbline 327
;        if(t0_times < 16)     //16*25ms=400ms
	lds R24,_t0_times
	cpi R24,16
	brsh L134
	.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
;          }
L134:
	.dbline 332
; 	   if(t0_times > 16 && t0_times < 24) //8*25ms=200ms
	ldi R24,16
	lds R2,_t0_times
	cp R24,R2
	brsh L136
	mov R24,R2
	cpi R24,24
	brsh L136
	.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
; 	     }
L136:
	.dbline 337
; 	   if(t0_times == 24)
	lds R24,_t0_times
	cpi R24,24
	brne L138
	.dbline 338
; 	     {
	.dbline 339
; 	      timers = 0;
	clr R2
	sts _timers,R2
	.dbline 340
; 		  t0_times = 0;
	sts _t0_times,R2
	.dbline 341
; 	     }
L138:
	.dbline 342
; 	  }
L132:
	.dbline 343
; 	if(timers != 0x55 && timers != 0x22)
	lds R24,_timers
	cpi R24,85
	breq L140
	cpi R24,34
	breq L140
	.dbline 344
; 	  {
	.dbline 345
; 	   forward();
	rcall _forward
	.dbline 346
; 	   temp1 = 0;
	clr R2
	sts _temp1,R2
	.dbline 347
; 	  }  
L140:
	.dbline 348
;    }
L122:
	.dbline 349
;  if(gzsl == 0x55)
	lds R24,_gzsl
	cpi R24,85
	breq X23
	rjmp L142
X23:
	.dbline 350
;    {
	.dbline 351
; 	if(t0_times == 4)     //4*25ms=100ms  扫描一次
	lds R24,_t0_times
	cpi R24,4
	breq X24
	rjmp L144
X24:
	.dbline 352
;       {
	.dbline 353
; 	   t0_times = 0;
	clr R2
	sts _t0_times,R2
	.dbline 354
; 	   remote_in = PINB & 0xF0;
	in R24,0x16
	andi R24,240
	sts _remote_in,R24
	.dbline 355
; 	   switch (remote_in)
	mov R20,R24
	clr R21
	cpi R20,32
	ldi R30,0
	cpc R21,R30
	breq L149
	ldi R24,32
	ldi R25,0
	cp R24,R20
	cpc R25,R21
	brlt L154
L153:
	cpi R20,16

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -