AVR单片机中
创新互联公司是一家从事企业网站建设、网站设计制作、成都网站制作、行业门户网站建设、网页设计制作的专业网站建设公司,拥有经验丰富的网站建设工程师和网页设计人员,具备各种规模与类型网站建设的实力,在网站建设领域树立了自己独特的设计风格。自公司成立以来曾独立设计制作的站点千余家。
asm("nop");
这条语句,其中asm()的作用是指函数内部的参数翻译为汇编指令,其作用是在C语言环境下直接使用汇编指令执行。
nop是一个空等待汇编指令,这个指令执行时,单片机是什么也不做的,仅仅起一个时间延时作用。
对于AVR单片机来与,如果不分频,那么一个振荡周期就是一个指令周期,因此8M晶振时,其一个指令周期时间是1/8000000秒,即125纳秒。
ASM(Assembly Language)是汇编语言源程序的扩展名,汇编程序员也称汇编为ASM
当你要在程序中插入一段汇编语言代码的时候,使用
_asm { (汇编代码)} 注意前面有个下划线。
当你要插入一句汇编语言代码的时候,也可以这么写如
_asm MOV AL, 2
asm文件是宏汇编文件,在c中调用方法如下:
1、编写汇编程序:
#include xc.inc
GLOBAL _add ; 声明全局可用的函数add
SIGNAT _add,4217 ; 告诉编译器调用方式
;
PSECT mytext,local,class=CODE,delta=2
; our routine to add to ints and return the result
_add:
; W is loaded by the calling function;
BANKSEL (PORTB) ; select the bank of this object
ADDWF BANKMASK(PORTB),w ; add parameter to port
; the result is already in the required location (W)so we can ; just return immediately
RETURN
2、编写c语言程序
//声明调用外部的汇编程序
extern unsigned char add(unsigned char a);
void main(void) {
volatile unsigned char result;
result = add(5); // 开始调用上面声明的汇编函数
}
Turbo C 2.0 中,利用asm关键字实现在源程序中嵌入汇编语句。
在TC2中,asm是一个关键字(key word)用来在程序中嵌入汇编语言。使用asm关键字的格式为:
asm {
汇编程序语句块
}
因为asm是TC2的关键字,所以用asm嵌入汇编程序不需要特殊的头文件。
在你的程序中,函数iowrite 和 ioread是利用嵌入汇编程序实现的。按常规方法向函数传入参数,调用,获取返回值。也就是说,用汇编实现的函数与常规函数没有什么差异。
1、C语言中没有_nop_()函数,该函数是在51单片机中用的延时函数,延时一个指令周期。一般包含在 intrins.h 头文件当中。 2、例如用6MHz的晶振,则如下for循环大约延时1秒。 int i; for(i=0; i
_asm mov ax,0;
_asm{
mov ax,0
mov bx,0
}
两种写法都行,VC++6.0编译通过