用PICC编译器开发PIC系列单片机的代码
[09-12 17:35:03] 来源:http://www.88dzw.com 单片机学习 阅读:8312次
文章摘要:PICC函数参数的传递是根据被传参数的长度,用W、被调函数的自动变量区域或被调函数的参数区域传递,传递代码比较高效。传递给函数的参数可以通过一个由问号“?”、下划线“_”及函数名加一个偏移量构成的标号获取。下面为一调用求和子程序的源泉代码:Unsigned char add_function(unsigned char augend,unsigned char addend);Void main(void){unsigned char temp1,temp2,temp3;tem3=add_function(temp1,temp2);}unsigned char add_function(uns
用PICC编译器开发PIC系列单片机的代码,标签:单片机开发,单片机原理,单片机教程,http://www.88dzw.comPICC函数参数的传递是根据被传参数的长度,用W、被调函数的自动变量区域或被调函数的参数区域传递,传递代码比较高效。传递给函数的参数可以通过一个由问号“?”、下划线“_”及函数名加一个偏移量构成的标号获取。下面为一调用求和子程序的源泉代码:
Unsigned char add_function(unsigned char augend,unsigned char addend);
Void main(void)
{
unsigned char temp1,temp2,temp3;
tem3=add_function(temp1,temp2);
}
unsigned char add_function(unsigned char augend,unsigned char addend)
{
return(augend + addend);
}
编译后生成的汇编程序为:
_main
; _temp2 assigned to?a_main+0
;_temp3 assigned to ?a_main+1
; _temp1 assigned to ?a_main+2
bcf status,5
bcf status,6
movf (((?a_main+0))),w
movwf(((?_add_function)))
movf (((?a_main+2))),w
fcall (_add_function)
movwf(((?a_main+1)))
_add_function
; _augend assigned to ?a_add_function+0
; _augend stored from w
bcf status,5
bcf status,6
movwf(((?a_add_function+0)))
movf (((?a_add_function+0))),w
addwf (((?_add_function+0))),w
return
3 PICC语言和汇编语言的混合编程
一般情况下,主程序都是用C语言编写的。C语言与汇编语言最大的区别在于,汇编程序执行效率较高,因为,C语言首先要用C编译器生成汇编代码,在不少情况下,C编译器生成的汇编代码不如用手工生成的汇编代码效率高。在PICC中,可以用两种方法在C程序中调用汇编程序。一种方法是使用#asm,#endasm及asm()在C语言中直接嵌入汇编代码,#asm和#endasm指令分别用于标示嵌入汇编程序块的开头和结属;asm()用于将单条汇编指令嵌入到编译器生成的代码中,如下所示:
void func1(void){
asm("NOP");
#asm
nop
rlf_var,f
#endasm
asm("rlf_var,f");
}
需要注意的是,嵌入汇编不是完整意义上的汇编,是一种伪汇编指令,使用时必须注意它们与编译器生成代码之间的互相影响。
另一种方法是将汇编作为一个独立的模块,用汇编编译器(ASPIC)生成目标文件,然后用链接器和C语言生成的其它模块的目标文件链接在一起。如果变量要公用时,则在另一个模块中说明为外部类型,并允许使用形式参数和返回值。
例如,如果在C模块中使用汇编模块中的函数,那么在C中可知下声明:
extern char rotate_left(char);
本声明说明了要调用的这个外部函数有一个char型形式参数,并返回一个char型的值。而rotate_left()函数的真正函数体在外部可以被ASPIC编译的汇编模块(文件名后缀.as)中,具体代码可以如下编写:
《用PICC编译器开发PIC系列单片机的代码》相关文章
- › 用PIC单片机控制DDS芯片AD9852实现雷达跳频系统
- › 用PICC编译器开发PIC系列单片机的代码
- › 采用PIC16F877的汽车电动助力转向系统
- 在百度中搜索相关文章:用PICC编译器开发PIC系列单片机的代码
- 在谷歌中搜索相关文章:用PICC编译器开发PIC系列单片机的代码
- 在soso中搜索相关文章:用PICC编译器开发PIC系列单片机的代码
- 在搜狗中搜索相关文章:用PICC编译器开发PIC系列单片机的代码