intrins.h——每天进步一点点

今天想要自己写段点阵代码,参考了一个程序,里面用到了intrins.h头文件,开始不知道做什么用的,为什么有的程序里添加了,有的没有呢,我之前写程序,最多加一个#include "REG52.h"。
查了一下,终于明白了,先记下来,方便以后查。我觉得这种东西应该是有类似库文件大全之类的东西吧,呵呵,现在不清楚呢,还是先把这个记一下吧。
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_,_cror_:将char型变量循环向左(右)移动指定位数后返回
 
  _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_只能用于可直接寻址的位;在表达式中使用是不允许的。
 
 
附加另一个常见到的头文件stdio.h
 
stdio 就是指 “standard buffered input&output"
 
意思就是说带缓冲的标准输入输出!
 
所以了,用到标准输入输出函数时,就要调用这个头文件!
 
调用语句:
#include <stdio.h>
在TC2.0中,允许不引用此头文件而直接调用其中的函数,但这种做法是不标准的。
但是通常的时候,很多程序是不加这一调用语句的,虽然不标准,但是程序也能用。 

stdio.h中的标准输入输出函数

  int getchar() //从标准输入设备读入一个字符,显示
 
  int putchar() //向标准输出设备写一个字符
 
  int scanf(char *format[,argument…]) //从标准输入设备读入数据
 
  int printf(char *format[,argument…]) //格式化字符串输入到标准输出设备
 
  int puts(char *string) //输出一个字符串到标准输出设备
 
  char *gets(char *string) //从标准输入设备读入一个字符串
 
  int sprintf(char*string,char*format[,…])//格式化一个字符串输出到字符数组中,不显示
期待 发表于09-23 16:54 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

期待
期待(总统)
金币:32857个|学分:67568个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号