单片机c语言左移的作用,单片机C语言移位的实现
流水灯循环左移右移,用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语言移位的实现相关推荐
- 单片机c语言左移的作用,单片机c语言中的左移右移
// 据说有些编译器采用逻辑右移,即左端补0 结果:a = 0xe3 (11100011) 1当左移移出的是"1"而不是0时,你该怎么想? 2 当左移的操作数是一个sign型是,你 ...
- 单片机c语言左移的作用,单片机C语言左移和右移的方法
#include#define uchar unsigned char #define uint unsigned intvoid main(void) { uchar a; a=0x01; a=a& ...
- %3c故乡%3e中语言描写的作用是什么,语言描写的作用
语言描写的作用2019-05-05 14:39:30文/刘美娟 语言描写是塑造人物形象的重要手段,成功的语言描写总是鲜明地展示人物的性格,生动地表现人物的思想感情,深刻地反映人物的内心世界. 语言能显 ...
- c语言中语句作用,学习C语言的用途~
原标题:学习C语言的用途~ C是基础的语言 C语言被广泛用于操作系统和编译器的开发 功能非常强 虽然现在不是最流行但是 最基础的东西是也比较好学的语言 如:金山的创始人江明 从30多岁开始学语言 学的 ...
- c语言程序设计课程作用,《C语言程序设计》课程标准
<C语言程序设计>课程标准 适用专业: 三年制中职计算机应用专业 一.前言 (一)课程的性质 本课程是中职软件与信息服务专业的一门主干专业基础课程,旨在培养学生计算机编程基本思想.编程基本 ...
- 单片机c语言左移的作用,[转载]单片机c语言中的左移右移
单片机c语言中的左移右移 左移 变量1 << 变量2 将变量1的二进制位值向左移动由变量2所指定的位数. 例如: a = 0x8f; // 10001111 a << 2; / ...
- _nop_在c语言里什么作用,单片机c语言中nop函数的使用方法和延时计算
原标题:单片机c语言中nop函数的使用方法和延时计算 标准的C语言中没有空语句.但在 的C语言编程中,经常需要用几个空指令产生短延时的效果. 这在汇编语言中很容易实现,写几个nop就行了. 在C51中 ...
- c语言左移15位,关于c语言中左移右移运算符的问题
参照<c与指针>,在c语言中左移时,不论算术左移还是逻辑左移效果都是相同的.而且对于有符号和无符号类型执行相同的操作,即按照二进制位向左左移N位.例如: 1 clude 2 intmain ...
- c语言 b的作用,在C语言中各个标点符号的作用
满意答案 rain200... 2013.05.17 采纳率:48% 等级:13 已帮助:16953人 分号 是一条语句的结束标志符,每一条语句都必须以分号结尾.冒号 一般在switch语句,三 ...
最新文章
- [JAVA] java仿windows 字体设置选项卡
- 可以用于回归分类的总结
- 自定义注解和拦截器,实现接口限流防刷
- 【网络安全】如何搭建MySQL恶意服务器读取文件?
- 阿里云主机安装开发工具包报错处理
- HC-05蓝牙模块基本使用
- 转:线性代数知识汇总
- [内核同步]自旋锁spin_lock、spin_lock_irq 和 spin_lock_irqsave 分析
- Windows Serer2003域升级到Windows Server2008R2域
- Hadoop为什么没有采用RAID?
- Web前端的状态管理
- linux yum 安装播放器,centos6.5 常用影音播放器安装
- halcon 深度学习标注_Halcon18--深度学习应用问题记录
- 软考中级,软件设计师考试那些内容,考试大纲什么的?
- 如何设置qq支持临时会话聊天
- 阅读mybatis源码
- 在校大学生关于程序员培训机构的想法
- origin画图畸变
- java后台将数据导出到Excel表格
- python3爬虫爬取网易云_【Python3爬虫】网易云音乐歌单下载