当前位置:首页 » 编程语言 » 单片机c语言移位

单片机c语言移位

发布时间: 2022-09-14 00:13:38

1. 用单片机移位实现,该怎么写程序啊,用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);这里用法还是与左移动一样的道理 ,
}
}
}

2. 单片机 移位操作 右移 C语言

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

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

3. 单片机C语言左移或右移多位是一次完成的吗

楼主所考虑的,很正确。


可以观察C程序在编译后,生成的汇编语言,

即可验证楼主的想法:

-------------------

35:main()
36:{
37:
38:charxx=1;------C语言
C:0x008F7F01MOVR7,#0x01
39:P0=xx<<3;-----C语言
C:0x0091EFMOVA,R7
C:0x009233RLCA--真是左移三次
C:0x009333RLCA
C:0x009433RLCA
C:0x009554F8ANLA,#0xF8
C:0x0097F580MOVP0(0x80),A

-------------------

共用了六条汇编指令,才实现P0=xx<<3;。


如果是移位7次,也许会用反移一次来代替。

楼主自己试试看吧。

4. 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位
}
}
}

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

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

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

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

>>)效率更高。

7. 单片机 移位操作 右移 C语言

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

热点内容
j2ee和java的区别 发布:2025-01-12 03:42:44 浏览:581
android6小米 发布:2025-01-12 03:38:35 浏览:85
redis与数据库 发布:2025-01-12 03:20:21 浏览:211
怎么升级安卓100 发布:2025-01-12 03:19:37 浏览:516
c语言倒数 发布:2025-01-12 03:14:37 浏览:929
如何免费激活移动电话卡安卓 发布:2025-01-12 03:10:27 浏览:89
2020凯越精英配置什么样 发布:2025-01-12 03:08:02 浏览:685
奥特曼空想特摄要怎么样的配置 发布:2025-01-12 03:08:01 浏览:998
空气能的压缩机 发布:2025-01-12 03:05:55 浏览:480
java字符串图片 发布:2025-01-12 03:04:31 浏览:341