📄 lcd.lis
字号:
0451 95 tsx
0452 .dbline -2
0452 L57:
0452 .dbline 0 ; func end
0452 81 rts
0453 .dbsym l data 2 c
0453 .dbend
0453 .dbfunc e DelayTimes _DelayTimes fV
0453 ; i -> 0,X
0453 ; tn -> 4,X
0453 _DelayTimes::
0453 .dbline -1
0453 A7FE ais #-2
0455 95 tsx
0456 .dbline 228
0456 ; }
0456 ;
0456 ; /*DelayTimes:延时指定时间--------------------------------------------------*
0456 ; *功 能:延时指定的时间 *
0456 ; *入 口:tn为延时时间数(0到65535) *
0456 ; *出 口:无 *
0456 ; *-------------------------------------------------------------------------*/
0456 ; void DelayTimes(INT16U tn)
0456 ; {
0456 .dbline 230
0456 6F01 clr 1,X
0458 7F clr ,X
0459 200A bra L62
045B L59:
045B .dbline 230
045B L60:
045B .dbline 230
045B E601 lda 1,X
045D AB01 add #1
045F E701 sta 1,X
0461 F6 lda ,X
0462 A900 adc #0
0464 F7 sta ,X
0465 L62:
0465 .dbline 230
0465 ; INT16U i; //循环变量
0465 ; for(i=0;i<tn;i++);
0465 E605 lda 5,X
0467 B700 sta *__r1
0469 E604 lda 4,X
046B B700 sta *__r0
046D E601 lda 1,X
046F B700 sta *__r3
0471 F6 lda ,X
0472 B700 sta *__r2
0474 5500 ldhx *__r2
0476 7500 cphx *__r0
0478 95 tsx
0479 25E0 blo L59
047B .dbline -2
047B L58:
047B A702 ais #2
047D .dbline 0 ; func end
047D 81 rts
047E .dbsym l i 0 i
047E .dbsym l tn 4 i
047E .dbend
047E .dbfunc e LcdShBigNum _LcdShBigNum fV
047E ; GBit -> 0,X
047E ; BBit -> 1,X
047E ; SBit -> 2,X
047E ; Yi -> 3,X
047E ; Num -> 10,X
047E ; BigNumCodeAdrr -> 8,X
047E ; X -> 7,X
047E ; Y -> 6,X
047E _LcdShBigNum::
047E .dbline -1
047E A7FC ais #-4
0480 95 tsx
0481 .dbline 243
0481 ; }
0481 ;
0481 ; //其他特殊功能函数
0481 ; /*LcdShBigNum:在Lcd上显示自定义32*16点阵的数字(0--999)---------------------*
0481 ; *功 能:在Lcd上显示自定义32*16点阵的数字(0--999) *
0481 ; *参 数:X表示Lcd上显示字符的横坐标(0--5),Y为显示字符的纵坐标(0--1) *
0481 ; * BigNumCodeAdrr为32*16点阵数字编码首地址,Num为当前的数据值(0--999) *
0481 ; *返 回:无 *
0481 ; *内部调用:LcdShGr16P:在Lcd指定位置上设置线型16个点的显示 *
0481 ; * Wtite_Command:执行参数中的给定命令 *
0481 ; *-------------------------------------------------------------------------*/
0481 ; void LcdShBigNum(INT8U Y,INT8U X,INT16U * BigNumCodeAdrr,INT16U Num)
0481 ; {
0481 .dbline 246
0481 E606 lda 6,X
0483 A101 cmp #1
0485 2216 bhi L67
0487 E607 lda 7,X
0489 A105 cmp #5
048B 2210 bhi L67
048D E60B lda 11,X
048F B700 sta *__r1
0491 E60A lda 10,X
0493 B700 sta *__r0
0495 5500 ldhx *__r0
0497 6503E7 cphx #999
049A 95 tsx
049B 2303 bls L64
049D L67:
049D .dbline 246
049D ; INT8U GBit,SBit,BBit; //存放个位,十位,百位数据
049D ; INT8U Yi; //Y坐标方向的循环控制变量
049D ; if(Y>1||X>5||Num>999) goto LcdShBigNum_End; //参数值范围检测
049D CC061B jmp L68
04A0 L64:
04A0 .dbline 247
04A0 ; GBit=Num%10; BBit=Num/100; SBit=(Num%100)/10;
04A0 E60B lda 11,X
04A2 B700 sta *__rlo
04A4 E60A lda 10,X
04A6 B700 sta *__rhi
04A8 A60A lda #10
04AA 87 psha
04AB 4F clra
04AC 87 psha
04AD CD0000 jsr __divmod16u
04B0 86 pula
04B1 86 pula
04B2 F7 sta ,X
04B3 .dbline 247
04B3 E60B lda 11,X
04B5 B700 sta *__rlo
04B7 E60A lda 10,X
04B9 B700 sta *__rhi
04BB A664 lda #100
04BD 87 psha
04BE 4F clra
04BF 87 psha
04C0 CD0000 jsr __divmod16u
04C3 A702 ais #2
04C5 4E0000 mov *__rlo,*__r1
04C8 B600 lda *__r1
04CA E701 sta 1,X
04CC .dbline 247
04CC E60B lda 11,X
04CE B700 sta *__rlo
04D0 E60A lda 10,X
04D2 B700 sta *__rhi
04D4 A664 lda #100
04D6 87 psha
04D7 4F clra
04D8 87 psha
04D9 CD0000 jsr __divmod16u
04DC 86 pula
04DD B700 sta *__r0
04DF 86 pula
04E0 B700 sta *__rlo
04E2 4E0000 mov *__r0,*__rhi
04E5 A60A lda #10
04E7 87 psha
04E8 4F clra
04E9 87 psha
04EA CD0000 jsr __divmod16u
04ED A702 ais #2
04EF 4E0000 mov *__rlo,*__r1
04F2 B600 lda *__r1
04F4 E702 sta 2,X
04F6 .dbline 248
04F6 ; Wtite_Command(0b00110110); //扩展指令,绘图开
04F6 A636 lda #54
04F8 87 psha
04F9 CD041D jsr _Wtite_Command
04FC A701 ais #1
04FE 95 tsx
04FF .dbline 249
04FF ; if(Y==1) X+=8; //参数调整
04FF E606 lda 6,X
0501 A101 cmp #1
0503 2606 bne L69
0505 .dbline 249
0505 E607 lda 7,X
0507 AB08 add #8
0509 E707 sta 7,X
050B L69:
050B .dbline 250
050B ; for(Yi=0;Yi<32;Yi++)
050B 6F03 clr 3,X
050D CC0609 jmp L74
0510 L71:
0510 .dbline 251
0510 ; {
0510 .dbline 252
0510 ; if(BBit!=0) LcdShGr16P(Yi,X,*(BigNumCodeAdrr+BBit*32+Yi));
0510 E601 lda 1,X
0512 274E beq L75
0514 .dbline 252
0514 3F00 clr *__r0
0516 B700 sta *__r1
0518 A605 lda #5
051A X9:
051A 3800 lsl *__r1
051C 3900 rol *__r0
051E 4BFA dbnza X9
0520 3800 lsl *__r1
0522 3900 rol *__r0
0524 B600 lda *__r1
0526 EB09 add 9,X
0528 B700 sta *__r1
052A B600 lda *__r0
052C E908 adc 8,X
052E B700 sta *__r0
0530 3F00 clr *__r2
0532 E603 lda 3,X
0534 B700 sta *__r3
0536 3800 lsl *__r3
0538 3900 rol *__r2
053A B600 lda *__r3
053C BB00 add *__r1
053E B700 sta *__r1
0540 B600 lda *__r2
0542 B900 adc *__r0
0544 B700 sta *__r0
0546 5500 ldhx *__r0
0548 E601 lda 1,x
054A B700 sta *__r1
054C F6 lda ,x
054D 95 tsx
054E B700 sta *__r0
0550 B600 lda *__r1
0552 87 psha
0553 B600 lda *__r0
0555 87 psha
0556 E607 lda 7,X
0558 87 psha
0559 E603 lda 3,X
055B 87 psha
055C CD03E7 jsr _LcdShGr16P
055F A704 ais #4
0561 95 tsx
0562 L75:
0562 .dbline 253
0562 ; if(SBit!=0) LcdShGr16P(Yi,X+1,*(BigNumCodeAdrr+SBit*32+Yi));
0562 E602 lda 2,X
0564 2750 beq L77
0566 .dbline 253
0566 3F00 clr *__r0
0568 B700 sta *__r1
056A A605 lda #5
056C X10:
056C 3800 lsl *__r1
056E 3900 rol *__r0
0570 4BFA dbnza X10
0572 3800 lsl *__r1
0574 3900 rol *__r0
0576 B600 lda *__r1
0578 EB09 add 9,X
057A B700 sta *__r1
057C B600 lda *__r0
057E E908 adc 8,X
0580 B700 sta *__r0
0582 3F00 clr *__r2
0584 E603 lda 3,X
0586 B700 sta *__r3
0588 3800 lsl *__r3
058A 3900 rol *__r2
058C B600 lda *__r3
058E BB00 add *__r1
0590 B700 sta *__r1
0592 B600 lda *__r2
0594 B900 adc *__r0
0596 B700 sta *__r0
0598 5500 ldhx *__r0
059A E601 lda 1,x
059C B700 sta *__r1
059E F6 lda ,x
059F 95 tsx
05A0 B700 sta *__r0
05A2 B600 lda *__r1
05A4 87 psha
05A5 B600 lda *__r0
05A7 87 psha
05A8 E607 lda 7,X
05AA AB01 add #1
05AC 87 psha
05AD E603 lda 3,X
05AF 87 psha
05B0 CD03E7 jsr _LcdShGr16P
05B3 A704 ais #4
05B5 95 tsx
05B6 L77:
05B6 .dbline 254
05B6 3F00 clr *__r0
05B8 F6 lda ,X
05B9 B700 sta *__r1
05BB A605 lda #5
05BD X11:
05BD 3800 lsl *__r1
05BF 3900 rol *__r0
05C1 4BFA dbnza X11
05C3 3800 lsl *__r1
05C5 3900 rol *__r0
05C7 B600 lda *__r1
05C9 EB09 add 9,X
05CB B700 sta *__r1
05CD B600 lda *__r0
05CF E908 adc 8,X
05D1 B700 sta *__r0
05D3 3F00 clr *__r2
05D5 E603 lda 3,X
05D7 B700 sta *__r3
05D9 3800 lsl *__r3
05DB 3900 rol *__r2
05DD B600 lda *__r3
05DF BB00 add *__r1
05E1 B700 sta *__r1
05E3 B600 lda *__r2
05E5 B900 adc *__r0
05E7 B700 sta *__r0
05E9 5500 ldhx *__r0
05EB E601 lda 1,x
05ED B700 sta *__r1
05EF F6 lda ,x
05F0 95 tsx
05F1 B700 sta *__r0
05F3 B600 lda *__r1
05F5 87 psha
05F6 B600 lda *__r0
05F8 87 psha
05F9 E607 lda 7,X
05FB AB02 add #2
05FD 87 psha
05FE E603 lda 3,X
0600 87 psha
0601 CD03E7 jsr _LcdShGr16P
0604 A704 ais #4
0606 95 tsx
0607 .dbline 255
0607 L72:
0607 .dbline 250
0607 6C03 inc 3,X
0609 L74:
0609 .dbline 250
0609 E603 lda 3,X
060B A120 cmp #32
060D 2403 bhs X12
060F CC0510 jmp L71
0612 X12:
0612 .dbline 256
0612 ; LcdShGr16P(Yi,X+2,*(BigNumCodeAdrr+GBit*32+Yi));
0612 ; }
0612 ; Wtite_Command(0b00110000); //基本指令
0612 A630 lda #48
0614 87 psha
0615 CD041D jsr _Wtite_Command
0618 A701 ais #1
061A 95 tsx
061B L68:
061B .dbline 257
061B ; LcdShBigNum_End:;
061B .dbline -2
061B L63:
061B A704 ais #4
061D .dbline 0 ; func end
061D 81 rts
061E .dbsym l GBit 0 c
061E .dbsym l BBit 1 c
061E .dbsym l SBit 2 c
061E .dbsym l Yi 3 c
061E .dbsym l Num 10 i
061E .dbsym l BigNumCodeAdrr 8 pi
061E .dbsym l X 7 c
061E .dbsym l Y 6 c
061E .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -