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

📄 main.s

📁 一个单片机的完整开发程序AVR的
💻 S
📖 第 1 页 / 共 5 页
字号:
	xcall _send_data
	.dbline 545
; 	send_data(18,lcd_buffer[9]);
	lds R18,_lcd_buffer+9
	ldi R16,18
	xcall _send_data
	.dbline 546
; 	send_data(24,lcd_buffer[12]);
	lds R18,_lcd_buffer+12
	ldi R16,24
	xcall _send_data
	.dbline 547
; 	}
L256:
	.dbline 548
;    if(key==3)
	movw R30,R28
	subi R30,50  ; addi 206
	sbci R31,255
	ldd R24,z+0
	cpi R24,3
	breq X24
	xjmp L320
X24:
	.dbline 549
;    {
	.dbline 550
;    	lcd_buffer[1]&=0xfd;
	lds R24,_lcd_buffer+1
	andi R24,253
	sts _lcd_buffer+1,R24
	.dbline 551
; 	lcd_buffer[4]&=0x1f;
	lds R24,_lcd_buffer+4
	andi R24,31
	sts _lcd_buffer+4,R24
	.dbline 552
; 	lcd_buffer[9]&=0xfd;
	lds R24,_lcd_buffer+9
	andi R24,253
	sts _lcd_buffer+9,R24
	.dbline 553
; 	lcd_buffer[12]&=0x59;
	lds R24,_lcd_buffer+12
	andi R24,89
	sts _lcd_buffer+12,R24
	.dbline 555
; 	
; 	send_data(2,lcd_buffer[1]);
	lds R18,_lcd_buffer+1
	ldi R16,2
	xcall _send_data
	.dbline 556
; 	send_data(8,lcd_buffer[4]);
	lds R18,_lcd_buffer+4
	ldi R16,8
	xcall _send_data
	.dbline 557
; 	send_data(18,lcd_buffer[9]);
	lds R18,_lcd_buffer+9
	ldi R16,18
	xcall _send_data
	.dbline 558
; 	send_data(24,lcd_buffer[12]);
	lds R18,_lcd_buffer+12
	ldi R16,24
	xcall _send_data
	.dbline 560
; 	
; 	nques_id++;
	movw R30,R28
	subi R30,44  ; addi 212
	sbci R31,255
	ldd R0,z+0
	inc R0
	movw R30,R28
	subi R30,44  ; addi 212
	sbci R31,255
	std z+0,R0
	.dbline 561
; 	if(nques_id>n_num)
	cp R14,R0
	brsh L330
	.dbline 562
; 	nques_id=1;
	clr R0
	inc R0
	movw R30,R28
	subi R30,44  ; addi 212
	sbci R31,255
	std z+0,R0
L330:
	.dbline 563
; 	ques_id=n_ques[nques_id-1];
	movw R24,R28
	subi R24,157  ; offset = 99
	sbci R25,255
	movw R26,R28
	subi R26,44  ; addi 212
	sbci R27,255
	ld R30,x
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	movw R30,R28
	subi R30,51  ; addi 205
	sbci R31,255
	std z+0,R2
	.dbline 565
; 	
;    }
L320:
	.dbline 566
;    	i=ques_id/100;
	ldi R17,100
	movw R30,R28
	subi R30,51  ; addi 205
	sbci R31,255
	ldd R16,z+0
	xcall div8u
	movw R30,R28
	subi R30,54  ; addi 202
	sbci R31,255
	std z+0,R16
	.dbline 567
; 	j=(ques_id-i*100)/10;
	ldi R24,100
	mov R0,R16
	mul R24,R0
	movw R30,R28
	subi R30,51  ; addi 205
	sbci R31,255
	ldd R16,z+0
	sub R16,R0
	ldi R17,10
	xcall div8u
	movw R30,R28
	subi R30,52  ; addi 204
	sbci R31,255
	std z+0,R16
	.dbline 568
; 	k=ques_id-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
	movw R30,R28
	subi R30,51  ; addi 205
	sbci R31,255
	ldd R4,z+0
	sub R4,R0
	ldi R24,10
	mov R0,R16
	mul R24,R0
	sub R4,R0
	movw R30,R28
	subi R30,53  ; addi 203
	sbci R31,255
	std z+0,R4
	.dbline 569
; 	if(i)
	movw R30,R28
	subi R30,54  ; addi 202
	sbci R31,255
	ldd R0,z+0
	tst R0
	breq L333
	.dbline 570
; 	  lcd_buffer[7]=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+7,R24
	xjmp L334
L333:
	.dbline 572
; 	else
; 	  lcd_buffer[7]=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+7,R2
L334:
	.dbline 573
; 	lcd_buffer[15]=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+15,R24
	.dbline 575
; 	
; 	send_data(14,lcd_buffer[7]);
	lds R18,_lcd_buffer+7
	ldi R16,14
	xcall _send_data
	.dbline 576
;     send_data(30,lcd_buffer[15]);
	lds R18,_lcd_buffer+15
	ldi R16,30
	xcall _send_data
L134:
	.dbline 577
; B: i=receive();
	xcall _receive
	movw R30,R28
	subi R30,54  ; addi 202
	sbci R31,255
	std z+0,R16
	.dbline 578
;    if(i)
	mov R0,R16
	tst R16
	breq L340
	.dbline 579
;    {
	.dbline 580
;    	if(data[7]==0x88)//||data[4]==guest_id
	lds R24,_data+7
	cpi R24,136
	brne L342
	.dbline 581
; 	  {
	.dbline 582
; 	   key=0;
	clr R0
	movw R30,R28
	subi R30,50  ; addi 206
	sbci R31,255
	std z+0,R0
	.dbline 583
; 	   lcd_buffer[10]&=0xEF;
	lds R24,_lcd_buffer+10
	andi R24,239
	sts _lcd_buffer+10,R24
	.dbline 584
; 	   lcd_buffer[1]&=0xFE;
	lds R24,_lcd_buffer+1
	andi R24,254
	sts _lcd_buffer+1,R24
	.dbline 585
; 	   lcd_buffer[14]=0x00;
	clr R2
	sts _lcd_buffer+14,R2
	.dbline 586
; 	   lcd_buffer[12]=(lcd_buffer[12]&0x6B)|0x01;
	lds R24,_lcd_buffer+12
	andi R24,107
	ori R24,1
	sts _lcd_buffer+12,R24
	.dbline 588
; 	   
; 	   send_data(2,lcd_buffer[1]);
	lds R18,_lcd_buffer+1
	ldi R16,2
	xcall _send_data
	.dbline 589
; 	   send_data(24,lcd_buffer[12]);
	lds R18,_lcd_buffer+12
	ldi R16,24
	xcall _send_data
	.dbline 590
; 	   send_data(20,lcd_buffer[10]);
	lds R18,_lcd_buffer+10
	ldi R16,20
	xcall _send_data
	.dbline 591
; 	   send_data(28,lcd_buffer[14]);
	lds R18,_lcd_buffer+14
	ldi R16,28
	xcall _send_data
	.dbline 592
; 	  }
L342:
	.dbline 593
; 	}
L340:
	.dbline 594
;    if(key==2) 
	movw R30,R28
	subi R30,50  ; addi 206
	sbci R31,255
	ldd R24,z+0
	cpi R24,2
	breq X25
	xjmp L354
X25:
	.dbline 595
;    {
	.dbline 597
; // B:	t=2;
;     lcd_buffer[0]|=0x10;
	lds R24,_lcd_buffer
	ori R24,16
	sts _lcd_buffer,R24
	.dbline 598
; 	lcd_buffer[10]|=0x10;
	lds R24,_lcd_buffer+10
	ori R24,16
	sts _lcd_buffer+10,R24
	.dbline 599
; 	lcd_buffer[12]|=0x18;
	lds R24,_lcd_buffer+12
	ori R24,24
	sts _lcd_buffer+12,R24
	.dbline 600
; 	send_data(0,lcd_buffer[0]);
	lds R18,_lcd_buffer
	clr R16
	xcall _send_data
	.dbline 601
; 	send_data(20,lcd_buffer[10]);
	lds R18,_lcd_buffer+10
	ldi R16,20
	xcall _send_data
	.dbline 602
; 	send_data(24,lcd_buffer[12]);
	lds R18,_lcd_buffer+12
	ldi R16,24
	xcall _send_data
	.dbline 610
; 	//i=receive();
; 	//if(i)
; //	while(data[7]!=0x88)
; //	{
; 	//i=receive();
; 	//if(i)
; 	//{
; 	work_state();
	sbi 0x15,4
	.dbline 611
; 	send_state();
	sbi 0x15,2
	.dbline 612
; 	delay_ms(3);
	ldi R16,3
	xcall _delay_ms
	.dbline 614
; //	delay_us(250);
; 	sendchar(0x00);
	clr R16
	xcall _sendchar
	.dbline 615
; 	send_answer();
	xcall _send_answer
	.dbline 616
; 	sendchar(0x00);
	clr R16
	xcall _sendchar
	.dbline 617
; 	sendchar(0x00);
	clr R16
	xcall _sendchar
	.dbline 620
; 
; 	//}
; 	work_state();
	sbi 0x15,4
	.dbline 621
; 	rece_state();
	cbi 0x15,2
	.dbline 624
; //	delay_us(250);
; //	delay_us(250);
; 	delay_ms(1);
	ldi R16,1
	xcall _delay_ms
	.dbline 627
; 	//if(t1>200) break;
; 	
; 	if(t>=2&&t<33)
	lds R24,_t
	cpi R24,2
	brlo L360
	cpi R24,33
	brsh L360
	.dbline 628
; 	{
	.dbline 629
; 	 lcd_buffer[1]|=0x01;
	lds R24,_lcd_buffer+1
	ori R24,1
	sts _lcd_buffer+1,R24
	.dbline 630
; 	 lcd_buffer[14]=0x00;
	clr R2
	sts _lcd_buffer+14,R2
	.dbline 631
; 	 send_data(2,lcd_buffer[1]);
	mov R18,R24
	ldi R16,2
	xcall _send_data
	.dbline 632
; 	 send_data(28,lcd_buffer[14]);
	lds R18,_lcd_buffer+14
	ldi R16,28
	xcall _send_data
	.dbline 633
; 	}
L360:
	.dbline 634
; 	if(t>=33&&t<75)
	lds R24,_t
	cpi R24,33
	brlo L366
	cpi R24,75
	brsh L366
	.dbline 635
; 	{
	.dbline 636
; 	 lcd_buffer[14]=0x10;
	ldi R24,16
	sts _lcd_buffer+14,R24
	.dbline 637
; 	 lcd_buffer[1]&=0xFE;
	lds R24,_lcd_buffer+1
	andi R24,254
	sts _lcd_buffer+1,R24
	.dbline 638
; 	 send_data(28,lcd_buffer[14]);
	lds R18,_lcd_buffer+14
	ldi R16,28
	xcall _send_data
	.dbline 639
; 	 send_data(2,lcd_buffer[1]);
	lds R18,_lcd_buffer+1
	ldi R16,2
	xcall _send_data
	.dbline 640
; 	}
L366:
	.dbline 641
; 	if(t>=75&&t<100)
	lds R24,_t
	cpi R24,75
	brsh X26
	xjmp L134
X26:
	cpi R24,100
	brlo X27
	xjmp L134
X27:
	.dbline 642
; 	{
	.dbline 643
; 	lcd_buffer[14]=0x01;
	ldi R24,1
	sts _lcd_buffer+14,R24
	.dbline 644
; 	lcd_buffer[1]&=0xFE;
	lds R24,_lcd_buffer+1
	andi R24,254
	sts _lcd_buffer+1,R24
	.dbline 645
; 	send_data(2,lcd_buffer[1]);
	mov R18,R24
	ldi R16,2
	xcall _send_data
	.dbline 646
; 	send_data(28,lcd_buffer[14]);
	lds R18,_lcd_buffer+14
	ldi R16,28
	xcall _send_data
	.dbline 647
; 	}
	.dbline 648
; 	goto B;
	xjmp L134
L354:
	.dbline 683
; 
; //	i=receive();
; 
; 	//if(i)
; /*    
; 	while(i!=0x0F||data[0]!=0xF0)
; 	{
; 	 i=getchar();
; 	 data[0]=getchar();
; 	}
;      for(j=1;j<12;j++)
; 	 data[j]=getchar();  
;   	
; 	for(j=0;j<11;j++)
;   	d^=data[j];      */
; 	//if(d==data[11])
; 	//{
; 	/* 	if(data[7]==0x88)//||data[4]==guest_id
; 	  {
; 	  
; 	   lcd_buffer[10]&=0xEF;
; 	   lcd_buffer[1]&=0xFE;
; 	   lcd_buffer[14]=0x00;
; 	   lcd_buffer[12]=(lcd_buffer[12]&0x6B)|0x01;
; 	   
; 	   send_data(2,lcd_buffer[1]);
; 	   send_data(24,lcd_buffer[12]);
; 	   send_data(20,lcd_buffer[10]);
; 	   send_data(28,lcd_buffer[14]);
; 	  }
; 	 */ 
; 	
; //	}
;    }
;   } 
L199:
	.dbline 684
;   if(t==0)
	lds R2,_t
	tst R2
	breq X28
	xjmp L378
X28:
	.dbline 685
;   {
L380:
	.dbline 686
L381:
	.dbline 686
;    while(!(ADCSRA&0x10));
	sbis 0x6,4
	rjmp L380
	.dbline 687
;   	 adc_l=ADCL;
	in R12,0x4
	.dbline 688
;   	 adc_h=(ADCH&0x03);
	in R22,0x5
	andi R22,3
	.dbline 689
;      ADMUX=0xC3;// value|=(int)ADCH << 8; //read 2 high bits and shift into top byte
	ldi R24,195
	out 0x7,R24
	.dbline 690
;  	 ADCSRA|=(1<<ADSC);
	sbi 0x6,6
	.dbline 691
;  	 adc_rel=(((adc_h<<8)&0xff00)|adc_l);
	mov R2,R12
	clr R3
	mov R20,R22
	clr R21
	mov R21,R20
	clr R20
	andi R20,0
	or R20,R2
	or R21,R3
	.dbline 692
;   	 lcd_buffer[4]&=0xF0;
	lds R24,_lcd_buffer+4
	andi R24,240
	sts _lcd_buffer+4,R24
	.dbline 693
;   	 if(adc_old!=adc_rel)
	movw R30,R28
	subi R30,49  ; addi 207
	sbci R31,255
	ldd R0,z+0
	ldd R1,z+1
	cp R0,R20
	cpc R1,R21
	breq L384
	.dbline 694
;    	 adc_old=adc_rel;
	movw R30,R28
	subi R30,49  ; addi 207
	sbci R31,255
	std z+1,R21
	std z+0,R20
L384:
	.dbline 695
;   	 if(adc_old>0)
	movw R30,R28
	subi R30,49  ; addi 207
	sbci R31,255
	ldd R0,z+0
	ldd R1,z+1
	tst R0
	brne X2
	tst R1
	breq L386
X2:
	.dbline 696
; 	 lcd_buffer[4]|=0x01;
	lds R24,_lcd_buffer+4
	ori R24,1
	sts _lcd_buffer+4,R24
L386:
	.dbline 697
;   	 if(adc_old>0x0100&&adc_old<0x0230)
	ldi R24,256
	ldi R25,1
	movw R30,R28
	subi R30,49  ; addi 207
	sbci R31,255
	ldd R0,z+0
	ldd R1,z+1
	cp R24,R0
	cpc R25,R1
	brsh L389
	movw R24,R0
	cpi R24,48
	ldi R30,2
	cpc R25,R30
	brsh L389
	.dbline 698
; 	 lcd_buffer[4]|=0x05;
	lds R24,_lcd_buffer+4
	ori R24,5
	sts _lcd_buffer+4,R24
L389:
	.dbline 699
;   	 if(adc_old>0x0230&&adc_old<0x0244)
	ldi R24,560
	ldi R25,2
	movw R30,R28
	subi R30,49  ; addi 207
	sbci R31,255
	ldd R0,z+0
	ldd R1,z+1
	cp R24,R0
	cpc R25,R1
	brsh L392
	movw R24,R0
	cpi R24,68
	ldi R30,2
	cpc R25,R30
	brsh L392
	.dbline 700
;    	 lcd_buffer[4]|=0x0D;
	lds R24,_lcd_buffer+4
	ori R24,13
	sts _lcd_buffer+4,R24
L392:
	.dbline 701
;   	 if(adc_old>0x0244)
	ldi R24,580
	ldi R25,2
	movw R30,R28
	subi R30,49  ; addi 207
	sbci R31,255
	ldd R0,z+0
	ldd R1,z+1
	cp R24,R0
	cpc R25,R1
	brsh L395
	.dbline 702
; 	 lcd_buffer[4]|=0x0F;
	lds R24,_lcd_buffer+4
	ori R24,15
	sts _lcd_buffer+4,R24
L395:
	.dbline 703
;    	 send_data(0x08,lcd_buffer[4]);
	lds R18,_lcd_buffer+4
	ldi R16,8
	xcall _send_data
	.dbline 704
;    }
L378:
	.dbline 717
L111:
	.dbline 315
	xjmp L110
X3:
	.dbline -2
	.dbline 718
;    //EEPROMwrite(0x04,temp);
;    //EEPROMwrite(0x05,ques_num);
;    //EEPROMwrite(0x06,score);
;    //for(i=0;i<100;i++)
;    //{
;    // EEPROMwrite((i+7),ques[i]);
;   // } 
;   //for(i=0;i<100;i++)
;    //{
;    // EEPROMwrite((i+107),ans[i]);
;   // } 
;   //}
;  }
; }
L59:
	adiw R28,63
	adiw R28,63
	adiw R28,63
	adiw R28,29  ; offset = 218
	.dbline 0 ; func end
	ret
	.dbsym l d1 1 c
	.dbsym r score 10 c
	.dbsym l temp 217 c
	.dbsym l keye_flag 216 c
	.dbsym l keyd_flag 215 c
	.dbsym l keyb_flag 214 c
	.dbsym l keya_flag 213 c
	.dbsym l nques_id 212 c
	.dbsym r adc_l 12 c
	.dbsym r adc_h 22 c
	.dbsym l key_flag 211 c
	.dbsym r adc_rel 20 i
	.dbsym l keyc_flag 210 c
	.dbsym l d 209 c
	.dbsym l adc_old 207 i
	.dbsym l n_ques 100 A[100:100]c
	.dbsym r n_num 14 c
	.dbsym l key 206 c
	.dbsym l ques_id 205 c
	.dbsym l ans 0 A[100:100]c
	.dbsym l j 204 c
	.dbsym l k 203 c
	.dbsym l i 202 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile F:\赵一\edu6000_1202\main.c
_t1::
	.blkb 2
	.dbsym e t1 _t1 i
_ques_num::
	.blkb 1
	.dbsym e ques_num _ques_num c
_data::
	.blkb 110
	.dbsym e data _data A[110:110]c
_ques::
	.blkb 100
	.dbsym e ques _ques A[100:100]c
_t::
	.blkb 1
	.dbsym e t _t c
_guest_id::
	.blkb 1
	.dbsym e guest_id _guest_id c
_host_id::
	.blkb 1
	.dbsym e host_id _host_id c
_lcd_buffer::
	.blkb 16
	.dbsym e lcd_buffer _lcd_buffer A[16:16]c

⌨️ 快捷键说明

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