新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > c51中的intrins.h庫函數

        c51中的intrins.h庫函數

        作者: 時間:2016-11-23 來源:網絡 收藏
        #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);

        #endif

        1怎么用C51寫一個NOP語句呢?
        把頭文件intrins.h包含進來,然后在需用NOP處調用_nop_();函數即可。
        頭文件intrins.h包含進來,然后在需用NOP處調用_nop_();函數即可。

        2.c51中的intrins.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_,_irol_,_lrol_以位形式將val 左移n 位,該函數與8051“RLA”指令
        相關,上面幾個函數不同于參數類型。
        例:
        #include
        main()
        {
        unsigned int y;
        C-5 1 程序設計 37
        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
        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_只能用于可直接尋址的位;在表達式中使用是不允許的


        關鍵詞: c51intrins.h庫函

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 桦川县| 桂阳县| 尼勒克县| 策勒县| 龙海市| 宿松县| 罗城| 汾西县| 荥阳市| 资源县| 丰都县| 合川市| 梁平县| 峡江县| 哈尔滨市| 依安县| 黄陵县| 象州县| 镇江市| 霍城县| 福海县| 大埔县| 拜泉县| 贺州市| 彩票| 北流市| 青龙| 当涂县| 崇左市| 清河县| 上饶市| 商南县| 二连浩特市| 舒兰市| 乐山市| 惠水县| 前郭尔| 凉山| 大庆市| 固阳县| 乌审旗|