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

📄 t6963lcd.p96

📁 T6963LCD.rar 80c196kb 的控制程序 调试通过 可以直接用
💻 P96
📖 第 1 页 / 共 2 页
字号:
        DECLARE FS              LITERALLY '30';        /*columns=40/30(FS-->H/L)*/
        DECLARE GRH             LITERALLY '08';        /*GRAPHIC START ADDRESS HIGH BYTE*/

OUT$TEXT$8x16:          PROCEDURE(X,Y,PRT$TEXT,C) PUBLIC;
                        DECLARE (X,Y,C,XX) BYTE ;
                        DECLARE (J,L) BYTE ;
                        DECLARE LC WORD ;
                        DECLARE PRT$TEXT ADDRESS SLOW;
                        DECLARE TEMP ADDRESS SLOW;
                        DECLARE T BASED TEMP BYTE;
                        IF(X<0) THEN X = 0;
                        IF(X>(FS-1)) THEN
                        DO;
                                 Y= Y + X/FS;
                                 X= X MOD FS;
                        END;
                        IF(Y<0) THEN Y = 0;
                        IF(Y>14) THEN Y = Y MOD 15;

                        DO J=0 TO 15;
                                LC=(Y*8+J)*FS+X;
                                CALL SET$ADLH((LC MOD 256),(LC/256+GRH));
                                TEMP=PRT$TEXT+J;
CHIND1:                         IF((P8279$CTRL AND 03H) <> 3)THEN GOTO CHIND1;
                        DO CASE C;
                        P8279$DATA=T;
                        DO;
                        XX=T;
                        TEMP=NOT XX;
                        P8279$DATA=TEMP;
                        END;
                        END;
CHINC:                          IF((P8279$CTRL AND 03H) <> 3)THEN GOTO CHINC;
                                        P8279$CTRL=0C0H;
                        END;
END OUT$TEXT$8x16;
OUT$BIN$BYTE:       PROCEDURE(X,Y,NUM) PUBLIC;
                        DECLARE (X,Y,NUM,I) BYTE SLOW;
                        DO I= 0 TO 7;
                                CALL OUT$TEXT$8x16(X+(7-I),Y,(.NUM0$8 + (NUM MOD 2) * 16),0);
                                NUM=NUM/2;
                        END;
END OUT$BIN$BYTE;

OUT$BYTE:PROCEDURE(X,Y,ZZ) PUBLIC;
        DECLARE (X,Y,ZZ) BYTE;
        DECLARE YY BYTE;
        YY = (ZZ/100) MOD 10;
        CALL    OUT$TEXT8X16(X,Y,.NUM0$8 + YY * 16,0);
        YY = (ZZ/10) MOD 10;
        CALL    OUT$TEXT8X16(X+1,Y,.NUM0$8 + YY * 16,0);
        YY = ZZ MOD  10;
        CALL    OUT$TEXT8X16(X+2,Y,.NUM0$8 + YY * 16,0);


END OUT$BYTE;
OUT$WORD:PROCEDURE(X,Y,ZZ) PUBLIC;
        DECLARE (X,Y,YY) BYTE;
        DECLARE ZZ WORD;
        YY = (ZZ/10000) MOD 10;
        CALL    OUT$TEXT8X16(X,Y,.NUM0$8 + YY * 16,0);
        YY = (ZZ/1000) MOD 10;
        CALL    OUT$TEXT8X16(X+1,Y,.NUM0$8 + YY * 16,0);
        YY = (ZZ/100) MOD  10;
        CALL    OUT$TEXT8X16(X+2,Y,.NUM0$8 + YY * 16,0);
        YY = (ZZ/10) MOD 10;
        CALL    OUT$TEXT8X16(X+3,Y,.NUM0$8 + YY * 16,0);
        YY = ZZ MOD  10;
        CALL    OUT$TEXT8X16(X+4,Y,.NUM0$8 + YY * 16,0);


END OUT$WORD;

OUT$NUM$BIN$BYTE:       PROCEDURE(X,Y,NUM) PUBLIC;
                        DECLARE (X,Y,NUM,I) BYTE SLOW;
                        DO I= 0 TO 7;
                                CALL OUT$TEXT$8x16(X+(7-I),Y,(.NUM0$8 + (NUM MOD 2) * 16),0);
                                NUM=NUM/2;
                        END;
END OUT$NUM$BIN$BYTE;

OUT$NUM$BIN$WORD:       PROCEDURE(X,Y,NUM,J) PUBLIC;
                        DECLARE (X,Y,I,J) BYTE SLOW;
                        DECLARE NUM WORD SLOW;
                        DO I= 0 TO J-1;
                                CALL OUT$TEXT$8x16((X+J-1-I),Y,.NUM0$8 + (NUM MOD 2) * 16,0);
                                NUM=NUM/2;
                        END;
END OUT$NUM$BIN$WORD;
OUT$NUM$DWORD:          PROCEDURE(X,Y,NUM) PUBLIC;
                        DECLARE (X,Y,I,J) BYTE ;
                        DECLARE NUM DWORD ;
                        DECLARE LL WORD ;
                        IF(NUM<=65535) THEN
                        DO;
                                IF(NUM<=255) THEN J=2;ELSE J=4;
                        END;
                        ELSE J=9;
                        DO I= 0 TO J;
                                IF((NUM=0) AND (I<>0))THEN
                                        LL=.SPACE$16;
                                ELSE
                                        LL= .NUM0$8 + (NUM MOD 10) * 16;
                                CALL OUT$TEXT$8x16(X+(J-I),Y,LL,0);
                                NUM=NUM/10;
                        END;
END OUT$NUM$DWORD;
OUT$NUM$LONGINT:        PROCEDURE(X,Y,NUM) PUBLIC;
                        DECLARE (J,X,Y,I,FLAG) BYTE SLOW;
                        DECLARE NUM LONGINT SLOW;
                        DECLARE TEMP DWORD SLOW;
                        DECLARE LL WORD SLOW;
                        IF(NUM>=-32768 AND NUM<=32767) THEN
                        DO;
                                IF(NUM>=-128 AND NUM<=127) THEN J=3;ELSE J=5;
                        END;
                        ELSE J=10;
                        TEMP=UNSIGN(IABS(NUM));
                        FLAG=0;
                        DO I= 0 TO J;
                                IF((TEMP=0) AND (I<>0))THEN
                                        IF((FLAG=0) AND (NUM<0)) THEN
                                        DO;
                                                LL=.NUM0$8;
                                                FLAG=1;
                                        END;
                                        ELSE
                                                LL=.SPACE$16;
                                ELSE
                                        LL= .NUM0$8 + (TEMP MOD 10) * 16;
                                CALL OUT$TEXT$8x16(X+(J-I),Y,LL,0);
                                TEMP=TEMP/10;
                        END;
END OUT$NUM$LONGINT;

OUT$TEXT$8x8:           PROCEDURE(X,Y,PRT$TEXT,C) PUBLIC;
                        DECLARE (X,Y,C,XX) BYTE SLOW;
                        DECLARE (J,L) 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-1)) THEN
                        DO;
                                 Y= Y + X/FS;
                                 X= X MOD FS;
                        END;
                        IF(Y<0) THEN Y = 0;
                        IF(Y>14) THEN Y = Y MOD 15;
*/
                        DO J=0 TO 7;
                                LC=(Y*8+J)*FS+X;
                                CALL SET$ADLH((LC MOD 256),(LC/256+GRH));
                                TEMP=PRT$TEXT+J;
CHIND1:                         IF((P8279$CTRL AND 03H) <> 3)THEN GOTO CHIND1;
                        DO CASE C;
                        P8279$DATA=T;
                        DO;
                        XX=T;
                        TEMP=NOT XX;
                        P8279$DATA=TEMP;
                        END;
                        END;
CHINC:                          IF((P8279$CTRL AND 03H) <> 3)THEN GOTO CHINC;
                                        P8279$CTRL=0C0H;
                        END;
END OUT$TEXT$8x8;
INITWSLCD:      PROCEDURE PUBLIC;
C1:             IF((P8279$CTRL AND 03H) <> 3)THEN GOTO C1;
                        P8279$CTRL=80H;/*字符 OR 图形*/
C2D1:           IF((P8279$CTRL AND 03H) <> 3)THEN GOTO C2D1;
                        P8279$DATA=0;
C2D2:           IF((P8279$CTRL AND 03H) <> 3)THEN GOTO C2D2;
                        P8279$DATA=0;
C2:             IF((P8279$CTRL AND 03H) <> 3)THEN GOTO C2;
                        P8279$CTRL=40H;/*字符 START SETUP*/
C3D1:           IF((P8279$CTRL AND 03H) <> 3)THEN GOTO C3D1;
                        P8279$DATA=FS;
C3D2:           IF((P8279$CTRL AND 03H) <> 3)THEN GOTO C3D2;
                        P8279$DATA=0;
C3:             IF((P8279$CTRL AND 03H) <> 3)THEN GOTO C3;
                        P8279$CTRL=41H;/*COLUMNS SETUP*/
C4D1:           IF((P8279$CTRL AND 03H) <> 3)THEN GOTO C4D1;
                        P8279$DATA=0;
C4D2:           IF((P8279$CTRL AND 03H) <> 3)THEN GOTO C4D2;
                        P8279$DATA=GRH;
C4:             IF((P8279$CTRL AND 03H) <> 3)THEN GOTO C4;
                        P8279$CTRL=42H;/*图形 START  SETUP*/
C5D1:           IF((P8279$CTRL AND 03H) <> 3)THEN GOTO C5D1;
                        P8279$DATA=FS;
C5D2:           IF((P8279$CTRL AND 03H) <> 3)THEN GOTO C5D2;
                        P8279$DATA=0H;
C5:             IF((P8279$CTRL AND 03H) <> 3)THEN GOTO C5;
                        P8279$CTRL=43H;/*图形区域 SETUP*/
C6:             IF((P8279$CTRL AND 03H) <> 3)THEN GOTO C6;
                        P8279$CTRL=9FH;/*图形 START SETUP*/
                CALL CLS$LCD$TEXT;
                CALL CLS$LCD$GRAPHIC;
END INITWSLCD;
CLS$LCD$TEXT:           PROCEDURE PUBLIC;
                        DECLARE I WORD SLOW;
                        CALL SET$ADLH(0,0);
                        CALL AUTO$WR$START;
                        DO I=1 TO FS*16;
CLSD:                           IF((P8279$CTRL AND 08H) <> 8)THEN GOTO CLSD;
                                        P8279$DATA=0;
                        END;
                        CALL AUTO$EXIT;
END CLS$LCD$TEXT;
SET$ADLH:       PROCEDURE(LOW,HIGH) PUBLIC;
                DECLARE (LOW,HIGH) BYTE SLOW;
SC1D1:          IF((P8279$CTRL AND 03H) <> 3)THEN GOTO SC1D1;
                        P8279$DATA=LOW;
SC1D2:          IF((P8279$CTRL AND 03H) <> 3)THEN GOTO SC1D2;
                        P8279$DATA=HIGH;
SC1:            IF((P8279$CTRL AND 03H) <> 3)THEN GOTO SC1;
                        P8279$CTRL=024H;
END SET$ADLH;
AUTO$WR$START:          PROCEDURE PUBLIC;
AWST:                   IF((P8279$CTRL AND 03H) <> 3)THEN GOTO AWST;
                                P8279$CTRL=0B0H;
END AUTO$WR$START;
AUTO$READ$START:        PROCEDURE PUBLIC;
ARST:                   IF((P8279$CTRL AND 03H) <> 3)THEN GOTO ARST;
                                P8279$CTRL=0B1H;
END AUTO$READ$START;
AUTO$EXIT:              PROCEDURE PUBLIC;
AEX:                    IF((P8279$CTRL AND 03H) <> 3)THEN GOTO AEX;
                                P8279$CTRL=0B2H;
END AUTO$EXIT;
CLS$LCD$GRAPHIC:        PROCEDURE PUBLIC;
                        DECLARE (I,J) WORD SLOW;
                        CALL SET$ADLH(0,GRH);
                        CALL AUTO$WR$START;
                        DO J=1 TO 8;
                        DO I=1 TO FS*16;
CLSG:                           IF((P8279$CTRL AND 08H) <> 8)THEN GOTO CLSG;
                                P8279$DATA=0H;
                        END;
                        END;
                        CALL AUTO$EXIT;
END CLS$LCD$GRAPHIC;
CLRCURSOR: PROCEDURE PUBLIC;
        CALL  CURSOR(40);
        CALL  OPEN$LCD(9CH);
END CLRCURSOR;
CURSOR: PROCEDURE (X) PUBLIC;
        DECLARE (X) BYTE SLOW;
        CALL    CURSOR$AD(1+(X MOD 5)*6,4+(X/5)*2+1);
        CALL    OPEN$LCD(9FH);
        CALL    CURSOR$LINE(08H);

⌨️ 快捷键说明

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