常用函数: _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
上一篇:蜂鸣器(HC6800-EM3 V2.2开发板)
下一篇:单片机(AT89C51)中断系统详解和中断系统应用实验
推荐阅读最新更新时间:2024-11-12 08:02