📄 lcd.lis
字号:
01AB B700 sta *__r1
01AD B600 lda *__r0
01AF 40 nega
01B0 87 psha
01B1 B600 lda *__r1
01B3 40 nega
01B4 B700 sta *__r1
01B6 86 pula
01B7 A200 sbc #0
01B9 B700 sta *__r0
01BB 4E0000 mov *__r1,*__r3
01BE 4E0000 mov *__r0,*__r2
01C1 3F00 clr *__r1
01C3 3F00 clr *__r0
01C5 3D00 tst *__r2
01C7 2A04 bpl X1
01C9 3300 com *__r1
01CB 3300 com *__r0
01CD X1:
01CD E604 lda 4,X
01CF 87 psha
01D0 E603 lda 3,X
01D2 87 psha
01D3 E602 lda 2,X
01D5 87 psha
01D6 E601 lda 1,X
01D8 87 psha
01D9 B600 lda *__r3
01DB 87 psha
01DC B600 lda *__r2
01DE 87 psha
01DF B600 lda *__r1
01E1 87 psha
01E2 B600 lda *__r0
01E4 87 psha
01E5 CD0000 jsr __cmp32
01E8 A708 ais #8
01EA 9152 blt L21
01EC .dbline 90
01EC ; {
01EC .dbline 91
01EC ; if(GrE==1) LcdShGr1P(y,x);//显示该点
01EC E60C lda 12,X
01EE A101 cmp #1
01F0 260D bne L23
01F2 .dbline 91
01F2 E605 lda 5,X
01F4 87 psha
01F5 F6 lda ,X
01F6 87 psha
01F7 CD0376 jsr _LcdShGr1P
01FA A702 ais #2
01FC 95 tsx
01FD 203F bra L24
01FF L23:
01FF .dbline 93
01FF ; //清除该点
01FF ; else if(y<=31) LcdShGr16P(y,(x/16),0);
01FF F6 lda ,X
0200 A11F cmp #31
0202 221C bhi L25
0204 .dbline 93
0204 450000 ldhx #0
0207 89 pshx
0208 8B pshh
0209 95 tsx
020A AF02 aix #2
020C E605 lda 5,X
020E AE10 ldx #16
0210 8C clrh
0211 52 div
0212 95 tsx
0213 AF02 aix #2
0215 87 psha
0216 F6 lda ,X
0217 87 psha
0218 CD03E3 jsr _LcdShGr16P
021B A704 ais #4
021D 95 tsx
021E 201E bra L26
0220 L25:
0220 .dbline 94
0220 ; else LcdShGr16P(y-32,x/16+8,0);
0220 450000 ldhx #0
0223 89 pshx
0224 8B pshh
0225 95 tsx
0226 AF02 aix #2
0228 E605 lda 5,X
022A AE10 ldx #16
022C 8C clrh
022D 52 div
022E 95 tsx
022F AF02 aix #2
0231 AB08 add #8
0233 87 psha
0234 F6 lda ,X
0235 A020 sub #32
0237 87 psha
0238 CD03E3 jsr _LcdShGr16P
023B A704 ais #4
023D 95 tsx
023E L26:
023E L24:
023E .dbline 95
023E ; }
023E L21:
023E .dbline 96
023E L18:
023E .dbline 85
023E 6C05 inc 5,X
0240 L20:
0240 .dbline 85
0240 E609 lda 9,X
0242 EB0A add 10,X
0244 B700 sta *__r0
0246 E605 lda 5,X
0248 B100 cmp *__r0
024A 2203 bhi X3
024C CC00DC jmp L17
024F X3:
024F L14:
024F .dbline 84
024F 7C inc ,X
0250 L16:
0250 .dbline 84
0250 E608 lda 8,X
0252 EB0A add 10,X
0254 B700 sta *__r0
0256 F6 lda ,X
0257 B100 cmp *__r0
0259 2203 bhi X4
025B CC00D3 jmp L13
025E X4:
025E .dbline 98
025E ; }
025E ; // LcdShGr1P(Cy,Cx);//显示圆心
025E ; Wtite_Command(0b00110000);//基本指令
025E A630 lda #48
0260 87 psha
0261 CD0419 jsr _Wtite_Command
0264 A701 ais #1
0266 95 tsx
0267 .dbline -2
0267 L12:
0267 A706 ais #6
0269 .dbline 0 ; func end
0269 81 rts
026A .dbsym l y 0 c
026A .dbsym l mistake 1 L
026A .dbsym l x 5 c
026A .dbsym l GrE 12 c
026A .dbsym l GrCilMV 11 c
026A .dbsym l CR 10 c
026A .dbsym l Cx 9 c
026A .dbsym l Cy 8 c
026A .dbend
026A .dbfunc e LcdShGrRe _LcdShGrRe fV
026A ; RC -> 0,X
026A ; LC -> 2,X
026A ; TBC -> 4,X
026A ; i -> 6,X
026A ; y -> 7,X
026A ; Px -> 8,X
026A ; GrE -> 12,X
026A ; ln -> 11,X
026A _LcdShGrRe::
026A .dbline -1
026A A7F7 ais #-9
026C 95 tsx
026D .dbline 107
026D ; }
026D ;
026D ; /*LcdShGrRe:在Lcd的指定行上显示或取消矩型边框--------*
026D ; *功 能:在Lcd上指定行上显示或取消矩型边框 *
026D ; *参 数:ln为指定的行数(0-3), GrE确定图形是否有效 *
026D ; *返 回:无 *
026D ; *---------------------------------------------------*/
026D ; void LcdShGrRe(unsigned char ln,unsigned char GrE)
026D ; {
026D .dbline 112
026D E60B lda 11,X
026F 2704 beq L30
0271 A102 cmp #2
0273 2604 bne L28
0275 L30:
0275 .dbline 112
0275 ; unsigned char Px,y;//行页号坐标,列坐标
0275 ; unsigned char i; //循环变量
0275 ; int LC,RC,TBC; //左,右和上下边框色
0275 ; //[确定ln所在行的起始坐标(左上角)]
0275 ; if((ln==0)||(ln==2)) y=0;
0275 6F07 clr 7,X
0277 2004 bra L29
0279 L28:
0279 .dbline 113
0279 ; else y=16;
0279 A610 lda #16
027B E707 sta 7,X
027D L29:
027D .dbline 114
027D ; if(ln<=1) Px=0;
027D E60B lda 11,X
027F A101 cmp #1
0281 2204 bhi L31
0283 .dbline 114
0283 6F08 clr 8,X
0285 2004 bra L32
0287 L31:
0287 .dbline 115
0287 ; else Px=8;
0287 A608 lda #8
0289 E708 sta 8,X
028B L32:
028B .dbline 117
028B ; //[确定有无边框(有GrE决定)]
028B ; if(GrE==1) //有表框
028B E60C lda 12,X
028D A101 cmp #1
028F 2618 bne L33
0291 .dbline 118
0291 ; {TBC=65535;LC=32768;RC=1;}
0291 .dbline 118
0291 A6FF lda #-1
0293 E704 sta 4,X
0295 A6FF lda #-1
0297 E705 sta 5,X
0299 .dbline 118
0299 A680 lda #-128
029B E702 sta 2,X
029D A600 lda #0
029F E703 sta 3,X
02A1 .dbline 118
02A1 4F clra
02A2 F7 sta ,X
02A3 A601 lda #1
02A5 E701 sta 1,X
02A7 .dbline 118
02A7 200B bra L34
02A9 L33:
02A9 .dbline 120
02A9 ; else //无边框
02A9 ; {TBC=0;LC=0;RC=0;}
02A9 .dbline 120
02A9 6F05 clr 5,X
02AB 6F04 clr 4,X
02AD .dbline 120
02AD 6F03 clr 3,X
02AF 6F02 clr 2,X
02B1 .dbline 120
02B1 6F01 clr 1,X
02B3 7F clr ,X
02B4 .dbline 120
02B4 L34:
02B4 .dbline 121
02B4 ; Wtite_Command(0b00110110);//扩展指令,绘图开
02B4 A636 lda #54
02B6 87 psha
02B7 CD0419 jsr _Wtite_Command
02BA A701 ais #1
02BC 95 tsx
02BD .dbline 123
02BD ; //[在Lcd上指定行上显示矩型边框]
02BD ; for(i=0;i<=7;i++,Px++)
02BD 6F06 clr 6,X
02BF 202A bra L38
02C1 L35:
02C1 .dbline 124
02C1 .dbline 125
02C1 E605 lda 5,X
02C3 87 psha
02C4 E604 lda 4,X
02C6 87 psha
02C7 E608 lda 8,X
02C9 87 psha
02CA E607 lda 7,X
02CC 87 psha
02CD CD03E3 jsr _LcdShGr16P
02D0 A704 ais #4
02D2 95 tsx
02D3 .dbline 126
02D3 E605 lda 5,X
02D5 87 psha
02D6 E604 lda 4,X
02D8 87 psha
02D9 E608 lda 8,X
02DB 87 psha
02DC E607 lda 7,X
02DE AB0F add #15
02E0 87 psha
02E1 CD03E3 jsr _LcdShGr16P
02E4 A704 ais #4
02E6 95 tsx
02E7 .dbline 127
02E7 L36:
02E7 .dbline 123
02E7 6C06 inc 6,X
02E9 6C08 inc 8,X
02EB L38:
02EB .dbline 123
02EB E606 lda 6,X
02ED A107 cmp #7
02EF 23D0 bls L35
02F1 .dbline 128
02F1 ; {
02F1 ; LcdShGr16P(y,Px,TBC); //显示上边框
02F1 ; LcdShGr16P(y+15,Px,TBC); //显示下边框
02F1 ; }
02F1 ; for(i=1,y++,Px--;i<=14;i++,y++)
02F1 A601 lda #1
02F3 E706 sta 6,X
02F5 6C07 inc 7,X
02F7 6A08 dec 8,X
02F9 2029 bra L42
02FB L39:
02FB .dbline 129
02FB .dbline 130
02FB E601 lda 1,X
02FD 87 psha
02FE F6 lda ,X
02FF 87 psha
0300 E608 lda 8,X
0302 87 psha
0303 E607 lda 7,X
0305 87 psha
0306 CD03E3 jsr _LcdShGr16P
0309 A704 ais #4
030B 95 tsx
030C .dbline 131
030C E603 lda 3,X
030E 87 psha
030F E602 lda 2,X
0311 87 psha
0312 E608 lda 8,X
0314 A007 sub #7
0316 87 psha
0317 E607 lda 7,X
0319 87 psha
031A CD03E3 jsr _LcdShGr16P
031D A704 ais #4
031F 95 tsx
0320 .dbline 132
0320 L40:
0320 .dbline 128
0320 6C06 inc 6,X
0322 6C07 inc 7,X
0324 L42:
0324 .dbline 128
0324 E606 lda 6,X
0326 A10E cmp #14
0328 23D1 bls L39
032A .dbline 133
032A ; {
032A ; LcdShGr16P(y,Px,RC); //显示右边框
032A ; LcdShGr16P(y,Px-7,LC); //显示左边框
032A ; }
032A ; Wtite_Command(0b00110000);//基本指令
032A A630 lda #48
032C 87 psha
032D CD0419 jsr _Wtite_Command
0330 A701 ais #1
0332 95 tsx
0333 .dbline -2
0333 L27:
0333 A709 ais #9
0335 .dbline 0 ; func end
0335 81 rts
0336 .dbsym l RC 0 I
0336 .dbsym l LC 2 I
0336 .dbsym l TBC 4 I
0336 .dbsym l i 6 c
0336 .dbsym l y 7 c
0336 .dbsym l Px 8 c
0336 .dbsym l GrE 12 c
0336 .dbsym l ln 11 c
0336 .dbend
0336 .dbfunc e LcdShGrClr _LcdShGrClr fV
0336 ; y -> 0,X
0336 ; Px -> 1,X
0336 _LcdShGrClr::
0336 .dbline -1
0336 A7FE ais #-2
0338 95 tsx
0339 .dbline 142
0339 ; }
0339 ;
0339 ; /*LcdShGrClr:在Lcd上清图形显示屏--------------*
0339 ; *功 能:在Lcd上清图形显示屏(清GDRAM) *
0339 ; *参 数:无 *
0339 ; *返 回:无 *
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -