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

📄 myhpitest.lst

📁 基于单片机AUC848与DSP 5410的HPI通讯程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.10   MYHPITEST                                                             11/20/2005 16:36:36 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE MYHPITEST
OBJECT MODULE PLACED IN MYHPITEST.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE MYHPITEST.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1           #include <hpitest.h>
   2           void C51_Init(void);
   3           void HPI_Init(void);
   4           void HPIC_Write(void);
   5           void HPID_Write(void);
   6           void HPID_Read(void);
   7          
   8           void HPIDN_Write(void);
   9           void HPIDN_Read(void);
  10          
  11           void HPIA_Write(void); 
  12           void delay(unsigned int x);
  13          
  14           void SENDCHAR(unsigned char x);
  15           void SENDVAL(unsigned char x);
  16           void SENDHEXDATA(unsigned char x);
  17          unsigned char HEXTOASCII(unsigned char x);
  18          
  19          
  20          unsigned char i=0,GetData[2];
  21            bit Flag_Hint;
  22           unsigned char flag=0;
  23           unsigned char senddata[20];
  24           unsigned char readdatah[10];
  25           unsigned char readdatal[10];
  26          
  27          unsigned char data tt1=0x12; 
  28          unsigned char data tt2=0x00;
  29          
  30          
  31          /*
  32           void uart00_int () interrupt 4                    //中断方式接收数据。
  33          {
  34                  if(RI==1)
  35                  { 
  36                          
  37                          flag=SBUF;
  38                          RI=0;
  39                          TI=0;
  40                  }
  41          
  42                  if(TI==0)        //将接收的数据发送到串口。
  43                  {
  44                          TI=0;
  45                          SBUF=flag;               //Transmission is initiated by writing to SBUF.
  46                          while(TI==0);    //wait for the data sending.When the TI=1 indicate finishing send.     
  47          
  48                  }
  49          
  50          }
  51          */
  52          //==============================================================================
  53           void main(void)
  54           {
  55   1         P0=0;
C51 COMPILER V7.10   MYHPITEST                                                             11/20/2005 16:36:36 PAGE 2   

  56   1              P1=0xff;
  57   1         for(i=0;i<20;i++)senddata[i]=i;
  58   1            flag=0;
  59   1      
  60   1      //-----------------------------------
  61   1              //initialize
  62   1              C51_Init();
  63   1              HPI_Init();
  64   1      
  65   1              //enable all the interrupt
  66   1              EA=1;
  67   1              GetData[0]=0x07;                //dsp 存储数据地址 0x1208
  68   1              GetData[1]=0x12;
  69   1      
  70   1      
  71   1      /*
  72   1      //-------------------------------------UART TEST2--------------------------------------
  73   1              while (1)
  74   1              {
  75   1                      unsigned char i,y;
  76   1      
  77   1                      for(i=0;i<256;i++)
  78   1                              {  
  79   1      
  80   1                                 SENDVAL(i);
  81   1                         SENDCHAR(' ');
  82   1                                      if(i==255) 
  83   1                                      {
  84   1                                      SENDCHAR('_');
  85   1                                      SENDCHAR('E');
  86   1                                      SENDCHAR('N');
  87   1                                      SENDCHAR('D');
  88   1                                      SENDCHAR('_');  
  89   1                                       }
  90   1      
  91   1                              
  92   1                              }
  93   1              }
  94   1      
  95   1      */
  96   1      //-------------------------------------------------------------------------------
  97   1      
  98   1              while(1) //only for test 
  99   1              {       
 100   2                      delay(500);
 101   2      //1   写数据到DSP中去。。
 102   2                              GetData[0]=0x07;                //dsp 存储数据地址 0x1208       写前会预加1
 103   2                              GetData[1]=0x12;
 104   2                              HPIA_Write(); 
 105   2                              for(i=0;i<0xff;i++)           
 106   2                              {               
 107   3                              GetData[1]=i+1;   //高字节
 108   3                              GetData[0]=i;      //低字节
 109   3                              HPID_Write();                   
 110   3                              }
 111   2      
 112   2      //2   从DSP中读数据出来。
 113   2                              GetData[0]=0x08;                //dsp 存储数据地址 0x1208       读后加1
 114   2                              GetData[1]=0x12;
 115   2                              HPIA_Write();
 116   2                              for(i=0;i<10;i++)            
 117   2                              {               
C51 COMPILER V7.10   MYHPITEST                                                             11/20/2005 16:36:36 PAGE 3   

 118   3      
 119   3                                      HPID_Read();                                                    
 120   3                                      readdatah[i]=GetData[1];   //1高字节
 121   3                                      readdatal[i]=GetData[0];   //0高字节  
 122   3                                      SENDVAL(GetData[1]); 
 123   3                                      SENDVAL(GetData[0]);
 124   3                                      SENDCHAR(' ');
 125   3      
 126   3      
 127   3                              }
 128   2      
 129   2       //3   写数据到DSP中去。
 130   2                              GetData[0]=0x7f;                //dsp 存储数据地址 0x1280
 131   2                              GetData[1]=0x12;
 132   2                              HPIA_Write(); 
 133   2      
 134   2                              for(i=0;i<10;i++)
 135   2                              {               
 136   3                              GetData[1]=readdatah[i];       //高字节
 137   3                              GetData[0]=readdatal[i];           //低字节
 138   3                              HPID_Write();                   
 139   3                              }
 140   2                              
 141   2                                      
 142   2              
 143   2              }
 144   1      
 145   1              while(1)
 146   1              {
 147   2                      if(Flag_Hint==1)
 148   2                      {
 149   3                              unsigned int i;
 150   3                              int l_data[16];
 151   3                              GetData[0]=0x08;                //dsp 存储数据地址 0x1208
 152   3                              GetData[1]=0x12;
 153   3                              HPIA_Write();
 154   3                              for(i=0;i<0x8;i++)         //将DSP中的数据读到C51的l_data 中。
 155   3                              {
 156   4                                      HPID_Read();
 157   4                                      l_data[2*i+1]=GetData[1];   //高字节
 158   4                                      l_data[2*i]=GetData[0];    //低字节
 159   4                              
 160   4                                      TI=0;
 161   4                                      SBUF=l_data[2*i+1];              //Transmission is initiated by writing to SBUF.
 162   4                                      while(TI==0);    //wait for the data sending.When the TI=1 indicate finishing send.
 163   4                                      TI=0;
 164   4                                      SBUF=55;                 //Transmission is initiated by writing to SBUF.
 165   4                                      while(TI==0);    //wait for the data sending.When the TI=1 indicate finishing send.
 166   4                              }
 167   3      
 168   3                              HPIA_Write();
 169   3                              for(i=0;i<0x8;i++)       //将51中的数据l_data 写到DSP中去。
 170   3                              {
 171   4                                      GetData[1]=l_data[2*i+1];
 172   4                                      GetData[0]=l_data[2*i]; 
 173   4                                      HPID_Write();
 174   4                              }
 175   3      
 176   3                              //clear HPI interrupt and trigger DSPINT interrupt
 177   3                              GetData[0]=0x0c;
 178   3                              GetData[1]=0x0c;
 179   3                              HPIC_Write();
C51 COMPILER V7.10   MYHPITEST                                                             11/20/2005 16:36:36 PAGE 4   

 180   3      //5410为HPI-8  ,正面为主机写HPI
 181   3      //-----------------------------------------------------------------------
 182   3              //HPIC: | 15-12 |  11   | 10 | 9   |  8  |7 -4 |  3  | 2 | 1   | 0  |
 183   3      //----------------------------------------------------------------------|
 184   3              //      |   X   |  HINT | 0  | SMOD| BOB |  X  | HINT| 0 | SMOD| BOB|
 185   3      //                              1        1    0      0    0     1      1   0     0    0    =0x0c0c    
 186   3      //======================================= 5410===================================================
 187   3      
 188   3      //--------------------------------5402 OR 5410--主机C51 写 HIPC---------------------------------
 189   3              //HPIC: | 15-13 |   12   |   11  |   10  |   9   | 8   |7 -5 |  4   | 3  |   2   | 1  | 0
 190   3      //---------------------------------------------------------|-------------------------------
 191   3              //      |   X   |  XHPIA |  HINT | DSPINT|   X   | BOB |  X  | XHPIA| HINT | DSPINT| X  |BOB|
 192   3      //                              0        0       1        1      0      0  |  0    0     1       1     0    0   =0C0C     
 193   3      //BOB=0 第一个字节为高位(主机读/写);
 194   3      //主机写1到 DSPINT,则DSP产生一个中断 ,写0没有效果
 195   3      //主机往DSP里的 HINT 写1清除中断,此HINT只能由DSP置1,由主机清0(也是写1)
 196   3      // XHPIA=0时,主机写HPIA[15:0] 
 197   3      //HPIENA  5410没有这位,
 198   3      
 199   3      
 200   3                              //reset the Flag
 201   3                              Flag_Hint=0;
 202   3                                              
 203   3                              
 204   3                      }
 205   2              }
 206   1      
 207   1       } //main() end 
 208          
 209           void C51_Init(void)
 210           {
 211   1      
 212   1       //-------------------------------------------------------------------------------
 213   1              PLLCON=0x50;     //12.5892M
 214   1              //Configure UART
 215   1          T3CON = 0x86;       //9600 Baud rate
 216   1          T3FD = 0x12;
 217   1          SCON = 0x52;         //0101 0000 :  old=0x52
 218   1      //      SCON = 0x90;
 219   1      //----------------------------------------------------------------------------------------------
 220   1      //         7 6                  5                      4                3            2             1           
             -0
 221   1      // sm0sm1=01 |          sm2=0 (方式2、3)     |     ren=1  |   TB8=0         |RB8=0           |TI=1    |RI
 222   1      //    方式1;|接收到字符,TI=1,没有停止位;|允许串行接收|为发送的第9位数据|接收到的第9位| 发送中断标志
             -|接收的中断标志
 223   1          EA = 1;             //Enable Global Interrupts
 224   1              ES=1;                            //open uart Interrupt
 225   1      //--------------------------------------------------------------------------------------
 226   1              //enable int1 and configure the interrupt type
 227   1                      IT0=0;  //low level trigger     
 228   1                      EX1=1; //Enable int1 
 229   1                      EX0=1;  //Enable int0
 230   1                      Flag_Hint=0;    //initialize the flags   
 231   1      
 232   1       }
 233          
 234          
 235          
 236           void HPI_Init(void)
 237           {
 238   1      //????  HOE=0;  //to enable the boot 
 239   1              //to do:initialize the HPIC
C51 COMPILER V7.10   MYHPITEST                                                             11/20/2005 16:36:36 PAGE 5   

 240   1                      GetData[1]=0x08;
 241   1                      GetData[0]=0x08;
 242   1                      HPIC_Write(); //clear the initial HPIC interrupt flag and set BOB
 243   1      //------------------------------------54X--------------------------------
 244   1              //HPIC: | 15-12 |  11   | 10 | 9   |  8  |7 -4 |  3  |   2 | 1   | 0  |
 245   1      //----------------------------------------------------------------------|---
 246   1              //      |   X   |  HINT | 0  | SMOD| BOB |  X  | HINT| DSPINT | X   | BOB|
 247   1      //                              0        1    0      0    0     0      1     0     0    0     =0x0808    
 248   1      //主机往DSP里的HINT写1清除中断,此HINT只能由DSP置1,由主机清0
 249   1      //BOB=0第一个字节为高位(主机读/写);SMOD=0共享SAM便能(主机读)
 250   1      
 251   1      //=============================================================
 252   1      
 253   1      //--------------------------------5402 OR 5410--主机C51 写 HIPC---------------------------------
 254   1              //HPIC: | 15-13 |   12   |   11  |   10  |   9   | 8   |7 -5 |  4   | 3  |   2   | 1  | 0
 255   1      //---------------------------------------------------------|-------------------------------
 256   1              //      |   X   |  XHPIA |  HINT | DSPINT|   X   | BOB |  X  | XHPIA| HINT | DSPINT| X  |BOB|
 257   1      //                              0        0       1        0      0      0  |  0    0     1       0     0    0   =0808     

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -