流水灯循环左移右移,用C语言,要高效的话,只有用伪本征函数文件“intrins.h”中的_crol_(),_cror_()...等等函数,具体解释如蓝色文字,例如,要用P1口驱动8个共阳连接的二极管左循环一个一个地亮,语句是 P1=_crol_(a,1);//a储存被移位的字符。本文引用地址:http://www.eepw.com.cn/article/201611/315732.htm

c51中的intrins.h库函数

_crol_ 字符循环左移

_cror_ 字符循环右移

_irol_ 整数循环左移

_iror_ 整数循环右移

_lrol_ 长整数循环左移

_lror_ 长整数循环右移

_nop_ 空操作8051 NOP 指令

_testbit_ 测试并清零位8051JBC 指令

详解:

函数名: _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“RL A”指令相关,上面几个函数不同于参数类型。(调用“一次”这样的函数把val环移n位,所谓的循环移位并不是持续的一直移位下去,要想得到这样的效果,外部须加上循环语句实现)。

例:

#include

main()

{

unsigned int y;

C-5 1 程序设计 37

y=0x00ff;

y=_irol_(y,4); /*y=0x0ff0*/

}

函数名: _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“RR A”指令相关,上面几个函数不同于参数类型。

例:

#include

main()

{

unsigned int y;

y=0x0ff00;

y=_iror_(y,4); /*y=0x0ff0*/

}

函数名: _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_只能用于可直接寻址的位;在表达式中使用是不允许的。

至于>>=,>>, div:eq(3) > table:eq(2) > tbody:eq(0) > tr:eq(0) > td:eq(0) > div:eq(0) > #content:eq(0) > br:eq(2)" anchortype="previous" jquery1249565275578="8">思路是:

比如将a=0x45循环左移二位。

a循环左移n位,即将原来右面(8-n)位左移n位,而将原来左端的n位移到最右面n位。

1、将a的左端n位先放到b中的低n位中

b=a>>(8-n);

2、将a左移n位,其右面低n位被补0

c=a<3、将b,c进行或运算

a=c|b;

程序如下:

main()

{

unsigned char a=0x45,b,c;

unsigned int n=2;

b=a>>(8-n)

c=a

}

单片机c语言左移的作用,单片机C语言移位的实现相关推荐

  1. 单片机c语言左移的作用,单片机c语言中的左移右移

    // 据说有些编译器采用逻辑右移,即左端补0 结果:a = 0xe3 (11100011) 1当左移移出的是"1"而不是0时,你该怎么想? 2 当左移的操作数是一个sign型是,你 ...

  2. 单片机c语言左移的作用,单片机C语言左移和右移的方法

    #include#define uchar unsigned char #define uint unsigned intvoid main(void) { uchar a; a=0x01; a=a& ...

  3. %3c故乡%3e中语言描写的作用是什么,语言描写的作用

    语言描写的作用2019-05-05 14:39:30文/刘美娟 语言描写是塑造人物形象的重要手段,成功的语言描写总是鲜明地展示人物的性格,生动地表现人物的思想感情,深刻地反映人物的内心世界. 语言能显 ...

  4. c语言中语句作用,学习C语言的用途~

    原标题:学习C语言的用途~ C是基础的语言 C语言被广泛用于操作系统和编译器的开发 功能非常强 虽然现在不是最流行但是 最基础的东西是也比较好学的语言 如:金山的创始人江明 从30多岁开始学语言 学的 ...

  5. c语言程序设计课程作用,《C语言程序设计》课程标准

    <C语言程序设计>课程标准 适用专业: 三年制中职计算机应用专业 一.前言 (一)课程的性质 本课程是中职软件与信息服务专业的一门主干专业基础课程,旨在培养学生计算机编程基本思想.编程基本 ...

  6. 单片机c语言左移的作用,[转载]单片机c语言中的左移右移

    单片机c语言中的左移右移 左移 变量1 << 变量2 将变量1的二进制位值向左移动由变量2所指定的位数. 例如: a = 0x8f; // 10001111 a << 2; / ...

  7. _nop_在c语言里什么作用,单片机c语言中nop函数的使用方法和延时计算

    原标题:单片机c语言中nop函数的使用方法和延时计算 标准的C语言中没有空语句.但在 的C语言编程中,经常需要用几个空指令产生短延时的效果. 这在汇编语言中很容易实现,写几个nop就行了. 在C51中 ...

  8. c语言左移15位,关于c语言中左移右移运算符的问题

    参照<c与指针>,在c语言中左移时,不论算术左移还是逻辑左移效果都是相同的.而且对于有符号和无符号类型执行相同的操作,即按照二进制位向左左移N位.例如: 1 clude 2 intmain ...

  9. c语言 b的作用,在C语言中各个标点符号的作用

    满意答案 rain200... 2013.05.17 采纳率:48%    等级:13 已帮助:16953人 分号 是一条语句的结束标志符,每一条语句都必须以分号结尾.冒号 一般在switch语句,三 ...

最新文章

  1. [JAVA] java仿windows 字体设置选项卡
  2. 可以用于回归分类的总结
  3. 自定义注解和拦截器,实现接口限流防刷
  4. 【网络安全】如何搭建MySQL恶意服务器读取文件?
  5. 阿里云主机安装开发工具包报错处理
  6. HC-05蓝牙模块基本使用
  7. 转:线性代数知识汇总
  8. [内核同步]自旋锁spin_lock、spin_lock_irq 和 spin_lock_irqsave 分析
  9. Windows Serer2003域升级到Windows Server2008R2域
  10. Hadoop为什么没有采用RAID?
  11. Web前端的状态管理
  12. linux yum 安装播放器,centos6.5 常用影音播放器安装
  13. halcon 深度学习标注_Halcon18--深度学习应用问题记录
  14. 软考中级,软件设计师考试那些内容,考试大纲什么的?
  15. 如何设置qq支持临时会话聊天
  16. 阅读mybatis源码
  17. 在校大学生关于程序员培训机构的想法
  18. origin画图畸变
  19. java后台将数据导出到Excel表格
  20. python3爬虫爬取网易云_【Python3爬虫】网易云音乐歌单下载

热门文章

  1. 【嵌入式AI】CNN模型压缩(剪枝,量化)详解与tensorflow实验
  2. 机器学习:K近邻算法(K-NN)
  3. Redis 集合(Set)方法使用详解
  4. Excel | 常用函数(一)
  5. IC的Strap Pin
  6. 一篇文章告诉你如何指数型涨粉
  7. EWMA 指数加权移动平均
  8. GIS(四)——为js版搜狗地图添加边界+Marker和Brand的最终美化版
  9. putty vi右键不能黏贴
  10. 与OA系统的固定资产管理相比,固定资产管理云系统的优势在哪里?