英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 4035|回复: 0
打印 上一主题 下一主题

怎么在c语言中使用汇编内嵌?

[复制链接]
跳转到指定楼层
1#
发表于 2009-4-18 17:56:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在PIC中有两种方式可以嵌入汇编,一种是将函数完全用汇编语言编写,然后用ASPIC独立汇编后得到扩展名为.ASM文件,再在c程序中用extern声明这个外部函数。需要注意的是汇编函数名要和C程序中声明的函数名相同并且在函数名前面加下划线“_”。     另一种方法是将PIC指令通过嵌入指令来直接写到C程序中,具体是这样:由#asm开头,中间写汇编语句,最后由#endasm结尾。如果使用单句汇编指令,还可以采用asm()。在这种方法中要注意的是#asm开头,#endasm结尾的方式所嵌入的汇编程序执行起来并不
在 C 原程序中直接嵌入汇编指令是最直接最容易的方法。如果只需要嵌入少量几条的
汇编指令,PICC 提供了一个类似于函数的语句:
asm(“clrwdt”);
双引号中可以编写任何一条 PIC 的标准汇编指令。例如:
for (;;) {
asm("clrwdt"); //清看门狗
Task();
ClockRun();
asm("sleep"); //休眠
asm("nop"); //空操作延时
}   
               逐行嵌入汇编的方式

完全按照C程序的执行顺序,只有asm()方式服从C程序执行顺序。
如果需要编写一段连续的汇编指令,PICC 支持另外一种语法描述:用“#asm”开始汇
编指令段,用“#endasm”结束。例如下面的一段嵌入汇编指令实现了将0x20~0x7F 间的
RAM 全部清零:
#asm
movlw 0x20
movwf _FSR
clrf _INDF
incf _FSR,f
btfss _FSR,7
goto $-3
#endasm

整段嵌入汇编的方式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|公司首页|Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 ( 粤ICP备09008620号 )

GMT+8, 2024-11-24 04:51 , Processed in 0.050679 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表