
正文
单片机c语言位移函数 单片机移位运算
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
C语言和单片机中的左移右移
# include "reg51.h" // 包含头文件
#define uchar unsigned char
void delay02s(void) // 延时0.2s子程序
{
unsigned char i单片机c语言位移函数,j单片机c语言位移函数,k单片机c语言位移函数;
for ( i=2;i0;i-- )
for (j=200;j0;j-- )
for (k=250;k0;k-- );
}
void main (void) // 主函数
{
uchar i,j;
while (1) // 死循环
{
j=0x01; // j初始化为0x01,左移初始值
for(i=0;i8;i++) // for循环语句,完成8个循环
{
P1= ~ j; // 对变量j 中的值按位取反后,从P1口输出
delay02s( ); // 延时0.2s
j= j1; // 左移1位
}
j=0x80; // 设置右移初始值j为0x80
for (i=0;i8;i++)
{
P1= ~ j;
delay02s( );
j= j1; // 右移1位
}
}
}
相关问答
Q1: 单片机C语言 的循环左右移动 函数问题。
首先对比一下 左边与右边 那里有不同 同时 程序不同对应的输出结构有哪些不同。。
P2口 连接8个LED 低电平驱动使其发光。
P2=0xfe //上电 P2.0连接的 LED发光。 其余的熄灭。
对比一下程序
void main() //主函数
{
P2=0xfe; //P2初始化
while(1) //死循环
{
num=P2; //这里 与左边不同 把P2的状态给 NUM 也就是0XFE num=0xfe
P2=_crol_(num,1); //P2等于num 循环左移 P2=0xef 这时应该是连接的P2.7的LED发光
delay(0);//延迟
}
}
左边 代码 NUM 每次大循环 都赋值 num=0xfe 是固定的 所以不管你以后怎么移动 P2口的输出都是不变得 只移动了一次。。
Q2: 单片机C语言 移位
P1=0xfe;
while(1)
{
delay(200);
P1=_crol_(P1,1);
}
Q3: C语言51单片机左移函数的问题
你首先赋值P0=0xfe,就是p0^1亮,其他全灭,而你的zuoyi()函数在执行完后才给P0赋值,而zuoyi()执行完后,返回值是0;
Q4: 单片机 移位操作 右移 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;i8;i++)
{
out=data0x80;//因为高位在前,将它写成二进制就明白了
data=1;
}
上面的程序就能搞定了;
应该是所有的单片机都有cy位(不知道浮点dsp有没有);
c语言中左移和右移之后低位或高位自动补零,cy位也保持为零(视编译器而定,这个得看编译器手册),有些编译器提供了循环移位的函数;
还有什么不明白的补充问题就是
Q5: 请教单片机c语言移位问题
移位分为左移位和右移位单片机c语言位移函数,看你的系统精度单片机c语言位移函数,就是操作数是几位的单片机c语言位移函数,通常案例计算是以8位较多单片机c语言位移函数,按左右方向移动数字,不够的位数补上0就OK单片机c语言位移函数了。
单片机c语言位移函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于单片机移位运算、单片机c语言位移函数的信息别忘了在本站进行查找喔。







