×
单片机 > 单片机程序设计 > 详情

PICC C中的函数

发布时间:2024-05-20 发布时间:
|

PICC中函数,由于堆栈资源的原因,在PICC中的函数不支持函数的递归调用。


1、带返回值的函数


2、无返回值的函数


在PICC中,我们直接使用寄存器的名字和位名,这些都归功于相关的头文件。还有一些宏定义也在这些头文件中。


’PIC.H‘文件是PICC编译必需的头文件。


根据用户所选用的单片机芯片型号自动包含相应的头文件。


定义常用的嵌入汇编宏定义。配置位定义、EEPROM初始化数据。当中的宏定义如同函数,减少堆栈的使用次数。


注意:宏定义的最后一行通常不用“;”,调用宏定义时就要加上’;‘,这样调用宏定义就像调用一个C函数一样。


PIC168XA.H是对具体单片机的特殊功能寄存器及位进行命名


static volatile unsigned char PORTB @0X06;


所有寄存器定义中均有’static volatile‘关键字,关键字’static‘是说明这些变量是静态的。


在PICC安装目录的INCLUDE目录中,还有许多其他头文件,最常用的数学类函数math.h。


在调用内部函数时,变量类型如不一致,PICC将自动转换。


PICC的中断服务程序的编制


PICC可以实现C语言的中断服务程序。void interrupt INT_SER(void)


函数名“INT_SER”可以是符合命名规则的其他字符。PICC在最后进行代码连接时会自动将该函数定位到0x0004中断服务响应。编译器也会实现中断函数的返回指令’retfie‘.PICC还会自动加入代码实现中断现场的保护与恢复,编程时不要像编写汇编那样加入中断现场保护和恢复指令语句。


注意:在中断服务程序中调用的函数,必须专用,即不能同时在中断之外的程序中调用又在中断服务程序中调用AD_SUB;只要不重名即可。


PIC16系列单片机的中断入口只有一个,即0004,因此程序中只有一个中断服务函数,可以通过判断中断标志位来确定中断程序的执行走向。


在C中嵌入汇编指令


嵌入汇编有2种方法:一是行嵌入,二是块嵌入


1、行嵌入格式为 asm("汇编语句");


2、如果要嵌入几个汇编指令,则用块嵌入,块嵌入的格式为


#asm


汇编指令 1


汇编指令 2


...


汇编指令 n


#endasm


其中的汇编指令必须符合汇编指令规范,而且在汇编指令中引用变量必须是PICC定义的全局变量(包括PICC头文件所定义的特殊功能寄存器和用户定义的变量),且在变量前加上"_".


行嵌入中在后面有分号,块嵌入中每一行都没有分号。


既然用了C语言,就不要惦记着汇编语言!除非万不得已,一般不要嵌入汇编语言。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
浅谈AVR中定时器几种工作模式