keil C51中的本徵函數庫及使用說明

2021-01-08 電子產品世界

本徵函數(intrinsicroutines)是指編譯時直接將固定代碼插入當前行,而不用ACALL和LCALL

來實現(無需堆棧操作?),可大大提高函數的訪問效率.

本文引用地址:http://www.eepw.com.cn/article/201611/315687.htm


函數原型
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);
頭文件
#include

說明

extern void _nop_ (void);
產生一個nop指令

extern bit_testbit_ (bit);
產生一個JBC指令,若該位置位,返回1,否則為0;只能作用於直接尋址的位變量,不能用於表達式

之中

extern unsigned char _cror_ (unsigned char val, unsigned char n);
(unsigned char)val右移n位

extern unsigned int _iror_ (unsigned int val, unsigned char n));
(unsigned int)val右移n位

extern unsigned long _lror_ (unsigned long val, unsigned char n));
(unsigned long)val右移n位

extern unsigned char _crol_ (unsigned char val, unsigned char n));
(unsigned char)val左移n位

extern unsigned int _irol_ (unsigned int val, unsigned char n));
(unsigned int)val左移n位

extern unsigned long _lrol_ (unsigned long val, unsigned char n));
(unsigned long)val左移n位

extern unsigned char _chkfloat_(float);
測試並返回float的狀態
一下摘自keil C51的幫助文檔
0 Standard floating-point numbers 標準浮點數
1 Floating-point value 0 浮點數0
2 +INF (positive overflow) 正溢出
3 -INF (negative overflow) 負溢出
4 NaN (Not a Number) error status出錯


參考文獻
李軍等編著.51系列單片機高級實例開發指南.北京-北京航空航天大學出版社 2004
keil software,inc. C51 users guide


相關焦點

  • keil c51 與 MDK 衝突的解決
    最近又作了一些C51的工作,發現keil c51與 mdk 有衝突。然後上網一查果然有很多人遇到這個問題,錯誤提示為下圖:本文引用地址:http://www.eepw.com.cn/article/201611/323622.htm其實這個是MDK和KEIL C51 配置文件衝突的問題,可以參考下兩個人的配置文件:[C51]PATH="D:Program FilesKeil_C702c51
  • keil5.24創建uCOSIII工程實現stm32實時作業系統(環境配置)
    自從ARM keil升級到keil5系列版本後,Keil工具對作業系統,以及各種庫文件的移植大大簡化了只需要動動手指,勾選一些庫文件就能實現移植工作了。1:假設你安裝了keil 5.24(稍早點版本支持的os偏少),並且下載了你需要的支持包。
  • 單片機keil 常見問題
    一、混合編程1、模塊內接口:使用如下標誌符:#pragma asm彙編語句#pragma endasm注意:如果在c51程序中使用了彙編語言
  • 簡析單片機keil常見問題
    一、混合編程  1、模塊內接口:  使用如下標誌符:  #pragma asm  彙編語句  #pragma endasm  注意:如果在c51程序中使用了彙編語言,注意在keil編譯器中需要激活Properties中的「
  • Keil編譯常見問題
    多半是因為少了一個")",或者錯誤行有編譯器不識別的字符如果出現在頭文件中,錯誤行又是一個函數聲明,多半是因為在函數聲明中有編譯器不認識的字符error: #20error: #20: identifier "TIM2_IRQChannel" is undefined 誰能說說,哪裡錯了你的固件庫裡的庫文件沒有添加進工程裡面,所以出現未定義的情況。
  • 非常詳細的Keil工程建立全過程講解
    機器彙編是通過彙編軟體將源程序變為機器碼,隨著單片機開發技術的不斷發展,從使用彙編語言逐漸過渡到使用高級語言開發,單片機的開發軟體也在不斷發展,Keil軟體是目前最為流行的開發MCS-51系列單片機軟體。Keil提供了包括C編譯器、宏彙編、連接器、庫管理和一個功能強大的仿真調試器等在內的完整開發方案,通過一個集成開發環境(uVision)將這些部份組合在一起。
  • KEIL4 工程到 KEIL5 程序的移植方法
    首先我們用 keil5 打開 keil4 的工程, 則會彈出下面的窗口, 這就是我們程序兼容的關鍵。V3.4.0固件庫的STM32工程 ;Keil版本: μVision 4.1.0       STM32固件庫版本: V3.4.0     第一步,建立工程文件夾,在其子文件夾內拷貝並整理好相應的文件。
  • 在keil中怎麼燒寫程序
    打開APP 在keil中怎麼燒寫程序 發表於 2017-11-16 10:52:58   什麼是keil
  • ARM DS-5開發STM32程序(Eclipse配合Keil插件使用)
    最後設置列印出來的信息,-map就列印出每個函數和變量的地址。--list就列印到文件,空著列印到console。基本的設置完成,利用Keil插件可以進行調試和下載。2.關於bin文件製作,在stm32使用IAP會發送2進位文件給晶片。除了要scat文件裡面設置地址外,還要使用keil的自帶軟體生成bin。設置同樣在C/C++ Build->Setting->Build,設置Post-build steps的Comand。
  • Keil C51程序設計中幾種精確延時方法
    若定時器工作在方式2,則可實現極短時間的精確延時;如使用其他定時方式,則要考慮重裝定時初值的時間(重裝定時器初值佔用2個機器周期)。  在實際應用中,定時常採用中斷方式,如進行適當的循環可實現幾秒甚至更長時間的延時。使用定時器/計數器延時從程序的執行效率和穩定性兩方面考慮都是最佳的方案。
  • Keil C51程序調試過程
    用MCS-51單片機軟體Keil C51編寫程序時,經常需要調試,如果不是經常用這個軟體的話,很容易忘記這些調試步驟,現在舉一個例子「驗證延遲函數delay()
  • Facebook 開源 3D 深度學習函數庫 PyTorch3D
    原標題:Facebook開源3D深度學習函數庫PyTorch3D來源:開源中國Facebook近日開源了將PyTorch用於3D深度學習的函數庫PyTorch3D,這是一個高度模塊化且經過優化的庫,具備獨有的功能,旨在通過PyTorch簡化3D深度學習。
  • c編譯器so easy,gcc c編譯器生成、使用動靜態庫
    靜態庫在程序編譯時會被連接到目標代碼中,程序運行時將不再需要該靜態庫。動態庫在程序編譯時並不會被連接到目標代碼中,而是在程序運行是才被載入,因此在程序運行時還需要動態庫存在。本文主要通過舉例來說明在Linux中如何創建靜態庫和動態庫,以及使用它們。
  • 本徵和非本徵有啥區別?
    關於狹義相對論,裡面其實有很多概念需要明白,如果不明白就會出現理解一些運動的物理過程,變得十分困難,其中有兩個概念必須要懂:本徵時間和本徵長度,當然也對應非本徵時間和非本徵長度。什麼是本徵時間和本徵長度的,就是這個物體靜止時花費的時間和物體的長度。
  • keil c語言編程常見問題解析(一)
    Warning 280:』i』:unreferenced local variable 說明局部變量i 在函數中未作任何的存取操作解決方法消除函數中i 變量的宣告及即定義的參數在程序中並未調用2 Warning 206:』Music3』:missing
  • 第5節:用keil軟體新建,關閉,打開一個完整工程的操作流程
    第二步:啟動keil軟體。雙擊桌面」keil uVision4」的圖標啟動keil軟體。第三步:關閉默認被打開的已有工程。打開keil軟體時,如果發現此軟體默認打開了一個之前已經存在的工程,請先關閉此工程。如果默認沒有打開已有工程,這一步可以忽略跳過。關閉已有工程的操作是這樣子的:點擊上面」Project」選項,在彈出的下拉菜單中選擇「Close Project」即可。
  • PHP實例,GD2函數填充幾何圖形
    1、實例說明使用GD2函數不僅可以繪製線條圖形,而且可以繪製填充圖形,如填充圓形、填充矩形等。在本實例中,將介紹圓形和矩形的填充,其運行結果如圖 1所示。圖 1 GD2函數填充幾何圖形2、實現代碼具體實現代碼如下:3、技術要點在GD2 函數庫中,應用 imagefill()函數實現圖像的填充操作,其語法如下:bool
  • php中函數禁用繞過的原理與利用
    原理LD_PRELOAD是Linux系統的一個環境變量,它可以影響程序的運行時的連結(Runtime linker),它允許你定義在程序運行前優先加載的動態連結庫。這個功能主要就是用來有選擇性的載入不同動態連結庫中的相同函數。
  • IF函數與lookup函數的使用
    作者喜歡鑽研Office Excel、PPT,希望藉此平臺與各位office愛好者共同分享、學習交流~ 在Excel裡最先被大家所認識和熟悉的函數,大概也就是IF、SUM和VLOOKUP這三傢伙了,其中IF
  • 遙感應用中的本徵光譜感知簡介
    遙感應用中的光譜感知,就像是給無人機、衛星等遙感平臺裝上了一雙具有光譜探測功能的眼睛。高光譜遙感的核心思想是每種物質均有自己獨特的「光譜指紋」。早在19世紀初,人們在研究太陽光譜時,發現太陽內部發出的強光經過溫度比較低的太陽大氣層時,部分特定波長的電磁波會被大氣吸收。通過對太陽光的光譜進行分析,科研人員估算出太陽大氣層中含有氫、氦、氮等幾十種元素。