📄 psoc.lst
字号:
218 1 SET_DOUT;
219 1 EZUSB_Delay(1);
220 1 }
221
222
223 //*****************************************************************************
224 // function name: GetCheckSum()
225 // description: Get psoc checksum
226 // return: 0 success -1 fail
227 // note :
228 //*****************************************************************************
229 int GetCheckSum(void)
230 {
231 1 BYTE psocId = 0;
232 1 int checksum = 0;
233 1 xdata char param[4];
234 1 memset (param, '\0', sizeof (param));
235 1
236 1 //input output init for psoc checksum
237 1 SETOUT_PD(0);//RESET
238 1 SETOUT_PD(1);//CLK
239 1 SETOUT_PD(2);//DATA
240 1
241 1 //clean the disturb caused by sgpio
242 1 PSOC_CLK(LOW);
243 1 PSOC_DOUT(LOW);
244 1 PSOC_RESET(LOW);
245 1
246 1 //3.3v pull, down for psoc, up for sgpio
247 1 _3V_PULL_DOWN_ ;
248 1 EZUSB_Delay(3);
249 1
250 1 EA = 0;//disable interrupt
251 1
252 1 //psoc init for psoc programme
253 1 PSOC_RESET(HIGH);
254 1 EZUSB_Delay(1);
255 1 PSOC_RESET(LOW);
256 1
257 1 WriteVector(vector_init_1);
258 1 WaitSingle();
259 1 EA = 1;//enable interrupt
260 1 WriteVector(vector_init_2);
261 1 WaitSingle();
262 1 WriteVector(vector_init_3_3v);
263 1 EZUSB_Delay(1);
264 1
265 1 //for get psoc ID
266 1 WriteVector(vector_ID_setup);
267 1 WaitSingle();
268 1 WriteVector("10111111000");
269 1 PSOC_CLK(HIGH);
270 1 PSOC_CLK(LOW);
C51 COMPILER V8.06 PSOC 01/31/2008 22:24:27 PAGE 6
271 1 ReadByte();
272 1 PSOC_CLK(HIGH);
273 1 PSOC_CLK(LOW);
274 1 WriteVector("110111111001");
275 1 PSOC_CLK(HIGH);
276 1 PSOC_CLK(LOW);
277 1 psocId = ReadByte();
278 1 PSOC_CLK(HIGH);
279 1 PSOC_CLK(LOW);
280 1 WriteVector("1");
281 1
282 1 switch(psocId)
283 1 {
284 2 case PSoC_CY8C27143_ID:
285 2 case PSoC_CY8C27243_ID:
286 2 case PSoC_CY8C27443_ID:
287 2 case PSoC_CY8C27543_ID:
288 2 case PSoC_CY8C27643_ID:
289 2 WriteVector(vector_checksum_setup_CY8C27xxx);
290 2 break;
291 2 /*
292 2 case PSoC_CY8C21123_ID:
293 2 case PSoC_CY8C21223_ID:
294 2 case PSoC_CY8C21323_ID:
295 2 case PSoC_CY8C24123_ID:
296 2 case PSoC_CY8C24223_ID:
297 2 case PSoC_CY8C24423_ID:
298 2 WriteVector(vector_checksum_setup_CY8C21x23_24xxx);
299 2 break;
300 2 case PSoC_CY8C21234_ID:
301 2 case PSoC_CY8C21334_ID:
302 2 case PSoC_CY8C21434_ID:
303 2 case PSoC_CY8C21534_ID:
304 2 case PSoC_CY8C21634_ID:
305 2 WriteVector(vector_checksum_setup_CY8C21x34);
306 2 break;
307 2 case PSoC_CY8C22113_ID:
308 2 case PSoC_CY8C22213_ID:
309 2 WriteVector(vector_checksum_setup_CY8C22xxx);
310 2 break;
311 2 */
312 2 default:
313 2 break;
314 2 }
315 1 WaitSingle();
316 1 WriteVector("10111111001");
317 1 PSOC_CLK(HIGH);
318 1 PSOC_CLK(LOW);
319 1 checksum |= (ReadByte()<<8);
320 1
321 1 PSOC_CLK(HIGH);
322 1 PSOC_CLK(LOW);
323 1 WriteVector("110111111000");
324 1 PSOC_CLK(HIGH);
325 1 PSOC_CLK(LOW);
326 1 checksum |= ReadByte();
327 1
328 1 sprintf(param," %04x",checksum);
329 1 add_to_retlist(param);
330 1
331 1 PSOC_CLK(HIGH);
332 1 PSOC_CLK(LOW);
C51 COMPILER V8.06 PSOC 01/31/2008 22:24:27 PAGE 7
333 1 WriteVector("1");
334 1
335 1 return RET_DONE;
336 1 }
337
338
339
340
341
342 //=============================================================================-
343 //test sgpio
344 //=============================================================================-
345 int SgpioTest()
346 {
347 1
348 1 int i = 0;
349 1 int val = 0;
350 1 int result = 0;
351 1 BYTE tmp = 0;
352 1 BYTE param[16];
353 1
354 1
355 1 memset (param, '\0', sizeof (param));
356 1 if (get_current_cmd(param)==NULL)
357 1 {
358 2 return RET_ERROR;
359 2 }
360 1
361 1 val = strtol(param,NULL,16);
362 1 if (val > 0xfff || val <0 )
363 1 {
364 2 return RET_ERROR;
365 2 }
366 1
367 1 //input output init for sgpio
368 1 SETOUT_PD(2);//START
369 1 SETOUT_PD(3);//CLK
370 1 SETOUT_PD(4);//DIN
371 1 SETIN_PD(1);//DOUT
372 1
373 1 //clean the disturb caused by psoc
374 1 SGPIO_START(LOW);
375 1 SGPIO_CLK(LOW);
376 1 SGPIO_DIN(LOW);
377 1
378 1 //3.3v pull, down for psoc, up for sgpio
379 1 _3V_PULL_UP_ ;
380 1 EZUSB_Delay(3);
381 1 //EA = 0; // disable 8051 interrupts
382 1
383 1 //clear start
384 1 SGPIO_START(LOW);
385 1 for(i=0; i<8; i++)
386 1 {
387 2 SGPIO_CLK(HIGH);
388 2 PsocDelay(1);
389 2 SGPIO_CLK(LOW);
390 2 PsocDelay(1);
391 2 }
392 1
393 1 //set start 1-0
394 1 SGPIO_START(HIGH);
C51 COMPILER V8.06 PSOC 01/31/2008 22:24:27 PAGE 8
395 1 SGPIO_CLK(HIGH);
396 1 PsocDelay(1);
397 1 SGPIO_CLK(LOW);
398 1 PsocDelay(1);
399 1 SGPIO_START(LOW);
400 1
401 1 //set data
402 1 for (i=0; i<12; i++)
403 1 {
404 2 //PUT DATAOUT
405 2 if (val & (1<<i))
406 2 {
407 3 SGPIO_DIN(HIGH);
408 3 PsocDelay(1);
409 3 }
410 2 else
411 2 {
412 3 SGPIO_DIN(LOW);
413 3 PsocDelay(1);
414 3 }
415 2
416 2 SGPIO_CLK(HIGH);
417 2 PsocDelay(1);
418 2 SGPIO_CLK(LOW);
419 2 PsocDelay(1);
420 2
421 2 //GET DATAIN
422 2 tmp = SGPIO_DOUT & 0x01;
423 2 result |= (tmp<<i);
424 2 }
425 1
426 1 //clear start
427 1 SGPIO_START(0);
428 1 PsocDelay(1);
429 1 for (i=0; i<8; i++)
430 1 {
431 2 SGPIO_CLK(HIGH);
432 2 PsocDelay(1);
433 2 SGPIO_CLK(LOW);
434 2 PsocDelay(1);
435 2 }
436 1
437 1 //EA = 1; // Enable 8051 interrupts
438 1
439 1 sprintf(param,"(%bX)",result);
440 1 add_to_retlist(param);
441 1
442 1 return RET_DONE;
443 1 }
444
445 //=============================================================================-
446 //do_psoc_entry
447 //=============================================================================-
448 int do_psoc_entry(char *cmd)
449 {
450 1 int (*cmd_func) ();
451 1 int ret=0;
452 1
453 1 cmd_func=lookup_command_func(psoc_cmd,cmd);
454 1 if (cmd_func!=NULL)
455 1 {
456 2 ret=(*cmd_func)();
C51 COMPILER V8.06 PSOC 01/31/2008 22:24:27 PAGE 9
457 2 return(ret);
458 2 }
459 1 return RET_ERROR;
460 1 }
461
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 960 ----
CONSTANT SIZE = 3385 ----
XDATA SIZE = 54 4
PDATA SIZE = ---- ----
DATA SIZE = ---- 40
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -