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

📄 test_isp.s

📁 AVR单片机开发中
💻 S
字号:
	.module test_isp.c
	.area text(rom, con, rel)
	.dbfile H:\m128_test\test_isp.c
	.dbfunc e spi_tranByte _spi_tranByte fc
;              p -> R20,R21
;           addr -> R18,R19
;          cData -> R16
	.even
_spi_tranByte::
	xcall push_gset1
	.dbline -1
	.dbline 26
; //ICC-AVR application builder : 2005-3-21 10:06:01
; // Target : M128
; // Crystal: 16.000Mhz
; 
; #include <iom128v.h>
; #include <macros.h>
; #include <stdio.h>
; #define CH1    1
; #define CH2    2
; #define CH3    4
; #define  READY 0XAA
; #define  STOP  0X00
; #define  TEST  0x1A
; 
; extern long len;
; //SPI initialize
; // clock rate: 2000000hz
; 
; 
;   
;   
; 
; 
; 
; unsigned char spi_tranByte (unsigned char cData, int addr)
; {     
	.dbline 28
;       
; 	  unsigned char *p = (unsigned char *) addr;
	movw R20,R18
	.dbline 30
;  
;       *p = 0x00;
	clr R2
	movw R30,R20
	std z+0,R2
	.dbline 31
;       SPDR = cData;
	out 0xf,R16
L2:
	.dbline 32
L3:
	.dbline 32
; 	  while (!(SPSR&0x80));
	sbis 0xe,7
	rjmp L2
	.dbline 33
; 	  return SPDR;
	in R16,0xf
	.dbline -2
L1:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r p 20 pc
	.dbsym r addr 18 I
	.dbsym r cData 16 c
	.dbend
	.dbfunc e spi_cnt _spi_cnt fL
;           temp -> y+0
;            buf -> R10
;            cha -> R12
	.even
_spi_cnt::
	xcall push_gset4
	mov R12,R16
	sbiw R28,4
	.dbline -1
	.dbline 40
; 
; }
; 
; 	   
; 	   
; long spi_cnt(unsigned char cha)
; {  
	.dbline 41
;       long temp=0;
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	std z+0,R20
	std z+1,R21
	std z+2,R22
	std z+3,R23
	.dbline 42
;       unsigned char buf=0;
	clr R10
	.dbline 43
; 	  temp=0;
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	std z+0,R20
	std z+1,R21
	std z+2,R22
	std z+3,R23
	.dbline 44
; 	  switch (cha)
	clr R13
	movw R24,R12
	cpi R24,1
	ldi R30,0
	cpc R25,R30
	breq L9
	cpi R24,2
	ldi R30,0
	cpc R25,R30
	brne X1
	xjmp L13
X1:
	cpi R24,4
	ldi R30,0
	cpc R25,R30
	brne X2
	xjmp L17
X2:
	xjmp L6
X0:
	.dbline 45
; 	  {
L9:
L10:
	.dbline 47
; 	         case CH1:     do
; 			               {
	.dbline 48
; 			               buf=spi_tranByte (CH1,0X9000);
	ldi R18,36864
	ldi R19,144
	ldi R16,1
	xcall _spi_tranByte
	mov R10,R16
	.dbline 49
; 						   asm ("nop");
	nop
	.dbline 50
; 			               asm ("nop");  
	nop
	.dbline 51
; 	                       asm ("nop");
	nop
	.dbline 52
; 						   }
L11:
	.dbline 53
; 						   while(buf!=READY);
	mov R24,R10
	cpi R24,170
	brne L10
	.dbline 54
; 						   delay_nus(100);
	ldi R16,100
	ldi R17,0
	xcall _delay_nus
	.dbline 55
; 						   buf=spi_tranByte (CH1,0x9000);
	ldi R18,36864
	ldi R19,144
	ldi R16,1
	xcall _spi_tranByte
	mov R10,R16
	.dbline 56
; 						   temp=buf;
	mov R2,R10
	clr R3
	clr R4
	clr R5
	movw R30,R28
	std z+0,R2
	std z+1,R3
	std z+2,R4
	std z+3,R5
	.dbline 57
; 						   temp=temp*256;
	ldi R20,0
	ldi R21,1
	ldi R22,0
	ldi R23,0
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	movw R16,R20
	movw R18,R22
	xcall empy32s
	movw R30,R28
	std z+0,R16
	std z+1,R17
	std z+2,R18
	std z+3,R19
	.dbline 59
; 						  
; 						   buf=spi_tranByte (CH1,0x9000);
	ldi R18,36864
	ldi R19,144
	ldi R16,1
	xcall _spi_tranByte
	mov R10,R16
	.dbline 60
; 						   temp=temp+buf;
	mov R2,R10
	clr R3
	clr R4
	clr R5
	movw R30,R28
	ldd R6,z+0
	ldd R7,z+1
	ldd R8,z+2
	ldd R9,z+3
	add R6,R2
	adc R7,R3
	adc R8,R4
	adc R9,R5
	std z+0,R6
	std z+1,R7
	std z+2,R8
	std z+3,R9
	.dbline 61
; 						   temp=temp*256;
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	ldi R20,0
	ldi R21,1
	ldi R22,0
	ldi R23,0
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	movw R16,R20
	movw R18,R22
	xcall empy32s
	movw R30,R28
	std z+0,R16
	std z+1,R17
	std z+2,R18
	std z+3,R19
	.dbline 62
; 						   buf=spi_tranByte (CH1,0x9000);
	ldi R18,36864
	ldi R19,144
	ldi R16,1
	xcall _spi_tranByte
	mov R10,R16
	.dbline 63
; 						   temp=temp+buf;
	mov R2,R10
	clr R3
	clr R4
	clr R5
	movw R30,R28
	ldd R6,z+0
	ldd R7,z+1
	ldd R8,z+2
	ldd R9,z+3
	add R6,R2
	adc R7,R3
	adc R8,R4
	adc R9,R5
	std z+0,R6
	std z+1,R7
	std z+2,R8
	std z+3,R9
	.dbline 64
; 						   temp*256;
	.dbline 65
; 						   buf=spi_tranByte (CH1,0x9000);
	ldi R18,36864
	ldi R19,144
	ldi R16,1
	xcall _spi_tranByte
	mov R10,R16
	.dbline 66
; 						   temp=temp+buf;
	mov R2,R10
	clr R3
	clr R4
	clr R5
	movw R30,R28
	ldd R6,z+0
	ldd R7,z+1
	ldd R8,z+2
	ldd R9,z+3
	add R6,R2
	adc R7,R3
	adc R8,R4
	adc R9,R5
	std z+0,R6
	std z+1,R7
	std z+2,R8
	std z+3,R9
	.dbline 67
; 						   break;
	xjmp L7
L13:
L14:
	.dbline 70
; 					  
; 			 case CH2: 	  do
; 			               {
	.dbline 71
; 			               buf=spi_tranByte (CH2,0X9000);
	ldi R18,36864
	ldi R19,144
	ldi R16,2
	xcall _spi_tranByte
	mov R10,R16
	.dbline 72
; 						   asm ("nop");
	nop
	.dbline 73
; 			               asm ("nop");  
	nop
	.dbline 74
; 	                       asm ("nop");
	nop
	.dbline 75
; 						   }
L15:
	.dbline 76
; 						   while(buf!=READY);
	mov R24,R10
	cpi R24,170
	brne L14
	.dbline 77
; 						   delay_nus(100);
	ldi R16,100
	ldi R17,0
	xcall _delay_nus
	.dbline 78
; 			 	  		   buf=spi_tranByte (CH2,0x9000);
	ldi R18,36864
	ldi R19,144
	ldi R16,2
	xcall _spi_tranByte
	mov R10,R16
	.dbline 79
; 						   temp+=buf;
	mov R2,R10
	clr R3
	clr R4
	clr R5
	movw R30,R28
	ldd R6,z+0
	ldd R7,z+1
	ldd R8,z+2
	ldd R9,z+3
	add R6,R2
	adc R7,R3
	adc R8,R4
	adc R9,R5
	std z+0,R6
	std z+1,R7
	std z+2,R8
	std z+3,R9
	.dbline 80
; 						   temp=temp*256;
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	ldi R20,0
	ldi R21,1
	ldi R22,0
	ldi R23,0
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	movw R16,R20
	movw R18,R22
	xcall empy32s
	movw R30,R28
	std z+0,R16
	std z+1,R17
	std z+2,R18
	std z+3,R19
	.dbline 81
; 						   buf=spi_tranByte (CH2,0x9000);
	ldi R18,36864
	ldi R19,144
	ldi R16,2
	xcall _spi_tranByte
	mov R10,R16
	.dbline 82
; 						   temp+=buf;
	mov R2,R10
	clr R3
	clr R4
	clr R5
	movw R30,R28
	ldd R6,z+0
	ldd R7,z+1
	ldd R8,z+2
	ldd R9,z+3
	add R6,R2
	adc R7,R3
	adc R8,R4
	adc R9,R5
	std z+0,R6
	std z+1,R7
	std z+2,R8
	std z+3,R9
	.dbline 83
; 						   temp=temp*256;
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	ldi R20,0
	ldi R21,1
	ldi R22,0
	ldi R23,0
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	movw R16,R20
	movw R18,R22
	xcall empy32s
	movw R30,R28
	std z+0,R16
	std z+1,R17
	std z+2,R18
	std z+3,R19
	.dbline 84
; 						   buf=spi_tranByte (CH2,0x9000);
	ldi R18,36864
	ldi R19,144
	ldi R16,2
	xcall _spi_tranByte
	mov R10,R16
	.dbline 85
; 						   temp+=buf;
	mov R2,R10
	clr R3
	clr R4
	clr R5
	movw R30,R28
	ldd R6,z+0
	ldd R7,z+1
	ldd R8,z+2
	ldd R9,z+3
	add R6,R2
	adc R7,R3
	adc R8,R4
	adc R9,R5
	std z+0,R6
	std z+1,R7
	std z+2,R8
	std z+3,R9
	.dbline 86
; 						   temp=temp*256;
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	ldi R20,0
	ldi R21,1
	ldi R22,0
	ldi R23,0
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	movw R16,R20
	movw R18,R22
	xcall empy32s
	movw R30,R28
	std z+0,R16
	std z+1,R17
	std z+2,R18
	std z+3,R19
	.dbline 87
; 						   buf=spi_tranByte (CH2,0x9000);
	ldi R18,36864
	ldi R19,144
	ldi R16,2
	xcall _spi_tranByte
	mov R10,R16
	.dbline 88
; 						   temp+=buf;
	mov R2,R10
	clr R3
	clr R4
	clr R5
	movw R30,R28
	ldd R6,z+0
	ldd R7,z+1
	ldd R8,z+2
	ldd R9,z+3
	add R6,R2
	adc R7,R3
	adc R8,R4
	adc R9,R5
	std z+0,R6
	std z+1,R7
	std z+2,R8
	std z+3,R9
	.dbline 89
; 						   break;
	xjmp L7
L17:
L18:
	.dbline 92
; 			
; 			 case CH3: 	  do
; 			               {
	.dbline 93
; 			               buf=spi_tranByte (CH3,0X9000);
	ldi R18,36864
	ldi R19,144
	ldi R16,4
	xcall _spi_tranByte
	mov R10,R16
	.dbline 94
; 						   asm ("nop");
	nop
	.dbline 95
; 			               asm ("nop");  
	nop
	.dbline 96
; 	                       asm ("nop");
	nop
	.dbline 97
; 						   }
L19:
	.dbline 98
; 						   while(buf!=READY);
	mov R24,R10
	cpi R24,170
	brne L18
	.dbline 99
; 						   delay_nus(100);
	ldi R16,100
	ldi R17,0
	xcall _delay_nus
	.dbline 100
; 			 	  		   buf=spi_tranByte (CH3,0x9000);
	ldi R18,36864
	ldi R19,144
	ldi R16,4
	xcall _spi_tranByte
	mov R10,R16
	.dbline 101
; 						   temp+=buf;
	mov R2,R10
	clr R3
	clr R4
	clr R5
	movw R30,R28
	ldd R6,z+0
	ldd R7,z+1
	ldd R8,z+2
	ldd R9,z+3
	add R6,R2
	adc R7,R3
	adc R8,R4
	adc R9,R5
	std z+0,R6
	std z+1,R7
	std z+2,R8
	std z+3,R9
	.dbline 102
; 						   temp=temp*256;
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	ldi R20,0
	ldi R21,1
	ldi R22,0
	ldi R23,0
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	movw R16,R20
	movw R18,R22
	xcall empy32s
	movw R30,R28
	std z+0,R16
	std z+1,R17
	std z+2,R18
	std z+3,R19
	.dbline 103
; 						   buf=spi_tranByte (CH3,0x9000);
	ldi R18,36864
	ldi R19,144
	ldi R16,4
	xcall _spi_tranByte
	mov R10,R16
	.dbline 104
; 						   temp+=buf;
	mov R2,R10
	clr R3
	clr R4
	clr R5
	movw R30,R28
	ldd R6,z+0
	ldd R7,z+1
	ldd R8,z+2
	ldd R9,z+3
	add R6,R2
	adc R7,R3
	adc R8,R4
	adc R9,R5
	std z+0,R6
	std z+1,R7
	std z+2,R8
	std z+3,R9
	.dbline 105
; 						   temp=temp*256;
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	ldi R20,0
	ldi R21,1
	ldi R22,0
	ldi R23,0
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	movw R16,R20
	movw R18,R22
	xcall empy32s
	movw R30,R28
	std z+0,R16
	std z+1,R17
	std z+2,R18
	std z+3,R19
	.dbline 106
; 						   buf=spi_tranByte (CH3,0x9000);
	ldi R18,36864
	ldi R19,144
	ldi R16,4
	xcall _spi_tranByte
	mov R10,R16
	.dbline 107
; 						   temp+=buf;
	mov R2,R10
	clr R3
	clr R4
	clr R5
	movw R30,R28
	ldd R6,z+0
	ldd R7,z+1
	ldd R8,z+2
	ldd R9,z+3
	add R6,R2
	adc R7,R3
	adc R8,R4
	adc R9,R5
	std z+0,R6
	std z+1,R7
	std z+2,R8
	std z+3,R9
	.dbline 108
; 						   temp=temp*256;
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	ldi R20,0
	ldi R21,1
	ldi R22,0
	ldi R23,0
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	movw R16,R20
	movw R18,R22
	xcall empy32s
	movw R30,R28
	std z+0,R16
	std z+1,R17
	std z+2,R18
	std z+3,R19
	.dbline 109
; 						   buf=spi_tranByte (CH3,0x9000);
	ldi R18,36864
	ldi R19,144
	ldi R16,4
	xcall _spi_tranByte
	mov R10,R16
	.dbline 110
; 						   temp+=buf;
	mov R2,R10
	clr R3
	clr R4
	clr R5
	movw R30,R28
	ldd R6,z+0
	ldd R7,z+1
	ldd R8,z+2
	ldd R9,z+3
	add R6,R2
	adc R7,R3
	adc R8,R4
	adc R9,R5
	std z+0,R6
	std z+1,R7
	std z+2,R8
	std z+3,R9
	.dbline 111
; 						   break;
L6:
L7:
	.dbline 116
; 						  
; 
; 			
; 	  }
; 	  len=temp;
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	sts _len+1,R3
	sts _len,R2
	sts _len+2+1,R5
	sts _len+2,R4
	.dbline 118
; 	 
; 	  return  temp;
	ldd R16,z+0
	ldd R17,z+1
	ldd R18,z+2
	ldd R19,z+3
	.dbline -2
L5:
	adiw R28,4
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym l temp 0 L
	.dbsym r buf 10 c
	.dbsym r cha 12 c
	.dbend
	.dbfunc e port_init _port_init fV
	.even
_port_init::
	.dbline -1
	.dbline 123
; }
; 
; 
; void port_init(void)
; {
	.dbline 124
;  DDRB  = 0x07;
	ldi R24,7
	out 0x17,R24
	.dbline 125
;  MCUCR |= 0X80;
	in R24,0x35
	ori R24,128
	out 0x35,R24
	.dbline 126
;  XMCRA = 0X00;
	clr R2
	sts 109,R2
	.dbline 127
;  XMCRB = 0X80;
	ldi R24,128
	sts 108,R24
	.dbline -2
	.dbline 129
;  
; }
L21:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e spi_init _spi_init fV
	.even
_spi_init::
	.dbline -1
	.dbline 137
; //SPI initialize
; // clock rate: 4000000hz
; 
; 
; 
; 
; void spi_init(void)
; {
	.dbline 138
;  SPCR = 0x50;    //setup SPI
	ldi R24,80
	out 0xd,R24
	.dbline 139
;  SPSR = 0x00;    //setup SPI
	clr R2
	out 0xe,R2
	.dbline -2
	.dbline 140
; }
L22:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e init_isp_devices _init_isp_devices fV
	.even
_init_isp_devices::
	.dbline -1
	.dbline 144
; 
; 
; void init_isp_devices(void)
; {
	.dbline 146
;  
;  port_init();
	xcall _port_init
	.dbline 147
;  spi_init();
	.dbline -2
	.dbline 149
;  
; }
L23:
	.dbline 0 ; func end
	xjmp _spi_init
	.dbend

⌨️ 快捷键说明

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