700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > STC89C52RC单片机额外篇 | 04 - 认识头文件<intrins.h>与_nop_函数

STC89C52RC单片机额外篇 | 04 - 认识头文件<intrins.h>与_nop_函数

时间:2019-11-21 20:38:48

相关推荐

STC89C52RC单片机额外篇 | 04 - 认识头文件<intrins.h>与_nop_函数

1 <intrins.h>头文件

头文件<intrins.h>在我们51单片机日常开发中经常使用,特别是_nop_()函数,以下是<intrins.h>的内容:

/*--------------------------------------------------------------------------INTRINS.HIntrinsic functions for C51.Copyright (c) 1988- Keil Elektronik GmbH and ARM Germany GmbHAll rights reserved.--------------------------------------------------------------------------*/#ifndef __INTRINS_H__#define __INTRINS_H__#pragma SAVE#if defined (__CX2__)#pragma FUNCTIONS(STATIC)/* intrinsic functions are reentrant, but need static attribute */#endifextern void_nop_(void);extern bit _testbit_ (bit);extern unsigned char _cror_ (unsigned char, unsigned char);extern unsigned int _iror_ (unsigned int, unsigned char);extern unsigned long _lror_ (unsigned long, unsigned char);extern unsigned char _crol_ (unsigned char, unsigned char);extern unsigned int _irol_ (unsigned int, unsigned char);extern unsigned long _lrol_ (unsigned long, unsigned char);extern unsigned char _chkfloat_(float);#if defined (__CX2__)extern int abs (int);#endif#if !defined (__CX2__)extern void_push_ (unsigned char _sfr);extern void_pop_(unsigned char _sfr);#endif#pragma RESTORE#endif

Intrinsic functions for C51.翻译过来看,里面的函数都是C51的内在函数。当然我们是看不了函数的原型,它们都是以接口的形式展现给大家,就像大家在编写C程序调用头文件<stdio.h>的时候一样,我们只能可以看到<stdio.h>有哪些函数可以给我们用,但是看不到这些函数的具体实现,如printf函数。

下面给个表格大家了解各个函数使用:

一般我们一般用得比较多的是_nop__cror__crol_函数!下面我讲解一下_nop_函数。

2 _nop_函数

_nop_函数对应51单片机汇编语言中NOP指令,它是在51单片机中用的延时函数,表示执行一条没有什么意义的指令,延时一个指令周期,有的指令周期是两个或两个以上的机械周期,但是_nop_();指令需要的只是一个机械周期也就是12个时钟周期(震荡周期)。

这里有个小知识:

51单片机中,1个机械周期 = 12个时钟周期 = 12 * (1 / f)。(f 为晶振频率)。

如果只用的是12MHZ的晶振,那么 一个机械周期就是1us;也就是说:

_nop_();延迟时间为 1us。可以较为精确得控制延迟时间。

NOP指令的作用:

通过NOP指令的填充(NOP指令一个字节),使指令按字对齐,从而减少取指令时的内存访问次数(一般用来内存地址偶数对齐,比如有一条指令,占3字节,这时候使用NOP指令,CPU就可以从第4个字节处读取指令)。通过NOP指令产生一定的延迟。I/O传输时,也会用一下NOP指令,等待缓冲区清空,总线恢复。清除由上一个算术逻辑指令设置的标志位。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。