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

📄 sd16.asm

📁 FE42X单相防窃电电表DEMO(编译器 AQ430 AQ430 V2.0.6.5)
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	.long 0x10002
	.long 0x504e5f5f
	.long 0x534d5241
	.long 0x3
	.long 0x0
	.long 0x10002
	.long 0x41505f5f
	.long 0x784d52
	.long 0x0
	.long 0x0
	.long 0x10002
	.long 0x41505f5f
	.long 0x68734d52
	.long 0x0
	.long 0x0
	.long 0x10002
	.long 0x41505f5f
	.long 0x794d52
	.long 0x0
	.long 0x0
	.long 0x10002
	.long 0x307878
	.long 0x0
	.long 0xb0102
	.long 0x4
	.long 0x4ffff
	.long 0x317878
	.long 0x0
	.long 0xa0102
	.long 0x4
	.long 0x4ffff
	.long 0x327878
	.long 0x0
	.long 0x90102
	.long 0x4
	.long 0x4ffff
DBG180:
	.long 0x62622e
	.long 0x0
	.long DBG220
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0x1
	.long 0x0
	.long DBG262
	.long 0x0
	.long 0x79
	.long 0x0
	.long 0xe0102
	.long 0x4
	.long 0x11ffff
DBG262:
	.long 0x62622e
	.long 0x0
	.long DBG220
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0x1
	.long 0x0
	.long DBG263
	.long 0x0
	.long 0x6873
	.long 0x0
	.long 0xd0102
	.long 0x4
	.long 0x11ffff
DBG263:
	.long 0x62622e
	.long 0x0
	.long DBG220
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0x1
	.long 0x0
	.long DBG264
	.long 0x0
	.long 0x78
	.long 0x0
	.long 0xc0102
	.long 0x24
	.long 0x11ffff
	.long 0x62652e
	.long 0x0
	.long DBG226
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0x13
	.long 0x0
	.long 0x0
	.long 0x0
	.long 0x62652e
	.long 0x0
	.long DBG228
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0x15
	.long 0x0
	.long 0x0
	.long 0x0
DBG264:
	.long 0x62622e
	.long 0x0
	.long DBG228
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0x15
	.long 0x0
	.long DBG265
	.long 0x0
	.long 0x6873
	.long 0x0
	.long 0xd0102
	.long 0x4
	.long 0x11ffff
DBG265:
	.long 0x62622e
	.long 0x0
	.long DBG253
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0x1d
	.long 0x0
	.long DBG266
	.long 0x0
	.long 0x0
	.long DBG171
	.long 0x642be0
	.long 0x0
	.long 0x10002
	.long 0x62652e
	.long 0x0
	.long DBG254
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0x1d
	.long 0x0
	.long 0x0
	.long 0x0
DBG266:
	.long 0x62622e
	.long 0x0
	.long DBG255
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0x1d
	.long 0x0
	.long DBG267
	.long 0x0
	.long 0x0
	.long DBG171
	.long 0x642be0
	.long 0x0
	.long 0x10002
	.long 0x62652e
	.long 0x0
	.long DBG256
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0x1d
	.long 0x0
	.long 0x0
	.long 0x0
DBG267:
	.long 0x62622e
	.long 0x0
	.long DBG257
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0x1d
	.long 0x0
	.long DBG268
	.long 0x0
	.long 0x0
	.long DBG171
	.long 0x642be0
	.long 0x0
	.long 0x10002
	.long 0x62652e
	.long 0x0
	.long DBG258
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0x1d
	.long 0x0
	.long 0x0
	.long 0x0
DBG268:
	.long 0x62622e
	.long 0x0
	.long DBG259
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0x1d
	.long 0x0
	.long DBG269
	.long 0x0
	.long 0x0
	.long DBG171
	.long 0x642be0
	.long 0x0
	.long 0x10002
	.long 0x62652e
	.long 0x0
	.long DBG260
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0x1d
	.long 0x0
	.long 0x0
	.long 0x0
	.long 0x62652e
	.long 0x0
	.long DBG235
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0x1d
	.long 0x0
	.long 0x0
	.long 0x0
	.long 0x62652e
	.long 0x0
	.long DBG235
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0x1d
	.long 0x0
	.long 0x0
	.long 0x0
DBG269:
	.long 0x62622e
	.long 0x0
	.long DBG235
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0x1d
	.long 0x0
	.long DBG270
	.long 0x0
	.long 0x79
	.long 0x0
	.long 0x70102
	.long 0x4
	.long 0x11ffff
	.long 0x7a
	.long 0x0
	.long 0x200
	.long 0x5
	.long 0x204ffff
	.long 0x7a
	.long 0x0
	.long 0x80102
	.long 0x5
	.long 0x104ffff
	.long 0x7a
	.long 0x0
	.long 0xe0102
	.long 0x5
	.long 0x4ffff
	.long 0x62652e
	.long 0x0
	.long DBG252
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0x31
	.long 0x0
	.long 0x0
	.long 0x0
	.long 0x66652e
	.long 0x0
	.long DBG261
	.long 0x0
	.long 0x1650001
	.long 0x0
	.long 0x155
	.long 0x0
	.long 0x0
	.long 0x0
	.pseg SD16_code
DBG216:
	.dbgseg dbg_syms
	.long 0x5f766964
	.long 0x38346873
	.long DBG216
	.long 0x0
	.long 0xff0001
; }
; void log_parameters(void)
DBG215:
	.long 0x0
	.long DBG275
	.long _log_parameters
	.long 0x40
	.long 0x1020001
	.long DBG219
	.long DBG272-DBG273
	.long DBG274
	.long DBG271
	.long 0x0
	.pseg SD16_code
DBG273:
	.dbgseg dbg_syms
DBG219:
	.long 0x66622e
	.long 0x0
	.long DBG273
	.long 0x0
	.long 0x1650001
	.long 0x0
	.long 0x157
	.long 0x0
	.long DBG276
	.long 0x0
	.dbgseg dbg_line
DBG274:
	.long DBG215
	.long 0x0
	.long _log_parameters
	.long 0x1
	.long DBG278
	.long 0x2
	.long DBG279
	.long 0x6
	.long DBG280
	.long 0x7
	.long DBG281
	.long 0x8
	.long DBG282
	.long 0x9
	.long DBG283
	.long 0xa
	.long DBG284
	.long 0xb
	.long DBG285
	.long 0xc
	.long DBG286
	.long 0xd
	.long DBG287
	.long 0xe
	.long DBG288
	.long 0xf
	.long DBG289
	.long 0x10
	.long DBG290
	.long 0x11
	.long DBG291
	.long 0x12
	.long DBG292
	.long 0x13
	.long DBG293
	.long 0x14
	.long DBG294
	.long 0x15
	.long DBG295
	.long 0x16
	.long DBG296
	.long 0x17
	.long DBG297
	.long 0x18
	.long DBG298
	.long 0x19
	.long DBG299
	.long 0x1a
	.long DBG300
	.long 0x1b
	.long DBG301
	.long 0x1d
	.long DBG302
	.long 0x1f
	.pseg SD16_code
	.global _log_parameters
_log_parameters:
	push	r4
DBG279:
DBG278:
DBG277:
; ENTRY
; {
; 	if (phase->V_endstops <= 0)
	mov.b	#0x0,r13
	mov	&_phase,r12
	cmp.b	0x86(r12),r13
	jl	log_parameters_L1
DBG280:
; 		phase->status |= 0x0010 ;
	bis	#0x10,0x84(r12)
DBG281:
	jmp	log_parameters_L2
log_parameters_L1:
;     else
; 		phase->status &= ~ 0x0010 ;
DBG282:
	and	#0xffef,0x84(r12)
log_parameters_L2:
;     phase->V_endstops = 20 ;
DBG283:
	mov.b	#0x14,r4
	mov.b	r4,0x86(r12)
DBG284:
;     transfer48(phase->V_sq_accum_logged, phase->V_sq_accum);
	mov	r12,r13
	add	#0x14,r13
	add	#0x1a,r12
	call	#_transfer48
DBG285:
;     if (phase->current.I_endstops <= 0)
	mov.b	#0x0,r13
	mov	&_phase,r12
	cmp.b	0x4e(r12),r13
	jl	log_parameters_L3
DBG286:
;         phase->status |= 0x0020 ;
	bis	#0x20,0x84(r12)
DBG287:
	jmp	log_parameters_L4
log_parameters_L3:
;     else
;         phase->status &= ~ 0x0020 ;
DBG288:
	and	#0xffdf,0x84(r12)
log_parameters_L4:
;     phase->current.I_endstops = 20 ;
DBG289:
	mov.b	r4,0x4e(r12)
DBG290:
;     phase->current.sample_count_logged = phase->current.sample_count;
	mov	0x40(r12),0x42(r12)
DBG291:
;     transfer48(phase->current.I_sq_accum_logged, phase->current.I_sq_accum);
	mov	r12,r13
	add	#0x34,r13
	add	#0x3a,r12
	call	#_transfer48
DBG292:
;     if (phase->neutral.I_endstops <= 0)
	mov.b	#0x0,r13
	mov	&_phase,r12
	cmp.b	0x7e(r12),r13
	jl	log_parameters_L5
DBG293:
;         phase->status |= 0x0080 ;
	bis	#0x80,0x84(r12)
DBG294:
	jmp	log_parameters_L6
log_parameters_L5:
;     else
;         phase->status &= ~ 0x0080 ;
DBG295:
	and	#0xff7f,0x84(r12)
log_parameters_L6:
;     phase->neutral.I_endstops = 20 ;
DBG296:
	mov.b	r4,0x7e(r12)
DBG297:
;     phase->neutral.sample_count_logged = phase->neutral.sample_count;
	mov	0x70(r12),0x72(r12)
DBG298:
;     transfer48(phase->neutral.I_sq_accum_logged, phase->neutral.I_sq_accum);
	mov	r12,r13
	add	#0x64,r13
	add	#0x6a,r12
	call	#_transfer48
DBG299:
;     phase->sample_count_logged = phase->sample_count;
	mov	&_phase,r12
	mov	r12,r13
	add	#0x82,r13
	mov	0x80(r12),0(r13)
DBG300:
;     phase->sample_count = 0;
	mov	#0x0,0x80(r12)
DBG301:
;     phase->status |= 0x0008 ;
	bis	#0x8,0x84(r12)
DBG303:
DBG302:
; EXIT
; .temp3 at stkloc 0 (0x0) size 2
	pop	r4
	ret
	.dbgseg dbg_syms
	.long 0x0
	.long DBG29
	.long 0x2
	.long 0x0
	.long 0x10002
	.long 0x0
	.long DBG30
	.long 0x2
	.long 0x0
	.long 0x10002
	.long 0x504e5f5f
	.long 0x534d5241
	.long 0x0
	.long 0x0
	.long 0x10002
	.long 0x66652e
	.long 0x0
	.long DBG303
	.long 0x0
	.long 0x1650001
	.long 0x0
	.long 0x175
	.long 0x0
	.long 0x0
	.long 0x0
	.pseg SD16_code
DBG272:
	.dbgseg dbg_syms
	.long 0x0
	.long DBG275
	.long DBG272
	.long 0x0
	.long 0xff0001
; }
; int32_t current(void)
	.iseg SD16_idata
	.align 0x2
SD16_V2:
	.byte 0x0
	.dseg	SD16_data
	.align 0x2
SD16_V3:
SD16_V1:
	.bss 0x1
	.dbgseg dbg_syms
DBG271:
	.long 0x72727563
	.long 0x746e65
	.long _current
	.long 0x45
	.long 0x1020001
	.long DBG276
	.long DBG305-DBG306
	.long DBG307
	.long DBG304
	.long 0x0
	.pseg SD16_code
DBG306:
	.dbgseg dbg_syms
DBG276:
	.long 0x66622e
	.long 0x0
	.long DBG306
	.long 0x0
	.long 0x1650001
	.long 0x0
	.long 0x177
	.long 0x0
	.long DBG308
	.long 0x0
	.dbgseg dbg_line
DBG307:
	.long DBG271
	.long 0x0
	.long _current
	.long 0x1
	.long DBG310
	.long 0x2
	.long DBG311
	.long 0xa
	.long DBG312
	.long 0xb
	.long DBG313
	.long 0xc
	.long DBG314
	.long 0xd
	.long DBG315
	.long 0xe
	.long DBG316
	.long 0xf
	.long DBG317
	.long 0x10
	.long DBG318
	.long 0x11
	.long DBG319
	.long 0x12
	.long DBG320
	.long 0x13
	.long DBG321
	.long 0x14
	.long DBG322
	.long 0x15
	.long DBG323
	.long 0x16
	.long DBG324
	.long 0x17
	.long DBG325
	.long 0x18
	.long DBG326
	.long 0x19
	.long DBG327
	.long 0x1a
	.long DBG328
	.long 0x1b
	.long DBG329
	.long 0x1c
	.long DBG330
	.long 0x1d
	.long DBG331
	.long 0x1e
	.long DBG332
	.long 0x1f
	.long DBG333
	.long 0x20
	.long DBG334
	.long 0x21
	.long DBG335
	.long 0x23
	.long DBG336
	.long 0x24
	.long DBG337
	.long 0x26
	.long DBG338
	.long 0x27
	.long DBG339
	.long 0x28
	.long DBG340
	.long 0x29
	.pseg SD16_code
	.global _current
_current:
	push	r4
	push	r5
	push	r6
DBG311:
DBG310:
DBG309:
; ENTRY
; counttmp is SD16_V1 size 1
; x in reg  size 4
; y in reg  size 4
; {
; 	static char counttmp = 0;
; 	int32_t x;
; 	int32_t y;
;     if ((phase->status & 0x0080 ))
	mov	&_phase,r12
	bit	#0x80,0x84(r12)
	jeq	current_L1
DBG313:
DBG312:
; 	{
;         y = -1;
	mov	#0xffff,r5
	mov	#-0x1,r4
DBG315:
DBG314:
; 	}
	jmp	current_L2
current_L1:
; 	else
; 	{
DBG316:
;     	y = div48(phase->neutral.I_sq_accum_logged, phase->sample_count_logged);
DBG317:
	mov	0x82(r12),r13
	add	#0x6a,r12
	call	#_div48
DBG318:
;     	y = isqrt32(y);
	call	#_isqrt32
DBG319:
;     	y = (y >> 12) * emeter.ui_SD16_CurrentCorr1;
	mov	&_emeter+0x56,r15
	mov	#0x0,r14
	mov	#0xc,r4
current_LL2:
	rra	r12
	rrc	r13
	dec	r4
	jnz	current_LL2
current_LL3:
DBG341:
	call	#__smult32
DBG320:
DBG342:
;     	y >>= 14;
	mov	#0xe,r14
current_LL4:
	rra	r12
	rrc	r13
	dec	r14
	jnz	current_LL4
current_LL5:
;     	phase->neutral.I_rms = y;
DBG321:
	mov	&_phase,r14
	add	#0x52,r14
	mov	r13,0(r14)
	mov	r13,r5
	mov	r12,r4
DBG322:
current_L2:
;     }
;     if ((phase->status & 0x0020 ))
DBG323:
	mov	&_phase,r12
	bit	#0x20,0x84(r12)
	jeq	current_L3
DBG325:
DBG324:
; 	{
;         x = -1;
	mov	#0xffff,r13
	mov	#-0x1,r12
DBG327:
DBG326:
; 	}
	jmp	current_L4
current_L3:
; 	else
; 	{
DBG328:
; 		x = div48(phase->current.I_sq_accum_logged, phase->sample_count_logged);
DBG329:
	mov	0x82(r12),r13
	add	#0x3a,r12
	call	#_div48
DBG330:
; 		x = isqrt32(x);
	call	#_isqrt32
DBG331:
; 		x = (x >> 12) * emeter.ui_SD16_CurrentCorr2;
	mov	&_emeter+0x58,r15
	mov	#0x0,r14
	mov	#0xc,r6
current_LL6:
	rra	r12
	rrc	r13
	dec	r6
	jnz	current_LL6
current_LL7:
DBG343:
	call	#__smult32
DBG332:
DBG344:
; 		x >>= 14;
	mov	#0xe,r14
current_LL8:
	rra	r12
	rrc	r13
	dec	r14
	jnz	current_LL8
current_LL9:
; 		phase->current.I_rms = x;
DBG333:
	mov	&_phase,r14
	add	#0x22,r14
	mov	r13,0(r14)
DBG334:
current_L4:
; 	}
; 	if( ++counttmp >3)
DBG335:
	mov.b	#0x3,r14
	add.b	#0x1,&SD16_V1
	mov.b	&SD16_V1,r15
	cmp.b	r15,r14
	jge	current_L5
DBG336:
;    		_NOP();
	nop
DBG337:
current_L5:
;     if (y > x)
	mov	r13,r14
	mov	r12,r15
	sub	r5,r14
	subc	r4,r15
	jge	current_L6
DBG338:
;    		x = y;
	mov	r5,r13
	mov	r4,r12
DBG339:
current_L6:
;    	return  x;
DBG340:
; EXIT
; .temp4 at stkloc 0 (0x0) size 6
DBG345:
	pop	r6
	pop	r5
	pop	r4
	ret
	.dbgseg dbg_syms
	.long 0x0
	.long DBG29
	.long 0x6
	.long 0x0
	.long 0x10002
	.long 0x0

⌨️ 快捷键说明

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