main.s

来自「文档里面的代码是可以正常使用的」· S 代码 · 共 3,673 行 · 第 1/5 页

S
3,673
字号
	.dbline 740
	.dbline 742
	ldd R16,y+13
	rcall _spi_transfer_8
	.dbline 743
	ldi R20,255
	ldi R21,255
	ldi R22,0
	ldi R23,0
	lds R4,_address+2
	lds R5,_address+2+1
	lds R2,_address
	lds R3,_address+1
	and R2,R20
	and R3,R21
	and R4,R22
	and R5,R23
	movw R16,R2
	rcall _spi_transfer_16
	.dbline 744
	clr R16
	rcall _spi_transfer_8
	ldi R24,<_msg_buffer
	ldi R25,>_msg_buffer
	movw R30,R12
	adiw R30,2
	add R30,R24
	adc R31,R25
	std z+0,R16
	.dbline 747
	ldi R20,1
	ldi R21,0
	ldi R22,0
	ldi R23,0
	lds R4,_address+2
	lds R5,_address+2+1
	lds R2,_address
	lds R3,_address+1
	add R2,R20
	adc R3,R21
	adc R4,R22
	adc R5,R23
	sts _address+1,R3
	sts _address,R2
	sts _address+2+1,R5
	sts _address+2,R4
	.dbline 748
L320:
	.dbline 739
	movw R24,R12
	adiw R24,1
	movw R12,R24
L322:
	.dbline 739
	cp R12,R10
	cpc R13,R11
	brsh X27
	rjmp L319
X27:
	.dbline 750
; 		{
; 			//Select Low or High-Byte
; 			spi_transfer_8(tmp);
; 			spi_transfer_16(address&0xFFFF);
; 			msg_buffer[i+2] = spi_transfer_8(0);
; 			
; 			//increment address
; 			address++;
; 		}
; 		
; 		num_bytes = block_size+3;
	movw R24,R10
	adiw R24,3
	std y+11,R25
	std y+10,R24
	.dbline 751
; 		msg_buffer[0] = CMD_READ_EEPROM_ISP;
	ldi R24,22
	sts _msg_buffer,R24
	.dbline 752
; 		msg_buffer[1] = STATUS_CMD_OK;
	clr R2
	sts _msg_buffer+1,R2
	.dbline 753
; 		msg_buffer[block_size+2] = STATUS_CMD_OK;
	ldi R24,<_msg_buffer
	ldi R25,>_msg_buffer
	movw R30,R10
	adiw R30,2
	add R30,R24
	adc R31,R25
	std z+0,R2
	.dbline 754
; 	}
	rjmp L315
L314:
	.dbline 760
; 	
; 	
; 	//////////////////////////////////////
; 	//CMD_PROGRAM_FUSE_ISP
; 	//////////////////////////////////////
; 	else if(cmd==CMD_PROGRAM_FUSE_ISP)
	ldd R24,y+12
	cpi R24,23
	brne L324
	.dbline 761
; 	{
	.dbline 762
; 		tmp = spi_transfer_8(msg_buffer[1]);
	lds R16,_msg_buffer+1
	rcall _spi_transfer_8
	std y+13,R16
	.dbline 763
; 		tmp = spi_transfer_8(msg_buffer[2]);
	lds R16,_msg_buffer+2
	rcall _spi_transfer_8
	std y+13,R16
	.dbline 764
; 		tmp = spi_transfer_8(msg_buffer[3]);
	lds R16,_msg_buffer+3
	rcall _spi_transfer_8
	std y+13,R16
	.dbline 765
; 		tmp = spi_transfer_8(msg_buffer[4]);
	lds R16,_msg_buffer+4
	rcall _spi_transfer_8
	std y+13,R16
	.dbline 767
; 		
; 		num_bytes = 3;
	ldi R24,3
	ldi R25,0
	std y+11,R25
	std y+10,R24
	.dbline 768
; 		msg_buffer[0] = CMD_PROGRAM_FUSE_ISP;
	ldi R24,23
	sts _msg_buffer,R24
	.dbline 769
; 		msg_buffer[1] = STATUS_CMD_OK;		
	clr R2
	sts _msg_buffer+1,R2
	.dbline 770
; 		msg_buffer[2] = STATUS_CMD_OK;
	sts _msg_buffer+2,R2
	.dbline 771
; 	}
	rjmp L325
L324:
	.dbline 775
; 	//////////////////////////////////////
; 	//CMD_READ_FUSE_ISP
; 	//////////////////////////////////////
; 	else if(cmd==CMD_READ_FUSE_ISP)
	ldd R24,y+12
	cpi R24,24
	brne L332
	.dbline 776
; 	{
	.dbline 777
; 		tmp = spi_transfer_8(msg_buffer[2]);
	lds R16,_msg_buffer+2
	rcall _spi_transfer_8
	std y+13,R16
	.dbline 778
; 		if(msg_buffer[1] == 1) msg_buffer[2] = tmp;
	lds R24,_msg_buffer+1
	cpi R24,1
	brne L335
	.dbline 778
	mov R0,R16
	sts _msg_buffer+2,R0
L335:
	.dbline 779
; 		tmp = spi_transfer_8(msg_buffer[3]);
	lds R16,_msg_buffer+3
	rcall _spi_transfer_8
	std y+13,R16
	.dbline 780
; 		if(msg_buffer[1] == 2) msg_buffer[2] = tmp;
	lds R24,_msg_buffer+1
	cpi R24,2
	brne L340
	.dbline 780
	mov R0,R16
	sts _msg_buffer+2,R0
L340:
	.dbline 781
; 		tmp = spi_transfer_8(msg_buffer[4]);
	lds R16,_msg_buffer+4
	rcall _spi_transfer_8
	std y+13,R16
	.dbline 782
; 		if(msg_buffer[1] == 3) msg_buffer[2] = tmp;
	lds R24,_msg_buffer+1
	cpi R24,3
	brne L345
	.dbline 782
	mov R0,R16
	sts _msg_buffer+2,R0
L345:
	.dbline 783
; 		tmp = spi_transfer_8(msg_buffer[5]);
	lds R16,_msg_buffer+5
	rcall _spi_transfer_8
	std y+13,R16
	.dbline 784
; 		if(msg_buffer[1] == 4) msg_buffer[2] = tmp;
	lds R24,_msg_buffer+1
	cpi R24,4
	brne L350
	.dbline 784
	mov R0,R16
	sts _msg_buffer+2,R0
L350:
	.dbline 786
; 		
; 		num_bytes = 4;
	ldi R24,4
	ldi R25,0
	std y+11,R25
	std y+10,R24
	.dbline 787
; 		msg_buffer[0] = CMD_READ_FUSE_ISP;
	ldi R24,24
	sts _msg_buffer,R24
	.dbline 788
; 		msg_buffer[1] = STATUS_CMD_OK;		
	clr R2
	sts _msg_buffer+1,R2
	.dbline 789
; 		msg_buffer[3] = STATUS_CMD_OK;
	sts _msg_buffer+3,R2
	.dbline 790
; 	}
	rjmp L333
L332:
	.dbline 794
; 	//////////////////////////////////////
; 	//CMD_PROGRAM_LOCK_ISP
; 	//////////////////////////////////////
; 	else if(cmd==CMD_PROGRAM_LOCK_ISP)
	ldd R24,y+12
	cpi R24,25
	brne L356
	.dbline 795
; 	{
	.dbline 796
; 		tmp = spi_transfer_8(msg_buffer[1]);
	lds R16,_msg_buffer+1
	rcall _spi_transfer_8
	std y+13,R16
	.dbline 797
; 		tmp = spi_transfer_8(msg_buffer[2]);
	lds R16,_msg_buffer+2
	rcall _spi_transfer_8
	std y+13,R16
	.dbline 798
; 		tmp = spi_transfer_8(msg_buffer[3]);
	lds R16,_msg_buffer+3
	rcall _spi_transfer_8
	std y+13,R16
	.dbline 799
; 		tmp = spi_transfer_8(msg_buffer[4]);
	lds R16,_msg_buffer+4
	rcall _spi_transfer_8
	std y+13,R16
	.dbline 801
; 		
; 		num_bytes = 3;
	ldi R24,3
	ldi R25,0
	std y+11,R25
	std y+10,R24
	.dbline 802
; 		msg_buffer[0] = CMD_PROGRAM_LOCK_ISP;
	ldi R24,25
	sts _msg_buffer,R24
	.dbline 803
; 		msg_buffer[1] = STATUS_CMD_OK;		
	clr R2
	sts _msg_buffer+1,R2
	.dbline 804
; 		msg_buffer[2] = STATUS_CMD_OK;
	sts _msg_buffer+2,R2
	.dbline 805
; 	}
	rjmp L357
L356:
	.dbline 809
; 	//////////////////////////////////////
; 	//CMD_READ_LOCK_ISP
; 	//////////////////////////////////////
; 	else if(cmd==CMD_READ_LOCK_ISP)
	ldd R24,y+12
	cpi R24,26
	brne L364
	.dbline 810
; 	{
	.dbline 811
; 		tmp = spi_transfer_8(msg_buffer[2]);
	lds R16,_msg_buffer+2
	rcall _spi_transfer_8
	std y+13,R16
	.dbline 812
; 		if(msg_buffer[1] == 1) msg_buffer[2] = tmp;
	lds R24,_msg_buffer+1
	cpi R24,1
	brne L367
	.dbline 812
	mov R0,R16
	sts _msg_buffer+2,R0
L367:
	.dbline 813
; 		tmp = spi_transfer_8(msg_buffer[3]);
	lds R16,_msg_buffer+3
	rcall _spi_transfer_8
	std y+13,R16
	.dbline 814
; 		if(msg_buffer[1] == 2) msg_buffer[2] = tmp;
	lds R24,_msg_buffer+1
	cpi R24,2
	brne L372
	.dbline 814
	mov R0,R16
	sts _msg_buffer+2,R0
L372:
	.dbline 815
; 		tmp = spi_transfer_8(msg_buffer[4]);
	lds R16,_msg_buffer+4
	rcall _spi_transfer_8
	std y+13,R16
	.dbline 816
; 		if(msg_buffer[1] == 3) msg_buffer[2] = tmp;
	lds R24,_msg_buffer+1
	cpi R24,3
	brne L377
	.dbline 816
	mov R0,R16
	sts _msg_buffer+2,R0
L377:
	.dbline 817
; 		tmp = spi_transfer_8(msg_buffer[5]);
	lds R16,_msg_buffer+5
	rcall _spi_transfer_8
	std y+13,R16
	.dbline 818
; 		if(msg_buffer[1] == 4) msg_buffer[2] = tmp;
	lds R24,_msg_buffer+1
	cpi R24,4
	brne L382
	.dbline 818
	mov R0,R16
	sts _msg_buffer+2,R0
L382:
	.dbline 820
; 		
; 		num_bytes = 4;
	ldi R24,4
	ldi R25,0
	std y+11,R25
	std y+10,R24
	.dbline 821
; 		msg_buffer[0] = CMD_READ_LOCK_ISP;
	ldi R24,26
	sts _msg_buffer,R24
	.dbline 822
; 		msg_buffer[1] = STATUS_CMD_OK;		
	clr R2
	sts _msg_buffer+1,R2
	.dbline 823
; 		msg_buffer[3] = STATUS_CMD_OK;
	sts _msg_buffer+3,R2
	.dbline 824
; 	}
	rjmp L365
L364:
	.dbline 828
; 	//////////////////////////////////////
; 	//CMD_READ_SIGNATURE_ISP
; 	//////////////////////////////////////
; 	else if(cmd==CMD_READ_SIGNATURE_ISP)
	ldd R24,y+12
	cpi R24,27
	brne L388
	.dbline 829
; 	{
	.dbline 830
; 		tmp = spi_transfer_8(msg_buffer[2]);
	lds R16,_msg_buffer+2
	rcall _spi_transfer_8
	std y+13,R16
	.dbline 831
; 		if(msg_buffer[1] == 1) msg_buffer[2] = tmp;
	lds R24,_msg_buffer+1
	cpi R24,1
	brne L391
	.dbline 831
	mov R0,R16
	sts _msg_buffer+2,R0
L391:
	.dbline 832
; 		tmp = spi_transfer_8(msg_buffer[3]);
	lds R16,_msg_buffer+3
	rcall _spi_transfer_8
	std y+13,R16
	.dbline 833
; 		if(msg_buffer[1] == 2) msg_buffer[2] = tmp;
	lds R24,_msg_buffer+1
	cpi R24,2
	brne L396
	.dbline 833
	mov R0,R16
	sts _msg_buffer+2,R0
L396:
	.dbline 834
; 		tmp = spi_transfer_8(msg_buffer[4]);
	lds R16,_msg_buffer+4
	rcall _spi_transfer_8
	std y+13,R16
	.dbline 835
; 		if(msg_buffer[1] == 3) msg_buffer[2] = tmp;
	lds R24,_msg_buffer+1
	cpi R24,3
	brne L401
	.dbline 835
	mov R0,R16
	sts _msg_buffer+2,R0
L401:
	.dbline 836
; 		tmp = spi_transfer_8(msg_buffer[5]);
	lds R16,_msg_buffer+5
	rcall _spi_transfer_8
	std y+13,R16
	.dbline 837
; 		if(msg_buffer[1] == 4) msg_buffer[2] = tmp;
	lds R24,_msg_buffer+1
	cpi R24,4
	brne L406
	.dbline 837
	mov R0,R16
	sts _msg_buffer+2,R0
L406:
	.dbline 839
; 		
; 		num_bytes = 4;
	ldi R24,4
	ldi R25,0
	std y+11,R25
	std y+10,R24
	.dbline 840
; 		msg_buffer[0] = CMD_READ_SIGNATURE_ISP;
	ldi R24,27
	sts _msg_buffer,R24
	.dbline 841
; 		msg_buffer[1] = STATUS_CMD_OK;		
	clr R2
	sts _msg_buffer+1,R2
	.dbline 842
; 		msg_buffer[3] = STATUS_CMD_OK;
	sts _msg_buffer+3,R2
	.dbline 843
; 	}
	rjmp L389
L388:
	.dbline 847
; 	//////////////////////////////////////
; 	//CMD_READ_OSCCAL_ISP
; 	//////////////////////////////////////
; 	else if(cmd==CMD_READ_OSCCAL_ISP)
	ldd R24,y+12
	cpi R24,28
	brne L412
	.dbline 848
; 	{
	.dbline 849
; 		tmp = spi_transfer_8(msg_buffer[2]);
	lds R16,_msg_buffer+2
	rcall _spi_transfer_8
	std y+13,R16
	.dbline 850
; 		if(msg_buffer[1] == 1) msg_buffer[2] = tmp;
	lds R24,_msg_buffer+1
	cpi R24,1
	brne L415
	.dbline 850
	mov R0,R16
	sts _msg_buffer+2,R0
L415:
	.dbline 851
; 		tmp = spi_transfer_8(msg_buffer[3]);
	lds R16,_msg_buffer+3
	rcall _spi_transfer_8
	std y+13,R16
	.dbline 852
; 		if(msg_buffer[1] == 2) msg_buffer[2] = tmp;
	lds R24,_msg_buffer+1
	cpi R24,2
	brne L420
	.dbline 852
	mov R0,R16
	sts _msg_buffer+2,R0
L420:
	.dbline 853
; 		tmp = spi_transfer_8(msg_buffer[4]);
	lds R16,_msg_buffer+4
	rcall _spi_transfer_8
	std y+13,R16
	.dbline 854
; 		if(msg_buffer[1] == 3) msg_buffer[2] = tmp;
	lds R24,_msg_buffer+1
	cpi R24,3
	brne L425
	.dbline 854
	mov R0,R16
	sts _msg_buffer+2,R0
L425:
	.dbline 855
; 		tmp = spi_transfer_8(msg_buffer[5]);
	lds R16,_msg_buffer+5
	rcall _spi_transfer_8
	std y+13,R16
	.dbline 856
; 		if(msg_buffer[1] == 4) msg_buffer[2] = tmp;
	lds R24,_msg_buffer+1
	cpi R24,4
	brne L430
	.dbline 856
	mov R0,R16
	sts _msg_buffer+2,R0
L430:
	.dbline 858
; 		
; 		num_bytes = 4;
	ldi R24,4
	ldi R25,0
	std y+11,R25
	std y+10,R24
	.dbline 859
; 		msg_buffer[0] = CMD_READ_OSCCAL_ISP;
	ldi R24,28
	sts _msg_buffer,R24
	.dbline 860
; 		msg_buffer[1] = STATUS_CMD_OK;		
	clr R2
	sts _msg_buffer+1,R2
	.dbline 861
; 		msg_buffer[3] = STATUS_CMD_OK;
	sts _msg_buffer+3,R2
	.dbline 862
; 	}
L412:
L389:
L365:
L357:
L333:
L325:
L315:
L248:
L234:
L155:
L141:
L138:
L106:
L99:
L80:
L47:
L41:
	.dbline 865
; 		
; 	//Transmission of the result
; 	if(num_bytes>0)
	ldd R0,y+10
	ldd R1,y+11
	tst R0
	brne X6
	tst R1
	breq L436
X6:
	.dbline 866
; 	{		
	.dbline 867
; 		interface_putc(MESSAGE_START);
	ldi R16,27
	rcall _interface_putc
	.dbline 868
; 		interface_putc(seq_num);
	ldd R16,y+24
	rcall _interface_putc
	.dbline 869
; 		interface_put16(num_bytes);
	ldd R16,y+10
	ldd R17,y+11
	rcall _interface_put16
	.dbline 870
; 		interface_putc(TOKEN);
	ldi R16,14
	rcall _interface_putc
	.dbline 871
; 		for(i=0;i<num_bytes;i++)
	clr R12
	clr R13
	rjmp L441
L438:
	.dbline 872
	.dbline 873
	ldi R24,<_msg_buffer
	ldi R25,>_msg_buffer
	movw R30,R12
	add R30,R24
	adc R31,R25
	ldd R16,z+0
	rcall _interface_putc
	.dbline 874
L439:
	.dbline 871
	movw R24,R12
	adiw R24,1
	movw R12,R24
L441:
	.dbline 871
	ldd R0,y+10
	ldd R1,y+11
	cp R12,R0
	cpc R13,R1
	brlo L438
	.dbline 875
	rcall _interface_send_check
	.dbline 876
L436:
	.dbline -2
L39:
	adiw R28,14
	rcall pop_gset5
	adiw R28,2
	.dbline 0 ; func end
	ret
	.dbsym r mode 14 c
	.dbsym r block_size 10 i
	.dbsym l start_address 6 l
	.dbsym l polling_address 2 l
	.dbsym l tmp 13 c
	.dbsym l cmd 12 c
	.dbsym l num_bytes 10 i
	.dbsym r i 12 i
	.dbsym l seq_num 24 c
	.dbend
	.dbfunc e chip_init _chip_init fV
	.even
_chip_init::
	.dbline -1
	.dbline 885
; 		{
; 			interface_putc(msg_buffer[i]);
; 		}		
; 		interface_send_check();
; 	}
; }
; 
; 
; /**
; 	Hardware initialization
; 	Timer
; 	ADC
; */
; void chip_init(void) {
	.dbline 887
; 
; 	DDRB=(1<<0) | (1<<1) | (1<<2);	//LED_RT, LED_GN
	ldi R24,7
	out 0x4,R24
	.dbline 890
; 
; 	//ADC
; 	ADMUX=0x60;					//Avcc=Aref, Left Adjusted (8Bit-Aufl鰏ung aus ADCH)
	ldi R24,96
	sts 124,R24
	.dbline 891
; 	ADCSRA = 0xC6;				//ADC Enable, Init, 125kHz (bei 8MHz Clock)
	ldi R24,198
	sts 122,R24
	.dbline 894
; 
; 	//Timer 1 (Systemint 1ms)
; 	TCCR1B=0x09;				//CTC-Mode /1
	ldi R24,9
	sts 129,R24
	.dbline 895
; 	OCR1A=3686;					/*3.686MHz / 3686 = 1kHz*/
	ldi R24,3686
	ldi R25,14
	sts 136+1,R25
	sts 136,R24
	.dbline 896
; 	TIMSK1 |=(1<<OCIE1A);			//enable OC-INT
	lds R24,111
	ori R24,2
	sts 111,R24
	.dbline -2
L442:
	.dbline 0 ; func end
	ret
	.dbend
	.area bss(ram, con, rel)
	.dbfile E:\ICCAVR\icc\stk500\avrasp\main.c
_address::
	.blkb 4
	.dbsym e address _address l
_prgmode::
	.blkb 1
	.dbsym e prgmode _prgmode c
_param_controller_init::
	.blkb 1
	.dbsym e param_controller_init _param_controller_init c
_reset_polarity::
	.blkb 1
	.dbsym e reset_polarity _reset_polarity c
_clock_speed::
	.blkb 1
	.dbsym e clock_speed _clock_speed c
_msg_buffer::
	.blkb 300
	.dbsym e msg_buffer _msg_buffer A[300:300]c
	.area data(ram, con, rel)
	.dbfile E:\ICCAVR\icc\stk500\avrasp\main.c
L45:
	.blkb 9
	.area idata
	.byte 'A,'V,'R,'I,'S,'P,95,50,0
	.area data(ram, con, rel)
	.dbfile E:\ICCAVR\icc\stk500\avrasp\main.c

⌨️ 快捷键说明

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