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

📄 54xdsp与计算机并口通讯.mht

📁 有关dsp54x各方面编程的程序
💻 MHT
📖 第 1 页 / 共 5 页
字号:
        <p style="text-indent: 30">printf(&quot;Wrong register for HPI  
        write.&quot;;</p> 
        <p style="text-indent: 30">exit(-1);</p> 
        <p style="text-indent: 30">}</p> 
        <p style="text-indent: 30">outp(p_CONTROL,CONTROL);</p> 
        <p style="text-indent: 30">if((_inp(p_STATUS)&amp;0x08)!=0) //如果HBIL!=0</p> 
        <p style="text-indent: 30">{</p> 
        <p style="text-indent: 30">ChangeCONTROL(0,0); //重载函数</p> 
        <p style="text-indent: 30">//ChangCONTROL(BYTE bit,BYTE bValue)</p> 
        <p style="text-indent: 30">_outp(p_CONTROL,CONTROL); //HDS1=0</p> 
        <p style="text-indent: 30">ChangeCONTROL(0,1);</p> 
        <p style="text-indent: 30">_outp(p_CONTROL,CONTROL); //HDS1=1</p> 
        <p style="text-indent: 30">}</p> 
        <p style="text-indent: 30">/*开始时序的准备*/</p> 
        <p style="text-indent: 30">while((_inp(p_STATUS)&amp;0x08)!=0); //等待HBIL=0</p> 
        <p style="text-indent: 30">//(lst byte)</p> 
        <p style="text-indent: 30">if(r_w)//读</p> 
        <p style="text-indent: 30">{</p> 
        <p style="text-indent: 30">//在HPIR/W的上升沿对数据线采样(第一字节)</p> 
        <p style="text-indent: 30">ChangeCONTROL(2,1);</p> 
        <p style="text-indent: 30">-outp(p_CONTROL,CONTROL);</p> 
        <p style="text-indent: 30">ChangeCONTROL(0,0);</p> 
        <p style="text-indent: 30">_outp(p_CONTROL,CONTROL);//HDS1:1-&gt;0, //采样HCNTL0/1,HR/W,HBIL</p> 
        <p style="text-indent: 30">while(_inp(p_STATUS)&amp;0x10= =0); //若HDRY=0,//等待;HDRY=1,继续</p> 
        <p style="text-indent: 30">ChangeCONTROL(0,1);</p> 
        <p style="text-indent: 30">outp(pCONTROL,CONTROL);//HDS1:0-&gt;1; //锁存第1字节,然后HBIL=1</p> 
        <p style="text-indent: 30">*(data++)=_inp(p_DATA);</p> 
        <p style="text-indent: 30">while((_inp(p_STATUS)&amp; 0x08)= =0); //等待HBIL//=1(2nd  
        byte)</p> 
        <p style="text-indent: 30">ChangeCONTROL(2,0);</p> 
        <p style="text-indent: 30">_outp(p_CONTROL,CONTROL);</p> 
        <p style="text-indent: 30">//在HPIR/W的上升沿对数据线采样(第二字节)</p> 
        <p style="text-indent: 30">ChangeCONTROL(2,1);</p> 
        <p style="text-indent: 30">_outp(p_CONTROL,CONTROL);</p> 
        <p style="text-indent: 30">ChangeCONT^ROL(0,0);</p> 
        <p style="text-indent: 30">_outp(p_CONTROL,CONTROL);//HDS1:1-&gt;0,</p> 
        <p style="text-indent: 30">//采样HCNTL0/1,HR/W,HBIL</p> 
        <p style="text-indent: 30">while(_inp(p_STATUS)&amp;0x10)= =0);//若HDRY=0//等待,HDRY=1继续</p> 
        <p style="text-indent: 30">ChangeCONTROL(0,1);</p> 
        <p style="text-indent: 30">_outp(p_CONTROL,CONTROL);//HDS1:0-&gt;1;  
        //锁存第2字节,然后HBIL=0</p> 
        <p style="text-indent: 30">*(data- -=_inp(p_DATA);</p> 
        <p style="text-indent: 30">while((_inp(p_STATUS)&amp;0x08)!=0); //等待HBIL=0</p> 
        <p style="text-indent: 30">(lst byte)</p> 
        <p style="text-indent: 30">ChangeCONTROL(2,0);</p> 
        <p style="text-indent: 30">_outp(p_CONTROL,CONTROL);</p> 
        <p style="text-indent: 30">}</p> 
        <p style="text-indent: 30">else//写{(略)}</p> 
        <p style="text-indent: 30">}</p> 
        <p style="text-indent: 30">…</p> 
        <p style="text-indent: 30">void main(void)</p> 
        <p style="text-indent: 30">{</p> 
        <p style="text-indent: 30">/*HPI初始化*/…</p> 
        <p style="text-indent: 30">/*等待DSP给主机发中断HINT(查询方式)后,从DSP读数*/</p> 
        <p style="text-indent: 30">WriteHPIreg(&quot;HPIC&quot;,0x0808); //清HINT中断</p> 
        <p style="text-indent: 30">/*读取DSP片内RAM区数据*/</p> 
        <p style="text-indent: 30">for(i=0;i&lt;data_length;i++)//data_length:读取数据的长度</p> 
        <p style="text-indent: 30">{</p> 
        <p style="text-indent: 30">HPIA=resultAddr++;//resultAdd:要读取的RAM数//据区起始地址</p> 
        <p style="text-indent: 30">WriteHPIreg(&quot;HPIA&quot;,HPIA);</p> 
        <p style="text-indent: 30">while((_inp(p_STATUS)&amp;0x40)!=0);//等待DSP发//送HINT有效信号(握手信号)</p> 
        <p style="text-indent: 30">//调用读RAM区数据的函数,并写入创建的文件data.dat</p> 
        <p style="text-indent: 30">WriteHPIreg(&quot;HPIC&quot;,0x0808); //清HINT中断</p> 
        <p style="text-indent: 30">WriteHPIreg(&quot;HPIC&quot;,0x0404); //主机发送DSINT有//效给DSP(握手信号)</p> 
        <p style="text-indent: 30">}</p> 
        <p style="text-indent: 30">WriteHPIreg(&quot;HPIC&quot;,0x0808); //清NINT中断</p> 
        <p style="text-indent: 30">}</p> 
        <p style="text-indent: 30">试验证明,主机并口的读取速度远低于DSP的执行速度,因此,程序子函数中的一些等待查询指令可替略。在主函数main()中,如果读取的DSP数据是静态的,不需实时提供,则这样的指令也可以省略。</p> 
        <p style="text-indent: 30">4.2 DSP的握手程序</p> 
        <p style="text-indent: 30">在实际情况中,需要传递的数据大都由DSP实时处理得到。一边处理一边传输可以大大提高系统的整体效率,而且由于HPI工作的特点,传输几乎可以不占用DSP的时间。唯一需要DSP干预的是数据准备好后通知主机接收(通过HINT中断)。这项任务可以放大DSP的DSPINT中断服务程序中进行其程序简要如下:</p> 
        <p style="text-indent: 30">.mmregs</p> 
        <p style="text-indent: 30">.include &quot;vectors.h&quot;</p> 
        <p style="text-indent: 30">dataarea .usect &quot;COMMS&quot;,100h,1;所需传递的数据块区间</p> 
        <p style="text-indent: 30">HOSTACK.macro</p> 
        <p style="text-indent: 30">hack ldm hpic,a ;累加器A载入HPIC值</p> 
        <p style="text-indent: 30">and #08h,a ;屏蔽HINT的其他位</p> 
        <p style="text-indent: 30">bc hack,aneq ;判断HINT的状态,直到HINT</p> 
        <p style="text-indent: 30">;位为0(即主机清HINT标志)</p> 
        <p style="text-indent: 30">.endm</p> 
        <p style="text-indent: 30">.text</p> 
        <p style="text-indent: 30">start:stm #00a0h,pmst;设置IPTR寄存器</p> 
        <p style="text-indent: 30">stm #0000h,st0 ;设置ST0、ST1寄存器</p> 
        <p style="text-indent: 30">stm #2800h,stl</p> 
        <p style="text-indent: 30">stm #0010,tcr ;关闭计时器</p> 
        <p style="text-indent: 30">stm #0ffffh,ifr ;清除所有的中断标志位<img border="0" src="cid:000401c6557d$317933dc$_CDOSYS2.0" align="right" hspace="1" vspace="1" width="372" height="215"></p>
        <p style="text-indent: 30">stm #0300h,imr ;使能DSPINT中断</p> 
        <p style="text-indent: 30">stm #280h,sp ;初始化堆栈指针SP为280h</p> 
        <p style="text-indent: 30">HOSTACK ;检查主机是否清HINT标志</p> 
        <p style="text-indent: 30">stm #0ah,hpic ;置HINT位,向主机发送</p> 
        <p style="text-indent: 30">;HINT有效信号,告知第一个数已准备就绪</p> 
        <p style="text-indent: 30">rsbx intm ;开启中断</p> 
        <p style="text-indent: 30">wait: b wait ;主程序(此处为死循环)</p> 
        <p style="text-indent: 30">hpi: stm #0ah,hpic ;当主机取完数后置DSPINT</p> 
        <p style="text-indent: 30">;位,进入DSPINT中断服务程序</p> 
        <p style="text-indent: 30">rete ;DSP向主机发送NINT握手</p> 
        <p style="text-indent: 30">;信号,通知下一个数已准备好</p> 
        <p style="text-indent: 30">.end     
          </span></td>                                  
      </tr>                                  
</tbody>                                  
    </table>                                  
                                      
</center></div>                                  
                                  
<p align="center"><br>                                  
</p>                                  
                                  
                                       
                                     
                                     
<p align="center"><br>                                     
                                                      
</body>                                                      
</html>                                                      

------=_NextPart_001_0002_01C655C0.3FBB5040--

------=_NextPart_000_0001_01C655C0.3FB90650
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-ID: <000101c6557d$317933dc$_CDOSYS2.0>
Content-Disposition: inline

R0lGODdhEgI8AaUAAAQEBISEhERERMTExCQkJKSkpGRkZOTk5BQUFJSUlFRUVNTU1DQ0NLS0tHR0
dPT09AwMDIyMjExMTMzMzCwsLKysrGxsbOzs7BwcHJycnFxcXNzc3Dw8PLy8vHx8fPz8/AQEBISE
hERERMTExCQkJKSkpGRkZOTk5BQUFJSUlFRUVNTU1DQ0NLS0tHR0dPT09AwMDIyMjExMTMzMzCws
LKysrGxsbOzs7BwcHJycnFxcXNzc3Dw8PLy8vHx8fPz8/CwAAAAAEgI8AQAG/sCPcEgsGo/IpHLJ
bDqf0Kh0Sq1ar9isdsvter/gsHhMLpvP6LR6zW673/C4fE6v2+/4vH7P7/v/gIGCg4SFhoeIiYqL
jI2Oj5CRkpOUlZZcDhNLBZqXnp+goYUGCEobAA1CGxMLFRoXorGySx0HRJ2zuVIEGEoGHR8DAAwK
FADAusmxCwALQgcYEsrTSR0BExocAx0dFQy2Bw0HEhERGRADHxvS1O19FRZDDwEeFs5EFRtIChFD
FQCwkjx4MITbhgIfGjhoUCGdkAsZGnA6ss3hkQ0RDlx4cGHjhQAW3Z2JoMEBBwoONBjQ0O9DBw4M
hnHYYKDfBAEic+LRAEHI/gMCAAAg0DfEA4AKRi4Y1aAAwIEJACSYJGAkAwAK9woEdRAsaFAFXDdA
AIChJREJGDQICICsSAcAAjjI5RAXgAGdagp4qAZgCAFgEzjgHSzHQq8PDhQcuRC07RCoCT5yWGCg
QYYMDo4ZgXB3iAQACD8QiHcBKLAAADIkBZBASLQjHfYO5PjhAgSzhMMMRCz7iIGrHS4gSDdBce7j
awT0/KDWyAQEv5EWYQasQT12Hw5oLoIg3hANqYV0F9JUgxAIXIs8YO3aeBG9RwDsRT7GQWsh954B
4AwgcHXz9AVYRgb9/BSUAbhY0M9RRjCjyQMQzKcKg9zdR154HyCQXlOl/nyAnhEQplYBArYYUQEE
AREBQAACdtGAd03pcxNR6iDQSwAXCABMBdi16GMYB8ADgHEBMPABVDQOwYyCDkCwwTkEDUBAiUQA
RQACHEgwlnQEEHAQWQEBgJuSYwGERAI4GSHfj1pMEBoH3hlhQXHOCJNOBe6xqacXFuD0k2pvSUdE
Ays2sFJtAMRTAAYEEQEhnBp08IAA/X0QIgMIEBBQBKgcsQADqKVnRAISyoPhnlk4oJpPQ5DywWQf
WNBZA9IUkAqquFZB0HoMeeVVjx9oBcsERn4AUrDAIiroBzGlw1hoRDz7qlcOMNaaUasWkQECKfpE
Ya5WOADtLQR98wF7/gmZRwGL4LYbxQCKPTDAAAtwqgCVQvyjjzCOZdBZtKARYUw662U7hHYIDVBA
BRkcoN2t6GrrlBAdbDAAp8u620QBAREggUQFFJBAkhxcMAAHjRagAaG4aOxyEQYg9YAE/wohzLj5
AqBPA3l+kAC7RUT8gDGaWLuaY/hVei7Q+AyjwAPiMGBMxi8f4cADFYATQAAOdO0AggJnkOcBCkjA
QctVu3xATAQIwLE8XY0ZrM7MaXaAqqAWsQF4FCawFaIU4PuBUSgbIQABajVzhFETtHwABSGlbYTg
TCywQKOSZ15VqU00gIE+EYiaGVXTBZBBAoIGYACLDzgQeXYPJEnE/gaWUY5ffj+21kEGIfeeQQfz
Bl+xwxsUXzzmX0ywgcPMH7AB8ppHr0QG0Eu/BKG+Zq/99tx37/33XlHQ5fgEiC+BBugbQGn3EJQJ
PgJBiU9++R6jb78CHpSj/89oB5IAA2bDWR0eADzgbeNyG5nNQLolhQUkIAPBi+C8EKjABXqhLRPg
SEc22JHqjYEjuzqOMBKgvxJGwAAoTGEK+6SAFrpQAdmgAANmOMMEQAADHWiADi0TABPqT4VAVABd
BEDEIh4OA0jEQPkYgAEIIKB9TvTVA7NEICBaoCkrGaIRiUiBJHrRffsBAIAGcYqMJIBReYAK+NYI
xfYJhYYM4MAa/ueYvTaOBQFwhKP9DNAUJIKRjvuxIwTySEP7GTJ9Edja1k4IvvnxIi5xhMkMYXhI
RCrykqarwMIqoMkG+I1AmRrfFotoAAdY4JSnNICCyoHJAKBuk5zkZAE6MIEBNK6WDCSCMMrgQTJA
7wEOy+URbCcFCIxREMIoUcDwcAoJPEABGdyA5aY5zQ1osnfYxIzXvNanIlKSkFJjAFAYIE1q0g6b
6NwmN0cpgCe2DwHiUyJQ/hhGBFzTVhqqgDq7ZgGzbdGddoQf9+jpvZhQgEMSICJA2yhQQDp0ewR9
aFCY9p6+uAwBPQPEKaiyKD0wQ3bJ+CUvKzgbai5AE504QC+f/kDS2TTOpBvoRiwr0IBE6m9rHyjH
AEDaMEtVUB22fCkShTm3lxnTEJnhgAduhQdm4M56eMESUbXysjUVYgPwy2gdnArV3ASFmFR1mVUJ
ARbtCCYPp3hqV0UyFrBaVGMrKsQ/hKCVs97BQWsdTFuREFa4HjMQnxmCBSiQh7esNK/J2OsR+uqu
rxICKgJ4AJIK+1bEsnVii61su6JiiAwIQAIU4Fwd3mJZnSjWCIzdLAAOiyrSllYk8HOrUc1UNde+
th1BSQJqZktUP1zgr3ew7W2nkVskZIa3hTgAp3orB+EONxnFXZxmIUEvXXKhAUQNyi8hwFQ9fKZY
cVgA0ihm/tEJ9BMBaYKJ+DaAARjGMU1FSIwFiKmKBUhzCMtrFCwu4LCkSEACLRzvc7MgxyQYZRJc
UeIHEMTVIpBECA3oIQkLELkCAI0BOBHcelZLhAwYw0J5sIpW2/Dbj7nlrYQaI/YQYhQAKAwCcqTR
4QgFYtT+TQhAIey0hhiUgDDmKhgY0oC9YAwDT7cRAvBAC0vjM7sS4cEPQAAJNdBPDg9BhkNggAYm

⌨️ 快捷键说明

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