摘要:C语言有功能丰富、表达能力强、目标程序效率高、可移植性好的优点,本文介绍了MOTOROLA MCU平台上C语言的特点、C编译器的组成、MUC平台上C语言程序的构成以及C语言与汇编语言的接口等几个问题。C语言的应用将大大缩小MOTOROLA单片机的软件开发周期,提高开发效率和软件的可靠性。
关键词:单片机;C语言;程序
中国分类号:TP368。2
引言:
C语言是一种原用于编写UNIX操作系统的语言,在国内外得到了广泛的使用,C语言有功能丰富、表达能力强、目标程序效率高、可移植性好,既有高级语言的优点,又 有低级语言的特点,与汇编语言相对有许多优越之处,如:程序员对单片机的指令系统不需了解,仅要求对单片机的存储器结构有所了解,寄存器分配、不同存储器的寻址及数据类型等由编译器管理;它是一种结构化的语言并提供包含许多标准子程序的库,具有较强的数据处理能力;编程及调试的时间缩短,提高了编程的效率。
由于C语言所具有的上述显而易见的优越性,MOTOROLA为其单片机引入了由第三方COSMIC软件公司所提供的C语言编译器。
1 MOTOROLA MCU平台上C 语言的特点
一般来讲,基于MCU平台的C 语言有如下几个特点:①MCU的RAM和ROM资源是有取胜的,因而用户在编写C程序时,要小心安排和使用变量以节约有限的RAM资源,同样,代码和数据必须经过优化处理,以节省其所占的ROM资源,在CosmicC中,此任务由一个代码优化程序完成。②MOTOROLA单片机有不同系列,品种十分繁鑫,每种MCU有不同的存贮器映像和系统资源头文件,并在连接文件(link file)中指定变量,常量代码及中断向量等在存贮器映像中安排。③变量I/O,函数模块必须在系统启动时进行初始化。④由于MCU通常用于需实时处理的场合,系统通常需要提供中断功能及C与汇编语言的混合编程功能。
Cosmic C软件包主要由三个部分组成:编译器、连接器和应用程序、编译器包含语法分析器、汇编代码产生器、汇编代码优化器和可重定位目标代码产生器几个部分。连接器中包含两个模块:绝对地址代码产生器和调试预处理器。同时CosmicC还提供如:可执行代码到S-19代码转换器、绝对地址列表文件产生器、目标代码库及汇编器等应用程序。
2.基于MCU的C程序编写方法
一个完整的C语言程序通常至少包含如下5个:汇编语言的启动文件、存贮器映像、I/O端口及寄存器定义的头文件、主程序模块、主断服务程序模块及一个中断向量表文件。
启动文件(startup file) 通常由系统附带,用户仅需在编译连接时将它加入用户程序即可,它通常是在系统复位后即进行,其作用是建立C语言程序的运行环境、初始化堆找指针,对变量进行初始化,然后将控制交给C语言程序的主程序。
对于每一个具体的MCU,用户需要写一个有关I/O端口及寄存器定义的头文件,例如
其中定义了A、B端口寄存器。A、B端口的数据方向寄存器,定时器有关的寄存器,MOR寄存器及COP看门狗寄存器等。
可见它与一般的C语言程序是相类同的。在主程序中,首先初始化数据端口及商品的数据传送方向,初始化定时嚣并开定时器及CPU的中断允许,然后程序进入循环,等定时器中断。
下面为中断服务程序。当进入中断服务程序后,首先复位中断标志,然后从正弦波表中取出波形数据送到PORTA、PORTA的数据以D/A转换器后变为正弦波形。
在此中断向量中,未使用的中断向量处被填以NULL,定时器中断被使用,因而填以其中断服务程序名tovf_isr,而系统复位向量填入_stext则为启动文件的第一个可执行指令的标号,即系统复位后,立即招待启动文件以初始化系统。
3 MCU平台C语言与汇编语言程序的混合编程
由于单片机常常用于实时控制领域,而C语言虽然编程效率高,但编译代码通常较汇编语言大,招待的速度不可避免,故汇编语言代码慢,为了兼取汇编和C语言二者所长,ConsmicC还提供了两种方式在C语言程序中汇编合编程,一种方式是当所需汇编者按语句不多时,直接插入汇编语句,例如:可以C程序插入:_asm("cli\n");用于清除中断屏蔽,开中断。另一种混合编程的方法是:用汇编语言编写整个子程序,只要孩子程序按CosmicC的规范命名及传递参数,C语言程序即可直接如调用一般C语言函数一样调用孩子程序。汇编子程序程序名前必须加一下划线"_"如"_add"子程序即相当于C语言的"add"函数。能被COSMIC C调用的汇编语言子程序的入口参数除第一个参数必须放在A寄存器中外,其余参数都必须放在堆栈之中,而函数的返回值,则必须放在A寄存器中。
下面为一个简单的C语言函数:
略
其对应的汇编语言程序为:
略
4.结论
本文介绍了MOTOROLA MCU平台上C语言的特点、C编译器的组成、MCU平台上C语言程序的构成以及C语言与汇编语言的接口等几个问题。C语言的应用将大大缩小MOTOROLA单片机的软件开发周期,提高开发效率和软件的可靠性。
参考文献
1 马忠梅等、单片机的C语言的应用程序设计 北京 北京航空航天大学出版社 1997.3
2 谭浩强 C程序设计 北京 清华大学出版社 1991.7
文章评论(0条评论)
登录后参与讨论