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