📄 lcd.lis
字号:
0459 L59:
0459 .dbline 231
0459 L60:
0459 .dbline 231
0459 E601 lda 1,X
045B AB01 add #1
045D E701 sta 1,X
045F F6 lda ,X
0460 A900 adc #0
0462 F7 sta ,X
0463 L62:
0463 .dbline 231
0463 ; INT16U i; //循环变量
0463 ; for(i=0;i<tn;i++);
0463 E605 lda 5,X
0465 B700 sta *__r1
0467 E604 lda 4,X
0469 B700 sta *__r0
046B E601 lda 1,X
046D B700 sta *__r3
046F F6 lda ,X
0470 B700 sta *__r2
0472 5500 ldhx *__r2
0474 7500 cphx *__r0
0476 95 tsx
0477 25E0 blo L59
0479 .dbline -2
0479 L58:
0479 A702 ais #2
047B .dbline 0 ; func end
047B 81 rts
047C .dbsym l i 0 i
047C .dbsym l tn 4 i
047C .dbend
047C .dbfunc e LcdShBigNum _LcdShBigNum fV
047C ; GBit -> 0,X
047C ; SBit -> 1,X
047C ; BBit -> 2,X
047C ; Yi -> 3,X
047C ; Num -> 10,X
047C ; BigNumCodeAdrr -> 8,X
047C ; X -> 7,X
047C ; Y -> 6,X
047C _LcdShBigNum::
047C .dbline -1
047C A7FC ais #-4
047E 95 tsx
047F .dbline 244
047F ; }
047F ;
047F ; //其他特殊功能函数
047F ; //LcdShBigNum:在Lcd上显示自定义32*16点阵的数字(0--999)---------------------*
047F ; //功 能:在Lcd上显示自定义32*16点阵的数字(0--999) *
047F ; //参 数:X表示Lcd上显示字符的横坐标(0--5),Y为显示字符的纵坐标(0--1) *
047F ; // BigNumCodeAdrr为32*16点阵数字编码首地址,Num为当前的数据值(0--999) *
047F ; //返 回:无 *
047F ; //内部调用:LcdShGr16P:在Lcd指定位置上设置线型16个点的显示 *
047F ; // Wtite_Command:执行参数中的给定命令 *
047F ; //-------------------------------------------------------------------------*
047F ; void LcdShBigNum(INT8U Y,INT8U X,INT16U * BigNumCodeAdrr,INT16U Num)
047F ; {
047F .dbline 247
047F E606 lda 6,X
0481 A101 cmp #1
0483 2216 bhi L67
0485 E607 lda 7,X
0487 A105 cmp #5
0489 2210 bhi L67
048B E60B lda 11,X
048D B700 sta *__r1
048F E60A lda 10,X
0491 B700 sta *__r0
0493 5500 ldhx *__r0
0495 6503E7 cphx #999
0498 95 tsx
0499 2303 bls L64
049B L67:
049B .dbline 247
049B ; INT8U GBit,SBit,BBit; //存放个位,十位,百位数据
049B ; INT8U Yi; //Y坐标方向的循环控制变量
049B ; if(Y>1||X>5||Num>999) goto LcdShBigNum_End; //参数值范围检测
049B CC064B jmp L68
049E L64:
049E .dbline 248
049E ; GBit=Num%10; BBit=Num/100; SBit=(Num%100)/10;
049E E60B lda 11,X
04A0 B700 sta *__rlo
04A2 E60A lda 10,X
04A4 B700 sta *__rhi
04A6 A60A lda #10
04A8 87 psha
04A9 4F clra
04AA 87 psha
04AB CD0000 jsr __divmod16u
04AE 86 pula
04AF 86 pula
04B0 F7 sta ,X
04B1 .dbline 248
04B1 E60B lda 11,X
04B3 B700 sta *__rlo
04B5 E60A lda 10,X
04B7 B700 sta *__rhi
04B9 A664 lda #100
04BB 87 psha
04BC 4F clra
04BD 87 psha
04BE CD0000 jsr __divmod16u
04C1 A702 ais #2
04C3 4E0000 mov *__rlo,*__r1
04C6 B600 lda *__r1
04C8 E702 sta 2,X
04CA .dbline 248
04CA E60B lda 11,X
04CC B700 sta *__rlo
04CE E60A lda 10,X
04D0 B700 sta *__rhi
04D2 A664 lda #100
04D4 87 psha
04D5 4F clra
04D6 87 psha
04D7 CD0000 jsr __divmod16u
04DA 86 pula
04DB B700 sta *__r0
04DD 86 pula
04DE B700 sta *__rlo
04E0 4E0000 mov *__r0,*__rhi
04E3 A60A lda #10
04E5 87 psha
04E6 4F clra
04E7 87 psha
04E8 CD0000 jsr __divmod16u
04EB A702 ais #2
04ED 4E0000 mov *__rlo,*__r1
04F0 B600 lda *__r1
04F2 E701 sta 1,X
04F4 .dbline 249
04F4 ; Wtite_Command(0b00110110); //扩展指令,绘图开
04F4 A636 lda #54
04F6 87 psha
04F7 CD041B jsr _Wtite_Command
04FA A701 ais #1
04FC 95 tsx
04FD .dbline 250
04FD ; if(Y==1) X+=8; //参数调整
04FD E606 lda 6,X
04FF A101 cmp #1
0501 2606 bne L69
0503 .dbline 250
0503 E607 lda 7,X
0505 AB08 add #8
0507 E707 sta 7,X
0509 L69:
0509 .dbline 251
0509 ; for(Yi=0;Yi<32;Yi++)
0509 6F03 clr 3,X
050B CC0639 jmp L74
050E L71:
050E .dbline 252
050E ; {
050E .dbline 253
050E ; if(BBit!=0) LcdShGr16P(Yi,X,*(BigNumCodeAdrr+BBit*32+Yi));
050E E602 lda 2,X
0510 2750 beq L75
0512 .dbline 253
0512 3F00 clr *__r0
0514 B700 sta *__r1
0516 A605 lda #5
0518 X9:
0518 3800 lsl *__r1
051A 3900 rol *__r0
051C 4BFA dbnza X9
051E 3800 lsl *__r1
0520 3900 rol *__r0
0522 B600 lda *__r1
0524 EB09 add 9,X
0526 B700 sta *__r1
0528 B600 lda *__r0
052A E908 adc 8,X
052C B700 sta *__r0
052E 3F00 clr *__r2
0530 E603 lda 3,X
0532 B700 sta *__r3
0534 3800 lsl *__r3
0536 3900 rol *__r2
0538 B600 lda *__r3
053A BB00 add *__r1
053C B700 sta *__r1
053E B600 lda *__r2
0540 B900 adc *__r0
0542 B700 sta *__r0
0544 5500 ldhx *__r0
0546 E601 lda 1,x
0548 B700 sta *__r1
054A F6 lda ,x
054B 95 tsx
054C B700 sta *__r0
054E B600 lda *__r1
0550 87 psha
0551 B600 lda *__r0
0553 87 psha
0554 E607 lda 7,X
0556 87 psha
0557 E603 lda 3,X
0559 87 psha
055A CD03E5 jsr _LcdShGr16P
055D A704 ais #4
055F 95 tsx
0560 2014 bra L76
0562 L75:
0562 .dbline 254
0562 ; else LcdShGr16P(Yi,X,0x0000);
0562 450000 ldhx #0
0565 89 pshx
0566 8B pshh
0567 95 tsx
0568 AF02 aix #2
056A E607 lda 7,X
056C 87 psha
056D E603 lda 3,X
056F 87 psha
0570 CD03E5 jsr _LcdShGr16P
0573 A704 ais #4
0575 95 tsx
0576 L76:
0576 .dbline 256
0576 E601 lda 1,X
0578 2604 bne L79
057A E602 lda 2,X
057C 2754 beq L77
057E L79:
057E .dbline 256
057E ;
057E ; if((SBit!=0) ||(BBit!=0)) LcdShGr16P(Yi,X+1,*(BigNumCodeAdrr+SBit*32+Yi));
057E 3F00 clr *__r0
0580 E601 lda 1,X
0582 B700 sta *__r1
0584 A605 lda #5
0586 X10:
0586 3800 lsl *__r1
0588 3900 rol *__r0
058A 4BFA dbnza X10
058C 3800 lsl *__r1
058E 3900 rol *__r0
0590 B600 lda *__r1
0592 EB09 add 9,X
0594 B700 sta *__r1
0596 B600 lda *__r0
0598 E908 adc 8,X
059A B700 sta *__r0
059C 3F00 clr *__r2
059E E603 lda 3,X
05A0 B700 sta *__r3
05A2 3800 lsl *__r3
05A4 3900 rol *__r2
05A6 B600 lda *__r3
05A8 BB00 add *__r1
05AA B700 sta *__r1
05AC B600 lda *__r2
05AE B900 adc *__r0
05B0 B700 sta *__r0
05B2 5500 ldhx *__r0
05B4 E601 lda 1,x
05B6 B700 sta *__r1
05B8 F6 lda ,x
05B9 95 tsx
05BA B700 sta *__r0
05BC B600 lda *__r1
05BE 87 psha
05BF B600 lda *__r0
05C1 87 psha
05C2 E607 lda 7,X
05C4 AB01 add #1
05C6 87 psha
05C7 E603 lda 3,X
05C9 87 psha
05CA CD03E5 jsr _LcdShGr16P
05CD A704 ais #4
05CF 95 tsx
05D0 2014 bra L78
05D2 L77:
05D2 .dbline 257
05D2 ; else LcdShGr16P(Yi,X,0x0000);
05D2 450000 ldhx #0
05D5 89 pshx
05D6 8B pshh
05D7 95 tsx
05D8 AF02 aix #2
05DA E607 lda 7,X
05DC 87 psha
05DD E603 lda 3,X
05DF 87 psha
05E0 CD03E5 jsr _LcdShGr16P
05E3 A704 ais #4
05E5 95 tsx
05E6 L78:
05E6 .dbline 258
05E6 3F00 clr *__r0
05E8 F6 lda ,X
05E9 B700 sta *__r1
05EB A605 lda #5
05ED X11:
05ED 3800 lsl *__r1
05EF 3900 rol *__r0
05F1 4BFA dbnza X11
05F3 3800 lsl *__r1
05F5 3900 rol *__r0
05F7 B600 lda *__r1
05F9 EB09 add 9,X
05FB B700 sta *__r1
05FD B600 lda *__r0
05FF E908 adc 8,X
0601 B700 sta *__r0
0603 3F00 clr *__r2
0605 E603 lda 3,X
0607 B700 sta *__r3
0609 3800 lsl *__r3
060B 3900 rol *__r2
060D B600 lda *__r3
060F BB00 add *__r1
0611 B700 sta *__r1
0613 B600 lda *__r2
0615 B900 adc *__r0
0617 B700 sta *__r0
0619 5500 ldhx *__r0
061B E601 lda 1,x
061D B700 sta *__r1
061F F6 lda ,x
0620 95 tsx
0621 B700 sta *__r0
0623 B600 lda *__r1
0625 87 psha
0626 B600 lda *__r0
0628 87 psha
0629 E607 lda 7,X
062B AB02 add #2
062D 87 psha
062E E603 lda 3,X
0630 87 psha
0631 CD03E5 jsr _LcdShGr16P
0634 A704 ais #4
0636 95 tsx
0637 .dbline 259
0637 L72:
0637 .dbline 251
0637 6C03 inc 3,X
0639 L74:
0639 .dbline 251
0639 E603 lda 3,X
063B A120 cmp #32
063D 2403 bhs X12
063F CC050E jmp L71
0642 X12:
0642 .dbline 260
0642 ; LcdShGr16P(Yi,X+2,*(BigNumCodeAdrr+GBit*32+Yi));
0642 ; }
0642 ; Wtite_Command(0b00110000); //基本指令
0642 A630 lda #48
0644 87 psha
0645 CD041B jsr _Wtite_Command
0648 A701 ais #1
064A 95 tsx
064B L68:
064B .dbline 261
064B ; LcdShBigNum_End:;
064B .dbline -2
064B L63:
064B A704 ais #4
064D .dbline 0 ; func end
064D 81 rts
064E .dbsym l GBit 0 c
064E .dbsym l SBit 1 c
064E .dbsym l BBit 2 c
064E .dbsym l Yi 3 c
064E .dbsym l Num 10 i
064E .dbsym l BigNumCodeAdrr 8 pi
064E .dbsym l X 7 c
064E .dbsym l Y 6 c
064E .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -