微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > PIC 单片机 C 语言编程简介(4)

PIC 单片机 C 语言编程简介(4)

时间:11-22 来源:互联网 点击:

)。

虽然 PICC 支持 C 和汇编原程序模块存在于同一个项目中,但要编写纯汇编文件必须首

先了解 PICC 特有的汇编语法结构。Hitech 公司提供了完整的文档介绍其汇编器的使用方法,

有兴趣者可以从其网站上下载 PICC 的用户使用手册查看。

笔者认为,类似于纯汇编文件的代码也可以在 C 语言框架下实现,方法是基于 C 标准

语法定义所有的变量和函数名,包括需要传递的形式参数、返回参数和局部变量,但函数内

部的指令基本用嵌入汇编指令编写,只有最后的返回参数用 C 语句实现。这样做后函数的

运行效率和纯汇编编写时几乎一模一样,但各参数的传递统一用 C 标准实现,这样管理和

维护就比较方便。例如下面的例 11-15 实现一个字节变量的偶校验位计算。

bit EvenParity(unsigned char data)

{

#asm


swapf ?a_EvenParity+0,w

xorwf ?a_EvenParity+0,f

rrf ?a_EvenParity+0,w

xorwf ?a_EvenParity+0,f

btfsc ?a_EvenParity+0,2

incf ?a_EvenParity+0,f

#endasm

//至此,data 的最低位即为偶校验位

if (data&0x01) return(1);

else return(0);

}


//入口参数 data 的寻址符为 ?a_EvenParity+0


例 11-15 C 函数框架中使用嵌入汇编指令

尽量使用全局变量进行参数传递

使用全局变量最大的好处是寻址直观,只需在 C 语言定义的变量名前增加一个下划线

符即可在汇编语句中寻址;使用全局变量进行参数传递的效率也比形参高。编写单片机的 C

程序时不能死硬强求教科书上的模块化编程而大量采用行参和局部变量的做法,在开发编程

时应视实际情况灵活变通,一切以最高的代码效率为目标。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top