找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2717|回复: 18
收起左侧

51单片机C语言能实现连加吗?

  [复制链接]
ID:718536 发表于 2021-4-21 00:40 | 显示全部楼层 |阅读模式
   我是想X1,X2,X3,X4,X5,X6,X7,X8,X9这9个字节。
  如果这9个字节中所有都是0,条件就成立。

  y=x1+x2+x3+x4+x5+x6+x7+x8+x9;

  if(y==0){  st=1;  }

  就是一直触发到条件。

是不是因为51单片机不能连加啊?

回复

使用道具 举报

ID:718536 发表于 2021-4-21 00:44 | 显示全部楼层
只有上电瞬间X1-9的值为0可以触发。期间X1-9这9个变量的值全部都为0,就是不能触发
回复

使用道具 举报

ID:213173 发表于 2021-4-21 06:06 | 显示全部楼层
本帖最后由 wulin 于 2021-4-21 06:53 编辑
suqianfu 发表于 2021-4-21 00:44
只有上电瞬间X1-9的值为0可以触发。期间X1-9这9个变量的值全部都为0,就是不能触发

if((x1|x2|x3|x4|x5|x6|x7|x8|x9)==0) {st=1;}

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:889094 发表于 2021-4-21 07:33 来自手机 | 显示全部楼层
程序和单片机没关系,你想让它开始加也行,想在while 1中加也行,中断触发也可以,程序设计好,单片机有多快就能加多快

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:889094 发表于 2021-4-21 07:35 来自手机 | 显示全部楼层
另外,全都是0不应该是相加,相加有n多种可能为0,个人觉得应该用按位或操作吧

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:57657 发表于 2021-4-21 07:47 | 显示全部楼层
你的条件有问题,加法会溢出的。
  1.         if (!(x1 || x2 || x3 || x4 || x5 || x6 || x7 || x8 || x9)) {

  2.                 st1=1;
  3.        
  4. }
复制代码

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:584814 发表于 2021-4-21 09:59 | 显示全部楼层
1、y=x1+x2+x3+x4+x5+x6+x7+x8+x9=0,并不表示所有x都是0;
2、传说用 if (!(x1 || x2 || x3 || x4 || x5 || x6 || x7 || x8 || x9)) 效率比
用 if((x1|x2|x3|x4|x5|x6|x7|x8|x9)==0) 高。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:894154 发表于 2021-4-21 11:08 | 显示全部楼层
所有相加等于0可以按如下思路
a[]={X1,X2,X3,X4,X5,X6,X7,X8,X9};
temp=0;
y=0;
for(i=0;i<9;i++)
{
     temp=a[i];
     y+=temp;
}
if(y==0)................

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:151846 发表于 2021-4-21 11:50 | 显示全部楼层
suqianfu 发表于 2021-4-21 00:44
只有上电瞬间X1-9的值为0可以触发。期间X1-9这9个变量的值全部都为0,就是不能触发

程序可以连加的,记得要初始化为0,且程序要严谨,或许你漏在哪里了
回复

使用道具 举报

ID:213173 发表于 2021-4-21 14:13 | 显示全部楼层
man1234567 发表于 2021-4-21 09:59
1、y=x1+x2+x3+x4+x5+x6+x7+x8+x9=0,并不表示所有x都是0;
2、传说用 if (!(x1 || x2 || x3 || x4 || x5  ...

        if((x1|x2|x3|x4|x5|x6|x7|x8|x9)==0)//判断用时11个机器周期
        if (!(x1 || x2 || x3 || x4 || x5 || x6 || x7 || x8 || x9))//判断用时28个机器周期

评分

参与人数 2黑币 +26 收起 理由
admin + 20 回帖助人的奖励!
as21cxz + 6 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:728732 发表于 2021-4-21 14:41 | 显示全部楼层
要看数据类型,X1X2X3...要是字符型char,怎么加都不为0;其次,y=x1+x2+x3+x4+x5+x6+x7+x8+x9;运算符有优先级,”+“优先级大于“=”的优先级

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:708541 发表于 2021-4-21 15:16 | 显示全部楼层
  if(x1==0 && x2==0 && x3==0 && x4 ==0 && x5==0 && x6==0 && x7==0 && x8==0 &&x9==0)
  {
      st=1;  
  }

  //这样判断就可以了,X1---X9,全部为O才执行 st=1;

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:909697 发表于 2021-4-21 15:30 | 显示全部楼层
无符号整形可以这样写。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:708541 发表于 2021-4-21 15:38 | 显示全部楼层
本帖最后由 as21cxz 于 2021-4-21 15:44 编辑
npn 发表于 2021-4-21 07:47
你的条件有问题,加法会溢出的。

他说这9个字节中所有都是0,条件就成立。
你语句是不是有问题?或的话只要有一个是0取反就是1,语句就成立?我没有这样写过,我也不知道你这个是不是正确的。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:57657 发表于 2021-4-21 21:52 | 显示全部楼层
as21cxz 发表于 2021-4-21 15:38
他说这9个字节中所有都是0,条件就成立。
你语句是不是有问题?或的话只要有一个是0取反就是1,语句就成 ...

取反加括号,就和这个一样:

  1. if (x1 || x2 || x3 || x4 || x5 || x6 || x7 || x8 || x9) {
  2. }else {
  3. st1 = 1;
  4. }

复制代码
回复

使用道具 举报

ID:718536 发表于 2021-4-23 02:47 | 显示全部楼层
楼上的大佬太热情了。小弟只能统一在这楼回复了。问题已经解决了,我原想设定X1-X9这个是9个标志位。X1-X9这9个标志位都为0,就进入待机状态。否则就不进入待机状态。思路是没错的。
  
  y=x1+x2+x3+x4+x5+x6+x7+x8+x9;

  if(y==0){  st=1;  }  //ST是待机标志位。

为何不能进入待机位呢?是因为前面的9个待机标志位,复位号写错了.... 导致一个一直没有复位置0.....所以....小丑是我自己。。。

最后,感谢大佬们的热情回复。。。我超喜欢这里的。爱你们哟
回复

使用道具 举报

ID:718536 发表于 2021-4-23 02:49 | 显示全部楼层
a4732710 发表于 2021-4-21 11:50
程序可以连加的,记得要初始化为0,且程序要严谨,或许你漏在哪里了

其中一个X3标志位号写错了。导致不能复位置0....所以小丑是我自己啦
回复

使用道具 举报

ID:824490 发表于 2021-4-24 09:48 | 显示全部楼层
as21cxz 发表于 2021-4-21 15:16
if(x1==0 && x2==0 && x3==0 && x4 ==0 && x5==0 && x6==0 && x7==0 && x8==0 &&x9==0)
  {
      s ...

以我来看,就这个最靠近楼主要的结果。只能一个一个判断,其它的连续运算,都可能出错,因前一次的运算结果会影响下一次的运算。
回复

使用道具 举报

ID:487821 发表于 2021-4-24 12:39 | 显示全部楼层
要先初始化为0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表