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

📄 main.s

📁 一个单片机的完整开发程序AVR的
💻 S
📖 第 1 页 / 共 5 页
字号:
	subi R30,52  ; addi 204
	sbci R31,255
	ldd R24,z+0
	cpi R24,11
	brlo L117
L115:
	.dbline 325
;   	d^=data[j];
; 	
; 	if(d==data[11])
	lds R2,_data+11
	movw R30,R28
	subi R30,47  ; addi 209
	sbci R31,255
	ldd R0,z+0
	cp R0,R2
	breq X9
	xjmp L121
X9:
	.dbline 326
; 	{
	.dbline 327
; 	 if(data[4]==guest_id||data[4]>80||data[4]==0)
	lds R2,_guest_id
	lds R3,_data+4
	cp R3,R2
	breq L130
	ldi R24,80
	cp R24,R3
	brlo L130
	tst R3
	breq X10
	xjmp L124
X10:
L130:
	.dbline 328
; 	 {
	.dbline 330
; 	
; 	 if(data[6]==temp)//
	lds R2,_data+6
	movw R30,R28
	subi R30,39  ; addi 217
	sbci R31,255
	ldd R0,z+0
	cp R2,R0
	brne L131
	.dbline 331
; 	 goto B;
	xjmp L134
L131:
	.dbline 334
; 	 
; 	 else
; 	 {
	.dbline 335
; 	   temp=data[6];
	lds R2,_data+6
	movw R30,R28
	subi R30,39  ; addi 217
	sbci R31,255
	std z+0,R2
	.dbline 337
; 	   	//key_flag=0;
; 	  switch(data[7])
	lds R2,_data+7
	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,34
	ldi R30,0
	cpc R25,R30
	breq L140
	cpi R24,34
	ldi R30,0
	cpc R25,R30
	brge X11
	xjmp L136
X11:
L158:
	movw R30,R28
	subi R30,56  ; addi 200
	sbci R31,255
	ldd R24,z+0
	ldd R25,z+1
	cpi R24,218
	ldi R30,0
	cpc R25,R30
	breq L148
	xjmp L136
X0:
	.dbline 338
; 	  {
L140:
	.dbline 339
; 	   case 0x22: lcd_buffer[1]=0x90;
	ldi R24,144
	sts _lcd_buffer+1,R24
	.dbline 340
; 				  lcd_buffer[11]=0x10;
	ldi R24,16
	sts _lcd_buffer+11,R24
	.dbline 341
; 				  lcd_buffer[15]=0x10;
	sts _lcd_buffer+15,R24
	.dbline 343
; 		
; 				  send_data(0x16,lcd_buffer[11]);
	mov R18,R24
	ldi R16,22
	xcall _send_data
	.dbline 344
; 	  			  send_data(0x02,lcd_buffer[1]);
	lds R18,_lcd_buffer+1
	ldi R16,2
	xcall _send_data
	.dbline 345
; 	  			  send_data(0x1e,lcd_buffer[15]);
	lds R18,_lcd_buffer+15
	ldi R16,30
	xcall _send_data
	.dbline 347
; 		
; 	  			  ques_num=data[8];
	lds R2,_data+8
	sts _ques_num,R2
	.dbline 348
; 				  ques_id=ques_num;
	movw R30,R28
	subi R30,51  ; addi 205
	sbci R31,255
	std z+0,R2
	.dbline 349
; 				  break;
	xjmp L137
L148:
	.dbline 350
; 	   case 0xDA: score=data[8];
	lds R10,_data+8
	.dbline 351
; 				  key_flag=0;
	clr R0
	movw R30,R28
	subi R30,45  ; addi 211
	sbci R31,255
	std z+0,R0
	.dbline 352
; 				  i=score/100;
	ldi R17,100
	mov R16,R10
	xcall div8u
	movw R30,R28
	subi R30,54  ; addi 202
	sbci R31,255
	std z+0,R16
	.dbline 353
; 				  j=(score-i*100)/10;
	ldi R24,100
	mov R0,R16
	mul R24,R0
	mov R16,R10
	sub R16,R0
	ldi R17,10
	xcall div8u
	movw R30,R28
	subi R30,52  ; addi 204
	sbci R31,255
	std z+0,R16
	.dbline 354
; 				  k=score-i*100-j*10;
	ldi R24,100
	movw R30,R28
	subi R30,54  ; addi 202
	sbci R31,255
	ldd R0,z+0
	mul R24,R0
	mov R2,R10
	sub R2,R0
	ldi R24,10
	mov R0,R16
	mul R24,R0
	sub R2,R0
	movw R30,R28
	subi R30,53  ; addi 203
	sbci R31,255
	std z+0,R2
	.dbline 355
; 				  if(i==1)
	movw R30,R28
	subi R30,54  ; addi 202
	sbci R31,255
	ldd R24,z+0
	cpi R24,1
	brne L150
	.dbline 356
; 		 		  	lcd_buffer[3]=table[j]|0x10;
	ldi R24,<_table
	ldi R25,>_table
	movw R26,R28
	subi R26,52  ; addi 204
	sbci R27,255
	ld R30,x
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	ori R24,16
	sts _lcd_buffer+3,R24
	xjmp L151
L150:
	.dbline 358
; 				  else
; 		 		    lcd_buffer[3]=table[j];
	ldi R24,<_table
	ldi R25,>_table
	movw R26,R28
	subi R26,52  ; addi 204
	sbci R27,255
	ld R30,x
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sts _lcd_buffer+3,R2
L151:
	.dbline 359
; 				  lcd_buffer[13]=table[k]|0x10;
	ldi R24,<_table
	ldi R25,>_table
	movw R26,R28
	subi R26,53  ; addi 203
	sbci R27,255
	ld R30,x
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	ori R24,16
	sts _lcd_buffer+13,R24
	.dbline 360
; 				  send_data(6,lcd_buffer[3]);
	lds R18,_lcd_buffer+3
	ldi R16,6
	xcall _send_data
	.dbline 361
; 				  send_data(26,lcd_buffer[13]);
	lds R18,_lcd_buffer+13
	ldi R16,26
	xcall _send_data
	.dbline 362
; 				  break;
	.dbline 363
; 	   deflaut:   break;
L136:
L137:
	.dbline 366
; 	  }
;    	 
; 	  }
	.dbline 367
;      }
L124:
	.dbline 369
;     
; 	}
L121:
	.dbline 370
; 	}
L113:
L159:
	.dbline 371
; A:   if((data[4]==0xFE||data[4]==0xDB)&&data[ques_num+5]==0xDB)// //it is the answer
	lds R24,_data+4
	cpi R24,254
	breq L165
	cpi R24,219
	breq X12
	xjmp L160
X12:
L165:
	ldi R24,<_data+5
	ldi R25,>_data+5
	lds R30,_ques_num
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,219
	breq X13
	xjmp L160
X13:
	.dbline 372
; 		{
	.dbline 373
; 	 	key_flag=0;
	clr R0
	movw R30,R28
	subi R30,45  ; addi 211
	sbci R31,255
	std z+0,R0
	.dbline 374
; 		lcd_buffer[9]=0x40;
	ldi R24,64
	sts _lcd_buffer+9,R24
	.dbline 375
; 	  	for(i=0;i<ques_num;i++)
	movw R30,R28
	subi R30,54  ; addi 202
	sbci R31,255
	std z+0,R0
	xjmp L170
L167:
	.dbline 376
	ldi R24,<_data+5
	ldi R25,>_data+5
	movw R26,R28
	subi R26,54  ; addi 202
	sbci R27,255
	ld R30,x
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	movw R24,R28
	movw R26,R28
	subi R26,54  ; addi 202
	sbci R27,255
	ld R30,x
	clr R31
	add R30,R24
	adc R31,R25
	std z+0,R2
L168:
	.dbline 375
	movw R30,R28
	subi R30,54  ; addi 202
	sbci R31,255
	ldd R0,z+0
	inc R0
	movw R30,R28
	subi R30,54  ; addi 202
	sbci R31,255
	std z+0,R0
L170:
	.dbline 375
	lds R2,_ques_num
	movw R30,R28
	subi R30,54  ; addi 202
	sbci R31,255
	ldd R0,z+0
	cp R0,R2
	brlo L167
	.dbline 378
; 	  	ans[i]=data[i+5];
; 	  	
; 	 	}
L160:
	.dbline 381
; 		
; 
; 	if(ans[ques_id-1]&0x01)
	movw R24,R28
	sbiw R24,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 L172
	.dbline 382
; 	    lcd_buffer[9]|=0x04;
	lds R24,_lcd_buffer+9
	ori R24,4
	sts _lcd_buffer+9,R24
	xjmp L173
L172:
	.dbline 384
; 	  else
; 	  	lcd_buffer[9]&=0xfb;	
	lds R24,_lcd_buffer+9
	andi R24,251
	sts _lcd_buffer+9,R24
L173:
	.dbline 385
; 	if(ans[ques_id-1]&0x02)
	movw R24,R28
	sbiw R24,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 L177
	.dbline 386
; 	    lcd_buffer[9]|=0x08;
	lds R24,_lcd_buffer+9
	ori R24,8
	sts _lcd_buffer+9,R24
	xjmp L178
L177:
	.dbline 388
; 	  else
; 	  	lcd_buffer[9]&=0xf7;	
	lds R24,_lcd_buffer+9
	andi R24,247
	sts _lcd_buffer+9,R24
L178:
	.dbline 389
; 	if(ans[ques_id-1]&0x04)
	movw R24,R28
	sbiw R24,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 L182
	.dbline 390
; 	    lcd_buffer[1]|=0x20;
	lds R24,_lcd_buffer+1
	ori R24,32
	sts _lcd_buffer+1,R24
	xjmp L183
L182:
	.dbline 392
; 	  else
; 	  	lcd_buffer[1]&=0xdf;	
	lds R24,_lcd_buffer+1
	andi R24,223
	sts _lcd_buffer+1,R24
L183:
	.dbline 393
; 	if(ans[ques_id-1]&0x08)
	movw R24,R28
	sbiw R24,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 L187
	.dbline 394
; 	    lcd_buffer[1]|=0x40;
	lds R24,_lcd_buffer+1
	ori R24,64
	sts _lcd_buffer+1,R24
	xjmp L188
L187:
	.dbline 396
; 	  else
; 	  	lcd_buffer[1]&=0xbf;	
	lds R24,_lcd_buffer+1
	andi R24,191
	sts _lcd_buffer+1,R24
L188:
	.dbline 397
; 	if(ans[ques_id-1]&0x10)
	movw R24,R28
	sbiw R24,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 L192
	.dbline 398
; 	    lcd_buffer[1]|=0x04;
	lds R24,_lcd_buffer+1
	ori R24,4
	sts _lcd_buffer+1,R24
	xjmp L193
L192:
	.dbline 400
; 	  else
; 	  	lcd_buffer[1]&=0xfb;	
	lds R24,_lcd_buffer+1
	andi R24,251
	sts _lcd_buffer+1,R24
L193:
	.dbline 402
; 			
; 	send_data(2,lcd_buffer[1]);
	lds R18,_lcd_buffer+1
	ldi R16,2
	xcall _send_data
	.dbline 403
; 	send_data(18,lcd_buffer[9]);
	lds R18,_lcd_buffer+9
	ldi R16,18
	xcall _send_data
	.dbline 405
; 
; 	if(ques_num!=0)//&&key_flag==1
	lds R2,_ques_num
	tst R2
	brne X14
	xjmp L199
X14:
	.dbline 406
;    {
	.dbline 407
; 	 j=0;
	clr R0
	movw R30,R28
	subi R30,52  ; addi 204
	sbci R31,255
	std z+0,R0
	.dbline 408
;    	for(k=0;k<ques_num;k++)
	movw R30,R28
	subi R30,53  ; addi 203
	sbci R31,255
	std z+0,R0
	xjmp L204
L201:
	.dbline 409
; 	{
	.dbline 410
; 	 if(ques[k]==0)
	ldi R24,<_ques
	ldi R25,>_ques
	movw R26,R28
	subi R26,53  ; addi 203
	sbci R27,255
	ld R30,x
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	tst R2
	brne L205
	.dbline 411
; 	 {
	.dbline 412
; 	  n_ques[j]=k+1;
	movw R24,R28
	subi R24,156  ; offset = 100
	sbci R25,255
	movw R26,R28
	subi R26,52  ; addi 204
	sbci R27,255
	ld R30,x
	clr R31
	add R30,R24
	adc R31,R25
	movw R26,R28
	subi R26,53  ; addi 203
	sbci R27,255
	ld R24,x
	subi R24,255    ; addi 1
	std z+0,R24
	.dbline 413
; 	  j++;
	movw R30,R28
	subi R30,52  ; addi 204
	sbci R31,255
	ldd R0,z+0
	inc R0
	movw R30,R28
	subi R30,52  ; addi 204
	sbci R31,255
	std z+0,R0
	.dbline 414
; 	  n_num++;
	inc R14
	.dbline 415
; 	 }
L205:
	.dbline 416
L202:
	.dbline 408
	movw R30,R28
	subi R30,53  ; addi 203
	sbci R31,255
	ldd R0,z+0
	inc R0
	movw R30,R28
	subi R30,53  ; addi 203
	sbci R31,255
	std z+0,R0
L204:
	.dbline 408
	lds R2,_ques_num
	movw R30,R28
	subi R30,53  ; addi 203
	sbci R31,255
	ldd R0,z+0
	cp R0,R2
	brsh X15
	xjmp L201
X15:
	.dbline 417
; 	}
; 	i=n_num/100;
	ldi R17,100
	mov R16,R14
	xcall div8u
	movw R30,R28
	subi R30,54  ; addi 202
	sbci R31,255
	std z+0,R16
	.dbline 418
; 	j=(n_num-i*100)/10;
	ldi R24,100
	mov R0,R16
	mul R24,R0
	mov R16,R14
	sub R16,R0
	ldi R17,10
	xcall div8u
	movw R30,R28
	subi R30,52  ; addi 204
	sbci R31,255
	std z+0,R16
	.dbline 419
; 	k=n_num-i*100-j*10;
	ldi R24,100
	movw R30,R28
	subi R30,54  ; addi 202
	sbci R31,255
	ldd R0,z+0
	mul R24,R0
	mov R2,R14
	sub R2,R0
	ldi R24,10
	mov R0,R16
	mul R24,R0
	sub R2,R0
	movw R30,R28
	subi R30,53  ; addi 203
	sbci R31,255
	std z+0,R2
	.dbline 420
; 	lcd_buffer[12]|=0x40;
	lds R24,_lcd_buffer+12
	ori R24,64
	sts _lcd_buffer+12,R24
	.dbline 421
; 	if(i==1)
	movw R30,R28
	subi R30,54  ; addi 202
	sbci R31,255
	ldd R24,z+0
	cpi R24,1
	brne L208
	.dbline 422
; 	 lcd_buffer[2]=table[k]|0x10;
	ldi R24,<_table
	ldi R25,>_table
	mov R30,R2
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	ori R24,16
	sts _lcd_buffer+2,R24
	xjmp L209
L208:
	.dbline 424
; 	else
; 	 lcd_buffer[2]=table[k]&0xef;
	ldi R24,<_table
	ldi R25,>_table
	movw R26,R28
	subi R26,53  ; addi 203
	sbci R27,255
	ld R30,x
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	andi R24,239
	sts _lcd_buffer+2,R24
L209:
	.dbline 425
; 	lcd_buffer[10]=table[j];
	ldi R24,<_table
	ldi R25,>_table
	movw R26,R28
	subi R26,52  ; addi 204
	sbci R27,255
	ld R30,x
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sts _lcd_buffer+10,R2
	.dbline 426
; 	send_data(4,lcd_buffer[2]);
	lds R18,_lcd_buffer+2
	ldi R16,4
	xcall _send_data
	.dbline 427
; 	send_data(20,lcd_buffer[10]);
	lds R18,_lcd_buffer+10
	ldi R16,20
	xcall _send_data
	.dbline 428
; 	send_data(24,lcd_buffer[12]);
	lds R18,_lcd_buffer+12
	ldi R16,24
	xcall _send_data
	.dbline 430
; 	  
; 	 key=key_scan();
	xcall _key_scan
	movw R30,R28
	subi R30,50  ; addi 206
	sbci R31,255
	std z+0,R16
	.dbline 431
; 	 if(key==9||key==6)
	cpi R16,9
	breq L218
	cpi R16,6
	breq X16
	xjmp L216
X16:
L218:
	.dbline 432
; 	 {
	.dbline 433
; 	  if(key==9)
	movw R30,R28
	subi R30,50  ; addi 206
	sbci R31,255
	ldd R24,z+0
	cpi R24,9
	brne L219
	.dbline 434
; 	  ques_id++;
	movw R30,R28
	subi R30,51  ; addi 205
	sbci R31,255
	ldd R0,z+0
	inc R0
	movw R30,R28
	subi R30,51  ; addi 205
	sbci R31,255
	std z+0,R0
L219:
	.dbline 435
; 	  if(ques_id>ques_num)

⌨️ 快捷键说明

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