您现在所在的是:

单片机论坛

回帖:6个,阅读:741 [上一页] [1] [下一页]
1335
429408792
文章数:107
年度积分:53
历史总积分:1335
注册时间:2012/5/13
发站内信
发表于:2020/10/17 10:11:11
#0楼
void serial () interrupt 4 using 3
 {
 if(RI)
 {
  unsigned char ch;
  RI=0;
  ch=SBUF;
  if (ch>127)
  {
  count3=0;
  inbuf1[count3]=ch;
  checksum=ch-128;
  }
  else
  {
  count3++;
  inbuf1[count3]=ch;
  checksum^=ch;
  if ((count3==(INBUF_LEN-1))&&(!checksum))  
  {
  read_flag=1;
  }
  }
 }
 }
1335
429408792
文章数:107
年度积分:53
历史总积分:1335
注册时间:2012/5/13
发站内信
发表于:2020/10/17 10:15:44
#1楼
if ((count3==(INBUF_LEN-1))&&(!checksum))     这一句(!checksum)理解不了, checksum异或效验和的值,应该不为0,取反的话,就一直为假;那这IF怎么成立呢
19260
pqsh 版主
文章数:7424
年度积分:1090
历史总积分:19260
注册时间:2006/8/22
发站内信
2018论坛解答高手
发表于:2020/10/17 12:21:06
#2楼
最后读取的是校验和,应该为0.
如果我忘了我
请帮忙记得我
pqsh@163,326199298@v&q同号
27953
guanyumou 版主
文章数:10552
年度积分:1136
历史总积分:27953
注册时间:2008/7/13
发站内信
2018论坛优秀版主
2018春节活动(三)
2017论坛优秀版主
2017国庆活动(二)
2017春节活动(三)
发表于:2020/10/17 15:02:14
#3楼
看图,标记部分很重要:
附件 image.jpg
[此贴子已经被作者于2020/10/17 15:02:49编辑过]
基于各种组态软件\触摸屏\PLC\单片机\变频器Modbus TCP\RTU\ASCII通信编程服务,需要请直接
联系!腾讯扣扣149034219
27953
guanyumou 版主
文章数:10552
年度积分:1136
历史总积分:27953
注册时间:2008/7/13
发站内信
2018论坛优秀版主
2018春节活动(三)
2017论坛优秀版主
2017国庆活动(二)
2017春节活动(三)
发表于:2020/10/17 15:04:02
#4楼
以下是引用4294087922020/10/17 10:15:44的发言:
if ((count3==(INBUF_LEN-1))&&(!checksum))     这一句(!checksum)理解不了, checksum异或效验和的值,应该不为0,取反的话,就一直为假;那这IF怎么成立呢
看图:
附件 image.jpg
基于各种组态软件\触摸屏\PLC\单片机\变频器Modbus TCP\RTU\ASCII通信编程服务,需要请直接
联系!腾讯扣扣149034219
1335
429408792
文章数:107
年度积分:53
历史总积分:1335
注册时间:2012/5/13
发站内信
发表于:2020/10/19 11:26:14
#5楼
明白了,谢谢
50
10224976
文章数:55
年度积分:50
历史总积分:50
注册时间:2020/10/10
发站内信
发表于:2020/10/20 9:18:45
#6楼
回复 #1楼 429408792
成立的条件是checksum为假,inbuf_len大于1,语法没有错

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

62.4004