📄 ks107.lst
字号:
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 + -