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

📄 lcd.asm

📁 FE42X单相防窃电电表DEMO(编译器 AQ430 AQ430 V2.0.6.5)
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	.long 0x0
	.long 0x9
	.long 0x0
	.long 0x0
	.long 0x0
DBG46:
	.long 0x62622e
	.long 0x0
	.long DBG34
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0x9
	.long 0x0
	.long DBG48
	.long 0x0
	.long 0x756c6176
	.long 0x65
	.long 0xf0102
	.long 0xe
	.long 0x11ffff
	.long 0x69
	.long 0x0
	.long 0xe0102
	.long 0xc
	.long 0x4ffff
	.long 0x44434c
	.long 0x0
	.long 0x40102
	.long 0x22
	.long 0x4ffff
DBG48:
	.long 0x62622e
	.long 0x0
	.long DBG39
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0xa
	.long 0x0
	.long DBG49
	.long 0x0
	.long 0x0
	.long DBG47
	.long 0x0
	.long 0x0
	.long 0x10002
	.long 0x62652e
	.long 0x0
	.long DBG40
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0xa
	.long 0x0
	.long 0x0
	.long 0x0
	.long 0x62652e
	.long 0x0
	.long DBG36
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0xb
	.long 0x0
	.long 0x0
	.long 0x0
	.long 0x66652e
	.long 0x0
	.long DBG41
	.long 0x0
	.long 0x1650001
	.long 0x0
	.long 0x41
	.long 0x0
	.long 0x0
	.long 0x0
	.pseg lcd_code
DBG24:
	.dbgseg dbg_syms
	.long 0x70736964
	.long 0x79616c
	.long DBG24
	.long 0x0
	.long 0xff0001
; } 
; uint8 bcd[5];
; void LCDchar(uint8 ch, int16 pos)
DBG23:
	.long 0x6344434c
	.long 0x726168
	.long _LCDchar
	.long 0x40
	.long 0x1020001
	.long DBG27
	.long DBG51-DBG52
	.long DBG53
	.long DBG50
	.long 0x0
	.pseg lcd_code
DBG52:
	.dbgseg dbg_syms
DBG27:
	.long 0x66622e
	.long 0x0
	.long DBG52
	.long 0x0
	.long 0x1650001
	.long 0x0
	.long 0x4b
	.long 0x0
	.long DBG54
	.long 0x0
	.dbgseg dbg_line
DBG53:
	.long DBG23
	.long 0x0
	.long _LCDchar
	.long 0x1
	.long DBG56
	.long 0x2
	.long DBG57
	.long 0x3
	.long DBG58
	.long 0x4
	.pseg lcd_code
	.global _LCDchar
_LCDchar:
; ENTRY
DBG55:
; ch at argloc 0 (0x0) in reg  size 1
; pos at argloc 0 (0x0) in reg  size 2
; {
DBG56:
; 	((char*) (0x0091) ) [pos] = ch;
DBG57:
	mov.b	r12,0x91(r13)
DBG59:
DBG58:
; EXIT
	ret
	.dbgseg dbg_syms
	.long 0x0
	.long DBG20
	.long 0x0
	.long 0x0
	.long 0x10002
	.long 0x0
	.long DBG21
	.long 0x2
	.long 0x0
	.long 0x10002
	.long 0x504e5f5f
	.long 0x534d5241
	.long 0x2
	.long 0x0
	.long 0x10002
	.long 0x41505f5f
	.long 0x68634d52
	.long 0x0
	.long 0x0
	.long 0x10002
	.long 0x0
	.long DBG60
	.long 0x0
	.long 0x0
	.long 0x10002
	.long 0x6863
	.long 0x0
	.long 0xc0102
	.long 0xc
	.long 0x11ffff
	.long 0x736f70
	.long 0x0
	.long 0xd0102
	.long 0x4
	.long 0x11ffff
	.long 0x66652e
	.long 0x0
	.long DBG59
	.long 0x0
	.long 0x1650001
	.long 0x0
	.long 0x4e
	.long 0x0
	.long 0x0
	.long 0x0
	.pseg lcd_code
DBG51:
	.dbgseg dbg_syms
	.long 0x6344434c
	.long 0x726168
	.long DBG51
	.long 0x0
	.long 0xff0001
; }
; void LCDmodify_char(uint8 ch, int16 pos, int16 on)
DBG50:
	.long 0x0
	.long DBG65
	.long _LCDmodify_char
	.long 0x40
	.long 0x1020001
	.long DBG54
	.long DBG62-DBG63
	.long DBG64
	.long DBG61
	.long 0x0
	.pseg lcd_code
DBG63:
	.dbgseg dbg_syms
DBG54:
	.long 0x66622e
	.long 0x0
	.long DBG63
	.long 0x0
	.long 0x1650001
	.long 0x0
	.long 0x55
	.long 0x0
	.long DBG66
	.long 0x0
	.dbgseg dbg_line
DBG64:
	.long DBG50
	.long 0x0
	.long _LCDmodify_char
	.long 0x1
	.long DBG68
	.long 0x2
	.long DBG69
	.long 0x3
	.long DBG70
	.long 0x4
	.long DBG71
	.long 0x5
	.long DBG72
	.long 0x6
	.long DBG73
	.long 0x7
	.pseg lcd_code
	.global _LCDmodify_char
_LCDmodify_char:
; ENTRY
DBG67:
; ch at argloc 0 (0x0) in reg  size 1
; pos at argloc 0 (0x0) in reg  size 2
; on at argloc 0 (0x0) in reg  size 2
; {
DBG68:
; 	if (on)
DBG69:
	cmp	#0x0,r14
	jeq	LCDmodify_char_L1
DBG70:
; 		((char*) (0x0091) ) [pos] |= ch;
	bis.b	r12,0x91(r13)
DBG71:
	jmp	LCDmodify_char_LL2
LCDmodify_char_L1:
; 	else
; 		((char*) (0x0091) ) [pos] &= ~ch;
DBG72:
	bic.b	r12,0x91(r13)
LCDmodify_char_L2:
DBG73:
LCDmodify_char_LL2:
; EXIT
DBG74:
	ret
	.dbgseg dbg_syms
	.long 0x0
	.long DBG20
	.long 0x0
	.long 0x0
	.long 0x10002
	.long 0x0
	.long DBG21
	.long 0x2
	.long 0x0
	.long 0x10002
	.long 0x504e5f5f
	.long 0x534d5241
	.long 0x3
	.long 0x0
	.long 0x10002
	.long 0x41505f5f
	.long 0x68634d52
	.long 0x0
	.long 0x0
	.long 0x10002
	.long 0x0
	.long DBG60
	.long 0x0
	.long 0x0
	.long 0x10002
	.long 0x41505f5f
	.long 0x6e6f4d52
	.long 0x0
	.long 0x0
	.long 0x10002
	.long 0x6863
	.long 0x0
	.long 0xc0102
	.long 0xc
	.long 0x11ffff
	.long 0x736f70
	.long 0x0
	.long 0xd0102
	.long 0x4
	.long 0x11ffff
	.long 0x6e6f
	.long 0x0
	.long 0xe0102
	.long 0x4
	.long 0x11ffff
	.long 0x66652e
	.long 0x0
	.long DBG74
	.long 0x0
	.long 0x1650001
	.long 0x0
	.long 0x5b
	.long 0x0
	.long 0x0
	.long 0x0
	.pseg lcd_code
DBG62:
	.dbgseg dbg_syms
	.long 0x0
	.long DBG65
	.long DBG62
	.long 0x0
	.long 0xff0001
; }
; void LCDicon(int16 id, int16 on)
DBG61:
	.long 0x6944434c
	.long 0x6e6f63
	.long _LCDicon
	.long 0x40
	.long 0x1020001
	.long DBG66
	.long DBG76-DBG77
	.long DBG78
	.long DBG75
	.long 0x0
	.pseg lcd_code
DBG77:
	.dbgseg dbg_syms
DBG66:
	.long 0x66622e
	.long 0x0
	.long DBG77
	.long 0x0
	.long 0x1650001
	.long 0x0
	.long 0x62
	.long 0x0
	.long DBG79
	.long 0x0
	.dbgseg dbg_line
DBG78:
	.long DBG61
	.long 0x0
	.long _LCDicon
	.long 0x1
	.long DBG81
	.long 0x2
	.long DBG82
	.long 0x3
	.long DBG83
	.long 0x4
	.pseg lcd_code
	.global _LCDicon
_LCDicon:
; ENTRY
DBG80:
; id at argloc 0 (0x0) in reg  size 2
; on at argloc 0 (0x0) in reg  size 2
; {
DBG81:
; 	LCDmodify_char( 0x80 , id, on);
DBG82:
	mov	r13,r14
	mov	r12,r13
	mov.b	#0x80,r12
	call	#_LCDmodify_char
DBG84:
DBG83:
; EXIT
	ret
	.dbgseg dbg_syms
	.long 0x0
	.long DBG20
	.long 0x0
	.long 0x0
	.long 0x10002
	.long 0x0
	.long DBG21
	.long 0x2
	.long 0x0
	.long 0x10002
	.long 0x504e5f5f
	.long 0x534d5241
	.long 0x2
	.long 0x0
	.long 0x10002
	.long 0x41505f5f
	.long 0x64694d52
	.long 0x0
	.long 0x0
	.long 0x10002
	.long 0x41505f5f
	.long 0x6e6f4d52
	.long 0x0
	.long 0x0
	.long 0x10002
	.long 0x6e6f
	.long 0x0
	.long 0xd0102
	.long 0x4
	.long 0x11ffff
	.long 0x6469
	.long 0x0
	.long 0xc0102
	.long 0x4
	.long 0x11ffff
	.long 0x66652e
	.long 0x0
	.long DBG84
	.long 0x0
	.long 0x1650001
	.long 0x0
	.long 0x65
	.long 0x0
	.long 0x0
	.long 0x0
	.pseg lcd_code
DBG76:
	.dbgseg dbg_syms
	.long 0x6944434c
	.long 0x6e6f63
	.long DBG76
	.long 0x0
	.long 0xff0001
; }
; void LCDudec32(uint32 value, int16 pos, int16 digits, int16 after)
DBG75:
	.long 0x0
	.long DBG89
	.long _LCDudec32
	.long 0x40
	.long 0x1020001
	.long DBG79
	.long DBG86-DBG87
	.long DBG88
	.long DBG85
	.long 0x0
	.pseg lcd_code
DBG87:
	.dbgseg dbg_syms
DBG79:
	.long 0x66622e
	.long 0x0
	.long DBG87
	.long 0x0
	.long 0x1650001
	.long 0x0
	.long 0x6d
	.long 0x0
	.long DBG90
	.long 0x0
	.dbgseg dbg_line
DBG88:
	.long DBG75
	.long 0x0
	.long _LCDudec32
	.long 0x1
	.long DBG92
	.long 0x2
	.long DBG93
	.long 0x8
	.long DBG94
	.long 0x9
	.long DBG95
	.long 0xb
	.long DBG96
	.long 0xc
	.long DBG97
	.long 0xe
	.long DBG98
	.long 0xf
	.long DBG99
	.long 0x10
	.long DBG100
	.long 0x11
	.long DBG101
	.long 0x12
	.long DBG102
	.long 0x13
	.long DBG103
	.long 0x14
	.long DBG104
	.long 0x15
	.long DBG105
	.long 0x16
	.long DBG106
	.long 0x18
	.pseg lcd_code
	.global _LCDudec32
_LCDudec32:
	push	r4
	push	r5
	push	r6
	push	r7
	push	r8
	push	r9
DBG91:
; ENTRY
	mov	r13,r9
	mov	r12,r8
; value at argloc 0 (0x0) in reg  size 4
	mov	r14,r5
; pos at argloc 0 (0x0) in reg  size 2
	mov	r15,r6
; digits at argloc 0 (0x0) in reg  size 2
	mov	0xe(sp),r7
DBG93:
DBG92:
; after at argloc 2 (0x2) in reg  size 2
; i in reg  size 2
; flag in reg  size 2
; digit in reg  size 2
; {
; 	int16 i;
;    	int16 flag;
;    	uint16 digit;
; 	flag = 1;
	mov	#0x1,r4
DBG94:
; 	LCDchar( 0 , pos++);
	mov	r5,r13
	add	#0x1,r5
	mov.b	#0x0,r12
	call	#_LCDchar
DBG95:
; 	bin2bcd32(bcd, value);
	mov	r9,r14
	mov	r8,r13
	mov	#_bcd,r12
	call	#_bin2bcd32
DBG96:
; 	after =  digits - after;
	mov	r6,r8
	sub	r7,r8
DBG97:
;    	for (i=0; i<digits; i++)
	mov	#0x0,r7
	cmp	r6,r7
	jge	LCDudec32_L1
LCDudec32_L2:
;    	{
DBG98:
;    		digit = bcd[(i >> 1)+2];
DBG99:
	mov	r7,r12
	rra	r12
	mov.b	_bcd+0x2(r12),r12
DBG100:
;    		if ((i & 1) == 0)
	bit	#0x1,r7
	jne	LCDudec32_L3
DBG101:
;    			digit >>= 4;
	clrc
	rrc	r12
	rra	r12
	rra	r12
	rra	r12
DBG102:
LCDudec32_L3:
;    		if ((digit & 0x0F)  ||  i >= after - 1)
	and	#0xf,r12
	jne	LCDudec32_L5
	mov	r8,r13
	sub	#0x1,r13
	cmp	r13,r7
	jl	LCDudec32_L4
LCDudec32_L5:
;    		   flag = 0;
DBG103:
	mov	#0x0,r4
DBG104:
LCDudec32_L4:
; 	   	LCDchar((flag == 0)  ?  lcd_digit_table[digit & 0x0F]  :  0 , (pos++ +1));
	mov	r5,r13
	add	#0x1,r5
	add	#0x1,r13
	cmp	#0x0,r4
	jne	LCDudec32_LL2
	mov.b	_lcd_digit_table(r12),r12
	jmp	LCDudec32_LL3
LCDudec32_LL2:
	mov	#0x0,r12
LCDudec32_LL3:
	and.b	#0xff,r12
	call	#_LCDchar
DBG105:
	add	#0x1,r7
	cmp	r6,r7
	jl	LCDudec32_L2
LCDudec32_L1:
;   	}
DBG106:
; EXIT
; .temp1 at stkloc 0 (0x0) size 12
DBG107:
	pop	r9
	pop	r8
	pop	r7
	pop	r6
	pop	r5
	pop	r4
	ret
	.dbgseg dbg_syms
	.long 0x0
	.long DBG20
	.long 0xc
	.long 0x0
	.long 0x10002
	.long 0x0
	.long DBG21
	.long 0x4
	.long 0x0
	.long 0x10002
	.long 0x504e5f5f
	.long 0x534d5241
	.long 0x4
	.long 0x0
	.long 0x10002
	.long 0x0
	.long DBG42
	.long 0x0
	.long 0x0
	.long 0x10002
	.long 0x0
	.long DBG60
	.long 0x0
	.long 0x0
	.long 0x10002
	.long 0x0
	.long DBG108
	.long 0x0
	.long 0x0
	.long 0x10002
	.long 0x0
	.long DBG109
	.long 0x0
	.long 0x0
	.long 0x10002
DBG49:
	.long 0x62622e
	.long 0x0
	.long DBG91
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0x1
	.long 0x0
	.long DBG110
	.long 0x0
	.long 0x756c6176
	.long 0x65
	.long 0x200
	.long 0xf
	.long 0x211ffff
	.long 0x756c6176
	.long 0x65
	.long 0xc0102
	.long 0xf
	.long 0x111ffff
	.long 0x756c6176
	.long 0x65
	.long 0xd0102
	.long 0xf
	.long 0x11ffff
	.long 0x736f70
	.long 0x0
	.long 0xe0102
	.long 0x4
	.long 0x11ffff
	.long 0x69676964
	.long 0x7374
	.long 0xf0102
	.long 0x4
	.long 0x11ffff
	.long 0x62652e
	.long 0x0
	.long DBG92
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0x2
	.long 0x0
	.long 0x0
	.long 0x0
DBG110:
	.long 0x62622e
	.long 0x0
	.long DBG92
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0x2
	.long 0x0
	.long DBG111
	.long 0x0
	.long 0x756c6176
	.long 0x65
	.long 0x200
	.long 0xf
	.long 0x211ffff
	.long 0x756c6176
	.long 0x65
	.long 0xc0102
	.long 0xf
	.long 0x111ffff
	.long 0x756c6176
	.long 0x65
	.long 0x90102
	.long 0xf
	.long 0x11ffff
	.long 0x736f70
	.long 0x0
	.long 0x50102
	.long 0x4
	.long 0x11ffff
	.long 0x69676964
	.long 0x7374
	.long 0x60102
	.long 0x4
	.long 0x11ffff
DBG111:
	.long 0x62622e
	.long 0x0
	.long DBG92
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0x2
	.long 0x0
	.long DBG112
	.long 0x0
	.long 0x756c6176
	.long 0x65
	.long 0x200
	.long 0xf
	.long 0x211ffff
	.long 0x756c6176

⌨️ 快捷键说明

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