Bootstrap

<intrins.h>库函数

<intrins.h> ——Intrinsic functions for C51

常用函数:

_nop_()      		空操作8051 NOP 指令
_crol_()     	 	字符循环左移 
_cror_()		 	字符循环右移 
_irol_()		 	整数循环左移 
_iror_() 			整数循环右移 
_lrol_() 			长整数循环左移 
_lror_() 			长整数循环右移 

函数原型:

说明:

#ifndef  _A_H			//		“if not define a.h”	 如果不存在a.h
#define	 _A_H			//		“define a.h”	就引入a.h
#endif					//		否则不需要引入

此代码为避免头文件重复包含的固定格式

/*--------------------------------------------------------------------------
INTRINS.H

Intrinsic functions for C51.
Copyright (c) 1988-2010 Keil Elektronik GmbH and ARM Germany GmbH
All rights reserved.
--------------------------------------------------------------------------*/

#ifndef __INTRINS_H__
#define __INTRINS_H__

#pragma SAVE

#if defined (__CX2__)
#pragma FUNCTIONS(STATIC)
/* intrinsic functions are reentrant, but need static attribute */
#endif

extern void          _nop_     (void);
		/*	空操作指令:延时一个机器周期————直接执行NOP指令;			*/
			
extern bit           _testbit_ (bit);
		/*	_testbit_产生一个JBC 指令,该函数测试一个位,当置位时返回1,否则返回0。
			如果该位置为1,则将该位复位为0。8051 的JBC 指令即用作此目的。
			_testbit_只能用于可直接寻址的位;在表达式中使用是不允许的。*/

extern unsigned char _cror_    (unsigned char, unsigned char);
		/*		字符循环右移函数————需要位移的变量———循环右移的位数————
				将char型变量循环右移,移动指定位数后返回;			*/
				
extern unsigned int  _iror_    (unsigned int,  unsigned char);
		/*		整数循环右移函数———需要位移的变量——循环右移的位数————
				将int型变量循环右移,移动指定位数后返回;				*/
				
extern unsigned long _lror_    (unsigned long, unsigned char);
		/*	长整数循环右移函数———需要位移的变量——循环右移的位数————
			将long型变量循环右移,移动指定位数后返回;				*/
extern unsigned char _crol_    (unsigned char, unsigned char);
		/*		字符循环左移函数————需要位移的变量———循环左移的位数————
				将char型变量循环左移,移动指定位数后返回;			*/
				
extern unsigned int  _irol_    (unsigned int,  unsigned char);
		/*		整数循环左移函数———需要位移的变量——循环左移的位数————
				将int型变量循环左移,移动指定位数后返回;				*/
				
extern unsigned long _lrol_    (unsigned long, unsigned char);
		/*	长整数循环左移函数———需要位移的变量——循环左移的位数————
			将long型变量循环左移,移动指定位数后返回;				*/
			
extern unsigned char _chkfloat_(float);
#if defined (__CX2__)
extern int           abs       (int);
extern void          _illop_   (void);
#endif
#if !defined (__CX2__)
extern void          _push_    (unsigned char _sfr);
extern void          _pop_     (unsigned char _sfr);
#endif

#pragma RESTORE

#endif
;