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

📄 main.s

📁 用ICCAVR编辑通过的
💻 S
📖 第 1 页 / 共 2 页
字号:
	rjmp L35
X2:
	.dbline 122
; 		{
	.dbline 123
; 			intA += ( (float) MAX_A[0] * k / 375.0 );
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	ldi R16,<L30
	ldi R17,>L30
	rcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	lds R16,_MAX_A
	lds R17,_MAX_A+1
	lsr R17
	ror R16
	rcall int2fp
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	rcall empy32fs
	lds R16,_MAX_A
	lds R17,_MAX_A+1
	andi R16,1
	andi R17,0
	rcall int2fp
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	rcall add32fs
	ldi R16,<L30
	ldi R17,>L30
	rcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	movw R16,R10
	lsr R17
	ror R16
	rcall int2fp
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	rcall empy32fs
	movw R16,R10
	andi R16,1
	andi R17,0
	rcall int2fp
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	rcall add32fs
	rcall empy32fs
	ldi R16,<L39
	ldi R17,>L39
	rcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	rcall div32fs
	rcall add32f
	movw R30,R28
	std z+0,R16
	std z+1,R17
	std z+2,R18
	std z+3,R19
	.dbline 124
; 		}
	rjmp L34
L35:
	.dbline 125
; 		else if ( adc_data[1] < 136)
	lds R4,_adc_data+4+2
	lds R5,_adc_data+4+2+1
	lds R2,_adc_data+4
	lds R3,_adc_data+4+1
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	ldi R16,<L43
	ldi R17,>L43
	rcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	rcall cmp32f
	brlt X3
	rjmp L34
X3:
	.dbline 126
; 		{
	.dbline 127
; 			intA += ( (float) MAX_A[0] * k / 600.0 );
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	ldi R16,<L30
	ldi R17,>L30
	rcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	lds R16,_MAX_A
	lds R17,_MAX_A+1
	lsr R17
	ror R16
	rcall int2fp
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	rcall empy32fs
	lds R16,_MAX_A
	lds R17,_MAX_A+1
	andi R16,1
	andi R17,0
	rcall int2fp
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	rcall add32fs
	ldi R16,<L30
	ldi R17,>L30
	rcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	movw R16,R10
	lsr R17
	ror R16
	rcall int2fp
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	rcall empy32fs
	movw R16,R10
	andi R16,1
	andi R17,0
	rcall int2fp
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	rcall add32fs
	rcall empy32fs
	ldi R16,<L44
	ldi R17,>L44
	rcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	rcall div32fs
	rcall add32f
	movw R30,R28
	std z+0,R16
	std z+1,R17
	std z+2,R18
	std z+3,R19
	.dbline 128
; 		}
	.dbline 129
; 	}
	rjmp L34
L33:
	.dbline 131
; 	else
; 	{
	.dbline 132
; 		intA = 0.0;
	ldi R16,<L25
	ldi R17,>L25
	rcall lpm32
	movw R30,R28
	std z+0,R16
	std z+1,R17
	std z+2,R18
	std z+3,R19
	.dbline 133
; 	}	
L34:
	.dbline 134
; 	n = (int)intA;								
	movw R30,R28
	ldd R16,z+0
	ldd R17,z+1
	ldd R18,z+2
	ldd R19,z+3
	rcall fp2int
	movw R12,R16
	.dbline 135
; 	for ( i = 0; i < 4; i++ )
	clr R14
	clr R15
	rjmp L48
L45:
	.dbline 136
; 	{
	.dbline 137
; 		pch[i] = n % 10 ;
	ldi R18,10
	ldi R19,0
	movw R16,R12
	rcall mod16u
	mov R2,R16
	movw R30,R14
	ldd R0,y+22
	ldd R1,y+23
	add R30,R0
	adc R31,R1
	std z+0,R2
	.dbline 138
; 		n /= 10.0;
	ldi R16,<L30
	ldi R17,>L30
	rcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	movw R16,R12
	lsr R17
	ror R16
	rcall int2fp
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	rcall empy32fs
	movw R16,R12
	andi R16,1
	andi R17,0
	rcall int2fp
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	rcall add32fs
	ldi R16,<L51
	ldi R17,>L51
	rcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	rcall div32f
	movw R30,R28
	std z+8,R16
	std z+9,R17
	std z+10,R18
	std z+11,R19
	movw R30,R28
	ldd R2,z+8
	ldd R3,z+9
	ldd R4,z+10
	ldd R5,z+11
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	ldi R16,<L52
	ldi R17,>L52
	rcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	rcall cmp32f
	brlt L49
	movw R30,R28
	ldd R2,z+8
	ldd R3,z+9
	ldd R4,z+10
	ldd R5,z+11
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	ldi R16,<L52
	ldi R17,>L52
	rcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	rcall sub32f
	rcall fp2int
	movw R24,R16
	subi R24,0  ; offset = 32768
	sbci R25,128
	movw R10,R24
	rjmp L50
L49:
	movw R30,R28
	ldd R16,z+8
	ldd R17,z+9
	ldd R18,z+10
	ldd R19,z+11
	rcall fp2int
	movw R10,R16
L50:
	movw R12,R10
	.dbline 139
L46:
	.dbline 135
	movw R24,R14
	adiw R24,1
	movw R14,R24
L48:
	.dbline 135
	movw R24,R14
	cpi R24,4
	ldi R30,0
	cpc R25,R30
	brsh X4
	rjmp L45
X4:
	.dbline -2
L24:
	adiw R28,12
	rcall pop_gset5
	adiw R28,2
	.dbline 0 ; func end
	ret
	.dbsym r k 10 i
	.dbsym l temp 4 D
	.dbsym l intA 0 D
	.dbsym r n 12 i
	.dbsym r i 14 i
	.dbsym l pch 22 pc
	.dbend
	.dbfunc e SET_A _SET_A fV
;           intA -> R20,R21
;              i -> R22,R23
;            pch -> R10,R11
	.even
_SET_A::
	rcall push_gset3
	movw R10,R16
	.dbline -1
	.dbline 143
; 	}
; }
; 
; void SET_A( unsigned char* pch )
; {
	.dbline 145
; 	unsigned int intA,i;
; 	intA = MAX_A[0] ;
	lds R20,_MAX_A
	lds R21,_MAX_A+1
	.dbline 146
; 	for ( i = 0; i < 4; i++ )
	clr R22
	clr R23
	rjmp L57
L54:
	.dbline 147
	.dbline 148
	ldi R18,10
	ldi R19,0
	movw R16,R20
	rcall mod16u
	movw R30,R22
	add R30,R10
	adc R31,R11
	std z+0,R16
	.dbline 149
	ldi R18,10
	ldi R19,0
	movw R16,R20
	rcall div16u
	movw R20,R16
	.dbline 150
L55:
	.dbline 146
	subi R22,255  ; offset = 1
	sbci R23,255
L57:
	.dbline 146
	cpi R22,4
	ldi R30,0
	cpc R23,R30
	brlo L54
	.dbline 151
; 	{
; 		pch[i] = intA % 10;
; 		intA /= 10;
; 	}
; 	if ( pch[3] == 0 )
	movw R30,R10
	ldd R2,z+3
	tst R2
	brne L58
	.dbline 152
; 	{
	.dbline 153
; 		pch[3] = 0x0a;
	ldi R24,10
	movw R30,R10
	std z+3,R24
	.dbline 154
; 		if ( pch[2] == 0 )
	movw R30,R10
	ldd R2,z+2
	tst R2
	brne L60
	.dbline 155
; 		{
	.dbline 156
; 			pch[2] = 0x0a;
	movw R30,R10
	std z+2,R24
	.dbline 157
; 			if ( pch[1] == 0 )
	movw R30,R10
	ldd R2,z+1
	tst R2
	brne L62
	.dbline 158
; 			{
	.dbline 159
; 				pch[1] = 0x0a;
	movw R30,R10
	std z+1,R24
	.dbline 160
; 			}
L62:
	.dbline 161
; 		}
L60:
	.dbline 162
L58:
	.dbline -2
L53:
	rcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r intA 20 i
	.dbsym r i 22 i
	.dbsym r pch 10 pc
	.dbend
	.dbfunc e CHECK_EDATA_A _CHECK_EDATA_A fV
	.even
_CHECK_EDATA_A::
	sbiw R28,2
	.dbline -1
	.dbline 166
; 	}
; }
; 
; void CHECK_EDATA_A(void)
; {
	.dbline 167
; 	if ( MAX_A[1] == MAX_A[2] )
	lds R2,_MAX_A+4
	lds R3,_MAX_A+4+1
	lds R4,_MAX_A+2
	lds R5,_MAX_A+2+1
	cp R4,R2
	cpc R5,R3
	brne L65
	.dbline 168
; 	{
	.dbline 169
; 		if ( MAX_A[0] != MAX_A[1] )
	lds R2,_MAX_A+2
	lds R3,_MAX_A+2+1
	lds R4,_MAX_A
	lds R5,_MAX_A+1
	cp R4,R2
	cpc R5,R3
	breq L66
	.dbline 170
; 		{
	.dbline 171
; 			MAX_A[0] = MAX_A[1];
	lds R2,_MAX_A+2
	lds R3,_MAX_A+2+1
	sts _MAX_A+1,R3
	sts _MAX_A,R2
	.dbline 172
; 			eeprom_busy_wait();
	rcall _eeprom_busy_wait
	.dbline 173
; 			cli();
	rcall _cli
	.dbline 174
; 			eeprom_write_block((char*)MAX_A,(char*)0x20,6 );
	ldi R24,6
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,32
	ldi R19,0
	ldi R16,<_MAX_A
	ldi R17,>_MAX_A
	rcall _eeprom_write_block
	.dbline 175
; 			sei();
	rcall _sei
	.dbline 176
; 		}
	.dbline 177
; 	}
	rjmp L66
L65:
	.dbline 179
	.dbline 180
	lds R2,_MAX_A
	lds R3,_MAX_A+1
	sts _MAX_A+2+1,R3
	sts _MAX_A+2,R2
	sts _MAX_A+4+1,R3
	sts _MAX_A+4,R2
	.dbline 181
	rcall _eeprom_busy_wait
	.dbline 182
	rcall _cli
	.dbline 183
	ldi R24,6
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,32
	ldi R19,0
	ldi R16,<_MAX_A
	ldi R17,>_MAX_A
	rcall _eeprom_write_block
	.dbline 184
	rcall _sei
	.dbline 185
L66:
	.dbline -2
L64:
	adiw R28,2
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e SIGNAL _SIGNAL fI
;        SIG_ADC -> R16,R17
	.even
_SIGNAL::
	.dbline -1
	.dbline 190
; 	else
; 	{
; 		MAX_A[2] = MAX_A[1] = MAX_A[0];
; 		eeprom_busy_wait();
; 		cli();
; 		eeprom_write_block((char*)MAX_A,(char*)0x20,6 );
; 		sei();
; 	}
; }
; 
; //#pragma interrupt_handler adc_isr:15
; SIGNAL(SIG_ADC)
; {
	.dbline 191
; 	adc_data_temp = ADC & 0x3FF;
	in R24,0x4
	in R25,0x5
	andi R25,3
	sts _adc_data_temp+1,R25
	sts _adc_data_temp,R24
	.dbline -2
L75:
	.dbline 0 ; func end
	ret
	.dbsym r SIG_ADC 16 I
	.dbend
	.area bss(ram, con, rel)
	.dbfile F:\网络下载\AVR\完整应用\电流电压表\SOF\main.c
_UP_DOWN_POWER::
	.blkb 1
	.dbfile F:\网络下载\AVR\完整应用\电流电压表\SOF/init.h
	.dbsym e UP_DOWN_POWER _UP_DOWN_POWER c
_KEY_AUTO_MAN_STATE::
	.blkb 1
	.dbsym e KEY_AUTO_MAN_STATE _KEY_AUTO_MAN_STATE c
_KEY_CC_CV_STATE::
	.blkb 1
	.dbsym e KEY_CC_CV_STATE _KEY_CC_CV_STATE c
_POWER_STATE::
	.blkb 1
	.dbsym e POWER_STATE _POWER_STATE c
_KEY_A_V_STATE::
	.blkb 1
	.dbsym e KEY_A_V_STATE _KEY_A_V_STATE c
_KEY_INPUT::
	.blkb 1
	.dbsym e KEY_INPUT _KEY_INPUT c
_KEY_TEMP::
	.blkb 1
	.dbsym e KEY_TEMP _KEY_TEMP c
_SET_STATU::
	.blkb 1
	.dbsym e SET_STATU _SET_STATU c
_TIMER_EN::
	.blkb 1
	.dbsym e TIMER_EN _TIMER_EN c
_TIMER_NUM::
	.blkb 2
	.dbsym e TIMER_NUM _TIMER_NUM i
_adc_data_temp::
	.blkb 2
	.dbsym e adc_data_temp _adc_data_temp i
	.area lit(rom, con, rel)
L52:
	.word 0x0,0x4700
L51:
	.word 0x0,0x4120
L44:
	.word 0x0,0x4416
L43:
	.word 0x0,0x4308
L39:
	.word 0x8000,0x43bb
L38:
	.word 0x0,0x4204
L32:
	.word 0x0,0x42c8
L31:
	.word 0xc28f,0x40fd
L30:
	.word 0x0,0x4000
L29:
	.word 0x0,0x4000
L25:
	.word 0x0,0x0
L17:
	.word 0x0,0x4480
L16:
	.word 0x0,0x44fa

⌨️ 快捷键说明

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