-
-
-
wilton_gao | 当前状态:离线
总积分:123 2025年可用积分:0
注册时间: 2008-01-16
最后登录时间: 2009-09-29
-
-
DSP的C语言的特殊性
wilton_gao 发表于 2008/10/27 14:12:50 988 查看 0 回复 [上一主题] [下一主题]
手机阅读
举个例子,在51汇编中我们写 MOV A,#20H,汇编程序能够识别A是指累加器,而在51 C程序中我们写 ACC=32;,编译器能够识别ACC是指累加器而不是一般的变量。即每一个寄存器都有一个专有名字供开发者使用,它们定义在一个头文件reg51.h 中,程序员只需在程序的开始部分用#include“reg51.h”语句将该文件包含进来即可。注意:这些寄存器的名字不能用做变量名。
同样,在TMS320F240的C语言中也有一个头文件C240.H定义各个寄存器的名称,这里摘录几条语句进行介绍。
比如:#define IMR ((PORT)0x0004)
#define XINT1_CR ((PORT)0x07070)
IMR 、XINT1_CR就对应两个寄存器,实际是寄存器的地址,用高级语言的说法是指针。我们也在程序的开始部分用#include“c240.h”语句将该文件包含进来。这样,在DSP的C语言中使用它们只需在前面加一个星号(*),例如,
*IMR=0X1010;/* 将16进制数1010H赋给IMR寄存器 */
*XINT1_CR=0X0A0B0;/*将16进制数A0B0H赋给XINT1_CR寄存器 */
开发者最好将c240.h这个文件打印出来,弄清楚各个寄存器的定义名称。至于不涉及硬件的语法和ANSI 语法一样,需要注意的是,有些ANSI标准中的函数在DSP的编译器中不提供,读者可以参考DSP编译器的C语言手册。搞清楚了这些特殊性,由汇编语言转到C语言开发是很容易的事,当然,没有汇编语言编程基础的人同样可以用C语言开发DSP应用系统。
有关嵌入式系统的C语言编程可参考《单片机与嵌入式系统应用》2001年1到6期上马忠梅的“嵌入式C编程技术”,本文不做讨论。下面只针对以TMS320F240芯片为处理器的嵌入式C语言编程进行阐述,希望能够指导读者进行具体操作。