📄 touch_drv.lst
字号:
126 *----------------------------------------------------------------------------
127 * PARAMS:
128 *
129 * return:
130 *----------------------------------------------------------------------------
131 * PURPOSE:
132 *----------------------------------------------------------------------------
133 * EXAMPLE:
134 *----------------------------------------------------------------------------
135 * NOTE:
136 *----------------------------------------------------------------------------
137 * REQUIREMENTS:
138 *****************************************************************************/
139 Byte Touch_scanByteLSB (Byte bBit)
140 {
141 1 Byte bCount = 0x00,i;
142 1 Byte bByte = 0x00,temp;
143 1 //Byte i;
144 1 for (i=0; i<bBit;) {
145 2 while(!TOUCH_SCK && bCount<20) { /* If the SCK is High, Waiting */
146 3 bCount++;
147 3 }
148 2 while(TOUCH_SCK){ /* If the SCK is Low, Sen the data */
149 3 if (TOUCH_SDI) {
150 4 temp = 0x01;
151 4 temp <<= i;
152 4 bByte |= temp;
153 4 }
154 3 }
155 2 bCount =0;i++;
C51 COMPILER V8.01 TOUCH_DRV 08/07/2006 11:04:36 PAGE 10
156 2 }
157 1 return(bByte);
158 1 }
159
160 /*F**************************************************************************
161 * NAME: TouchPad_getLSB
162 *----------------------------------------------------------------------------
163 * PARAMS:
164 *
165 * return:
166 *----------------------------------------------------------------------------
167 * PURPOSE:
168 *----------------------------------------------------------------------------
169 * EXAMPLE:
170 *----------------------------------------------------------------------------
171 * NOTE:
172 *----------------------------------------------------------------------------
173 * REQUIREMENTS:
174 *****************************************************************************/
175 void Touch_getMSB (Byte bByte)
176 {
177 1 Byte bCount = 0x00,i;
178 1
179 1 for (i=0; i<8;) {
180 2 while(!TOUCH_SCK){ /* If the SCK is Low, Sen the data, To waiting */
181 3 if (bByte & 0x80) TOUCH_SDI = High;
182 3 else TOUCH_SDI = Low;
183 3 }
184 2 while(TOUCH_SCK && bCount<20){ /* If the SCK is High, Waiting */
185 3 bCount++;
186 3 }
187 2 bByte <<= 1; bCount =0; i++;
188 2 }
189 1 }
190
191 /*F**************************************************************************
192 * NAME: TouchPad_start
193 *----------------------------------------------------------------------------
194 * PARAMS:
195 *
196 * return:
197 *----------------------------------------------------------------------------
198 * PURPOSE:
199 *----------------------------------------------------------------------------
200 * EXAMPLE:
201 *----------------------------------------------------------------------------
202 * NOTE:
203 *----------------------------------------------------------------------------
204 * REQUIREMENTS:
205 *****************************************************************************/
206 void Touch_start (void)
207 {
208 1 TOUCH_SDI = High;
209 1 TOUCH_SDO = High;
210 1 TOUCH_SCK = High;
211 1 TOUCH_SS = Low;
212 1 }
213
214 /*F**************************************************************************
215 * NAME: TouchPad_stop
216 *----------------------------------------------------------------------------
217 * PARAMS:
C51 COMPILER V8.01 TOUCH_DRV 08/07/2006 11:04:36 PAGE 11
218 *
219 * return:
220 *----------------------------------------------------------------------------
221 * PURPOSE:
222 *----------------------------------------------------------------------------
223 * EXAMPLE:
224 *----------------------------------------------------------------------------
225 * NOTE:
226 *----------------------------------------------------------------------------
227 * REQUIREMENTS:
228 *****************************************************************************/
229 void Touch_stop (void)
230 {
231 1 TOUCH_SS = High;
232 1 TOUCH_SDI = High;
233 1 TOUCH_SDO = High;
234 1 TOUCH_SCK = High;
235 1 }
236
237 /*F**************************************************************************
238 * NAME: Touch_Wait
239 *----------------------------------------------------------------------------
240 * PARAMS:
241 *
242 * return:
243 *----------------------------------------------------------------------------
244 * PURPOSE:
245 *----------------------------------------------------------------------------
246 * EXAMPLE:
247 *----------------------------------------------------------------------------
248 * NOTE:
249 *----------------------------------------------------------------------------
250 * REQUIREMENTS:
251 *****************************************************************************/
252 bit Touch_Wait (void)
253 {
254 1 Byte bCount;
255 1
256 1 for (bCount=0; TOUCH_SCK && bCount < 6; bCount++) { /* wait 150uS */
257 2 DelayX25us(1);
258 2 }
259 1 if(bCount > 6) return(0); /* waiting time Out */
260 1 else return(1);
261 1 }
262
263
264
C51 COMPILER V8.01 TOUCH_DRV 08/07/2006 11:04:36 PAGE 12
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION Touch_PositionXY (BEGIN)
; SOURCE LINE # 32
; SOURCE LINE # 33
; SOURCE LINE # 35
0000 7D20 MOV R5,#020H
0002 7F52 MOV R7,#052H
0004 120000 R LCALL _Touch_Write
; SOURCE LINE # 36
0007 120000 R LCALL Touch_Wait
000A 4002 JC ?C0001
000C 8005 SJMP ?C0038
000E ?C0001:
; SOURCE LINE # 37
000E 120000 R LCALL Touch_Read
0011 4005 JC ?C0003
0013 ?C0038:
0013 120000 R LCALL Touch_stop
0016 C3 CLR C
0017 22 RET
0018 ?C0003:
; SOURCE LINE # 38
0018 7800 E MOV R0,#LOW TouchPad
001A E6 MOV A,@R0
001B 7800 E MOV R0,#LOW TouchPad+02H
001D F6 MOV @R0,A
; SOURCE LINE # 39
001E 18 DEC R0
001F E6 MOV A,@R0
0020 7800 E MOV R0,#LOW TouchPad+03H
0022 F6 MOV @R0,A
; SOURCE LINE # 40
0023 D3 SETB C
; SOURCE LINE # 42
0024 ?C0002:
0024 22 RET
; FUNCTION Touch_PositionXY (END)
; FUNCTION Touch_PositionA (BEGIN)
; SOURCE LINE # 59
; SOURCE LINE # 60
; SOURCE LINE # 61
0000 7D30 MOV R5,#030H
0002 7F52 MOV R7,#052H
0004 120000 R LCALL _Touch_Write
; SOURCE LINE # 62
0007 120000 R LCALL Touch_Wait
000A 4002 JC ?C0004
000C 8005 SJMP ?C0039
000E ?C0004:
; SOURCE LINE # 63
000E 120000 R LCALL Touch_Read
0011 4006 JC ?C0006
0013 ?C0039:
0013 120000 R LCALL Touch_stop
0016 7F00 MOV R7,#00H
0018 22 RET
0019 ?C0006:
; SOURCE LINE # 64
0019 7800 E MOV R0,#LOW TouchPad+01H
C51 COMPILER V8.01 TOUCH_DRV 08/07/2006 11:04:36 PAGE 13
001B E6 MOV A,@R0
001C FF MOV R7,A
; SOURCE LINE # 65
001D ?C0005:
001D 22 RET
; FUNCTION Touch_PositionA (END)
; FUNCTION Touch_Read (BEGIN)
; SOURCE LINE # 82
; SOURCE LINE # 83
; SOURCE LINE # 84
;---- Variable 'bTemp' assigned to Register 'R7' ----
0000 E4 CLR A
0001 FF MOV R7,A
; SOURCE LINE # 86
0002 120000 R LCALL Touch_start
; SOURCE LINE # 87
0005 7F04 MOV R7,#04H
0007 120000 R LCALL _Touch_scanByteLSB
; SOURCE LINE # 88
000A EF MOV A,R7
000B 6405 XRL A,#05H
000D 6002 JZ ?C0007
000F C3 CLR C
0010 22 RET
0011 ?C0007:
; SOURCE LINE # 89
0011 7F08 MOV R7,#08H
0013 120000 R LCALL _Touch_scanByteLSB
; SOURCE LINE # 90
0016 7F08 MOV R7,#08H
0018 120000 R LCALL _Touch_scanByteLSB
001B 7800 E MOV R0,#LOW TouchPad
001D A607 MOV @R0,AR7
; SOURCE LINE # 91
001F 7F08 MOV R7,#08H
0021 120000 R LCALL _Touch_scanByteLSB
0024 7800 E MOV R0,#LOW TouchPad+01H
0026 A607 MOV @R0,AR7
; SOURCE LINE # 92
0028 7F04 MOV R7,#04H
002A 120000 R LCALL _Touch_scanByteLSB
; SOURCE LINE # 93
002D EF MOV A,R7
002E 6401 XRL A,#01H
0030 6002 JZ ?C0009
0032 C3 CLR C
0033 22 RET
0034 ?C0009:
; SOURCE LINE # 94
0034 120000 R LCALL Touch_stop
; SOURCE LINE # 95
0037 D3 SETB C
; SOURCE LINE # 96
0038 ?C0008:
0038 22 RET
; FUNCTION Touch_Read (END)
; FUNCTION _Touch_Write (BEGIN)
; SOURCE LINE # 113
0000 8F00 R MOV PID,R7
0002 8D00 R MOV bRegister,R5
C51 COMPILER V8.01 TOUCH_DRV 08/07/2006 11:04:36 PAGE 14
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -