📄 myhpitest.lst
字号:
258 1 //BOB=0 第一个字节为高位(主机读/写);
259 1 //主机写1到 DSPINT,则DSP产生一个中断 ,写0没有效果
260 1 //主机往DSP里的 HINT 写1清除中断,此HINT只能由DSP置1,由主机清0(也是写1)
261 1 // XHPIA=0时,主机写HPIA[15:0]
262 1 //HPIENA 5410没有这位,
263 1
264 1
265 1 }
266
267 void int1_isr(void) interrupt INT1_VECT //int1
268 {
269 1 Flag_Hint=1; //set the interrupt flag
270 1 GetData[1]=0x08;
271 1 GetData[0]=0x08;
272 1 HPIC_Write(); //clear the intial HPIC interrupt flag
273 1
274 1 /*
275 1 //judge if it is a valid interrupt
276 1 // if(GetData[0]==0x01&&GetData[1]==0x00)
277 1 // {
278 1 Flag_Hint=1; //set the interrupt flag
279 1 GetData[1]=0x08;
280 1 GetData[0]=0x08;
281 1 HPIC_Write(); //clear the intial HPIC interrupt flag
282 1 */
283 1 // }
284 1
285 1 }
286
287 // A15--------A3---------A2----------A1------A0
288 // HCS-------HRW-------HCNIL0------HCNIL1---HBIL
289 // 0---------0/1---------0-----------0-------0/1-------HPIC
290 // 0---------0/1---------1-----------0-------0/1-------HPIA
291 // 0---------0/1---------0-----------1-------0/1-------HPIDA
292 // 0---------0/1---------1-----------1-------0/1-------HPID
293 //HRW =0 表示主机写HPI,HRW=1表示读HPI
294 //HBIL=0 表示第一个字节,HBIL=1表示第二个字节
295 //HDS1=WR/,读写指令时,会自动产生。
296
297 void HPID_Read(void)
298 {
299 1 HRW=1;
300 1 HDS1=1;
301 1 HRW=1;
C51 COMPILER V7.10 MYHPITEST 11/20/2005 16:36:36 PAGE 6
302 1 HBIL=0;
303 1 HCNTL1=0; //连续地址访问方式
304 1 HCNTL0=1;
305 1 P0=0x0ff;
306 1 HDS1=0; //下降沿锁存
307 1 ACC=0; //delay 1 clockS
308 1 while(HRDY==0);
309 1 GetData[1]=P0; //read the high byte
310 1
311 1 ACC=0;
312 1 ACC=0;
313 1 ACC=0; //delay 3 clockS
314 1 HDS1=1;
315 1 HRW=1;
316 1 HBIL=1;
317 1 HCNTL1=0;
318 1 HCNTL0=1;
319 1 HDS1=0;
320 1 ACC=0; //delay 1 clockS
321 1 while(HRDY==0);
322 1 GetData[0]=P0; //read the lower byte
323 1 HDS1=1;
324 1
325 1 // HCS-------HRW-------HCNIL0------HCNIL1---HBIL
326 1 // 0---------0/1---------0-----------0-------0/1-------HPIC
327 1 // 0----------1----------0-----------1--------0--------HPIDA
328 1
329 1 }
330
331
332 void HPIDN_Read(void)
333 {
334 1 HRW=1;
335 1 HDS1=1;
336 1 HRW=1;
337 1 HBIL=0;
338 1 HCNTL1=1; //无连续地址访问方式
339 1 HCNTL0=1;
340 1 HDS1=0;
341 1 ACC=0; //delay a clock
342 1
343 1
344 1 GetData[1]=P0; //read the high byte
345 1
346 1 HDS1=1;
347 1 HRW=1;
348 1 HBIL=1;
349 1 HCNTL1=1;
350 1 HCNTL0=1;
351 1 HDS1=0;
352 1 ACC=0; //delay a clock
353 1 GetData[0]=P0; //read the lower byte
354 1 HDS1=1;
355 1
356 1 // HCS-------HRW-------HCNIL0------HCNIL1---HBIL
357 1 // 0---------0/1---------0-----------0-------0/1-------HPIC
358 1 // 0----------1----------0-----------1--------0--------HPIDA
359 1
360 1 }
361
362 void HPIC_Write(void)
363 {
C51 COMPILER V7.10 MYHPITEST 11/20/2005 16:36:36 PAGE 7
364 1 HRW=0;
365 1 HDS1=1;
366 1 HRW=0;
367 1 HBIL=0;
368 1 HCNTL1=0;
369 1 HCNTL0=0;
370 1 P0= GetData[1];
371 1 HDS1=0;
372 1 ACC=0; //delay a clock
373 1 HDS1=1;
374 1 HRW=0;
375 1 HBIL=1;
376 1 HCNTL1=0;
377 1 HCNTL0=0;
378 1 P0=GetData[0];
379 1 HDS1=0;
380 1 ACC=0; //delay a clock
381 1 HDS1=1;
382 1
383 1 }
384
385 void HPID_Write(void)
386 {
387 1 HRW=0;
388 1 HDS1=1;
389 1 HRW=0;
390 1 HBIL=0;
391 1 HCNTL1=0;
392 1 HCNTL0=1;
393 1 P0= GetData[1];
394 1 HDS1=0;
395 1 ACC=0; //delay a clock
396 1 HDS1=1;
397 1
398 1 HRW=0;
399 1 HBIL=1;
400 1 HCNTL1=0;
401 1 HCNTL0=1;
402 1 P0=GetData[0];
403 1 HDS1=0;
404 1 ACC=0; //delay a clock
405 1 HDS1=1;
406 1
407 1 }
408
409 void HPIDN_Write(void)
410 {
411 1 HRW=0;
412 1 HDS1=1;
413 1 HRW=0;
414 1 HBIL=0;
415 1 HCNTL1=1;
416 1 HCNTL0=1;
417 1 P0= GetData[1];
418 1 HDS1=0;
419 1 ACC=0; //delay a clock
420 1 HDS1=1;
421 1 HRW=0;
422 1 HBIL=1;
423 1 HCNTL1=1;
424 1 HCNTL0=1;
425 1 P0=GetData[0];
C51 COMPILER V7.10 MYHPITEST 11/20/2005 16:36:36 PAGE 8
426 1 HDS1=0;
427 1 ACC=0; //delay a clock
428 1 HDS1=1;
429 1
430 1 }
431
432 void HPIA_Write(void)
433 {
434 1 HRW=0;
435 1 HDS1=1;
436 1 HRW=0;
437 1 HBIL=0;
438 1 HCNTL1=1;
439 1 HCNTL0=0;
440 1 P0= GetData[1];
441 1 HDS1=0;
442 1 ACC=0; //delay a clock
443 1 HDS1=1;
444 1 HRW=0;
445 1 HBIL=1;
446 1 HCNTL1=1;
447 1 HCNTL0=0;
448 1 P0=GetData[0];
449 1 HDS1=0;
450 1 ACC=0; //delay a clock
451 1 HDS1=1;
452 1
453 1 }
454
455
456 void delay(unsigned int x)
457 { unsigned int i,j;
458 1 for(i=0;i<x;i++)
459 1 for(j=0;j<x;j++)
460 1 {;}
461 1 }
462
463
464
465 //==================================================================================
466
467 void SENDCHAR(unsigned char x) // sends ASCII value contained in A to UART
468 {
469 1 while(TI==0);
470 1 TI=0;
471 1 SBUF=x;
472 1 }
473
474 void SENDVAL(unsigned char x)
475 {
476 1 unsigned char YL,YH,YCL,YCH;
477 1 YL=x&0x0f;
478 1 YH=(x>>4)&0x0f;
479 1 SENDHEXDATA(YH);
480 1 SENDHEXDATA(YL);
481 1
482 1 }
*** WARNING C280 IN LINE 476 OF MYHPITEST.C: 'YCL': unreferenced local variable
*** WARNING C280 IN LINE 476 OF MYHPITEST.C: 'YCH': unreferenced local variable
483
484 void SENDHEXDATA(unsigned char x)
485 {
C51 COMPILER V7.10 MYHPITEST 11/20/2005 16:36:36 PAGE 9
486 1 unsigned char y;
487 1 y=HEXTOASCII(x);
488 1 SENDCHAR(y);
489 1 }
490 unsigned char HEXTOASCII(unsigned char x) //将半字节数据转换成-0-A的ASCII
491 {
492 1 unsigned char y;
493 1 if((x>=0)&&(x<=9))
494 1 { y=x+0x30; }
495 1 if((x>=10)&&(x<=15))
496 1 { y=x+0x37;}
497 1 if(x>=16) y=0x2b; //'+'
498 1 if(x<0) y=0x2d; //'-'
499 1 return(y);
500 1 }
501
502
503
504
505
506
507
508
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 608 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 46 37
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 2 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -