三菱Q系列PLC梯形图程序中[ SFR K1M300 K15 ]是什么意思还望高手指点,急!!

三菱Q系列PLC梯形图程序中[ SFR K1M300 K15 ]是什么意思还望高手指点,急!!,第1张

将K1M300,也就是M300,M301,M302,M303这4个位的数据右移15位

但是有一个原则,就是实际移动位数等于指定的移动次数除以指定的位数的余数。

在本例中,因为K1M300是4位,指定移动次数为15,因此实际移动的位数为15/4=3余3,实际移动3位。

也就是说,SFR K1M300 K15 实际是右移3位。

//对一行电文进行加密,每个字母转换为字母表中循环右移的第三个字母

//大写字母C加密后的ASCII码值为(c-62)%26+65

//小写字母C加密后的ASCII码值为(c-94)%26+97

#include<stdioh>

void main()

{

//定义数组a和b,以及控制变量i

char a[3];

char b[3];

int i;

//提示输入三个字母

printf("请输入三个字母不要用空格隔开\n");

//用for循环控制接受字母

for(i=0;i<3;i++)

scanf("%c",&a[i]);

//在下一循环前加入该句

printf("经加密后为:");

//用for循环计算加密后的字母的ASCII值

for(i=0;i<=2;i++)

{

if(a[i]>=97)

b[i]=(a[i]-94)%26+97;

if(a[i]>=65&&a[i]<97)

b[i]=(a[i]-62)%26+65;

//输出结果

printf("%c",b[i]);

}

printf("\n");

}

先说第一个问题:

比如用查表法将结果保存到变量i中,查表变量为x,则i=table[x],记住c语言里面数组是从0开始的,比如说上面的0x01就是table[0],0x02是table[1],以此类推。

再说第二个问题:

比如说从p10口发送出去,则可以写为

sbitout=p1^0;//定义out为p10口,这样今后好写程序

chari;

for(i=0;i<8;i++)

{

out=data&0x80;//因为高位在前,将它写成二进制就明白了

data<<=1;

}

上面的程序就能搞定了;

应该是所有的单片机都有cy位(不知道浮点dsp有没有);

c语言中左移和右移之后低位或高位自动补零,cy位也保持为零(视编译器而定,这个得看编译器手册),有些编译器提供了循环移位的函数;

还有什么不明白的补充问题就是

以上就是关于三菱Q系列PLC梯形图程序中[ SFR K1M300 K15 ]是什么意思还望高手指点,急!!全部的内容,包括:三菱Q系列PLC梯形图程序中[ SFR K1M300 K15 ]是什么意思还望高手指点,急!!、C语言的程序设计 电文加密,每个字母转换为字母表中循环右移的第三个字母。、单片机 移位 *** 作 右移 C语言等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10123408.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存