keil C51中的本征函数库及使用说明

发布者:以泉换泉最新更新时间:2016-09-20 来源: eefocus关键字:keil  C51  本征函数库  使用说明 手机看文章 扫描二维码
随时随地手机看文章
本征函数(intrinsicroutines)是指编译时直接将固定代码插入当前行,而不用ACALL和LCALL

来实现(无需堆栈操作?),可大大提高函数的访问效率.


函数原型
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 user's guide

关键字:keil  C51  本征函数库  使用说明 引用地址:keil C51中的本征函数库及使用说明

上一篇:基于单片机的LED显示屏控制电路设计
下一篇:用单片机实现电子时钟(汇编)

推荐阅读最新更新时间:2024-03-16 15:10

Keil点亮一个发光二极管
首先,打开我们的keil5,新建一个工程项目 点击保存后会出现如下窗口,并对以下进行设置: 新建一个文件 直接保存 把新建的文件(以上为demo.c)添加到目标项目: 开始写代码啦: 生成.hex文件: .hex生成成功。然后打开我们安装好后的proteus,图标为: 准备好AT89C51、LED-YELLOWW、RES: (可以在这里找到) 按照如下接好电路: 接下来是目标文件: (请忽略以上的一些乱码,因为安装某软件时修改了编码而导) 如果你想让它闪烁可以给它一些延时 #include reg52.h // 此文件中定义了单片机的一些特殊功能寄存器 typ
[单片机]
用<font color='red'>Keil</font>点亮一个发光二极管
C51---13 DS18B20温度传感器
DS18B20介绍 引脚及电路 内部结构图 存储器的结构 单总线介绍 单总线电路规范 单总线时序结构❗ DS18B20操作流程 DS18B20数据帧 温度存储格式 DS18B20温度读取✨ 在LCD上显示温度 代码 main.c #include REGX52.H #include LCD1602.h #include DS18B20.h #include Delay.h float T; void main() { DS18B20_ConvertT(); //上电先转换一次温度,防止第一次读数据错误 Delay(1000); //等待转换完成
[单片机]
C51---13 DS18B20温度传感器
关于C51的中断编程
8051 系列 MCU 的基本结构包括:32 个 I/O 口(4 组8 bit 端口);两个16 位定时计数器;全双工串行通信;6 个中断源(2 个外部中断、2 个定时/计数器中断、1 个串口输入/输出中断),两级中断优先级;128 字节内置RAM;独立的 64K 字节可寻址数据和代码区。中断发生后,MCU 转到 5 个中断入口处之一,然后执行相应的中断服务 处理程序。中断程序的入口地址被编译器放在中断向量中,中断向量位于程序代码段的最低地址处,注意这里的串口输入/输出中断共用一个中断向量。8051的中断向量表如下: 中断源 中断向量 --------------------------- 上电复位 0000H 外部中断0 000
[单片机]
keil调试出现反汇编的解决方法
若经常出现反汇编要看Debug目录下的Load Application at Startup前面的勾是否打上。是否打上直接影响加载的程序,请看Edit前面的路径,编辑它。出现下面的形式。 重点看这一行。LOAD power.axf INCREMENTAL // Download (assumes that 'load application at startup' is unchecked) 意思是说若load application at startup前面没有打对勾,那么加载的程序将是power.axf。如果你是自己建立的工程,并且按照别的一个模板进行配置,这个地方一定要小心。要不会很头疼的。刚开始的
[单片机]
keil_提示出错 cannot load flash programming algorithm !
用STM32开发板调试例程时(用的是JLINK),提示出错 cannot load flash programming algorithm ! 遇到这种问题一般都是,Programming algorithm没有添加,或者添加错误, 添加步骤如下: 首先确认,下载器是stlink还是jlink,然后根据步骤1,2,3,4 选择合适的algorithm 就可以。 官方给出ARM调试提示解决方法: http://www.keil.com/support/docs/2747.htm RESOLUTION The programming algorithm depends on the device. For ex
[单片机]
<font color='red'>keil</font>_提示出错 cannot load flash programming algorithm !
红外避障电动小车C51程序
简介:整理了红外避障电动小车C51程序,仅供参考,希望对正在学习的你有用。 #include reg51.h #include intrins.h #define uchar unsigned char #define uint unsigned int #define left_infrare 0 #define right_infrare 1 #define dj_state1 0X5F //前进 #define dj_state2 0X4F //右转 #define dj_state3 0X1F //左转 #define dj_state4 0X0F //后退 #define dj_state5 0XfF //停车
[单片机]
如何在Keil C51中直接使用二进制数
   在Keil C51中数不能直接以二进制形式赋值,虽然在8051的汇编中是可以的。二进制数虽然书写长,易出错,但是由于是一位位写的,所以程序设计者能够很明确的看到每一位的状态,看得比较直观。于是很多人怀念了8051的汇编,很想在C51中使用二进制。没猜错的话搜到本篇日志的人很可能就是来找这种解决办法的,下面两种办法都是不错的选择。   方法一:   建立一个头文件,将所有的二进制数宏定义列举出来,用的时候直接使用宏定义,头文件定义:binary(右键 “目标另存为” 下载)。   方法二:   做一个带参数宏定义,将输入的类二进制数变换为对应的16进制数,整个定义和使用实例请见下文,可以直接使用,如果想研究原
[单片机]
STM32 IAR工程->Keil MDK转换详解
简介:我在STM32的学习中发现,大部分的STM32示例程序都是基于IAR开发环境的,但我认为使用Keil MDK开发环境更加方便,可以利用RVMDK强大的外设仿真功能加速STM32的开发。我在以前的Blog文章里介绍过如何在RVMDK中建立 ... 关键字: STM32 我在STM32的学习中发现,大部分的STM32示例程序都是基于IAR开发环境的,但我认为使用Keil MDK开发环境更加方便,可以利用RVMDK强大的外设仿真功能加速STM32的开发。我在以前的Blog文章里介绍过如何在RVMDK中建立STM32工程,以及如何使用RVMDK的软件仿真功能,下面我将详细说明怎样将已有的IAR工程移植到RVMDK。
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved