C5402一些实验--------基本指令实验.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C5402一些实验--------基本指令实验

C5402一些实验基本指令实验一 实验目的 (1)了解DSP54xx的数据格式; (2)了解DSP的浮点运算机制; (3)了解DSP的汇编语言实现乘除运算; (4)了解DSP的C语言编程机制; (5)了解配置文件的编写; 二 实验内容 DSP中数据的格式有多种,包括16位有符号数、16位无符号数、32位无符号数、32位有符号数、32位浮点数、32位IEEE浮点数等各种形式。由于数据所设置的小数点位置的不同,即使同一类型的数据也会出现不同的数值。这一点是程序设计中尤其需要注意的地方。如果采用C语言编写程序,CCS会自动去管理各种数据;但如果采用汇编语言编写程序,对于各种数据的管理将显得尤其麻烦,然而在许多DSP的应用场合,采用纯汇编编写程序是必须的,所以对于DSP中数据各种格式的情况最好还是需要了解。 DSP中定点数据表示方法: DSP表示整数时,有两种格式,有符号数和无符号数,如果作为有符号数表示时,其最高位表示符号,最高位为0表示其为正数,为1表示其为负数,最低位表示1,次低位表示2的1次方,次高位表示2的14次方。无符号数表示时,最高位仍然作为数值位计算。例如,有符号数所能够表示的最大的正数为07FFFH,等于32767(10进制),而0FFFFH表示最大的负数-1;无符号数不能表示负数,其所能够表示的最大的数为0FFFFH,等于十进制数的65535。 DSP表示小数时,其符号和上面整数的表示一样,但是必须注意如何安排小数点的位置,原则上小数点的位置根据程序员的爱好可以安排在任何位置,为了便于数据处理一般安排在最高位后(以下我们仅以小数点在最高位的形式进行讨论),则最高位表示符号位,这样次高位表示0.5,然后是0.25,依次减少一半。例如:4000H表示小数0.5,1000H表示小数0.25,而0001H表示16位定点DSP表示的最小的小数(有符号)0.000030517578125。 DSP中表示32位的数据时,采用使用两个内部存储器保存一个数据。这样,每个数据需要相邻地址的两个空间,其中较低地址的空间保存数据的低16位,较低地址永远为无符号数;较高地址空间保存数据的高15位和符号位(如果是无符号数,则保存高16位)。例如需要保存16进制0FFFFFH这个数据,10进制中等于1048575,DSP中使用连续的地址,高地址空间为0FH(有符号数),低地址空间为0FFFFH(无符号数)。DSP中还可以实现更多位数的数据,采用三个甚至四个地址空间去保存一个数据,这样表示数据的数值将更大(整数)或者更精确(小数)。 例1??浮点数乘法和除法 本例要求实现浮点数的乘法和除法。采用C语言编写。实现浮点数相乘相除,例如:实现12.7×(-9.2),12.7÷(-9.2) 程序代码如下: #include math.h #pragma DATA_SECTION(data1,data_buf1)? ? float data1; #pragma DATA_SECTION(data2,data_buf2)?? float data2; #pragma DATA_SECTION(data3,data_buf3)? ? float data3; #pragma DATA_SECTION(data4,data_buf4)? ? float data4;?? #pragma DATA_SECTION(data5,data_buf5)? ? float data5; void main(void) { data1=0.5; data2=1; data3=data1*data2; data4=data1/data2;? ?? ?? ?? ?? ?? ? asm (NOP); } 相应的配置文件为: MEMORY??{ ? ?? ???PAGE 0: ? ?? ?? ?PARAM:??org = 1000h? ? len = 0efd0h ? ?? ???PAGE 1: ? ?? ?? ?? ?? ? ? ?? ?? ?? ?? ? DARAM:??org = 02000h? ???len = 0ffffh ? ?? ?? ?? ?? ? ? ?? ???}? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? SECTIONS{ ? ?? ???.text??: ? ?? ? PARAM? ?PAGE 0 ? ?? ???.cinit??: ? ?? ? PARAM? ?PAGE 0 ? ?? ???.data? ?: ? ?? ? DARAM? ?PAGE 1 ? ?? ???.bss??: ? ?? ? DARAM? ?PAGE 1 ? ?? ???.const??: ? ?? ? DARAM? ?PAGE 1 ?

文档评论(0)

qwd513620855 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档