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

📄 ks107.lst

📁 Source code for driver KS107 (LCD display with resolution 128x64 pixels). Files are in assembler and
💻 LST
📖 第 1 页 / 共 3 页
字号:


PC - 8051 ASSEMBLER, V1.1                 24.07.2005/09:38:40   PAGE   1


  LOC  OBJ          LINE          SOURCE STATEMENT

                     1    ; ---------------------------------------------------------------------------------------
                     2    ; - Suported library for LCD graphic display with driver KS107. This is fast way to     -
                     3    ; - paint image and write our text to graphic display. Use application Image Converter  -
                     4    ; - for convert image in *.BMP format to three code compress array type(None,Zero,Full).-
                     5    ; -                                                                                     -
                     6    ; -           You can download Image Converter V1.1 from www.imfsoft.com                -
                     7    ; -                                                                                     -
                     8    ; ---------------------------------------------------------------------------------------
                     9    
                    10    
                    11    PUBLIC DISP_ROW,DISP_COL
                    12    PUBLIC DISP_CLEAR,DISP_ON,DISP_OFF,DISP_INIT
                    13    PUBLIC DISP_ICON,DISP_TEXT,DISP_WRITE
                    14    EXTRN BIT(RS,E,CS1,CS2,RESET)
                    15    EXTRN NUMBER(M)
                    16    
  0050              17    Time_Delay EQU 80       ; Time delay +-40us (T89C51 24MHz)
                    18    
                    19    mdata SEGMENT DATA
----                20    rseg mdata
                    21    
0000                22    DISP_ROW: DS    1       ; Position in ROW <0..63>
0001                23    DISP_COL: DS    1       ; Position in COLUMN <0..127>
0002                24    DISP_ACT: DS    1       ; Actualy position in COLUMN    
                    25    
                    26    mprog SEGMENT CODE
----                27    rseg mprog
                    28      
                    29    ; ****************************************
                    30    ; Routines for graphic display
                    31    ; ****************************************
                    32    ; ----------------------------------------
                    33    ; Inicialization routine
                    34    ; ----------------------------------------
                    35    DISP_INIT:              
0000 C200     F     36            CLR     RESET
0002 C200     F     37            CLR     CS1
0004 C200     F     38            CLR     CS2
0006 C200     F     39            CLR     RS
0008 D200     F     40            SETB    RESET                           
000A 120000   F     41            CALL    DISP_OFF
000D 120000   F     42            CALL    DISP_ON
0010 120000   F     43            CALL    DISP_CLEAR
0013 22             44            RET
                    45    
                    46    ; ----------------------------------------
                    47    ; Convert DISP_ROW from <0..63> to <0..7>
                    48    ; ----------------------------------------
                    49    DISP_ROW_CONV:
0014 C0F0           50            PUSH    B


PC - 8051 ASSEMBLER, V1.1                 24.07.2005/09:38:40   PAGE   2


  LOC  OBJ          LINE          SOURCE STATEMENT

0016 C0E0           51            PUSH    Acc
0018 E500     F     52            MOV     A,DISP_ROW
001A 75F008         53            MOV     B,#8
001D 84             54            DIV     AB
001E F500     F     55            MOV     DISP_ROW,A
0020 D0E0           56            POP     Acc
0022 D0F0           57            POP     B
0024 22             58            RET
                    59    
                    60    ; ----------------------------------------
                    61    ; Routine for writing text in ASCII code at screen
                    62    ; In: R0 ........ Pointer to Array with text
                    63    ;     A ......... Length text 
                    64    ;     B ......... Height text <0..1>    
                    65    ;     DISP_ROW .. Position in ROW <0..63>
                    66    ;     DISP_COL .. Position in COLUMN <0..127>
                    67    ; -----------------------------------------
                    68    DISP_TEXT:
0025 C000     F     69            PUSH    DISP_ROW
0027 C000     F     70            PUSH    M
0029 C000     F     71            PUSH    M+1
002B C000     F     72            PUSH    M+2
002D C0F0           73            PUSH    B
002F C0E0           74            PUSH    Acc             
0031 C0D0           75            PUSH    PSW             ; Uses bit F0 from PSW (users programable)
                    76    
0033 120000   F     77            CALL    DISP_ROW_CONV   ; Convert DISP_ROW from <0..63> to <0..7>
                    78    
0036 F500     F     79            MOV     M,A             ; Save length text
0038 53F001         80            ANL     B,#1            ; Reduce height at 1    
003B 85F000   F     81            MOV     M+1,B           ; Save height text
003E 0500     F     82            INC     M+1     
0040 E5F0           83            MOV     A,B             ; F0 is PSW.5 bit (users programable)
0042 A2E0           84            MOV     C,Acc.0         ; F0=Log0 -> Small Text 
0044 92D5           85            MOV     F0,C            ; F0=Log1 -> Large Text         
                    86    DISP_T1:
0046 850000   F     87            MOV     DISP_ACT,DISP_COL
0049 8800     F     88            MOV     M+2,R0          ; Save Pointer to text Array @R0
004B C000     F     89            PUSH    M               ; Save length text only for Large Text
                    90    DISP_T2:
004D C3             91            CLR     C
004E 900000   F     92            MOV     DPTR,#TabASCII
0051 E6             93            MOV     A,@R0
0052 9420           94            SUBB    A,#32           ; Subb Offset first character ASCII code        
0054 75F006         95            MOV     B,#6
0057 A4             96            MUL     AB
0058 C0E0           97            PUSH    Acc
005A E583           98            MOV     A,DPH           
005C 25F0           99            ADD     A,B             ; Add overflow multiply A*6 to DPH
005E F583          100            MOV     DPH,A
0060 D0E0          101            POP     Acc
0062 75F006        102            MOV     B,#6            ; Width one character in pixels
                   103    DISP_T3:


PC - 8051 ASSEMBLER, V1.1                 24.07.2005/09:38:40   PAGE   3


  LOC  OBJ          LINE          SOURCE STATEMENT

0065 C0E0          104            PUSH    Acc             ; Cycle one character
0067 93            105            MOVC    A,@A+DPTR
                   106    
0068 30D50E        107            JNB     F0,DISP_T5      ; It's Small or Large character
                   108    ; ------
006B C000     F    109            PUSH    M+1             ; Program Code for Large Character
                   110    DISP_T4:
006D C4            111            SWAP    A               ; Select High or Low Nibble
006E D500FC   F    112            DJNZ    M+1,DISP_T4
0071 D000     F    113            POP     M+1
                   114    
0073 120000   F    115            CALL    DISP_ZOOM       ; Convert Low Nibble to Byte
0076 120000   F    116            CALL    DISP_DATA       ; Send Byte to display
                   117    ; ------
                   118    DISP_T5:
0079 120000   F    119            CALL    DISP_DATA       ; Send Byte to display
007C A3            120            INC     DPTR
007D D0E0          121            POP     Acc
007F D5F0E3        122            DJNZ    B,DISP_T3
0082 08            123            INC     R0
0083 D500C7   F    124            DJNZ    M,DISP_T2
0086 D000     F    125            POP     M               ; Get text length
0088 A800     F    126            MOV     R0,M+2          ; Get pointer at first character in text array  
008A 0500     F    127            INC     DISP_ROW        ; Set Next Row
008C D500B7   F    128            DJNZ    M+1,DISP_T1     ; Repeat only for Large text
                   129    
008F D0D0          130            POP     PSW
0091 D0E0          131            POP     Acc
0093 D0F0          132            POP     B
0095 D000     F    133            POP     M+2
0097 D000     F    134            POP     M+1
0099 D000     F    135            POP     M
009B D000     F    136            POP     DISP_ROW
009D 22            137            RET
                   138    
                   139    ; ----------------------------------
                   140    ; Convert Low Nibble to Byte
                   141    ; In:  Nibble(Acc)
                   142    ; Out: Byte(Acc)
                   143    ; ----------------------------------
                   144    DISP_ZOOM:
009E A2E3          145            MOV     C,Acc.3
00A0 92E7          146            MOV     Acc.7,C
00A2 92E6          147            MOV     Acc.6,C
00A4 A2E2          148            MOV     C,Acc.2
00A6 92E5          149            MOV     Acc.5,C
00A8 92E4          150            MOV     Acc.4,C
00AA A2E1          151            MOV     C,Acc.1
00AC 92E3          152            MOV     Acc.3,C
00AE 92E2          153            MOV     Acc.2,C
00B0 A2E0          154            MOV     C,Acc.0
00B2 92E1          155            MOV     Acc.1,C
00B4 92E0          156            MOV     Acc.0,C


PC - 8051 ASSEMBLER, V1.1                 24.07.2005/09:38:40   PAGE   4


  LOC  OBJ          LINE          SOURCE STATEMENT

00B6 22            157            RET
                   158    
                   159    ; ----------------------------------------
                   160    ; Routine for paint commpress Image
                   161    ; In: DPTR ...... Adress tab with Image  
                   162    ;     DISP_ROW .. Position in ROW <0..63>
                   163    ;     DISP_COL .. Position in COLUMN <0..127>
                   164    ; -----------------------------------------
                   165    DISP_ICON:                      
00B7 C0E0          166            PUSH    Acc
00B9 C000     F    167            PUSH    M
00BB C000     F    168            PUSH    M+1
00BD C000     F    169            PUSH    M+2
00BF C000     F    170            PUSH    M+3
00C1 C0F0          171            PUSH    B
00C3 120000   F    172            CALL    DISP_ROW_CONV   ; Convert DISP_ROW from <0..63> to <0..7>
00C6 E4            173            CLR     A
00C7 93            174            MOVC    A,@A+DPTR
00C8 75F008        175            MOV     B,#8
00CB 84            176            DIV     AB              ; Convert Row from <0..63> to <0..7>
00CC F500     F    177            MOV     M,A             ; Get Count Row  
00CE A3            178            INC     DPTR
00CF E4            179            CLR     A
00D0 93            180            MOVC    A,@A+DPTR
00D1 F500     F    181            MOV     M+1,A           ; Get Count Column
00D3 A3            182            INC     DPTR
00D4 E4            183            CLR     A
00D5 93            184            MOVC    A,@A+DPTR
00D6 750000   F    185            MOV     M+2,#0
00D9 A3            186            INC     DPTR
00DA 6013          187            JZ      DISP_RY0        ; Type of Compress 0
00DC 14            188            DEC     A
00DD 6026          189            JZ      DISP_RY1        ; Type of Compress 1
00DF 14            190            DEC     A
00E0 604F          191            JZ      DISP_RY2        ; Type of Compress 2
                   192    DISP_IRET:
00E2 D0F0          193            POP     B
00E4 D000     F    194            POP     M+3
00E6 D000     F    195            POP     M+2     
00E8 D000     F    196            POP     M+1     
00EA D000     F    197            POP     M
00EC D0E0          198            POP     Acc
00EE 22            199            RET
                   200    
                   201    ; ----------------------------------
                   202    ; Decode IMAGE in Compress 0 (NONE) 
                   203    ; ----------------------------------
                   204    DISP_RY0:
00EF 850000   F    205            MOV     DISP_ACT,DISP_COL
00F2 8500F0   F    206            MOV     B,M+1
                   207    DISP_RX0:
00F5 E4            208            CLR     A
00F6 93            209            MOVC    A,@A+DPTR


PC - 8051 ASSEMBLER, V1.1                 24.07.2005/09:38:40   PAGE   5

⌨️ 快捷键说明

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