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

📄 main.s

📁 一个单片机的完整开发程序AVR的
💻 S
📖 第 1 页 / 共 5 页
字号:
	lds R2,_ques_num
	movw R30,R28
	subi R30,51  ; addi 205
	sbci R31,255
	ldd R0,z+0
	cp R2,R0
	brsh L221
	.dbline 436
; 	  ques_id=1;
	clr R0
	inc R0
	movw R30,R28
	subi R30,51  ; addi 205
	sbci R31,255
	std z+0,R0
L221:
	.dbline 437
; 	  if(key==6)
	movw R30,R28
	subi R30,50  ; addi 206
	sbci R31,255
	ldd R24,z+0
	cpi R24,6
	brne L223
	.dbline 438
; 	  ques_id--;
	movw R30,R28
	subi R30,51  ; addi 205
	sbci R31,255
	ldd R0,z+0
	dec R0
	movw R30,R28
	subi R30,51  ; addi 205
	sbci R31,255
	std z+0,R0
L223:
	.dbline 439
; 	  if(ques_id<1)
	movw R30,R28
	subi R30,51  ; addi 205
	sbci R31,255
	ldd R24,z+0
	cpi R24,1
	brsh L225
	.dbline 440
; 	  ques_id=ques_num;
	lds R2,_ques_num
	movw R30,R28
	subi R30,51  ; addi 205
	sbci R31,255
	std z+0,R2
L225:
	.dbline 443
; 	  
; 	  //ques_id
; 	  if(ques[ques_id-1]&0x01)
	ldi R24,<_ques-1
	ldi R25,>_ques-1
	movw R26,R28
	subi R26,51  ; addi 205
	sbci R27,255
	ld R30,x
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sbrs R2,0
	rjmp L227
	.dbline 444
; 	    lcd_buffer[9]|=0x02;
	lds R24,_lcd_buffer+9
	ori R24,2
	sts _lcd_buffer+9,R24
	xjmp L228
L227:
	.dbline 446
; 	  else
; 	  	lcd_buffer[9]&=0xfd;	
	lds R24,_lcd_buffer+9
	andi R24,253
	sts _lcd_buffer+9,R24
L228:
	.dbline 447
; 	  if(ques[ques_id-1]&0x02)
	ldi R24,<_ques-1
	ldi R25,>_ques-1
	movw R26,R28
	subi R26,51  ; addi 205
	sbci R27,255
	ld R30,x
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sbrs R2,1
	rjmp L232
	.dbline 448
; 		lcd_buffer[1]|=0x02;
	lds R24,_lcd_buffer+1
	ori R24,2
	sts _lcd_buffer+1,R24
	xjmp L233
L232:
	.dbline 450
; 	  else
; 	  	lcd_buffer[1]&=0xfd;
	lds R24,_lcd_buffer+1
	andi R24,253
	sts _lcd_buffer+1,R24
L233:
	.dbline 451
; 	  if(ques[ques_id-1]&0x04)
	ldi R24,<_ques-1
	ldi R25,>_ques-1
	movw R26,R28
	subi R26,51  ; addi 205
	sbci R27,255
	ld R30,x
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sbrs R2,2
	rjmp L237
	.dbline 452
; 		lcd_buffer[12]|=0x20;
	lds R24,_lcd_buffer+12
	ori R24,32
	sts _lcd_buffer+12,R24
	xjmp L238
L237:
	.dbline 454
; 	  else
; 	  	lcd_buffer[12]&=0xdf;
	lds R24,_lcd_buffer+12
	andi R24,223
	sts _lcd_buffer+12,R24
L238:
	.dbline 455
; 	  if(ques[ques_id-1]&0x08)
	ldi R24,<_ques-1
	ldi R25,>_ques-1
	movw R26,R28
	subi R26,51  ; addi 205
	sbci R27,255
	ld R30,x
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sbrs R2,3
	rjmp L242
	.dbline 456
; 		lcd_buffer[12]|=0x02;
	lds R24,_lcd_buffer+12
	ori R24,2
	sts _lcd_buffer+12,R24
	xjmp L243
L242:
	.dbline 458
; 	  else
; 	  	lcd_buffer[12]&=0xfd;	
	lds R24,_lcd_buffer+12
	andi R24,253
	sts _lcd_buffer+12,R24
L243:
	.dbline 459
; 	  if(ques[ques_id-1]&0x10)
	ldi R24,<_ques-1
	ldi R25,>_ques-1
	movw R26,R28
	subi R26,51  ; addi 205
	sbci R27,255
	ld R30,x
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sbrs R2,4
	rjmp L247
	.dbline 460
; 		lcd_buffer[4]|=0x20;
	lds R24,_lcd_buffer+4
	ori R24,32
	sts _lcd_buffer+4,R24
	xjmp L248
L247:
	.dbline 462
;       else
; 	  	lcd_buffer[4]&=0xdf;
	lds R24,_lcd_buffer+4
	andi R24,223
	sts _lcd_buffer+4,R24
L248:
	.dbline 464
; 	  
; 	  send_data(2,lcd_buffer[1]);
	lds R18,_lcd_buffer+1
	ldi R16,2
	xcall _send_data
	.dbline 465
; 	  send_data(8,lcd_buffer[4]);
	lds R18,_lcd_buffer+4
	ldi R16,8
	xcall _send_data
	.dbline 466
; 	  send_data(18,lcd_buffer[9]);
	lds R18,_lcd_buffer+9
	ldi R16,18
	xcall _send_data
	.dbline 467
; 	  send_data(24,lcd_buffer[12]);
	lds R18,_lcd_buffer+12
	ldi R16,24
	xcall _send_data
	.dbline 470
; 	  //send_data(14,lcd_buffer[7]);
; 	 // send_data(30,lcd_buffer[15]);
; 	 }
L216:
	.dbline 472
; 	 
;   	 if((key==1||key==4||key==5||key==7||key==8)&&(key_flag==1))
	movw R30,R28
	subi R30,50  ; addi 206
	sbci R31,255
	ldd R24,z+0
	cpi R24,1
	breq L261
	cpi R24,4
	breq L261
	cpi R24,5
	breq L261
	cpi R24,7
	breq L261
	cpi R24,8
	breq X17
	xjmp L256
X17:
L261:
	movw R30,R28
	subi R30,45  ; addi 211
	sbci R31,255
	ldd R24,z+0
	cpi R24,1
	breq X18
	xjmp L256
X18:
	.dbline 473
;   	 { 
	.dbline 474
;       if(ques[ques_id-1]&0x01)
	ldi R24,<_ques-1
	ldi R25,>_ques-1
	movw R26,R28
	subi R26,51  ; addi 205
	sbci R27,255
	ld R30,x
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sbrs R2,0
	rjmp L262
	.dbline 475
; 	    keya_flag=1;
	clr R0
	inc R0
	movw R30,R28
	subi R30,43  ; addi 213
	sbci R31,255
	std z+0,R0
	xjmp L263
L262:
	.dbline 477
; 	  else
; 	  	keya_flag=0;	
	clr R0
	movw R30,R28
	subi R30,43  ; addi 213
	sbci R31,255
	std z+0,R0
L263:
	.dbline 478
; 	  if(ques[ques_id-1]&0x02)
	ldi R24,<_ques-1
	ldi R25,>_ques-1
	movw R26,R28
	subi R26,51  ; addi 205
	sbci R27,255
	ld R30,x
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sbrs R2,1
	rjmp L265
	.dbline 479
; 		keyb_flag=1;
	clr R0
	inc R0
	movw R30,R28
	subi R30,42  ; addi 214
	sbci R31,255
	std z+0,R0
	xjmp L266
L265:
	.dbline 481
; 	  else
; 	  	keyb_flag=0;	
	clr R0
	movw R30,R28
	subi R30,42  ; addi 214
	sbci R31,255
	std z+0,R0
L266:
	.dbline 482
; 	  if(ques[ques_id-1]&0x04)
	ldi R24,<_ques-1
	ldi R25,>_ques-1
	movw R26,R28
	subi R26,51  ; addi 205
	sbci R27,255
	ld R30,x
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sbrs R2,2
	rjmp L268
	.dbline 483
; 		keyc_flag=1;
	clr R0
	inc R0
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	std z+0,R0
	xjmp L269
L268:
	.dbline 485
; 	  else
; 	  	keyc_flag=0;
	clr R0
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	std z+0,R0
L269:
	.dbline 486
; 	  if(ques[ques_id-1]&0x08)
	ldi R24,<_ques-1
	ldi R25,>_ques-1
	movw R26,R28
	subi R26,51  ; addi 205
	sbci R27,255
	ld R30,x
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sbrs R2,3
	rjmp L271
	.dbline 487
; 		keyd_flag=1;
	clr R0
	inc R0
	movw R30,R28
	subi R30,41  ; addi 215
	sbci R31,255
	std z+0,R0
	xjmp L272
L271:
	.dbline 489
; 	  else
; 	  	keyd_flag=0;	
	clr R0
	movw R30,R28
	subi R30,41  ; addi 215
	sbci R31,255
	std z+0,R0
L272:
	.dbline 490
; 	  if(ques[ques_id-1]&0x10)
	ldi R24,<_ques-1
	ldi R25,>_ques-1
	movw R26,R28
	subi R26,51  ; addi 205
	sbci R27,255
	ld R30,x
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sbrs R2,4
	rjmp L274
	.dbline 491
; 		keye_flag=1;
	clr R0
	inc R0
	movw R30,R28
	subi R30,40  ; addi 216
	sbci R31,255
	std z+0,R0
	xjmp L275
L274:
	.dbline 493
; 	  else
; 	  	keye_flag=0;
	clr R0
	movw R30,R28
	subi R30,40  ; addi 216
	sbci R31,255
	std z+0,R0
L275:
	.dbline 495
; 			
; 	 switch(key)
	movw R30,R28
	subi R30,50  ; addi 206
	sbci R31,255
	ldd R2,z+0
	clr R3
	movw R30,R28
	subi R30,56  ; addi 200
	sbci R31,255
	std z+1,R3
	std z+0,R2
	movw R24,R2
	cpi R24,1
	ldi R30,0
	cpc R25,R30
	brne X19
	xjmp L286
X19:
	cpi R24,4
	ldi R30,0
	cpc R25,R30
	breq L283
	cpi R24,5
	ldi R30,0
	cpc R25,R30
	brne X20
	xjmp L292
X20:
	cpi R24,7
	ldi R30,0
	cpc R25,R30
	breq L280
	cpi R24,8
	ldi R30,0
	cpc R25,R30
	brne X21
	xjmp L289
X21:
	xjmp L278
X1:
	.dbline 496
; 	 {
L280:
	.dbline 497
; 	  case 7:  ++keya_flag;
	movw R30,R28
	subi R30,43  ; addi 213
	sbci R31,255
	ldd R0,z+0
	inc R0
	movw R30,R28
	subi R30,43  ; addi 213
	sbci R31,255
	std z+0,R0
	.dbline 498
; 	 	       if(keya_flag>1)		  
	ldi R24,1
	cp R24,R0
	brlo X22
	xjmp L278
X22:
	.dbline 499
; 			     keya_flag=0;
	clr R0
	movw R30,R28
	subi R30,43  ; addi 213
	sbci R31,255
	std z+0,R0
	.dbline 500
; 			   break;
	xjmp L278
L283:
	.dbline 501
; 	  case 4:  ++keyb_flag;
	movw R30,R28
	subi R30,42  ; addi 214
	sbci R31,255
	ldd R0,z+0
	inc R0
	movw R30,R28
	subi R30,42  ; addi 214
	sbci R31,255
	std z+0,R0
	.dbline 502
; 	 	   	   if(keyb_flag>1)		  
	ldi R24,1
	cp R24,R0
	brlo X23
	xjmp L278
X23:
	.dbline 503
; 			     keyb_flag=0;
	clr R0
	movw R30,R28
	subi R30,42  ; addi 214
	sbci R31,255
	std z+0,R0
	.dbline 504
; 			   break;
	xjmp L278
L286:
	.dbline 505
; 	  case 1:  ++keyc_flag;
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	ldd R0,z+0
	inc R0
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	std z+0,R0
	.dbline 506
; 	 	  	   if(keyc_flag>1)		  
	ldi R24,1
	cp R24,R0
	brsh L278
	.dbline 507
; 			     keyc_flag=0;
	clr R0
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	std z+0,R0
	.dbline 508
; 			    break;
	xjmp L278
L289:
	.dbline 509
; 	  case 8:  ++keyd_flag;
	movw R30,R28
	subi R30,41  ; addi 215
	sbci R31,255
	ldd R0,z+0
	inc R0
	movw R30,R28
	subi R30,41  ; addi 215
	sbci R31,255
	std z+0,R0
	.dbline 510
; 	 	  	   if(keyd_flag>1)		  
	ldi R24,1
	cp R24,R0
	brsh L278
	.dbline 511
; 			     keyd_flag=0;
	clr R0
	movw R30,R28
	subi R30,41  ; addi 215
	sbci R31,255
	std z+0,R0
	.dbline 512
; 			   break;
	xjmp L278
L292:
	.dbline 513
; 	  case 5:  ++keye_flag;
	movw R30,R28
	subi R30,40  ; addi 216
	sbci R31,255
	ldd R0,z+0
	inc R0
	movw R30,R28
	subi R30,40  ; addi 216
	sbci R31,255
	std z+0,R0
	.dbline 514
; 	 	  	   if(keye_flag>1)		  
	ldi R24,1
	cp R24,R0
	brsh L278
	.dbline 515
; 			     keye_flag=0;
	clr R0
	movw R30,R28
	subi R30,40  ; addi 216
	sbci R31,255
	std z+0,R0
	.dbline 516
; 			   break;
	.dbline 517
; 	 default:  break;
L278:
	.dbline 520
; 	 }
; 	
; 	ques[ques_id-1]=(keya_flag|(keyb_flag<<1)|(keyc_flag<<2)|(keyd_flag<<3)|(keye_flag<<4));
	movw R30,R28
	subi R30,42  ; addi 214
	sbci R31,255
	ldd R2,z+0
	lsl R2
	movw R30,R28
	subi R30,43  ; addi 213
	sbci R31,255
	ldd R3,z+0
	or R3,R2
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	ldd R2,z+0
	lsl R2
	lsl R2
	or R3,R2
	movw R30,R28
	subi R30,41  ; addi 215
	sbci R31,255
	ldd R2,z+0
	lsl R2
	lsl R2
	lsl R2
	or R3,R2
	movw R30,R28
	subi R30,40  ; addi 216
	sbci R31,255
	ldd R24,z+0
	andi R24,#0x0F
	swap R24
	or R3,R24
	ldi R24,<_ques-1
	ldi R25,>_ques-1
	movw R26,R28
	subi R26,51  ; addi 205
	sbci R27,255
	ld R30,x
	clr R31
	add R30,R24
	adc R31,R25
	std z+0,R3
	.dbline 522
; 	
; 	if(keya_flag==1)
	movw R30,R28
	subi R30,43  ; addi 213
	sbci R31,255
	ldd R24,z+0
	cpi R24,1
	brne L296
	.dbline 523
; 			     lcd_buffer[9]|=0x02;
	lds R24,_lcd_buffer+9
	ori R24,2
	sts _lcd_buffer+9,R24
	xjmp L297
L296:
	.dbline 525
; 	else
; 	  		     lcd_buffer[9]&=0xfd;
	lds R24,_lcd_buffer+9
	andi R24,253
	sts _lcd_buffer+9,R24
L297:
	.dbline 526
; 	 if(keyb_flag==1)
	movw R30,R28
	subi R30,42  ; addi 214
	sbci R31,255
	ldd R24,z+0
	cpi R24,1
	brne L300
	.dbline 527
; 			     lcd_buffer[1]|=0x02;
	lds R24,_lcd_buffer+1
	ori R24,2
	sts _lcd_buffer+1,R24
	xjmp L301
L300:
	.dbline 529
; 	  		   else
; 	  		     lcd_buffer[1]&=0xfd; 
	lds R24,_lcd_buffer+1
	andi R24,253
	sts _lcd_buffer+1,R24
L301:
	.dbline 530
; 	if(keyc_flag==1)
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	ldd R24,z+0
	cpi R24,1
	brne L304
	.dbline 531
; 			     lcd_buffer[12]|=0x20;
	lds R24,_lcd_buffer+12
	ori R24,32
	sts _lcd_buffer+12,R24
	xjmp L305
L304:
	.dbline 533
; 	  		   else
; 	  		     lcd_buffer[12]&=0xdf;
	lds R24,_lcd_buffer+12
	andi R24,223
	sts _lcd_buffer+12,R24
L305:
	.dbline 534
; 	if(keyd_flag==1)
	movw R30,R28
	subi R30,41  ; addi 215
	sbci R31,255
	ldd R24,z+0
	cpi R24,1
	brne L308
	.dbline 535
; 			     lcd_buffer[12]|=0x02;
	lds R24,_lcd_buffer+12
	ori R24,2
	sts _lcd_buffer+12,R24
	xjmp L309
L308:
	.dbline 537
; 	  		   else
; 	  		     lcd_buffer[12]&=0xfd;
	lds R24,_lcd_buffer+12
	andi R24,253
	sts _lcd_buffer+12,R24
L309:
	.dbline 538
; 	if(keye_flag==1)
	movw R30,R28
	subi R30,40  ; addi 216
	sbci R31,255
	ldd R24,z+0
	cpi R24,1
	brne L312
	.dbline 539
; 			     lcd_buffer[4]|=0x20;
	lds R24,_lcd_buffer+4
	ori R24,32
	sts _lcd_buffer+4,R24
	xjmp L313
L312:
	.dbline 541
;       		   else
; 	  		     lcd_buffer[4]&=0xdf;
	lds R24,_lcd_buffer+4
	andi R24,223
	sts _lcd_buffer+4,R24
L313:
	.dbline 543
; 	
; 	send_data(2,lcd_buffer[1]);
	lds R18,_lcd_buffer+1
	ldi R16,2
	xcall _send_data
	.dbline 544
; 	send_data(8,lcd_buffer[4]);
	lds R18,_lcd_buffer+4
	ldi R16,8

⌨️ 快捷键说明

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