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

📄 myhpitest.lst

📁 基于单片机AUC848与DSP 5410的HPI通讯程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 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 + -