历史上的今天
今天是:2025年03月16日(星期日)
2020年03月16日 | PICC C中的函数
2020-03-16 来源:eefocus
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语言,就不要惦记着汇编语言!除非万不得已,一般不要嵌入汇编语言。
史海拾趣
|
目录: 第一章 晶体管的放大作用 第二章 利用PN结组成的一些半导体器件 第三章 交流放大器 第四章 直流放大器 第五章 反馈在放大器中的应用 第六章 调制式直流放大器 由于扫描缘故,书中局部地方不是很清楚 详细信息: 书籍作者:清华大 ...… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 09:37 编辑 /***************************************************** 本程序的目标是这样的: 1:不使用INTn中断功能,按键接在普通IO上 2:由定时器T/C2每隔一段时间检测按键一次, 并具有防抖动功能 3:每点击按 ...… 查看全部问答> |
|
电工测量与电测仪表--很基础很实用的好书 序言 前言 第一章 电测技术基础 第一节 测量的定义和分类 第二节 测量误差 第三节 电测仪表的分类 第三节 电测仪表的主要技术指标 第二章 电气测量指示仪表 第一节 电气测量指示仪表的概念和分 ...… 查看全部问答> |
|
1.Found clock-sensitive change during activeclockedge at time <time> on register \"<name>\"原因:vector sourcefile中时钟敏感信号(如:数据,允许端,清零,同步加载等)在时钟的边缘同时变化。而时钟敏感信号是不能在时钟边沿变化 ...… 查看全部问答> |
|
广州市澄浩信息科技有限公司是一家集“研发,生产,销售”为一体的高科技企业,主要从事GPS导航仪、车载多媒体娱乐系统等高端电子产品研究、开发、生产及信息数据库的开发等业务领域。本公司以信息服务为发展方向,目标建立一支业务水平精湛、富有 ...… 查看全部问答> |
|
为什么在MULTISIM10中,单独做个电压比较器可以出来结果,加的信号源是系统的函数发生器(输入10V,1KHz,正弦波)~~~~~但为什么连到我们自己做的信号源(示波器显示也是10V,1KHz,正弦波)上就出来结果不对呢?… 查看全部问答> |
|
就想散分 问问行情,关于嵌入式!!!谢谢!!!!!!!!!!!!! 在北京 做嵌入式开发,比如用C ,c++之类 的 做驱动,或者是软硬结合的 产品 嵌入式开发,linux ,arm 等,工资比asp.NET 高很多吗? 比如本科生 两年经验的嵌入式,在北京拿多少? 回答 都有分送,谢谢各位 前辈!!!! 前提是 能力 ...… 查看全部问答> |




