📄 lcd.asm
字号:
.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 + -