📄 display.s
字号:
X15:
and F,-5
rrc [__r0]
rrc [__r1]
jnc X13
mov A,[__r3]
add [__rX],A
mov A,[__r2]
adc [__rY],A
X13:
asl [__r3]
rlc [__r2]
jmp X12
X14:
mov [__r1],[__rX]
mov [__r0],[__rY]
add [__r1],<_FontLookup-160
adc [__r0],>_FontLookup-160
mov A,[X+1]
add A,[__r1]
mov [__r1],A
mov A,[X+0]
adc A,[__r0]
push X
mov X,[__r1]
romx
pop X
push A
xcall _LcdSendData
add SP,-1
L34:
.dbline 112
inc [X+1]
adc [X+0],0
.dbline 112
mov A,[X+0]
xor A,-128
mov [__rY],A
mov A,0
xor A,-128
mov [__rZ],A
mov [__rX],0
mov A,[X+1]
sub A,5
or [__rX],A
mov A,[__rY]
sbb A,[__rZ]
or [__rX],A
jc L33
X16:
.dbline 114
mov A,0
push A
xcall _LcdSendData
add SP,-1
.dbline 115
L31:
.dbline 109
mov A,[X-4]
mov [__r1],A
mov A,[X-5]
push X
mov X,[__r1]
romx
pop X
cmp A,0
jnz L30
.dbline -2
.dbline 116
; for(i=0; i<5; i++) LcdSendData(FontLookup[ch-32][i]);
; // empty space after character
; LcdSendData(0x00);
; }
; }
L29:
add SP,-3
pop X
.dbline 0 ; func end
ret
.dbsym l ch 2 c
.dbsym l i 0 I
.dbsym l dataPtr -5 pc
.dbend
.dbfunc e LcdVBargraph _LcdVBargraph fV
; j -> X+2
; ch -> X+1
; i -> X+0
; yposition -> X-7
; yend -> X-6
; ystart -> X-5
; x -> X-4
_LcdVBargraph::
.dbline -1
push X
mov X,SP
add SP,5
.dbline 119
;
; void LcdVBargraph (char x, char ystart, char yend, char yposition)
; {
.dbline 121
; char i,j,ch;
; LcdSendCommand(0x40 | yend);
mov A,[X-6]
or A,64
push A
xcall _LcdSendCommand
add SP,-1
.dbline 122
; LcdSendCommand(0x80 | x);
mov A,[X-4]
or A,-128
push A
xcall _LcdSendCommand
.dbline 123
; LcdSendData(0xFF);
mov A,-1
push A
xcall _LcdSendData
add SP,-2
.dbline 124
; for (i=0; i<6 ; i++)
mov [X+0],0
xjmp L42
L39:
.dbline 125
; { switch (yposition)
.dbline 125
mov A,[X-7]
mov [X+4],A
mov [X+3],0
cmp [X+3],0
jnz X20
cmp [X+4],0
jz L46
X20:
cmp [X+3],0
jnz X21
cmp [X+4],1
jz L47
X21:
cmp [X+3],0
jnz X22
cmp [X+4],2
jz L48
X22:
cmp [X+3],0
jnz X23
cmp [X+4],3
jz L49
X23:
cmp [X+3],0
jnz X24
cmp [X+4],4
jz L50
X24:
cmp [X+3],0
jnz X25
cmp [X+4],5
jz L51
X25:
cmp [X+3],0
jnz X26
cmp [X+4],6
jz L52
X26:
cmp [X+3],0
jnz X27
cmp [X+4],7
jz L53
X27:
xjmp L43
X17:
.dbline 126
; {
L46:
.dbline 127
; case 0 : ch=0x80; break;
mov [X+1],-128
.dbline 127
xjmp L44
L47:
.dbline 128
; case 1 : ch=0x80; break;
mov [X+1],-128
.dbline 128
xjmp L44
L48:
.dbline 129
; case 2 : ch=0xC0; break;
mov [X+1],-64
.dbline 129
xjmp L44
L49:
.dbline 130
; case 3 : ch=0xE0; break;
mov [X+1],-32
.dbline 130
xjmp L44
L50:
.dbline 131
; case 4 : ch=0xF0; break;
mov [X+1],-16
.dbline 131
xjmp L44
L51:
.dbline 132
; case 5 : ch=0xF8; break;
mov [X+1],-8
.dbline 132
xjmp L44
L52:
.dbline 133
; case 6 : ch=0xFC; break;
mov [X+1],-4
.dbline 133
xjmp L44
L53:
.dbline 134
; case 7 : ch=0xFE; break;
mov [X+1],-2
.dbline 134
xjmp L44
L43:
.dbline 135
; default: ch=0xFF; break;
mov [X+1],-1
.dbline 135
L44:
.dbline 136
.dbline 137
mov A,[X+1]
push A
xcall _LcdSendData
add SP,-1
.dbline 138
L40:
.dbline 124
inc [X+0]
L42:
.dbline 124
cmp [X+0],6
jz X28
jc L39
X28:
.dbline 139
; };
; LcdSendData(ch);
; }
; LcdSendData(0xFF);
mov A,-1
push A
xcall _LcdSendData
add SP,-1
.dbline 140
; for (j=yend-1; j>ystart; j--)
mov A,[X-6]
sub A,1
mov [X+2],A
xjmp L57
L54:
.dbline 141
; {
.dbline 142
cmp [X-7],8
jc L58
jz L58
X29:
.dbline 142
mov A,[X-7]
sub A,8
mov [X-7],A
xjmp L59
L58:
.dbline 142
; if (yposition > 8) yposition -=8; else yposition=0;
mov [X-7],0
L59:
.dbline 143
; LcdSendCommand(0x40 | j);
mov A,[X+2]
or A,64
push A
xcall _LcdSendCommand
add SP,-1
.dbline 144
; LcdSendCommand(0x80 | x);
mov A,[X-4]
or A,-128
push A
xcall _LcdSendCommand
.dbline 145
; LcdSendData(0xFF);
mov A,-1
push A
xcall _LcdSendData
add SP,-2
.dbline 146
; for (i=0; i<6 ; i++)
mov [X+0],0
xjmp L63
L60:
.dbline 147
; { switch (yposition)
.dbline 147
mov A,[X-7]
mov [X+4],A
mov [X+3],0
cmp [X+3],0
jnz X30
cmp [X+4],0
jz L67
X30:
cmp [X+3],0
jnz X31
cmp [X+4],1
jz L68
X31:
cmp [X+3],0
jnz X32
cmp [X+4],2
jz L69
X32:
cmp [X+3],0
jnz X33
cmp [X+4],3
jz L70
X33:
cmp [X+3],0
jnz X34
cmp [X+4],4
jz L71
X34:
cmp [X+3],0
jnz X35
cmp [X+4],5
jz L72
X35:
cmp [X+3],0
jnz X36
cmp [X+4],6
jz L73
X36:
cmp [X+3],0
jnz X37
cmp [X+4],7
jz L74
X37:
xjmp L64
X18:
.dbline 148
; {
L67:
.dbline 149
; case 0 : ch=0x00; break;
mov [X+1],0
.dbline 149
xjmp L65
L68:
.dbline 150
; case 1 : ch=0x80; break;
mov [X+1],-128
.dbline 150
xjmp L65
L69:
.dbline 151
; case 2 : ch=0xC0; break;
mov [X+1],-64
.dbline 151
xjmp L65
L70:
.dbline 152
; case 3 : ch=0xE0; break;
mov [X+1],-32
.dbline 152
xjmp L65
L71:
.dbline 153
; case 4 : ch=0xF0; break;
mov [X+1],-16
.dbline 153
xjmp L65
L72:
.dbline 154
; case 5 : ch=0xF8; break;
mov [X+1],-8
.dbline 154
xjmp L65
L73:
.dbline 155
; case 6 : ch=0xFC; break;
mov [X+1],-4
.dbline 155
xjmp L65
L74:
.dbline 156
; case 7 : ch=0xFE; break;
mov [X+1],-2
.dbline 156
xjmp L65
L64:
.dbline 157
; default: ch=0xFF; break;
mov [X+1],-1
.dbline 157
L65:
.dbline 158
.dbline 159
mov A,[X+1]
push A
xcall _LcdSendData
add SP,-1
.dbline 160
L61:
.dbline 146
inc [X+0]
L63:
.dbline 146
cmp [X+0],6
jz X38
jc L60
X38:
.dbline 160
.dbline 161
mov A,-1
push A
xcall _LcdSendData
add SP,-1
.dbline 162
L55:
.dbline 140
dec [X+2]
L57:
.dbline 140
mov A,[X+2]
cmp A,[X-5]
jz X39
jnc L54
X39:
.dbline 162
; };
; LcdSendData(ch);
; };
; LcdSendData(0xFF);
; };
.dbline 163
cmp [X-7],8
jc L75
jz L75
X40:
.dbline 163
mov A,[X-7]
sub A,8
mov [X-7],A
xjmp L76
L75:
.dbline 163
; if (yposition > 8) yposition -=8; else yposition=0;
mov [X-7],0
L76:
.dbline 164
; LcdSendCommand(0x40 | ystart);
mov A,[X-5]
or A,64
push A
xcall _LcdSendCommand
add SP,-1
.dbline 165
; LcdSendCommand(0x80 | x);
mov A,[X-4]
or A,-128
push A
xcall _LcdSendCommand
.dbline 166
; LcdSendData(0xFF);
mov A,-1
push A
xcall _LcdSendData
add SP,-2
.dbline 167
; for (i=0; i<6 ; i++)
mov [X+0],0
xjmp L80
L77:
.dbline 168
; { switch (yposition)
.dbline 168
mov A,[X-7]
mov [X+4],A
mov [X+3],0
cmp [X+3],0
jnz X41
cmp [X+4],0
jz L84
X41:
cmp [X+3],0
jnz X42
cmp [X+4],1
jz L85
X42:
cmp [X+3],0
jnz X43
cmp [X+4],2
jz L86
X43:
cmp [X+3],0
jnz X44
cmp [X+4],3
jz L87
X44:
cmp [X+3],0
jnz X45
cmp [X+4],4
jz L88
X45:
cmp [X+3],0
jnz X46
cmp [X+4],5
jz L89
X46:
cmp [X+3],0
jnz X47
cmp [X+4],6
jz L90
X47:
cmp [X+3],0
jnz X48
cmp [X+4],7
jz L91
X48:
xjmp L81
X19:
.dbline 169
; {
L84:
.dbline 170
; case 0 : ch=0x01; break;
mov [X+1],1
.dbline 170
xjmp L82
L85:
.dbline 171
; case 1 : ch=0x81; break;
mov [X+1],-127
.dbline 171
xjmp L82
L86:
.dbline 172
; case 2 : ch=0xC1; break;
mov [X+1],-63
.dbline 172
xjmp L82
L87:
.dbline 173
; case 3 : ch=0xE1; break;
mov [X+1],-31
.dbline 173
xjmp L82
L88:
.dbline 174
; case 4 : ch=0xF1; break;
mov [X+1],-15
.dbline 174
xjmp L82
L89:
.dbline 175
; case 5 : ch=0xF9; break;
mov [X+1],-7
.dbline 175
xjmp L82
L90:
.dbline 176
; case 6 : ch=0xFD; break;
mov [X+1],-3
.dbline 176
xjmp L82
L91:
.dbline 177
; case 7 : ch=0xFF; break;
mov [X+1],-1
.dbline 177
xjmp L82
L81:
.dbline 178
; default: ch=0xFF; break;
mov [X+1],-1
.dbline 178
L82:
.dbline 179
.dbline 180
mov A,[X+1]
push A
xcall _LcdSendData
add SP,-1
.dbline 181
L78:
.dbline 167
inc [X+0]
L80:
.dbline 167
cmp [X+0],6
jz X49
jc L77
X49:
.dbline 182
; };
; LcdSendData(ch);
; }
; LcdSendData(0xFF);
mov A,-1
push A
xcall _LcdSendData
add SP,-1
.dbline -2
.dbline 183
; }
L38:
add SP,-5
pop X
.dbline 0 ; func end
ret
.dbsym l j 2 c
.dbsym l ch 1 c
.dbsym l i 0 c
.dbsym l yposition 0 I
.dbsym l yposition -7 c
.dbsym l yend 0 I
.dbsym l yend -6 c
.dbsym l ystart 0 I
.dbsym l ystart -5 c
.dbsym l x 0 I
.dbsym l x -4 c
.dbend
.dbfunc e LcdHBargraph _LcdHBargraph fV
; i -> X+0
; xposition -> X-7
; xend -> X-6
; xstart -> X-5
; y -> X-4
_LcdHBargraph::
.dbline -1
push X
mov X,SP
add SP,2
.dbline 186
;
; void LcdHBargraph (char y, char xstart, char xend, char xposition)
; {
.dbline 188
; int i;
; LcdSendCommand(0x40 | y);
mov A,[X-4]
or A,64
push A
xcall _LcdSendCommand
add SP,-1
.dbline 189
; LcdSendCommand(0x80 | xstart);
mov A,[X-5]
or A,-128
push A
xcall _LcdSendCommand
.dbline 190
; LcdSendData(0x7E);
mov A,126
push A
xcall _LcdSendData
add SP,-2
.dbline 191
mov [X+1],1
mov [X+0],0
xjmp L96
L93:
.dbline 191
mov A,126
push A
xcall _LcdSendData
add SP,-1
L94:
.dbline 191
inc [X+1]
adc [X+0],0
L96:
.dbline 191
; for (i=1; i<=xposition; i++) LcdSendData(0x7E);
mov A,[X-7]
mov [__r1],A
mov A,[X+0]
xor A,-128
mov [__rY],A
mov A,0
xor A,-128
mov [__rZ],A
mov [__rX],0
mov A,[X+1]
sub A,[__r1]
or [__rX],A
mov A,[__rY]
sbb A,[__rZ]
or [__rX],A
jc L93
mov A,[__rX]
jz L93
X50:
.dbline 192
mov A,[X-7]
add A,1
mov [X+1],A
mov A,0
adc A,0
mov [X+0],A
xjmp L100
L97:
.dbline 192
mov A,66
push A
xcall _LcdSendData
add SP,-1
L98:
.dbline 192
inc [X+1]
adc [X+0],0
L100:
.dbline 192
; for (i=xposition+1; i<xend-xstart; i++) LcdSendData(0x42);
mov A,[X-6]
mov [__r1],A
mov [__r0],0
mov A,[X-5]
sub [__r1],A
sbb [__r0],0
mov A,[X+0]
xor A,-128
mov [__rY],A
mov A,[__r0]
xor A,-128
mov [__rZ],A
mov [__rX],0
mov A,[X+1]
sub A,[__r1]
or [__rX],A
mov A,[__rY]
sbb A,[__rZ]
or [__rX],A
jc L97
X51:
.dbline 193
; LcdSendData(0x7E);
mov A,126
push A
xcall _LcdSendData
add SP,-1
.dbline -2
.dbline 194
; }
L92:
add SP,-2
pop X
.dbline 0 ; func end
ret
.dbsym l i 0 I
.dbsym l xposition 0 I
.dbsym l xposition -7 c
.dbsym l xend 0 I
.dbsym l xend -6 c
.dbsym l xstart 0 I
.dbsym l xstart -5 c
.dbsym l y 0 I
.dbsym l y -4 c
.dbend
.dbfunc e LcdSendData _LcdSendData fV
; data -> X-4
_LcdSendData::
.dbline -1
push X
mov X,SP
.dbline 197
;
; void LcdSendData ( char data )
; {
.dbline 198
; SETBIT(LCD_PORT, LCD_DC_BIT);
or REG[4],64
.dbline 200
; // Send data to display controller.
; SPIM_SendTxData(data);
push X
mov A,[X-4]
xcall _SPIM_SendTxData
pop X
L102:
.dbline 202
L103:
.dbline 202
; // Wait until SPI cycle complete.
; while ( ! (bSPIM_ReadStatus() & SPIM_SPIM_SPI_COMPLETE) );
push X
xcall _bSPIM_ReadStatus
pop X
mov [__r0],A
tst [__r0],32
jz L102
.dbline -2
.dbline 203
; }
L101:
pop X
.dbline 0 ; func end
ret
.dbsym l data 0 I
.dbsym l data -4 c
.dbend
.dbfunc e LcdSendCommand _LcdSendCommand fV
; command -> X-4
_LcdSendCommand::
.dbline -1
push X
mov X,SP
.dbline 206
;
; void LcdSendCommand ( char command )
; {
.dbline 207
; CLEARBIT(LCD_PORT, LCD_DC_BIT);
and REG[4],-65
.dbline 209
; // Send command to display controller.
; SPIM_SendTxData(command);
push X
mov A,[X-4]
xcall _SPIM_SendTxData
pop X
L106:
.dbline 211
L107:
.dbline 211
; // Wait until SPI cycle complete.
; while ( ! (bSPIM_ReadStatus() & SPIM_SPIM_SPI_COMPLETE) );
push X
xcall _bSPIM_ReadStatus
pop X
mov [__r0],A
tst [__r0],32
jz L106
.dbline -2
.dbline 212
; }
L105:
pop X
.dbline 0 ; func end
ret
.dbsym l command 0 I
.dbsym l command -4 c
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -