intrins,intrinsh中的intrins是由哪些英文单词构成的谢谢
来源:整理 编辑:智能门户 2023-09-03 18:31:37
本文目录一览
1,intrinsh中的intrins是由哪些英文单词构成的谢谢
是 intrinsic 的缩写,原生(代码)/内联(代码)的意思。百度嫌我字数不够
2,c语言中intrinsh和absacch的作用是什么
请参考以下百科链接intrins.h => http://baike.baidu.com/view/1745068.htmabsacc.h在程序中,用“#include<absacc.h>”即可使用其中定义的宏来访问绝对地址,包括: CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD 例如: rval=CBYTE[0x0002];指向程序存贮器的0002h地址 rval=XWORD [0x0002];指向外RAM的0004h地址
3,intrins是什么意思
51单片机c语言中intrins.h头文件的相关函数包含intrins.h这个文件,在c51单片机编程中,头文件intrins.h的函数使用起来,就会让你像在用汇编时一样简便.如果你要用到这个库文件里的函数的话,你就得包含它。比如你要用_irol_这个函数,你就得包含它,要不让编译器会找不到这个函数,就会报错。举例:#include<intrins.h> main() unsignedinty; y=0x00ff; y=_irol_(y,4); }如果没有#include<intrins.h>,就会报错的,所以,如果想使用<intrins.h>里面的函数,就要#include<intrins.h>
4,什么时候用intrinsh
在程序中要发布一个空指令_nop_()的时候,需要用到intrins.h,或者是有字符循环移位指令_crol_等时也需要用到intrins.h,一般只有这两种情况。使GCC兼容MSVC的intrin.h[cpp] view plain copy#ifdef __GNUC__ inline unsigned char _BitScanForward(unsigned long * Index, unsigned long Mask) unsigned int EFlags = 0; __asm__ ("bsf %[Mask], %[Index];" "pushf;" "pop %[EFlags];" : [Index]"=r"(*Index), [EFlags]"=r"(EFlags) : [Mask]"r"(Mask)); return EFlags & 0x40; } #elif _MSC_BUILD #include #endif
5,keil中INTRINSH中包括哪些函数都有些什么用
extern 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);extern void _push_ (unsigned char _sfr);extern void _pop_ (unsigned char _sfr);函数有这些,内部函数INTRINS.H内部函数的原型声明包含在头文件INTRINS.H函数原型: unsigned char _crol_(unsigned char val,unsigned char n); unsigned int _irol_(unsigned int val,unsigned char n); unsigned long _irol_(unsigned long val,unsigned char n);再入属性: reentrant/intrinsc功能: _crol_,_irol_,和_lrol_将变量val循环左移n位,它们与8051单片机的“RL A”指令相关。这三个函数的不同之处在于参数和返回值的类型不同。函数原型: unsigned char _cror_(unsigned char val,unsigned char n); unsigned int _iror_(unsigned int val,unsigned char n); unsigned long _lror_(unsigned long val,unsigned char n);再入属性: reentrant/intrinsc功能: _cror_,_iror_和_lror_将变量val循环右移n位,它们与8051单片机的“RR A”指令相关。这三个函数的不同之处在于参数和返回值类型不同。函数原型: void _nop_(void);再入属性: reentrant/intrinsc功能: _nop_产生一个8051单片机的nop指令,该函数可用于Cx51程序中的时间延时。Cx51编译器对程序中调用_nop_函数的地方,直接产生一条NOP指令。函数原型: bit _testbit_(bit x);再入属性: reentrant/intrinsc功能: _testbit_产生一条8051单片机的JBC指令,该函数对字节中的一位进行测试。如果该位置位则函数返回1,则函数返回1,同时将该位复位为0,否则返回0._testbit_函数只能用于可直接寻址的位,不允许在表达式中使用。可以去看看http://wenwen.sogou.com/z/q720522617.htm?an=0&si=12我也是从他那里看到的c51中的intrins.h库_crol_ 字符循环左移 _cror_ 字符循环右移 _irol_ 整数循环左移 _iror_ 整数循环右移 _lrol_ 长整数循环左移 _lror_ 长整数循环右移 _nop_ 空操作8051 nop 指令 _testbit_ 测试并清零位8051 jbc 指令
6,51单片机intrinsich怎么用
51单片机最经典的也是入门的实验就是流水灯。开发板的LED接在P1口。8个LED从上到下轮流点亮,也即从P1.0到P1.7依次输出低电平。实现的方法很多,下面是其中一种方法,用的C语言的位运算符号的左移“<<”。方法一(只写上主程序):void main(void) unsigned char a = 0xFE; while(1) P1 = a; a = (a << 1) | 0x01; if(a == 0xFF)a = 0xFE; Delay(500); //延时约500ms }}另一常用方法就是用INTRINS.H头文件中的循环移位函数。方法二(只写上主程序):void main(void) unsigned char a = 0xFE;while(1) P1 = a; a = _crol_(a,1); Delay(500); //延时约500ms }}让LED亮起来不难,在此主要是通过这个实验了解和熟悉INTRINS.H头文件。下面是该头文件的内容和用法。/*--------------------------------------------------------------------------INTRINS.HIntrinsic functions for C51.Copyright (c) 1988-2004 Keil Elektronik GmbH and Keil Software, Inc.All rights reserved.--------------------------------------------------------------------------*/#ifndef __INTRINS_H__#define __INTRINS_H__extern 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);extern void _push_ (unsigned char _sfr);extern void _pop_ (unsigned char _sfr);#endifINTRINS.H头文件:内部函数 描述_crol_ 字符循环左移_cror_ 字符循环右移_irol_ 整数循环左移_iror_ 整数循环右移_lrol_ 长整数循环左移_lror_ 长整数循环右移_nop_ 空操作8051 NOP 指令_testbit_ 测试并清零位 8051 JBC 指令函数名: _crol_,_irol_,_lrol_原 型: unsigned char _crol_(unsigned char val,unsigned char n);unsigned int _irol_(unsigned int val,unsigned char n);unsigned int _lrol_(unsigned int val,unsigned char n);举例:_crol_,_cror_: 将char型变量循环向左(右)移动指定位数n位后返回_testbit_:相当于JBC bitvar测试该位变量并跳转同时清除。_chkfloat_:测试并返回源点数状态。就是汇编中的子函数。_crol_,_cror_:如果二进制数为01010101 那么_crol_(1) 左移1位后将高位补低位。结果10101010。功 能:_crol_,_irol_,_lrol_以位形式将val 左移n 位,该函数与8051“RLA”指令相关,上面几个函数不同于参数类型。例:#include <intrins.h>main()unsigned int y;y=0x00ff;y=_irol_(y,4);}函数名: _cror_,_iror_,_lror_原 型: unsigned char _cror_(unsigned char val,unsigned char n);unsigned int _iror_(unsigned int val,unsigned char n);unsigned int _lror_(unsigned int val,unsigned char n);功 能:_cror_,_iror_,_lror_以位形式将val 右移n 位,该函数与8051“RRA”指令相关,上面几个函数不同于参数类型。例:#include <intrins.h>main()unsigned int y;y=0x0ff00;y=_iror_(y,4);}函数名: _nop_原 型: void _nop_(void);功 能:_nop_产生一个NOP 指令,该函数可用作C 程序的时间比较。C51 编译器在_nop_函数工作期间不产生函数调用,即在程序中直接执行了NOP 指令。例:P()=1;_nop_();P()=0;函数名: _testbit_原 型:bit _testbit_(bit x);功 能:_testbit_产生一个JBC 指令,该函数测试一个位,当置位时返回1,否则返回0。如果该位置为1,则将该位复位为0。8051 的JBC 指令即用作此目的。_testbit_只能用于可直接寻址的位;在表达式中使用是不允许的希望对你有一点帮助!!!头文件在语言中包含就可以了include intrinsic.h只是一个头文件,里面有很多的系统函数,方便调用。。。就是一个头文件,里面包括_nop_()等一些函数,自己打开库看一下就知道啦头文件就相当于一组自定义函数或者一些声明。其实没什么使用方法。你在使用include<aaa.h>时,就如同你把aaa.h中的内容全部复制到添加路径include<aaa.h>的地方。具体我们看下面:123456789101112131415161718192021222324252627282930 /*--------------------------------------------------------------------------INTRINS.HIntrinsic functions for C51.--------------------------------------------------------------------------*/#ifndef __INTRINS_H__#define __INTRINS_H__#pragma SAVE#if defined (__CX2__)#pragma FUNCTIONS(STATIC)/* intrinsic functions are reentrant, butneed static attribute */#endifexternvoid_nop_ (void);externbit _testbit_ (bit);externunsigned char_cror_ (unsigned char, unsigned char);externunsigned int_iror_ (unsigned int, unsigned char);externunsigned long_lror_ (unsigned long, unsigned char);externunsigned char_crol_ (unsigned char, unsigned char);externunsigned int_irol_ (unsigned int, unsigned char);externunsigned long_lrol_ (unsigned long, unsigned char);externunsigned char_chkfloat_(float);#if defined (__CX2__)externintabs(int);externvoid_illop_ (void);#endif#if !defined (__CX2__)externvoid_push_ (unsigned char_sfr);externvoid_pop_ (unsigned char_sfr);#endif#pragma RESTORE#endif 以上是intrins.h的具体内容。 逐一分析。1.#ifndef,#define,#endif#ifndef __INTRINS_H__#define __INTRINS_H__#define qwerty...#define tyuio#endif这是一组。功能是条件编译。ifndef是if not defined,如果没有定义__INTRINS_H__,那咱们就定义吧,下一条就是#define __INTRINS_H__。一直到最后终止endif。使用目的:如果编译时,系统已有intrins.h的定义,则不编译以下内容,若系统没有定义标识则编译内容。 例如,我们有一个数据类型,在Windows平台中,应该使用long类型表示,而在其他平台应该使用float表示,这样往往需要对源程序作必要的修改,这就降低了程序的通用性。可以用以下的条件编译:12345 #ifdef WINDOWS #define MYTYPE long #else #define MYTYPE float #endif 如果在Windows上编译程序,则可以在程序的开始加上 #define WINDOWS 这样则编译命令行: #define MYTYPE long。 如果在这组条件编译命令之前曾出现以下命令行: #define WINDOWS 0 则预编译后程序中的MYTYPE都用float代替。这样,源程序可以不必作任何修改就可以用于不同类型的计算机系统。 (#pragma先略过)2.extern Extern用在变量/函数声明前,表明该变量/函数是在别处定义的。Extern void nop (void)表示其他地方有定义过函数nop(void),此处引用。 首先强调一点。头文件中的定义都不是全局变量,但是因为一直写在开头所以总是被最先编译。如果在xxx.h中定义int key,想在多个文件中使用A.c,B.h,…,编译不会通过。因为头文件中的内容如同照抄在include<xxx.h>处。即:在A和B中都定义了一次这个全局变量key(重复定义)。正确做法是在A.c中定义,在B.h中用extern+A.c中的定义,相反也行。 extern unsigned char _cror_ (unsigned char, unsigned char);表示声明一个叫_cror_ 的函数,两个参变量,返回unsigned char型的函数。等等。1234567 _crol_ 字符循环左移_cror_ 字符循环右移_irol_ 整数循环左移_iror_ 整数循环右移_lrol_ 长整数循环左移_lror_ 长整数循环右移_nop_ 空操作8051 NOP 指令 说明一下,上面的这些函数虽然是外部定义的。但是很难找到定义的地点。可能在某个系统的dll文件中。使用时不必拘泥过多,直接使用就行。具体函数干些什么你也可以自己百度。这里不展开了。3.#pragma 这是预编译指令,也可以叫编译器指令。初学者不必深究。换句话说,即使完全不理解也不影响你单片机的学习。#pragma SAVE表示把当前设定放入保存堆栈。#pragma RESTORE一直和SAVE组合使用,吧保存堆栈中的内容存储起来。他们是一组,一般共同使用。 还有剩余的一些其实就和上面讲的是一个类型。无非就是条件编译和预编译指令,和你关系不大这里就不展开了。 综合一下。看一个例子:12345678910 voidhahaha(inta, charb);//实际上你打开一个单片机的project,里面有reg51.h和intrins.h。这句话就如同intrins.h的功能,仅仅是声明。main() hahaha(qwe,rty);}voidhahaha(inta, charb);//这句话就如同reg51.h的功能,定义了一些函数。 a=a++; b=b--;} 当你include<reg51.h>include<intrins.h>后,就如同头文件的内容全部抄到你自己写的函数的最上面。
文章TAG:
是由 哪些 英文 英文单词 intrins
大家都在看
-
手机会自动停止充电吗,手机充电会自动检测电池是否充满电?
2022-12-19
-
win7自动密码锁屏软件哪个好,win7锁屏功能设置好了
2022-12-21
-
空调不会自动制冷,空调否制冷是什么原因 解决方法
2022-12-21
-
三星锁屏自动开启,手机解锁后直接开启相机可以尝试如下
2022-12-22
-
自动跟随婴儿车,武汉机器人如何进行自动跟随服务
2022-12-28
-
手机批量自动截图,手机怎么用智能截图搞定
2023-01-06
-
自动扫二维码秒抢红包,扫码抢红包!还有这些好玩的!
2023-01-25
-
amabrush自动牙刷,这些牙刷是否适合你使用?
2023-02-02
-
苹果6时间自动设置原理,如何进行日期和时间设置?
2023-02-09
-
科技文献中智能怎么翻译,有哪个翻译高手知道智能科技的英译及缩写先谢了
2023-02-15
-
华为p6老是自动重启,手机自动重启不能用手机可以这样做
2023-03-02
-
征安智能科技怎么样了,intel的智能响应技术到底怎么样
2023-03-07
-
iphonex刘海自动黑屏,iphone刘海怎么隐藏?
2023-03-08
-
自动开关手机,华为emui3.0系统支持自动开关机器
2023-03-15
-
智能饮水机怎么接水,饮水机线怎么接
2023-03-16