导航:首页 > 操作系统 > 单片机c语言移位

单片机c语言移位

发布时间:2022-12-29 03:38:59

单片机C语言流水灯移位指令

//没有编译过,大概思路就这样
#define P_LED P1; //定义到你自己的端口

void main(void)
{
unsigned char circledata=0x01,i=0;
while(1)
{
for(i=0;i<4;i++) //显示范围 P_LED.0:P_LED3
{
P_LED=circledata<<i;
Delay_ms(1000);//根据自己的晶振写延时1S的函数
}
circledata=0xfe;
for(i=3;i>=0;i--) //显示范围 P_LED.3:P_LED.0
{
P_LED=circledata<<i;
Delay_ms(1000);//根据自己的晶振写延时1S的函数
}
}
return;
}

⑵ 请教单片机c语言移位问题

移位分为左移位和右移位,看你的系统精度,就是操作数是几位的,通常案例计算是以8位较多,按左右方向移动数字,不够的位数补上0就OK了。

⑶ 单片机 移位操作 右移 C语言

C51系列单片机中_crol_指令是循环左移函数,_cror_是循环右移函数,这是51中特有的指令,别的类型单片机就不能使用了。易于程序的移植和通用性考虑个人比较推荐用<< 左移, 右移>>这两个C中的移位符号。

⑷ 单片机 移位操作 右移 C语言

先说第一个问题:
比如用查表法将结果保存到变量i中,查表变量为x,则i=table[x],记住c语言里面数组是从0开始的,比如说上面的0x01就是table[0],0x02是table[1],以此类推。
再说第二个问题:
比如说从p1.0口发送出去,则可以写为
sbitout=p1^0;//定义out为p1.0口,这样今后好写程序
chari;
for(i=0;i<8;i++)
{
out=data&0x80;//因为高位在前,将它写成二进制就明白了
data<<=1;
}
上面的程序就能搞定了;
应该是所有的单片机都有cy位(不知道浮点dsp有没有);
c语言中左移和右移之后低位或高位自动补零,cy位也保持为零(视编译器而定,这个得看编译器手册),有些编译器提供了循环移位的函数;
还有什么不明白的补充问题就是

⑸ 单片机循环移位C语言,即让如将二进制数,形如:(ABCD EFGH),移位后变为(HGFE DCBA)

你这个虽然有规律,属于镜像交换,简单移位做不到。
下面用old代表原数,new代表新数

char old,new;//定义两个变量
old=原数; // 将ABCDEFGH赋给old;如:old=0xf0;
new=0;
for(i=0;i<8;i++)
{
new<<=1;
if((old&0x01)==0x01) new|=0x01;
old>>=1;
}
执行后新数new,就是你要的镜像交换的数,这时new就等于HGFEDCBA
用心回答,望你采纳。

⑹ 单片机C语言右移指令怎么用

用这种移位语句,就是这种结果。
你试试:_crol_()和_cror_()移位函数。
需要先加上头文件:
#include<intrins.h>

⑺ 用单片机移位实现,该怎么写程序啊,用C语言,主要是移位部分不会写

这个就是跑马灯程序嘛,你看看 我写的:
#include <REGX52.H>
#include <intrins.H> 这个是调用单片机头文件里面的函数,你自己查查书籍啊,要调用的话就要写这个头文件 本程序 调用的移位函数啦 就是左右移动函数
#define uchar unsigned char
#define uint unsigned int
uchar aa ;
void delay(uint z ) //延时程序,延时准确为1MS;
{

uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--) ;

}
void main()
{

uint i,j;
while(1)
{

aa=0xfe;因为要亮一个灯撒 所以就是1111 1110呀 这就是0xfe的含义啊
for(i=8;i>0;i--) //左移程序
{
P2=aa;
delay(500) ;
aa=_crol_(aa,1);这个就是调用函数的使用方法,这个是左移动一位,意思是把aa左移一位 在赋值给aa哦,这样再P2=aa;不就把移动的数据传到P2口了吗,懂了吧

}
aa=0x7f;这个因要亮一个等 也是一样的道理0111 1111是吧 就是0x7f 啦
for(i=7;i>0;i--) //右移程序
{
P2=aa;
delay(500) ;
aa=_cror_(aa,1);这里用法还是与左移动一样的道理 ,
}
}
}

⑻ 单片机程序中数组中的值怎么实现位左(右)移(C语言)

data
=
nBitmapDot[i]
>>
1;
//
nBitmap[i]右移一个二进制位,与
data
=
nBitmapDot[i]
/
2;
同效。
data
=
nBitmapDot[i]
<<
1;
//
nBitmap[i]左移一个二进制位,与
data
=
nBitmapDot[i]
*
2;
同效。
要说明的是移位操作(<<

>>)效率更高。

⑼ 单片机 移位操作 右移 C语言

aa=_crol_(aa,1); //左移一位
aa=_cror_(aa,1); //右移一位

可以打开:intrins.h,查看。

⑽ C语言和单片机中的左移右移

# include "reg51.h" // 包含头文件
#define uchar unsigned char
void delay02s(void) // 延时0.2s子程序
{
unsigned char i,j,k;
for ( i=2;i>0;i-- )
for (j=200;j>0;j-- )
for (k=250;k>0;k-- );
}

void main (void) // 主函数
{
uchar i,j;
while (1) // 死循环
{
j=0x01; // j初始化为0x01,左移初始值
for(i=0;i<8;i++) // for循环语句,完成8个循环
{
P1= ~ j; // 对变量j 中的值按位取反后,从P1口输出
delay02s( ); // 延时0.2s
j= j<<1; // 左移1位
}
j=0x80; // 设置右移初始值j为0x80
for (i=0;i<8;i++)
{
P1= ~ j;
delay02s( );
j= j>>1; // 右移1位
}
}
}

阅读全文

与单片机c语言移位相关的资料

热点内容
我的世界如何查看服务器种子pc 浏览:284
linuxlamp编译安装 浏览:609
枚举算法ppt 浏览:184
cmd查看进程命令 浏览:956
手机内怎么删除APP 浏览:834
鱼群和鸟群算法区别 浏览:93
pdf尺寸设置 浏览:211
android访问本地服务器 浏览:512
程序员相亲被删除微信 浏览:790
centos命令窗口 浏览:596
编译器有几个好用的 浏览:500
数据库和网站如何搭载服务器 浏览:154
网络流理论算法与应用 浏览:795
java和matlab 浏览:388
钉钉苹果怎么下app软件 浏览:832
php网站验证码不显示 浏览:859
铝膜构造柱要设置加密区吗 浏览:344
考驾照怎么找服务器 浏览:885
阿里云服务器如何更换地区 浏览:972
手机app调音器怎么调古筝 浏览:505