加入收藏
|
设为首页
|
会员中心
|
我要投稿
|
RSS
首页
设计中心
基准
数字万用表
智能仪表
电子DIY
电子发烧
您当前的位置:
首页
>
电子发烧
>
单片机学习
C语言实现循环移位
时间:2013-09-08 来源:
123485.com
作者:9stone
首先声明:我学习单片机C语言还不到半年,所以我还是菜鸟,我贴出的东西或许你们都知道,但我只想把我学习的经历给记录下来,希望你能找到你所想要的.
我记得做学单片机做的第一个实验就是做循环彩灯的实验,如果用汇编RL和RR很容易实现循环移位,但是C语言编程的移位指指令不能循环,移了后以0填充。
如果用C实现循环移位呢?
我的思路是:
比如将a=0x45循环左移二位。
a循环左移n位,即将原来右面(8-n)位左移n位,而将原来左端的n位移到最右面n位。
1、将a的左端n位先放到b中的高n位中
b=>>(8-n);
2、将a左移n位,其右面高n位被补0
c=<<n;
3、将b,c进行或运算
a=c|b;
程序如下:
main()
{
unsigned char a=0x45,b,c;
unsigned int n=2;
b=a>>(8-n)
c=a<<n;
a=c|b;
}
记得我才学单片机的时候做的第一个实验就是循环彩灯(那时候用的汇编)
学单片机C语言的时候,第一个实验当然也就是循环彩灯了,C没有直接循环移位的指令没关系,用上面的语句即可实现。:)
分享到:
来顶一下
返回首页
发表评论
共有
条评论
用户名:
密码:
验证码:
匿名发表
栏目导航->单片机学习
电子应用基础
电源技术
无线传输技术
信号处理
PCB设计
EDA技术
单片机学习
电子工具设备
技术文章
精彩拆解欣赏
推荐资讯
使用普通运放的仪表放
3V与5V混合系统中逻辑
数字PID控制及其改进
恶劣环境下的高性价比
栏目更新
栏目热门
站内搜索:
资讯
高级搜索
网站首页
|
关于我们
|
服务条款
|
广告服务
|
联系我们
|
网站地图
|
免责声明
|
WAP
巴斯仪表网,专注于数字仪表技术!
www.123485.com
© 2008-2013