⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 t6963lcd.p96

📁 T6963LCD.rar 80c196kb 的控制程序 调试通过 可以直接用
💻 P96
📖 第 1 页 / 共 2 页
字号:
END CURSOR;
CURSOR$AD:              PROCEDURE(LOW,HIGH) PUBLIC;
                        DECLARE (LOW,HIGH) BYTE SLOW;
COAD1:                  IF((P8279$CTRL AND 03H) <> 3)THEN GOTO COAD1;
                        P8279$DATA=LOW;
COAD2:                  IF((P8279$CTRL AND 03H) <> 3)THEN GOTO COAD2;
                        P8279$DATA=HIGH;
COA:                    IF((P8279$CTRL AND 03H) <> 3)THEN GOTO COA;
                        P8279$CTRL=021H;
END CURSOR$AD;
CLOSE$LCD:      PROCEDURE PUBLIC;
CLC:            IF((P8279$CTRL AND 03H) <> 3)THEN GOTO CLC;
                        P8279$CTRL=90H;
END CLOSE$LCD;
OPEN$LCD:       PROCEDURE(DAT) PUBLIC;
                DECLARE DAT BYTE SLOW;
OPC:            IF((P8279$CTRL AND 03H) <> 3)THEN GOTO OPC;
                        P8279$CTRL=DAT;
                /*DAT=1001abcdB;
                a=0/1: GRAPHIC off/on
                b=0/1: TEXT    off/on
                c=0/1: CURSOR  off/on
                d=0/1: BLINK   off/on
                  */
END OPEN$LCD;
CURSOR$LINE:    PROCEDURE(DAT) PUBLIC;
                DECLARE DAT BYTE SLOW;
                IF( DAT > 8 ) THEN DAT=8;
COUC:           IF((P8279$CTRL AND 03H) <> 3)THEN GOTO COUC;
                        P8279$CTRL=DAT-1+0A0H;
                /*DAT=1--8;LINE OF COUSOR */
END CURSOR$LINE;
OUT$PLIN:               PROCEDURE(X1,Y1,X2,Y2,C) PUBLIC;
                        DECLARE (X1,Y1,X2,Y2,C) BYTE SLOW;
                        CALL OUT$LINE(X1,Y1,X1,Y2,C);
                        CALL OUT$LINE(X1,Y1,X2,Y1,C);
                        CALL OUT$LINE(X2,Y1,X2,Y2,C);
                        CALL OUT$LINE(X1,Y2,X2,Y2,C);
END OUT$PLIN;
OUT$LINE:               PROCEDURE(X1,Y1,X2,Y2,C) PUBLIC;
                        DECLARE (X1,Y1,X2,Y2,C) BYTE SLOW;
                        DECLARE (I,K,DX,DY) BYTE SLOW;
                        IF(X1>239) THEN X1=239;
                        IF(Y1>127) THEN Y1 = 127;
                        IF(X2>239) THEN X2=239 ;
                        IF(Y2>127) THEN Y2 = 127;
                        IF(X1>X2)  THEN
                        DO;
                                I=X2;X2=X1;X1=I;
                                I=Y2;Y2=Y1;Y1=I;
                        END;
                        IF(Y2>Y1) THEN DY=Y2-Y1;ELSE DY=Y1-Y2;
                        DX=X2-X1;
                        IF(DX=0) THEN
                        DO;
                                IF(Y1>Y2)  THEN
                                DO;
                                        I=Y2;Y2=Y1;Y1=I;
                                END;
                                DO I= Y1 TO Y2;
                                        CALL OUT$POINT(X1,I,C);
                                END;
                                RETURN;
                        END;
                        IF(DY=0) THEN
                        DO;
                                DO I= X1 TO X2;
                                        CALL OUT$POINT(I,Y1,C);
                                END;
                                RETURN;
                        END;
                        IF(DX<DY)THEN
                        DO;
                                DO I=0 TO DY;
                                        IF(Y1<Y2)THEN K=Y1+I;ELSE K=Y1-I;
                                        CALL OUT$POINT((DOUBLE(I)*DOUBLE(DX))/DOUBLE(DY)+X1,K,C);
                                END;
                                RETURN;
                        END;
                        DO I=0 TO DX;
                                K=(DOUBLE(I)*DOUBLE(DY))/DOUBLE(DX);
                                IF(Y1<Y2)THEN K=Y1+K;ELSE K=Y1-K;
                                CALL OUT$POINT(X1+I,K,C);
                        END;
END OUT$LINE;
OUT$POINT:              PROCEDURE(X,Y,C) PUBLIC;
                        DECLARE (X,Y,C) BYTE SLOW;
                        DECLARE (D) WORD FAST;
                        IF(X>239) THEN X=239;
                        IF(Y>127) THEN Y = 127;
                        D=Y*FS+X/8;
                        CALL SET$ADLH((D MOD 256),(D/256+GRH));
                        IF(C>0) THEN C=0F8H;ELSE C=0F0H;
POINTC:                 IF((P8279$CTRL AND 03H) <> 3)THEN GOTO POINTC;
                                P8279$CTRL=(7-(X MOD 8))+C;
END OUT$POINT;
CLR$CHINA$CHUAN: PROCEDURE(X,Y,Z) PUBLIC;
        DECLARE (X,Y,Z,I) BYTE SLOW;
        DO I=0 TO Z ;
        CALL OUT$CHINA(16,X+I*2,Y,.SPACE16);
        END;
END CLR$CHINA$CHUAN;
OUT$CHINA$CHUAN2: PROCEDURE(X,Y,H1,H2) PUBLIC;
        DECLARE (X,Y) BYTE SLOW;
        DECLARE (H1,H2) WORD SLOW;
        CALL OUT$CHINA(16,X,Y,H1);
        CALL OUT$CHINA(16,X+2,Y,H2);
END OUT$CHINA$CHUAN2;
OUT$CHINA$CHUAN3: PROCEDURE(X,Y,H1,H2,H3) PUBLIC;
        DECLARE (X,Y) BYTE SLOW;
        DECLARE (H1,H2,H3) WORD SLOW;
        CALL OUT$CHINA(16,X,Y,H1);
        CALL OUT$CHINA(16,X+2,Y,H2);
        CALL OUT$CHINA(16,X+4,Y,H3);
END OUT$CHINA$CHUAN3;
OUT$CHINA$CHUAN4: PROCEDURE(X,Y,H1,H2,H3,H4) PUBLIC;
        DECLARE (X,Y) BYTE SLOW;
        DECLARE (H1,H2,H3,H4) WORD SLOW;
        CALL OUT$CHINA(16,X,Y,H1);
        CALL OUT$CHINA(16,X+2,Y,H2);
        CALL OUT$CHINA(16,X+4,Y,H3);
        CALL OUT$CHINA(16,X+6,Y,H4);
END OUT$CHINA$CHUAN4;
OUT$CHINA$CHUAN5: PROCEDURE(X,Y,H1,H2,H3,H4,H5) PUBLIC;
        DECLARE (X,Y) BYTE SLOW;
        DECLARE (H1,H2,H3,H4,H5) WORD SLOW;
        CALL OUT$CHINA(16,X,Y,H1);
        CALL OUT$CHINA(16,X+2,Y,H2);
        CALL OUT$CHINA(16,X+4,Y,H3);
        CALL OUT$CHINA(16,X+6,Y,H4);
        CALL OUT$CHINA(16,X+8,Y,H5);
END OUT$CHINA$CHUAN5;
OUT$CHINA$CHUAN6: PROCEDURE(X,Y,H1,H2,H3,H4,H5,H6) PUBLIC;
        DECLARE (X,Y) BYTE SLOW;
        DECLARE (H1,H2,H3,H4,H5,H6) WORD SLOW;
        CALL OUT$CHINA(16,X,Y,H1);
        CALL OUT$CHINA(16,X+2,Y,H2);
        CALL OUT$CHINA(16,X+4,Y,H3);
        CALL OUT$CHINA(16,X+6,Y,H4);
        CALL OUT$CHINA(16,X+8,Y,H5);
        CALL OUT$CHINA(16,X+10,Y,H6);
END OUT$CHINA$CHUAN6;
OUT$CHINA$CHUAN7: PROCEDURE(X,Y,H1,H2,H3,H4,H5,H6,H7) PUBLIC;
        DECLARE (X,Y) BYTE SLOW;
        DECLARE (H1,H2,H3,H4,H5,H6,H7) WORD SLOW;
        CALL OUT$CHINA(16,X,Y,H1);
        CALL OUT$CHINA(16,X+2,Y,H2);
        CALL OUT$CHINA(16,X+4,Y,H3);
        CALL OUT$CHINA(16,X+6,Y,H4);
        CALL OUT$CHINA(16,X+8,Y,H5);
        CALL OUT$CHINA(16,X+10,Y,H6);
        CALL OUT$CHINA(16,X+12,Y,H7);
END OUT$CHINA$CHUAN7;
OUT$CHINA$CHUAN8: PROCEDURE(X,Y,H1,H2,H3,H4,H5,H6,H7,h8) PUBLIC;
        DECLARE (X,Y) BYTE SLOW;
        DECLARE (H1,H2,H3,H4,H5,H6,H7,h8) WORD SLOW;
        CALL OUT$CHINA(16,X,Y,H1);
        CALL OUT$CHINA(16,X+2,Y,H2);
        CALL OUT$CHINA(16,X+4,Y,H3);
        CALL OUT$CHINA(16,X+6,Y,H4);
        CALL OUT$CHINA(16,X+8,Y,H5);
        CALL OUT$CHINA(16,X+10,Y,H6);
        CALL OUT$CHINA(16,X+12,Y,H7);
        CALL OUT$CHINA(16,X+14,Y,H8);
END OUT$CHINA$CHUAN8;
OUT$CHINA:              PROCEDURE(dot,X,Y,PRT$TEXT) PUBLIC;
                        DECLARE (dot,X,Y) BYTE SLOW;
                        DECLARE (I,J) BYTE SLOW;
                        DECLARE LC WORD SLOW;
                        DECLARE PRT$TEXT ADDRESS SLOW;
                        DECLARE TEMP ADDRESS SLOW;
                        DECLARE T BASED TEMP BYTE;
                        IF(X<0) THEN X = 0;
                        IF(X>(FS-dot/8)) THEN
                        DO;
                                Y= Y + X/(FS-dot/8+1);
                                X= X MOD (FS-dot/8+1);
                         END;
                        IF(Y<0) THEN Y = 0;
                        IF(Y>(16-dot/8)) THEN Y = Y MOD (17-dot/8);
                        DO J=0 TO dot-1;
                        DO I=0 TO dot/8-1;
                                LC=(Y*8+J)*FS+X+I;
                                CALL SET$ADLH((LC MOD 256),(LC/256+GRH));
                                TEMP=PRT$TEXT+I*16+J;
CHIND1:                         IF((P8279$CTRL AND 03H) <> 3)THEN GOTO CHIND1;
                                        P8279$DATA=T;
CHINC:                          IF((P8279$CTRL AND 03H) <> 3)THEN GOTO CHINC;
                                        P8279$CTRL=0C0H;
                        END;
                        END;
END OUT$CHINA;

OUT$PIC:              PROCEDURE(dot,X,Y,PRT$TEXT) PUBLIC;
                        DECLARE (dot,X,Y) BYTE SLOW;
                        DECLARE (I,J) BYTE SLOW;
                        DECLARE LC WORD SLOW;
                        DECLARE PRT$TEXT ADDRESS SLOW;
                        DECLARE TEMP ADDRESS SLOW;
                        DECLARE T BASED TEMP BYTE;
/*                        IF(X<0) THEN X = 0;
                        IF(X>(FS-dot/8)) THEN
                        DO;
                                Y= Y + X/(FS-dot/8+1);
                                X= X MOD (FS-dot/8+1);
                         END;
                        IF(Y<0) THEN Y = 0;
                        IF(Y>(16-dot/8)) THEN Y = Y MOD (17-dot/8);
*/
                        DO J=0 TO dot-1;
                        DO I=0 TO 29;
                                LC=(Y*8+J)*FS+X+I;
                                CALL SET$ADLH((LC MOD 256),(LC/256+GRH));
                                TEMP=PRT$TEXT+J*30+I;
CHIND1:                         IF((P8279$CTRL AND 03H) <> 3)THEN GOTO CHIND1;
                                        P8279$DATA=T;
CHINC:                          IF((P8279$CTRL AND 03H) <> 3)THEN GOTO CHINC;
                                        P8279$CTRL=0C0H;
                        END;
                        END;
END OUT$PIC;

OUT$BMP:   PROCEDURE(X,Y,DX,DY,ADDR) PUBLIC;
/*
NOTE:      X:   CURSOR ADDRESS,COLUMN (BYTE)
           Y:   CURSOR ADDRESS,ROW (DOT LINE)
           DX:  BMP COLUMNS (BYTE)
           DY:  BMP ROWS (DOT LINE)
           ADDR:THE FIRST ADDRESS OF BMP
           LCD USE THE FIRST GRAPH SCREEN
*/
           DECLARE (X,Y,DX,DY) BYTE SLOW;
           DECLARE (I,J) BYTE SLOW;
           DECLARE LC WORD SLOW;
           DECLARE ADDR ADDRESS SLOW;
           DECLARE TEMP ADDRESS SLOW;
           DECLARE T BASED TEMP BYTE;

           DO J=0 TO DY-1;
                   DO I=0 TO DX-1;
                           LC=(Y+J)*FS+X+I;
                           CALL SET$ADLH((LC MOD 256),(LC/256+GRH));
                           TEMP=ADDR+J*DX+I;
CHIND1:                    IF((P8279$CTRL AND 03H) <> 3)THEN GOTO CHIND1;
                           P8279$DATA=T;
CHINC:                     IF((P8279$CTRL AND 03H) <> 3)THEN GOTO CHINC;
                           P8279$CTRL=0C0H;
                   END;
           END;
END OUT$BMP;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -