文章目录

  • 摘要
  • 源代码
  • 说明
  • 举个栗子

摘要

这是关于C51中使用循环移位等函数的头文件定义的分析

源代码

/*--------------------------------------------------------------------------
INTRINS.H
Intrinsic functions for C51.
Copyright (c) 1988-2004 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/
#ifndef __INTRINS_H__  //条件编译,未定义则编译,到#endif之间都是程序段
#define __INTRINS_H__  //使别的条件编译知道__INTRINS_H__已经定义//空操作(相当于8051 NOP 指令PC=PC+1)
//NOP
extern  void   _nop_(void); //测试并清零位(相当于8051 JBC 指令)
//JBC bit, rel
//若(bit) = 1, 则PC ← (PC)+3+rel, bit←0
//若(bit) = 0, 则PC ← (PC)+3
extern  bit  _testbit_(bit);  //字符 循环 右移,低位补高位
extern unsigned char _cror_(unsigned char, unsigned char);  //整数 循环 右移,低位补高位
extern unsigned int  _iror_(unsigned int,  unsigned char);  //长整数 循环 右移,低位补高位
//RR  A
extern unsigned long _lror_(unsigned long, unsigned char);    //字符 循环 左移,高位补低位
extern unsigned char _crol_(unsigned char, unsigned char);   //整数 循环 左移, 高位补低位
extern unsigned int  _irol_(unsigned int,  unsigned char);  //长整数 循环 左移, 高位补低位
//RL  A
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);   #endif

说明

  • extern作用是声明这是外部函数,定义是在别的地方进行的。
  • 或者说这是C语言嵌入汇编语言中声明引用了汇编语言子程序;

举个栗子

//举个例子
#include
#include#define uint unsigned int
#define uchar unsigned charvoid delay(uchar);uchar temp;void main()
{temp = 0xfe;while(1){P1 = temp;delay(100);temp = _crol_(temp,1);}
}void delay(uchar time)
{uchar i,j;for(i = time;i > 0;--i)for(j = 110;j > 0;--j);
}

C51中intrins_h头文件解释分析相关推荐

  1. c++中algorithm头文件、STL库简介及使用说明

    c++中algorithm头文件.STL库简介及使用说明 c++中algorithm头文件是STL的算法部分,里边定义了各种算法,比如sort之类的.加上algorithm就可以使用stl库里的各种算 ...

  2. C语言编程中关于头文件使用问题

    目录 1 头文件引用方式 2 头文件书写格式 2.1 条件编译 2.1.1 #ifdef... #else... #endif命令 2.1.2 #if defined... #else... #end ...

  3. C++:include:理解 C++ 中的头文件和源文件的作用

    关于头文件和源文件我们主要围绕: C++编译模式, 声明和定义区别, 符号只能被定义一次, 符号被定义在多个源文件,但是一个源文件只能定义一次 这四个方面来分析论述 1:C++ 编译模式 在一个C++ ...

  4. C++ 笔记(25)— 理解 C++ 中的头文件和源文件的作用

    1. C++ 编译模式 通常,在一个 C++ 程序中,只包含两类文件: .cpp 文件,被称作 C++ 源文件,里面放的都是 C++ 的源代码 .h 文件,被称作 C++ 头文件,里面放的也是 C++ ...

  5. Linux中常用头文件的作用--转

    http://blog.sina.com.cn/s/blog_5c93b2ab0100q62k.html 1. Linux中一些头文件的作用: <assert.h>:ANSI C.提供断言 ...

  6. 为什么应该用模块取代C/C++中的头文件?

    摘要:本文整理自Apple C++工程师Doug Gregor的演讲Slide,他表示希望使用模块(Module)这一概念替代C/C++中的头文件,现已被C++标准化委员会任命为Module研究组的主 ...

  7. ADS中startup.s文件启动分析

    映像文件分析,ADS 中startup.s 文件启动分析,学嵌入式开发ADS 必看 2010-04-17 10:21 声明: 我也是转来的,不是原创,由于别人是网易的日志,不能直接转,所以-- 感谢原 ...

  8. 【C++】C++中的头文件(.h)—详解(2)

    接上... [fishing-pan:https://blog.csdn.net/u013921430转载请注明出处] 头文件中写些什么 在上篇博客中写到头文件本身不参与编译,但是它们被包含到源文件中 ...

  9. 【C++】C++中的头文件(.h)—详解(1)

    [fishing-pan:https://blog.csdn.net/u013921430转载请注明出处] 前言 之前写过一篇<C++中头文件的使用>,那篇文章主要讲述C++中头文件的使用 ...

最新文章

  1. NVIDIA DPU架构
  2. 看看人家那后端API接口写得,那叫一个巴适~,再看看我的,像坨屎!
  3. 数据结构与算法之快速排序
  4. Ajax ToolKit --- ModelPopupExtender应用经验二则
  5. python周末吃什么_中午不知道吃什么?用Python爬取美团外卖评论帮你选餐!
  6. 战地2服务器怎么虚拟人数,战地2怎么修改作战人数?
  7. python中for循环是可以带else的
  8. 6010dn 华为 组网 胖ap_1、认识胖瘦AP以及组网场景
  9. 全面的framebuffer详解一
  10. Oracle ORA-01555(快照过旧)
  11. 9种排序算法 3_希尔排序
  12. 旅游后台管理系列——SSM框架Web表现层
  13. 大神论坛 利用活跃变量分析来去掉vmp的大部分垃圾指令
  14. scrapy mysql 豆瓣_Python爬虫之Scrapy+Mysql+Mongodb爬豆瓣top250电影
  15. 足球大数据分析大小球胜平负的技巧与实例附分析软件
  16. f_sync解决fatfs文件掉电数据丢失问题
  17. 人工智能训练师数加加标注培训系统正式上线
  18. 网站发送邮箱验证实现找回密码
  19. Apache Kafka实战读书笔记(推荐指数:☆☆☆☆☆)
  20. 圆周率java程序_Java小程序计算圆周率代码

热门文章

  1. Java第三十三天,IO操作(续集),字符转换流
  2. JVM 垃圾回收详解
  3. python获取目标时间距离现在多长时间(‘2020-5-30 23:40:00‘)
  4. Oracle EBS Interface/API(35) -创建供应商地点API
  5. java中什么路径_Java中的路径问题
  6. 51地图 点击时取经纬度
  7. 基于区块链技术的信息服务新架构探讨
  8. 在中国,混哪个“圈子”最有“钱”途?
  9. 文科高中毕业学计算机技术,一位高中生的困惑:成绩好的学理科,成绩差的学文科?...
  10. 阿里云轻量应用服务器开启minecraft基岩版服务器(bedrock)